![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-tutor/js/app/FlagManager.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; require("../../css/fragmanager.css"); var _Fragment = _interopRequireDefault(require("absol/src/AppPattern/Fragment")); var _Core = require("../dom/Core"); var _OOP = _interopRequireDefault(require("absol/src/HTML5/OOP")); require("absol-form/css/propertyeditor.css"); var _OnsScreenWindow = _interopRequireDefault(require("absol-acomp/js/OnsScreenWindow")); /*** * @extends Fragment * @constructor */ function FlagManager() { _Fragment.default.call(this); this.flag = {}; this.readSetting(); } _OOP.default.mixClass(FlagManager, _Fragment.default); FlagManager.prototype.STORE_KEY = "ABSOL_FLAG"; FlagManager.prototype.readSetting = function () { var flagText = localStorage.getItem(this.STORE_KEY) || '{}'; var newFlag = {}; try { newFlag = JSON.parse(flagText); } catch (err) {} this.applyFlag(newFlag); }; FlagManager.prototype.applyFlag = function (newFlag, save) { Object.keys(Object.assign({}, this.flag, newFlag)).forEach(function (key) { if (key in window) { if (key in newFlag) { window[key] = newFlag[key]; } else { delete window[key]; } } else { if (key in newFlag) { window[key] = newFlag[key]; } } }); this.flag = newFlag; if (save) this.saveSetting(); }; FlagManager.prototype.saveSetting = function () { localStorage.setItem(this.STORE_KEY, JSON.stringify(this.flag)); }; FlagManager.prototype.createView = function () { /**** * @type {OnScreenWindow} */ this.$view = (0, _Core._)({ tag: 'onscreenwindow', class: 'atr-flag-manager', style: { width: '400px', height: '400px', top: '20px', left: 'calc(100vw - 420px)' }, props: { windowTitle: "Flag Manager", windowActions: [{ icon: 'span.mdi.mdi-close', name: 'close' }] }, child: [{ class: ['as-property-editor', 'as-bscroller'], style: { width: '100%', height: '100%', overflow: 'auto' }, child: { tag: 'table', style: { width: '100%' }, child: ['<thead><tr><td>key</td><td>value</td><td></td></tr></thead>', { tag: 'tbody', child: [{ tag: 'tr', class: 'atr-add-flag-row', child: [{ tag: 'td', attr: { colspan: '3' }, style: { textAlign: 'center' }, child: 'span.mdi.mdi-plus' }] }] }] } }] }); this.$tbody = (0, _Core.$)('.as-property-editor tbody', this.$view); this.$addRow = (0, _Core.$)('.atr-add-flag-row', this.$view).on('click', this._addRow.bind(this, '', false)); for (var key in this.flag) { this._addRow(key, this.flag[key]); } this.$view.on('action', event => { if (event.actionData.name === 'close') this.stop(); }); }; FlagManager.prototype.onResume = function () { var view = this.getView(); if (!view.isDescendantOf(document.body)) { document.body.appendChild(view); } }; FlagManager.prototype._updateInputColor = function () { var dict = {}; (0, _Core.$)('input.atr-flag-name', this.$tbody, function (inputELt) { var value = inputELt.value.trim(); if (value) { if (dict[value]) { inputELt.addStyle('border-color', 'red'); } else { inputELt.removeStyle('border-color'); dict[value] = true; } } else { inputELt.addStyle('border-color', 'rgb(150, 255, 0)'); } }); }; FlagManager.prototype._getFlagFromInput = function () { var res = {}; (0, _Core.$)('.atr-flag-row', this.$tbody, function (rowElt) { var p = rowElt.getFlag && rowElt.getFlag(); if (p) { res[p.key] = p.value; } }); return res; }; FlagManager.prototype._addRow = function (key, value) { var thisFM = this; var newRow = (0, _Core._)({ tag: 'tr', class: 'atr-flag-row', child: ['td', 'td', 'td'] }); var name = (0, _Core._)('input.atr-flag-name').addTo(newRow.childNodes[0]); name.value = key || ''; var value = (0, _Core._)({ tag: 'selectmenu', props: { items: [{ text: 'TRUE', value: true }, { text: 'FALSE', value: false }], value: !!value } }).addStyle('width', '50px').addTo(newRow.childNodes[1]); value.on('change', function () { thisFM.applyFlag(thisFM._getFlagFromInput(), true); }); var deleteBtn = (0, _Core._)('span.mdi.mdi-trash-can-outline').addTo(newRow.childNodes[2]).on('click', function () { newRow.remove(); thisFM.applyFlag(thisFM._getFlagFromInput(), true); }); name.on('change', function () { thisFM.applyFlag(thisFM._getFlagFromInput(), true); }).on('keyup', function (event) { if (event.key === 'Enter') { this.blur(); } thisFM._updateInputColor(); }); this.$tbody.addChildBefore(newRow, this.$addRow); newRow.getFlag = function () { if (name.value) return { key: name.value, value: value.value }; }; this._updateInputColor(); }; FlagManager.prototype.onPause = function () { var view = this.getView(); if (view.isDescendantOf(document.body)) { view.remove(); } }; /*** * * @param {string} key * @param {boolean=} value */ FlagManager.prototype.add = function (key, value) { if (!key || typeof key != 'string') return; if (key in this.flag) return; if (typeof value != "boolean") { value = !!window[key]; } window[key] = value; this.flag[key] = value; this.saveSetting(); if (this.$view) this._addRow(key, value); }; var _default = new FlagManager(); exports.default = _default;