| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- window.fetchChartApi = createLink('screen', 'ajaxGetChart');
- window.fetchDataApi = createLink('screen', 'ajaxGetTreeData', 'screenID=' + screen.id);
- window.fetchMetricDataApi = createLink('screen', 'ajaxGetMetricData');
- window.fetchFilterOptionsApi = createLink('screen', 'ajaxGetFilterOptions');
- if(!window.loadPage)
- {
- window.loadPage = function(url)
- {
- parent.loadPage(url);
- }
- }
- function saveAsDraft(storageInfo, fileDataUrl)
- {
- save(storageInfo, 'draft', fileDataUrl);
- }
- function saveAsPublish(storageInfo, fileDataUrl)
- {
- window.storageInfo = storageInfo;
- window.fileDataUrl = fileDataUrl;
- exitFullScreen();
- $('#publish').trigger('click');
- }
- function save(storageInfo, status, fileDataUrl)
- {
- var fileName = 'screen_thumbnail_' + screen.id;
- var blob = dataURLToBlob(fileDataUrl);
- var formData = new FormData();
- formData.append('thumbnail', blob, fileName + '.png');
- formData.append('scheme', JSON.stringify(storageInfo));
- formData.append('status', status);
- formData.append('uuid', fileName);
- $.ajax({
- url: createLink('screen', 'design', 'screenID=' + screen.id),
- type: 'POST',
- data: formData,
- async: false,
- cache: false,
- contentType: false,
- processData: false,
- success: function(resp)
- {
- resp = JSON.parse(resp);
- zuiMessage(resp.result, resp.message);
- if(resp.result == 'success')
- {
- setTimeout(function()
- {
- exitFullScreen();
- loadPage(resp.locate);
- }, 2000);
- }
- }
- });
- }
- function backBrowse()
- {
- exitFullScreen();
- loadPage(backLink);
- }
- // 将数据 URL 转换为 Blob 对象的函数
- function dataURLToBlob(dataURL) {
- const arr = dataURL.split(',');
- const mime = arr[0].match(/:(.*?);/)[1];
- const bstr = atob(arr[1]);
- let n = bstr.length;
- const u8arr = new Uint8Array(n);
- while (n--) {
- u8arr[n] = bstr.charCodeAt(n);
- }
- return new Blob([u8arr], { type: mime });
- }
- /**
- * Zui messager alert.
- *
- * @param string result success|fail
- * @param string mes
- * @access public
- * @return void
- */
- function zuiMessage(result, mes)
- {
- var icon = result == 'success' ? 'check-circle' : 'exclamation-sign';
- var type = result == 'success' ? 'success' : 'danger';
- var message = new $.zui.Messager(mes,
- {
- html: true,
- icon: icon,
- type: type,
- close: true,
- });
- message.show();
- }
- /**
- * Display the kanban in full screen.
- *
- * @access public
- * @return void
- */
- function fullScreen()
- {
- var element = document.getElementById('screenContainer');
- var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen;
- if(requestMethod)
- {
- var afterEnterFullscreen = function()
- {
- $.cookie('isFullScreen', 1);
- }
- var whenFailEnterFullscreen = function()
- {
- exitFullScreen();
- }
- try
- {
- var result = requestMethod.call(element);
- if(result && (typeof result.then === 'function' || result instanceof window.Promise))
- {
- result.then(afterEnterFullscreen).catch(whenFailEnterFullscreen);
- }
- else
- {
- afterEnterFullscreen();
- }
- }
- catch (error)
- {
- whenFailEnterFullscreen(error);
- }
- }
- }
- /**
- * Exit full screen.
- *
- * @access public
- * @return void
- */
- function exitFullScreen()
- {
- $.cookie('isFullScreen', 0);
- let exitFullScreen = document.exitFullScreen ||
- document.mozCancelFullScreen ||
- document.webkitExitFullscreen ||
- document.msExitFullscreen;
- if (exitFullScreen) {
- exitFullScreen.call(document);
- }
- }
- document.addEventListener('fullscreenchange', function (e)
- {
- if(!document.fullscreenElement) exitFullScreen();
- });
- document.addEventListener('webkitfullscreenchange', function (e)
- {
- if(!document.webkitFullscreenElement) exitFullScreen();
- });
- document.addEventListener('mozfullscreenchange', function (e)
- {
- if(!document.mozFullScreenElement) exitFullScreen();
- });
- document.addEventListener('msfullscreenChange', function (e)
- {
- if(!document.msfullscreenElement) exitFullScreen();
- });
|