diff --git a/public_html/deployment/js/functions.js b/public_html/deployment/js/functions.js index 4a64ce8e747ea6102a654aae0ca75e49f7f5a9c9..62f7ac9bc16794334b252c9cf270f020103bd061 100644 --- a/public_html/deployment/js/functions.js +++ b/public_html/deployment/js/functions.js @@ -2,8 +2,81 @@ // VARS // ---------------------------------------------------------------------- +// current winbox instances var aWinBoxes = {}; -var WINBOX_background = "#456"; + +// default frame border color for winboxes +var WINBOX_data = false; +var WINBOX_lsvariable = "winbox_data"; +var WINBOX_defaults = { + background: "#456", + border: 5, + class: ["no-min", "no-max", "no-full", "ciwinboxinfos"], + + // viewport + top: 70, + right: 20, + bottom: 20, + left: 20 + +}; + + +/** + * get data of all winboxes - or of a single winbox only - from localstorage + * @param {string} sId optional: id of a winbox + * @returns + */ +function wb_getdata(sId) { + WINBOX_data = WINBOX_data + ? WINBOX_data + : (localStorage.getItem(WINBOX_lsvariable) + ? JSON.parse(localStorage.getItem(WINBOX_lsvariable)) + : {} + ); + return sId + ? (WINBOX_data[sId] ? WINBOX_data[sId] : {}) + : WINBOX_data; +} +/** + * get data of all winboxes - or of a single winbox only - from localstorage + * @param {string} sId optional: id of a winbox + * @returns + */ +function wb_getdefaults(sId, aOverrides) { + var _aReturn = Object.assign({}, WINBOX_defaults); + for (var key in aOverrides) { + _aReturn[key] = aOverrides[key]; + } + var _aData = wb_getdata(sId); + for (var key in _aData) { + _aReturn[key] = _aData[key]; + } + if (_aReturn['x']<_aReturn['left']){ + _aReturn['x']=_aReturn['left']; + } + if (_aReturn['y']<_aReturn['top']){ + _aReturn['y']=_aReturn['top']; + } + console.log(_aReturn); + return _aReturn; +} +/** + * save data for a given winbox + * @param {string} sId id of a winbox + * @param {array} _aNewvalues properties to store as key+value + */ +function wb_savedata(sId, _aNewvalues) { + WINBOX_data = WINBOX_data ? WINBOX_data : wb_getdata(); + if (!WINBOX_data[sId]) { + WINBOX_data[sId] = {}; + } + for (var key in _aNewvalues) { + WINBOX_data[sId][key] = _aNewvalues[key]; + } + localStorage.setItem(WINBOX_lsvariable, JSON.stringify(WINBOX_data)); +} + // ---------------------------------------------------------------------- // FUNCTIONS @@ -52,7 +125,6 @@ function hideModalMessage() { return false; } - /** * show a window displaying the content of a given dom id using Winbox * @@ -66,14 +138,9 @@ function showIdAsModalMessage(sId, sTitle) { return true; } var oWrapper = document.getElementById(sId); - aWinBoxes[sId] = WinBox({ + var aOptions = wb_getdefaults(sId, { title: sTitle, id: 'winbox-' + sId, - border: 5, - background: WINBOX_background, - class: ["no-min", "no-max", "no-full", "ciwinboxinfos"], - - // modal: true, // collides with bootsrap3 .modal.less // position + size x: "center", @@ -81,41 +148,36 @@ function showIdAsModalMessage(sId, sTitle) { width: 700, height: 500, - // viewport - top: 70, - right: 20, - bottom: 20, - left: 20, // take content from existing div // mount: oWrapper // mount: document.getElementById(sId).cloneNode(true), html: oWrapper.innerHTML, + onmove: function (x, y) { wb_savedata(sId, { x: x, y: y }); }, + onresize: function (x, y) { wb_savedata(sId, { width: x, height: y }); }, onclose: function () { delete aWinBoxes[sId]; } }); + aWinBoxes[sId] = WinBox(aOptions); return false; } /** * shellcmd plugin ... toggle output window - * @param {string} isPluginOutputDiv id of the wrapper + * @param {string} sId id of the wrapper * @param {object} oLink a tag in the navbar with link for toggling window */ -function toggleShellWindow(isPluginOutputDiv, oLink) { - if (aWinBoxes[isPluginOutputDiv]) { - aWinBoxes[isPluginOutputDiv].close(); +function toggleShellWindow(sId, oLink) { + if (aWinBoxes[sId]) { + aWinBoxes[sId].close(); } else { - var oWrapper = document.getElementById(isPluginOutputDiv); - aWinBoxes[isPluginOutputDiv] = WinBox({ + var oWrapper = document.getElementById(sId); + var aOptions = wb_getdefaults(sId, { title: oLink.innerText, - id: 'winbox-' + isPluginOutputDiv, - border: 5, - /*background: "#628",*/ - background: WINBOX_background, + id: 'winbox-' + sId, class: ["no-min", "no-max", /* "no-full", "no-resize", "no-move"*/ "ciwinbox"], // position + size @@ -124,24 +186,24 @@ function toggleShellWindow(isPluginOutputDiv, oLink) { width: 10, height: 10, - // viewport - top: 70, - right: 20, - bottom: 20, - left: 20, - // take content from existing div mount: oWrapper, + onmove: function (x, y) { wb_savedata(sId, { x: x, y: y }); }, + onresize: function (x, y) { wb_savedata(sId, { width: x, height: y }); }, onclose: function () { - delete aWinBoxes[isPluginOutputDiv]; + delete aWinBoxes[sId]; $(oLink).removeClass('active'); } }); + aWinBoxes[sId] = WinBox(aOptions); + if (oLink) { $(oLink).addClass('active'); } - window.setTimeout("aWinBoxes['" + isPluginOutputDiv + "'].resize(" + (oWrapper.clientWidth + 25) + ", " + (oWrapper.clientHeight + 150) + ").move('center', 'center')", 10); + if(aOptions['width']==10){ + window.setTimeout("aWinBoxes['" + sId + "'].resize(" + (oWrapper.clientWidth + 25) + ", " + (oWrapper.clientHeight + 150) + ").move('center', 'center')", 10); + } } }