├── .gitignore ├── config ├── controllers ├── api.js └── default.js ├── definitions └── init.js ├── index.js ├── license.txt ├── package.json ├── public ├── css │ └── default.css ├── favicon.ico ├── img │ ├── icon.png │ └── logo.svg ├── js │ └── default.js ├── pages │ └── dashboard.html ├── robots.txt └── ui-ui-o227lz.min.js ├── readme.md └── views └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | /tmp/ 2 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | name : Total.js SPA 2 | allow_custom_titles : true -------------------------------------------------------------------------------- /controllers/api.js: -------------------------------------------------------------------------------- 1 | exports.install = function() { 2 | ROUTE('+GET /logout/', redirect_logout); 3 | }; 4 | 5 | function redirect_logout() { 6 | var self = this; 7 | self.cookie(CONF.cookie, '', '-1 day'); 8 | self.redirect('/'); 9 | } -------------------------------------------------------------------------------- /controllers/default.js: -------------------------------------------------------------------------------- 1 | exports.install = function() { 2 | 3 | ROUTE('+GET /*', 'index'); 4 | ROUTE('-GET /*', 'login'); 5 | 6 | // File routes 7 | FILE('/manifest.json', manifest); 8 | }; 9 | 10 | function manifest(req, res) { 11 | res.content(200, '{"name":"{0}","short_name":"{0}","icons":[{"src":"/img/icon.png","sizes":"500x500","type":"image/png"}],"start_url":"/","display":"standalone"}'.format(CONF.name), U.getContentType('json')); 12 | } 13 | -------------------------------------------------------------------------------- /definitions/init.js: -------------------------------------------------------------------------------- 1 | // Download UI components locally 2 | COMPONENTATOR('ui', 'exec,intranetcss,errorhandler,loading,selected,page,importer,layout', true); 3 | 4 | const USER = { id: '123456', initials: 'JC', name: 'John Connor', sa: true }; 5 | 6 | AUTH(function($) { 7 | $.success(USER); 8 | }); -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // =================================================== 2 | // Total.js start script 3 | // https://www.totaljs.com 4 | // =================================================== 5 | 6 | const options = {}; 7 | 8 | // options.ip = '127.0.0.1'; 9 | // options.port = parseInt(process.argv[2]); 10 | // options.unixsocket = require('path').join(require('os').tmpdir(), 'app_name'); 11 | // options.unixsocket777 = true; 12 | // options.config = { name: 'Total.js' }; 13 | // options.sleep = 3000; 14 | // options.inspector = 9229; 15 | // options.watch = ['private']; 16 | // options.livereload = 'https://yourhostname'; 17 | // options.https = { key: Fs.readFileSync('keys/agent2-key.pem'), cert: Fs.readFileSync('keys/agent2-cert.pem')}; 18 | // options.watcher = true; // enables watcher for the release mode only controlled by the app `F.restart()` 19 | // options.edit = 'wss://www.yourcodeinstance.com/?id=projectname' 20 | 21 | // Service mode: 22 | options.servicemode = process.argv.indexOf('--servicemode', 1) !== -1; 23 | // options.servicemode = 'definitions,modules,config'; 24 | 25 | // Enables cluster: 26 | // options.tz = 'utc'; 27 | // options.cluster = 'auto'; 28 | // options.cluster_limit = 10; // max 10. threads (works only with "auto" scaling) 29 | 30 | // Enables threads: 31 | // options.cluster = 'auto'; 32 | // options.cluster_limit = 10; // max 10. threads (works only with "auto" scaling) 33 | // options.timeout = 5000; 34 | // options.threads = '/api/'; 35 | // options.logs = 'isolated'; 36 | 37 | var type = process.argv.indexOf('--release', 1) !== -1 ? 'release' : 'debug'; 38 | require('total4/' + type)(options); -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | Copyright 2018-2023 (c) Total.js 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a 5 | copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to permit 9 | persons to whom the Software is furnished to do so, subject to the 10 | following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included 13 | in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 18 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 19 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 20 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 21 | USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "totalspa", 3 | "description": "Total.js SPA", 4 | "version": "1.0.0", 5 | "main": "debug.js", 6 | "dependencies": { 7 | "total4": "latest" 8 | }, 9 | "scripts": { 10 | "start": "node index.js 8000" 11 | }, 12 | "keywords": ["spa", "template", "totaljs"], 13 | "author": "Peter Širka", 14 | "license": "MIT" 15 | } -------------------------------------------------------------------------------- /public/css/default.css: -------------------------------------------------------------------------------- 1 | /*auto*/ 2 | 3 | :root { 4 | --font: Arial; 5 | } 6 | 7 | html,body { margin: 0; padding: 0; } 8 | 9 | .yellow { color: #d7cd17 !important; } 10 | .npt { padding-top: 0 !important; } 11 | .npb { padding-bottom: 0 !important; } 12 | .nmt { margin-top: 0 !important; } 13 | .nmb { margin-bottom: 0 !important; } 14 | .mr5 { margin-right: 5px; } 15 | .ml5 { margin-left: 5px; } 16 | .mb10 { margin-bottom: 10px; } 17 | 18 | .alert { background-color: #fffad7; border-color: #fffdbf; padding: 15px; border-radius: var(--radius); color: #988e56; font-size: 12px; } 19 | .alert .fa { margin-right: 5px; } 20 | 21 | .padding { padding: 20px; } 22 | .hidden { display: none; } 23 | .logo { display: block; margin: 17px 20px 0; float: left; width: 90px; } 24 | 25 | header { height: 60px; border-bottom: 1px solid #E0E0E0; } 26 | button.menu { display: none; position: fixed; bottom: 20px; right: 20px; width: 60px; height: 60px; border: 0; border-radius: 50%; color: white; background-color: var(--color); font-size: 24px; z-index: 100; } 27 | 28 | h1 { margin: 0 0 20px; font-family: var(--font); font-size: 25px; padding: 0; color: black; } 29 | h1 i { margin-right: 10px; } 30 | 31 | h2 { margin: 0 0 15px; font-family: var(--font); font-size: 20px; padding: 0; color: black; line-height: 22px; } 32 | h2 i { margin-right: 10px; color: var(--color); } 33 | 34 | .b { font-weight: bold; } 35 | .m { margin-bottom: 20px; } 36 | #body { border-left: 1px solid #E0E0E0; min-height: 200px; padding: 20px 20px 20px 40px; margin-left: 20px; } 37 | 38 | .bg-yellow { background-color: #FFFFD5; } 39 | .bg-smoke { background-color: #F8F8F8; } 40 | 41 | .mainmenu { background-color: white; border-radius: var(--radius); padding: 30px 0 20px; } 42 | .mainmenu .caption { font-size: 12px; font-family: var(--font); font-weight: 700; margin-bottom: 10px; text-transform: uppercase; color: black; border-bottom: 1px solid #E0E0E0; padding: 0 0 5px 0; } 43 | .mainmenu .caption i { margin-right: 5px; } 44 | .mainmenu-visible { display: block !important; } 45 | .mainmenu .ui-dropdown select { font-weight: bold; } 46 | 47 | .ui-panel .caption { font-size: 12px; font-family: var(--font); font-weight: 700; margin-bottom: 10px; text-transform: uppercase; color: black; border-bottom: 1px solid #E0E0E0; padding: 0 0 5px 0; } 48 | .ui-panel .caption i { margin-right: 5px; } 49 | 50 | .links { font-family: var(--font); } 51 | .links a { display: block; border: 0; text-align: left; color: gray; font-size: 14px; border-radius: var(--radius); padding: 7px 10px; margin-bottom: 1px; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; position: relative; } 52 | .links .selected { font-weight: bold; color: black; background-color: #F0F0F0; } 53 | .links a i, .links a i { width: 14px; text-align: center; font-size: 12px; margin-right: 7px; color: var(--color); } 54 | .links a:hover { text-decoration: none; color: black; } 55 | .links a b { position: absolute; font-size: 10px; right: 5px; background-color: var(--color); color: white; width: 16px; height: 16px; padding: 1px 0 0 0; border-radius: 100px; text-align: center; margin: 2px 0 0; } 56 | 57 | .help { font-size: 11px; color: #A0A0A0; margin-top: 8px; line-height: 13px; } 58 | .help i { margin-right: 5px; } 59 | .help code { font: normal normal 11px Arial; background-color: #F0F0F0; padding: 1px 3px; border-radius: 2px; border: 1px solid #E0E0E0; } 60 | 61 | .table-small { font-size: 12px; } 62 | .table-small > tbody > tr > td { padding: 3px 5px; } 63 | 64 | header .user { float: right; margin: 0; padding: 8px 20px 0; height: 60px; border-left: 1px solid #E0E0E0; } 65 | header .user .avatar { border-radius: 100px; width: 40px; height: 40px; background-color: var(--color); text-align: center; font-family: var(--font); color: white; font-size: 16px; padding: 9px 0 0 0; font-weight: bold; } 66 | header .tools { float: right; font-size: 18px; padding: 14px 20px 0 0; } 67 | header .tools a { color: gray; position: relative; display: inline-block; margin-left: 20px; transition: color 0.5s; font-size: 12px; line-height: 14px; } 68 | header .tools a i { margin-right: 5px; font-size: 18px; vertical-align: middle; } 69 | header .tools a span { vertical-align: middle; } 70 | header .tools a:hover { color: black; text-decoration: none; } 71 | header .tools a:last-child { color: var(--color); font-weight: bold; } 72 | 73 | .button { background-color: var(--color); border: 0; color: white; cursor: pointer; outline: 0; width: 100%; border-radius: var(--radius); height: 44px; text-transform: uppercase; font-family: Arial; } 74 | .button:hover { box-shadow: 0 2px 5px rgba(0,0,0,0.1); opacity: 0.9; } 75 | .button:disabled { background-color: #E0E0E0; color: silver; cursor: not-allowed; box-shadow: none; opacity: 1; } 76 | .button i { margin-right: 5px; } 77 | 78 | .header { height: 45px; } 79 | .header > span { font-size: 17px; font-weight: bold; float: left; margin: 2px 0 0 0; color: black; } 80 | .header > span i { margin-right: 8px; color: var(--color); } 81 | .header > div { float: right; margin: 2px 0 0; } 82 | 83 | @media(max-width: 767px) { 84 | .mainmenu { position: absolute; left: 0; right: 0; z-index: 5; padding: 0; display: none; top: 0; overflow: hidden; } 85 | .mainmenu .scroller-xs { padding: 20px; overflow-y: auto; overflow-scrolling: touch; } 86 | #body { border-left: 0; margin-left: 0; padding: 10px; } 87 | header .tools span { display: none; } 88 | button.menu { display: block; } 89 | } 90 | 91 | .right { text-align: right; } 92 | .center { text-align: center; } -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totaljs/spa/a76a331fb091c757f1af243b6f150ead7532bdb1/public/favicon.ico -------------------------------------------------------------------------------- /public/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/totaljs/spa/a76a331fb091c757f1af243b6f150ead7532bdb1/public/img/icon.png -------------------------------------------------------------------------------- /public/img/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/js/default.js: -------------------------------------------------------------------------------- 1 | ON('resize2', function() { 2 | var el = $('#body'); 3 | el.css('height', WH - el.offset().top); 4 | if (WIDTH() === 'xs') { 5 | var mm = $('.mainmenu,.mainmenu .scroller-xs'); 6 | mm.css('height', WH - 70); 7 | } 8 | }); 9 | 10 | function mainmenu(el) { 11 | $('.mainmenu').tclass('mainmenu-visible'); 12 | } 13 | 14 | ON('location', function() { 15 | $('.mainmenu').rclass('mainmenu-visible'); 16 | }); 17 | -------------------------------------------------------------------------------- /public/pages/dashboard.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 | 8 | 9 |
10 | 11 |
12 |
13 |
14 | 15 |
16 |
@(We have great plans for the near future. We have open several projects and ideas which can help you. We're looking for sponsors which can support us financially. Contact us.)
17 | @(Total.js) 18 | @(Total.js) 19 | @(Total.js) 20 | 21 |
22 |
23 |
24 |
25 |
26 |
27 | 28 |
29 | @(Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita, suscipit.) 30 |
31 |
32 |
33 |
34 |
35 | 36 |
37 | @(Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita, suscipit.) 38 |
39 |
40 |
41 |
42 |
43 |
44 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /public/ui-ui-o227lz.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | Component: j-ErrorHandler 3 | Version: 1 4 | Updated: 2023-01-25T13:13:00.000Z 5 | Author: Peter Širka 6 | 7 | 8 | Component: j-Exec 9 | Version: 1 10 | Updated: 2023-02-16T13:56:00.000Z 11 | Author: Peter Širka 12 | 13 | 14 | Component: j-Importer 15 | Version: 1 16 | Updated: 2023-01-07T18:16:00.000Z 17 | Author: Peter Širka 18 | 19 | 20 | Component: Intranet CSS 21 | Version: 5 22 | Updated: 2023-01-13T17:13:02.000Z 23 | Author: Peter Širka 24 | 25 | 26 | Component: j-Layout 27 | Version: 1 28 | Updated: 2023-01-31T14:24:50.000Z 29 | Author: Peter Širka 30 | 31 | 32 | Component: j-Loading 33 | Version: 1 34 | Updated: 2023-01-31T14:55:00.000Z 35 | Author: Peter Širka 36 | 37 | 38 | Component: j-Page 39 | Version: 1 40 | Updated: 2023-02-01T09:23:01.000Z 41 | Author: Peter Širka 42 | 43 | 44 | Component: j-Selected 45 | Version: 1 46 | Updated: 2023-02-01T12:03:00.000Z 47 | Author: Peter Širka 48 | */ 49 | 50 | CSS(`.exec{cursor:pointer} 51 | 52 | .bg-smoke{background-color:#F8F8F8}.ui-dark .bg-smoke{background-color:#282828}.panel{background-color:#FFF;border-radius:var(--radius);border:1px solid #E0E0E0}.panel > .toolbar{float:right;margin:15px 20px 0 10px}.panel > .toolbar button{height:30px;line-height:30px;min-width:60px}.panel > label{display:block;padding:18px 20px;border-bottom:1px solid #E0E0E0;font-size:16px;color:#000;font-weight:bold;border-radius:var(--radius) var(--radius) 0 0}.panel > label i{margin-right:7px}.panel .padding{padding:18px var(--gap)}.ui-dark .panel{background-color:#202020;border-color:#404040}.ui-dark .panel > label{border-bottom-color:#404040;color:#FFF}.toolbar{height:26px}.toolbar button{outline:0;background:#FFF;border:1px solid #E0E0E0;border-left:0;font-size:11px;height:26px;padding:0 8px;color:#000;min-width:80px;text-align:center;vertical-align:top;background-color:#FFF;line-height:24px;float:left;text-align:center !important}.toolbar button i{margin-right:5px}.toolbar button .ti-plus-circle,.toolbar button .ti-check-circle{color:#68B25B}.toolbar button:first-child{border-left:1px solid #E0E0E0;border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.toolbar button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.toolbar button:hover{border-color:#D0D0D0}.toolbar button:active{background:#F0F0F0;color:#888;border-color:#DFDFDF}.toolbar button:disabled{color:silver;cursor:not-allowed;border-color:#E0E0E0 !important;background:#F8F8F8}.toolbar button:disabled i{color:silver !important}.toolbar button.right{float:right;margin-left:5px;margin-right:0;text-align:center}.ui-dark .toolbar button{background:#202020;border-color:#333;color:#C0C0C0}.ui-dark .toolbar button:first-child{border-left-color:#333}.ui-dark .toolbar button:hover{border-color:#404040;color:#FFF}.ui-dark .toolbar button:active{background:#222;color:#A0A0A0;border-color:#333}.ui-dark .toolbar button:disabled{color:#666;border-color:#404040 !important;background:#303030}.ui-dark .toolbar button:disabled i{color:#666 !important}.toolbar-bg{height:44px;background-color:#F0F0F0;padding:10px 10px 0}.ui-dark .toolbar-bg{background-color:#282828}.nav{background-color:#F0F0F0}.nav nav{padding:10px 5px;display:block}.nav nav > div,.nav nav > a{display:block;height:30px;margin:0 5px 2px;line-height:30px;padding:0 10px;border-radius:var(--radius);cursor:pointer;font-size:13px;color:#888;border:0;text-decoration:none !important}.nav nav > div > i,.nav nav > a i{width:14px;text-align:center;margin-right:10px}.nav nav > div:hover,.nav nav > a:hover{background-color:rgba(0,0,0,0.05);color:#000;text-decoration:none !important}.nav nav > div.ui-disabled,.nav nav > a.ui-disabled,.nav nav > div.disabled,.nav nav > a.disabled{cursor:not-allowed;color:#C0C0C0;background-color:transparent !important}.nav nav .selected{background-color:rgba(100,100,100,0.1);color:#000}.nav label{font-size:12px;color:#999;display:block;margin:0 15px 10px;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.nav label i{margin-right:5px}.ui-dark .nav{background-color:#282828}.ui-dark .nav nav > div,.ui-dark .nav nav > a{color:#999}.ui-dark .nav nav > div:hover{background-color:rgba(255,255,255,0.05);color:#FFF}.ui-dark .nav nav > div.ui-disabled,.ui-dark .nav nav > a.ui-disabled,.ui-dark .nav nav > div.disabled,.ui-dark .nav nav > a.disabled{color:#555;background-color:transparent !important}.ui-dark .nav nav .selected{background-color:rgba(255,255,255,0.1);color:#FFF}.ui-dark .nav label{color:#777}.listing{z-index:2;position:relative;overflow:hidden}.listing figure{cursor:pointer}.listing figure > section{margin:-1px 10px 0;border-bottom:1px solid #E0E0E0;padding:10px 0}.listing figure:first-child section{margin-top:0}.listing figure.selected{background-color:#F8F8F8;border-radius:var(--radius)}.listing figure:hover{background-color:#F0F0F0;border-radius:var(--radius)}.listing figure.selected > section,.listing figure:hover > section{border-bottom-color:transparent !important}.listing figure:last-child > section{border-bottom-color:transparent}.ui-dark .listing figure > section{border-color:#303030}.ui-dark .listing figure.selected{background-color:#272727}.ui-dark .listing figure:hover{background-color:#303030}.ui-dark .listing figure:last-child > section{border-bottom-color:transparent}.listing2 figure{cursor:pointer;background-color:rgba(0,0,0,0.05);margin-bottom:2px;border-radius:var(--radius)}.listing2 figure > section{padding:10px}.listing2 figure:first-child section{margin-top:0}.listing2 figure.selected{background-color:rgba(0,0,0,0.09)}.listing2 figure:hover{background-color:rgba(0,0,0,0.08)}.listing2 figure.selected > section,.listing2 figure:hover > section{border-bottom-color:transparent !important}.listing2 figure:last-child > section{border-bottom-color:transparent}.ui-dark .listing2 figure{background-color:rgba(100,100,100,0.1)}.ui-dark .listing2 figure.selected{background-color:rgba(120,120,120,0.2)}.ui-dark .listing2 figure:hover{background-color:rgba(150,150,150,0.2)}.configuration{background-color:#FFF;border-radius:var(--radius);border:1px solid #E0E0E0}.configuration p{margin:0 0 15px;font-size:13px;padding:0;color:#666}.configuration > section > .toolbar{float:right;margin:10px 10px 0}.configuration > section > .toolbar button{height:22px;line-height:20px;min-width:60px}.configuration > section > label{display:block;padding:10px;font-size:15px;color:#000;font-weight:bold;border-top:1px solid #E0E0E0}.configuration > section > label i{margin:3px 6px 0 0;width:15px;text-align:center;float:left}.configuration > section:first-child > label{border-top:0;border-radius:var(--radius) var(--radius) 0 0}.configuration > section > article{border-top:1px solid #E0E0E0}.configuration > section:first-child article:first-child{border-top:0;border-radius:var(--radius) var(--radius) 0 0}.configuration .padding{padding:var(--gap) 15px}.configuration > .toolbar{float:right;margin:10px 10px 0}.configuration > .toolbar button{height:22px;line-height:20px;min-width:60px}.ui-dark .configuration p{color:#A0A0A0}.ui-dark .configuration{background-color:#202020;border-color:#404040}.ui-dark .configuration > section:first-child label{border-top-color:#404040}.ui-dark .configuration > section > article{border-top-color:#404040}.ui-dark .configuration > section label{color:#FFF;border-top-color:#404040}.message{padding:10px;border:2px solid #E0E0E0;border-radius:var(--radius);font-size:12px;margin-bottom:10px}.message i{margin-right:5px}.message-error{border-color:#D63A32;color:#A72C26}.message-alert{border-color:#DEBA31;color:#8c7727}.message-success{border-color:#68B25B;color:#4A7543}.ui-dark .message{border-color:#666;color:#999}.ui-dark .message-error{border-color:#D63A32;color:#DC7772}.ui-dark .message-alert{border-color:#DEBA31;color:#D2BA62}.ui-dark .message-success{border-color:#68B25B;color:#6DAD63}.badge{font-size:12px;padding:4px 6px;border-radius:var(--radius);background-color:var(--color);line-height:12px;vertical-align:middle;position:relative;display:inline-block;color:#FFF}.badge i{margin-right:3px}.badge-blue{background-color:#0E68A6}.badge-red{background-color:#D63B32}.badge-green{background-color:#8CC152}.badge-yellow{background-color:#EFDC05}.badge-orange{background-color:#F49519}.badge-gray{background-color:#606060}.badge-purple{background-color:#967ADC}.badge-pink{background-color:#D770AD}.badge-silver{background-color:#E0E0E0;color:gray}.badge-large,.badge.large{padding:3px 8px;font-size:14px;line-height:16px}.badge-large i,.badge.large i{margin-right:5px}.badge-small,.badge.small{font-size:10px;padding:0px 3px 1px}.badge-medium,.badge.medium{font-size:11px;padding:2px 6px}.badge-medium i,.badge.medium i{margin-right:5px}.ui-dark .badge-silver{background-color:#666;color:#FFF}.caption > .toolbar{float:right;margin:10px 0 0 10px}.caption > .toolbar button{height:22px;line-height:20px;min-width:60px}.caption > label{display:block;padding:10px 0;border-bottom:1px solid #E0E0E0;font-size:15px;color:#000;font-weight:bold}.caption > label i{margin-right:7px}.ui-dark .caption > label{border-bottom-color:#404040;color:#FFF}.keyvalue.small{font-size:11px;min-height:14px;line-height:14px}.keyvalue.small > span i{width:12px}.keyvalue.small > div i{width:12px}.keyvalue.small .badge{padding:2px 4px}.keyvalue.small .badge.small{padding:0 3px 1px}.keyvalue{min-height:20px;font-size:13px;margin-bottom:2px;line-height:17px}.keyvalue > span{width:120px;float:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.keyvalue > span i{width:14px;margin-right:5px}.keyvalue > div{margin-left:120px}.keyvalue > div i{width:14px;margin-right:5px}p{font-size:13px;color:#777;margin:0 0 15px}.iconmenu{height:54px;text-align:center}.iconmenu i{font-size:20px;display:block;padding:8px 0 0}.iconmenu span{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:3px 5px 0;color:#777}.iconmenu > div.selected{background-color:rgba(0,0,0,0.07)}.iconmenu > div{height:54px;width:75px;border:1px solid #E0E0E0;border-left-width:0;float:left;cursor:pointer}.iconmenu > div:first-child{border-left-width:1px;border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.iconmenu > div:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.ui-dark .iconmenu > div.selected{background-color:rgba(255,255,255,0.1)}.ui-dark .iconmenu > div{border-color:#404040}.detail figure{min-height:35px;padding:8px 0 5px;border-top:1px solid #E0E0E0;font-size:13px}.detail figure > p{margin:0 0 20px}.detail figure:first-child{border-top:0}.detail figure > span{float:left;width:140px;color:#777;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:5px}.detail figure > span i{width:14px;margin-right:5px;text-align:center}.detail figure > div{margin-left:150px}.ui-dark .detail figure{border-top-color:#404040}.divider{position:relative;margin:25px 0}.divider div{position:absolute;left:0;top:-10px;right:0;text-align:center}.divider span{background-color:#F0F0F0;border-radius:var(--radius);padding:5px 8px;font-size:11px;color:#999}.divider span i{margin-right:5px}.ui-dark .divider span{background-color:#404040;color:#A0A0A0}.btn{border:0;margin:0;background-color:#E7E7E7;height:40px;padding:0 20px;color:#000;cursor:pointer;font-family:Arial;line-height:34px;vertical-align:middle;outline:0;font-size:14px;text-decoration:none;transition:all 0.3s;width:100%}.btn i{width:15px;text-align:center;margin-right:5px}.btn:hover{opacity:0.8}.btn[name='submit']{font-weight:bold;background-color:var(--color);color:#FFF}.btn:disabled{background-color:#F5F5F5 !important;border-color:#E0E0E0 !important;color:#A0A0A0 !important;cursor:not-allowed;box-shadow:none;opacity:1 !important}.btn:disabled i{color:#A0A0A0 !important}.btn:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.btn:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.btn.small{height:24px;padding:0 8px;line-height:14px;font-size:12px}.ui-dark .btn{background-color:#555;color:#F0F0F0}.ui-dark .btn[name='submit']{background-color:var(--color);color:#FFF}.ui-dark .btn:disabled{background-color:#333 !important;border-color:#333 !important;color:#888 !important}.ui-dark .btn:disabled i{color:#999 !important} 53 | 54 | .ui-layout{border:0;position:absolute;z-index:1}.ui-layout > section{position:absolute;overflow:hidden}.ui-layout > div{position:absolute}.ui-layout-resize-top{height:2px;cursor:row-resize}.ui-layout-resize-bottom{height:2px;cursor:row-resize}.ui-layout-resize-left{width:2px;cursor:col-resize}.ui-layout-resize-right{width:2px;cursor:col-resize}.ui-layout-resize{z-index:2;user-select:none}.ui-layout-resize:hover{background-color:#C0C0C0}.ui-layout-drag{background-color:#C0C0C0}.ui-layout-section{background-color:#F0F0F0}.ui-layout-lock{background-color:rgba(222,222,222,0.8);z-index:100}.ui-dark .ui-layout-section{background-color:#282828}.ui-dark .ui-layout-resize:hover{background-color:#505050}.ui-dark .ui-layout-lock{background-color:rgba(34,34,34,0.8)} 55 | 56 | .ui-loading{position:fixed;width:100%;height:100%;background-color:rgba(255,255,255,0.8);left:0;top:0;z-index:1000}.ui-loading-1 > div{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzgiIGhlaWdodD0iMzgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI4LjA0MiUiIHkxPSIwJSIgeDI9IjY1LjY4MiUiIHkyPSIyMy44NjUlIiBpZD0iYSI+PHN0b3Agc3RvcC1jb2xvcj0iI0EwQTBBMCIgc3RvcC1vcGFjaXR5PSIwIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iI0EwQTBBMCIgc3RvcC1vcGFjaXR5PSIuNjMxIiBvZmZzZXQ9IjYzLjE0NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjQTBBMEEwIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEpIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOCIgc3Ryb2tlPSJ1cmwoI2EpIiBzdHJva2Utd2lkdGg9IjIiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBmcm9tPSIwIDE4IDE4IiB0bz0iMzYwIDE4IDE4IiBkdXI9IjAuOXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+PC9wYXRoPjxjaXJjbGUgZmlsbD0iI0EwQTBBMCIgY3g9IjM2IiBjeT0iMTgiIHI9IjEiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiBmcm9tPSIwIDE4IDE4IiB0bz0iMzYwIDE4IDE4IiBkdXI9IjAuOXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIi8+PC9jaXJjbGU+PC9nPjwvc3ZnPg==) no-repeat 50% 50%;background-size:80px 80px;width:80px;height:80px;position:absolute;left:50%;top:50%;margin:-40px 0 0 -40px}.ui-loading-2 > div{min-height:5px;background-color:#4285f4;width:0;position:absolute;z-index:1;animation:loadinganimation 5s infinite}.ui-loading-1 .ui-loading-text{position:absolute;width:250px;text-align:center;margin:90px 0 0 -125px;left:50%;font-size:12px;color:#000;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-loading-2 .ui-loading-text{font-size:11px;padding:0 5px}.ui-loading-text i{margin-right:5px}.ui-dark .ui-loading{background-color:rgba(0,0,0,0.8)}.ui-dark .ui-loading > div{color:#FFF}@keyframes loadinganimation{0%{left:0}60%{left:0;width:100%}70%{left:70%;width:30%}90%{left:100%;width:30%}100%{left:0;width:0}} 57 | 58 | .page{position:absolute;z-index:10;background-color:#FFF}`); 59 | 60 | COMPONENT('errorhandler','keywords:401=login',function(self,config){self.readonly();self.singleton();self.nocompile();self.blind();self.make=function(){var keywords=config.keywords?config.keywords.split(','):EMPTYARRAY;for(var i=0;i');self.SEEX(config.exec,response)}else{var name=self.caniuse('message')?'message':self.caniuse('notify')?'notify':self.caniuse('notifybar')?'notifybar':self.caniuse('snackbar')?'snackbar':'';if(name)SETTER(name+'/warning',response.items.join('
'));else if(W.console)console.error('ERROR():',response.items.join('
'))}SETTER('!loading/hide',100)})}}); 61 | 62 | COMPONENT('exec',function(self,config){var regparent=/\?\d/,extensions=[];self.readonly();self.blind();self.singleton();self.register=function(fn){extensions.push(fn)};self.make=function(){var scope=null,scopepath=function(el,val){if(!scope)scope=el.scope();return val==null?scope:scope?scope.makepath?scope.makepath(val):val.replace(/\?/g,el.scope().path):val};var fn=function(plus,forceprevent){return function(e){var el=$(this);var attr=el.attrd('exec'+plus);var path=el.attrd('path'+plus);var href=el.attrd('href'+plus);var def=el.attrd('def'+plus);var reset=el.attrd('reset'+plus);scope=null;var prevent=forceprevent?'1':el.attrd('prevent'+plus);if(prevent==='true'||prevent==='1'){e.preventDefault();e.stopPropagation()}if(attr){if(extensions.length){for(var ext of extensions){if(ext(attr,el,e,plus))return}}if(attr.charAt(0)==='@'){attr=attr.substring(1);var com=el.component();if(com&&typeof(com[attr])==='function')com[attr](el,e);return}if(attr.indexOf('?')!==-1){var tmp=scopepath(el);if(tmp){var isparent=regparent.test(attr);attr=tmp.makepath?tmp.makepath(attr):attr.replace(/\?/g,tmp.path);if(isparent&&attr.indexOf('/')!==-1)M.scope(attr.split('/')[0]);else M.scope(tmp.path)}if(scope&&scope.plugin){var index=attr.indexOf('/');if(index!==-1){var method=attr.substring(index+1).trim();if(method){var fn=scope.plugin[method];if(fn)fn.call(scope.plugin,el,e);else WARN('The method "{0}" not found'.format(attr));return}}}}EXEC(attr,el,e)}href&&REDIRECT(href);if(def){if(def.indexOf('?')!==-1)def=scopepath(el,def);DEFAULT(def)}if(reset){if(reset.indexOf('?')!==-1)reset=scopepath(el,reset);RESET(reset)}if(path){var val=el.attrd('value');if(val){if(path.indexOf('?')!==-1)path=scopepath(el,path);var v=GET(path);SET(path,new Function('value','return '+val)(v),true)}}}};var el=$(document.body);el.on('contextmenu',config.selector3||'.exec3',fn('3',true));el.on('dblclick',config.selector2||'.exec2',fn('2'));el.on('click',config.selector||'.exec',fn(''))}}); 63 | 64 | COMPONENT('importer',function(self,config){var init=false,clid=null,pending=false,content='',replace=function(value){return self.scope?self.makepath(value):value.replace(/\?/g,config.path||config.if)};var replace2=function(value){return value?ADAPT(config.path||config.if,config.id,value):value};self.readonly();self.make=function(){var scr=self.find('script');content=scr.length?scr.html():''};self.reload=function(recompile){config.reload&&EXEC(replace(config.reload));recompile&&COMPILE();setTimeout(function(){pending=false;init=true},1000)};self.setter=function(value){if(pending)return;if(config.if!==value){if(config.cleaner&&init&&!clid)clid=setTimeout(self.clean,config.cleaner*60000);return}pending=true;if(clid){clearTimeout(clid);clid=null}if(init){self.reload();return}if(content){self.html(replace2(content));setTimeout(self.reload,50,true)}else self.import(config.url,self.reload,true,replace2)};self.clean=function(){config.clean&&EXEC(replace(config.clean));setTimeout(function(){self.empty();init=false;clid=null},1000)}}); 65 | 66 | COMPONENT('layout','space:1;border:0;parent:window;margin:0;remember:1;autoresize:1;minsize:50',function(self,config,cls){var cls2='.'+cls,cache={},drag={},s={},events={},istop2=false,isbottom2=false,isright2=false,loaded=false,resizecache='',settings,prefkey='',prefexpire='1 month',isreset=false,layout=null;self.readonly();self.init=function(){ON('resize2 + resize',function(){for(var i=0;i section').each(function(){var el=$(this);var type=el.attrd('type');if(type.charAt(type.length-1)==='2'){type=type.substring(0,type.length-1);switch(type){case'top':istop2=true;break;case'bottom':isbottom2=true;break;case'right':isright2=true;break}}el.aclass('{0}-{1} hidden {0}-section'.format(cls,type));el.after('
'.format(cls,type));el.after(''.format(cls,type));s[type]=el});self.find('> .{0}-resize'.format(cls)).each(function(){var el=$(this);s[el.attrd('type')+'resize']=el});self.find('> .{0}-lock'.format(cls)).each(function(){var el=$(this);s[el.attrd('type')+'lock']=el});var tmp=self.find('> script');if(tmp.length){self.rebind(tmp.html(),true);tmp.remove()}events.bind=function(){var el=$(W);el.bind('mousemove',events.mmove);el.bind('mouseup',events.mup);self.element.bind('mouseleave',events.mup)};events.unbind=function(){var el=$(W);el.unbind('mousemove',events.mmove);el.unbind('mouseup',events.mup);self.element.unbind('mouseleave',events.mup)};events.mdown=function(e){var target=$(e.target);var type=target.attrd('type');var w=self.width();var h=self.height();var m=2;self.element.find('iframe').css('pointer-events','none');drag.cur=self.element.offset();drag.cur.top-=10;drag.cur.left-=8;drag.offset=target.position();drag.el=target;drag.x=e.pageX;drag.y=e.pageY;drag.horizontal=type==='left'||type==='right'?1:0;drag.type=type;drag.plusX=10;drag.plusY=10;drag.newx=-1;drag.newy=-1;drag.w=w;drag.h=h;var ch=cache[type],min=ch.minsize?(ch.minsize.value-1):0;var max=ch.maxsize?(ch.maxsize.value-1):0;target.aclass(cls+'-drag');switch(type){case'top':drag.min=min||(ch.size-m);drag.max=(cache.bottom?(h-s.bottom.height()-config.minsize):0);if(max&&drag.max>max)drag.max=max;break;case'right':drag.min=(min||ch.size);drag.max=(cache.left?(w-s.left.width()-config.minsize):0);if(max&&drag.max>max)drag.max=max;break;case'bottom':drag.min=(min||ch.size);drag.max=(cache.top?(h-s.top.height()-config.minsize):0);if(max&&drag.max>max)drag.max=max;break;case'left':drag.min=min||(ch.size-m);if(drag.minmax)drag.max=max;break}events.bind()};events.mmove=function(e){if(drag.horizontal){var x=drag.offset.left+(e.pageX-drag.x);if(drag.type==='right')x=drag.w-x;if(xdrag.max)x=drag.max-1;if(drag.type==='right')x=drag.w-x;drag.newy=x;drag.el.css('left',x+'px')}else{var y=drag.offset.top+(e.pageY-drag.y);if(drag.type==='bottom')y=drag.h-y;if(ydrag.max)y=drag.max-1;if(drag.type==='bottom')y=drag.h-y;drag.newy=y;drag.el.css('top',y+'px')}};events.mup=function(){self.element.find('iframe').css('pointer-events','');var offset=drag.el.position();var d=WIDTH();var pk=prefkey+'_'+layout+'_'+drag.type+'_'+d;drag.el.rclass(cls+'-drag');if(drag.horizontal){var w=offset.left;if(!isright2&&drag.type==='right')w=self.width()-w;s[drag.type].css('width',w);config.remember&&PREF.set(pk,w,prefexpire)}else{var h=offset.top;if(drag.type==='bottom'||drag.type==='preview')h=self.height()-h;s[drag.type].css('height',h);config.remember&&PREF.set(pk,h,prefexpire)}events.unbind();self.refresh()};self.find('> '+cls2+'-resize').on('mousedown',events.mdown)};self.lock=function(type,b){var el=s[type+'lock'];el&&el.tclass('hidden',b==null?b:!b)};self.rebind=function(code,noresize){code=code.trim();prefkey='L'+HASH(code);resizecache='';settings=new Function('return '+code)();!noresize&&self.resize()};var getSize=function(display,data){var obj=data[display];if(obj)return obj;switch(display){case'md':return getSize('lg',data);case'sm':return getSize('md',data);case'xs':return getSize('sm',data)}return data};var checktimeout=null,check=function(){checktimeout=null;self.resize()};self.resize=function(){if(self.dom.offsetParent==null){if(!checktimeout)checktimeout=setTimeout(check,500);return}if(checktimeout){clearTimeout(checktimeout);checktimeout=null}if(settings==null)return;var d=WIDTH();var el=self.parent(config.parent);var width=el.width();var height=el.height();var key=d+'x'+width+'x'+height;if(resizecache===key)return;var tmp=layout?settings[layout]:settings;if(tmp==null){WARN('j-Layout: layout "{0}" not found'.format(layout));tmp=settings}var size=getSize(d,tmp);height-=config.margin;resizecache=key;self.css({width:width,height:height});for(var k in s){el=s[k];self.update(k,size[k]?size[k]:settings[k])}config.resize&&self.EXEC(config.resize,d,width,height)};var parseSize=function(val,size){var str=typeof(val)==='string';var obj={raw:str?val.parseFloat():val,percentage:str?val.charAt(val.length-1)==='%':false};obj.value=obj.percentage?((((size/100)*obj.raw)>>0)-config.space):obj.raw;return obj};self.reset=function(){isreset=true;resizecache='';self.resize()};self.layout=function(name){if(name==null)name='';if(layout!=name){layout=name;resizecache='';self.resize()}};self.update=function(type,opt){if(opt==null)return;if(typeof(opt)==='string')opt=opt.parseConfig();if(s[type]==null)return;var el=s[type],css={},is=0,size=null,d=WIDTH();var c=cache[type];if(c==null)c=cache[type]={};var w=self.width();var h=self.height();var pk=prefkey+'_'+layout+'_'+type+'_'+d,cached=PREF.get(pk,prefexpire);if(isreset){cached&&PREF.set(pk);cached=0}var def=getSize(d,settings);var width=(opt.size||opt.width)||(def[type]?def[type].width:0);var height=(opt.size||opt.height)||(def[type]?def[type].height:0);if(width&&(type==='left'||type==='right')){size=parseSize(width,w);c.size=size.value;css.width=cached?cached:size.value;is=1}if(type==='left'||type==='right'){c.minsize=opt.minsize?parseSize(opt.minsize,w):0;c.maxsize=opt.maxsize?parseSize(opt.maxsize,w):0}else if(type==='top'||type==='bottom'){c.minsize=opt.minsize?parseSize(opt.minsize,h):0;c.maxsize=opt.maxsize?parseSize(opt.maxsize,h):0}if(height&&(type==='top'||type==='bottom')){size=parseSize(height,h);c.size=size.value;css.height=(cached?cached:size.value);is=1}if(opt.show==null)opt.show=true;el.tclass('hidden',!opt.show);c.show=!!opt.show;c.resize=opt.resize==null?false:!!opt.resize;el.tclass(cls+'-resizable',c.resize);s[type+'resize'].tclass('hidden',!c.show||!c.resize);is&&el.css(css);setTimeout2(self.ID+'refresh',self.refresh,50)};var getWidth=function(el){return el.hclass('hidden')?0:el.width()};var getHeight=function(el){return el.hclass('hidden')?0:el.height()};self.refresh=function(){var top=0,bottom=0,right=0,left=0,hidden='hidden',top2=0,bottom2=0,space=2,topbottomoffset=0,right2visible=isright2&&!s.right.hclass(hidden);if(s.top)top=top2=getHeight(s.top);if(s.bottom)bottom=bottom2=getHeight(s.bottom);var width=self.width()-(config.border*2);var height=self.height()-(config.border*2);if(istop2){topbottomoffset++;top2=0}if(isbottom2){topbottomoffset--;bottom2=0}if(s.left&&!s.left.hclass(hidden)){var cssleft={};space=top&&bottom?2:top||bottom?1:0;cssleft.left=0;cssleft.top=istop2?config.border:(top?(top+config.space):0);cssleft.height=isbottom2?(height-top2-config.border):(height-top2-bottom2-(config.space*space));cssleft.height+=topbottomoffset;s.left.css(cssleft);cssleft.width=s.left.width();s.leftlock.css(cssleft);delete cssleft.width;left=s.left.width();cssleft.left=s.left.width();s.leftresize.css(cssleft);s.leftresize.tclass(hidden,!s.left.hclass(cls+'-resizable'))}if(s.right&&!s.right.hclass(hidden)){right=s.right.width();space=top&&bottom?2:top||bottom?1:0;var cssright={};cssright.left=right2visible?(getWidth(s.left)+config.border+config.space):(width-right);cssright.top=istop2?config.border:(top?(top+config.space):0);cssright.height=isbottom2?(height-top2-config.border):(height-top2-bottom2-(config.space*space));cssright.height+=topbottomoffset;s.right.css(cssright);cssright.width=s.right.width();if(!isright2&&(width-cssright.left)<=0){s.right.css('left',0);cssright.width++}s.rightlock.css(cssright);delete cssright.width;if(right2visible)cssright.left+=s.right.width();else cssright.left=width-right-2;s.rightresize.css(cssright);s.rightresize.tclass(hidden,!s.right.hclass(cls+'-resizable'))}if(s.top){var csstop={};space=left?config.space:0;csstop.left=istop2?(left+space):0;if(right2visible&&istop2)csstop.left+=getWidth(s.right)+config.space;space=left&&right?2:left||right?1:0;csstop.width=istop2?(width-right-left-(config.space*space)):width;csstop.top=0;s.top.css(csstop);s.topresize.css(csstop);csstop.height=s.top.height();s.toplock.css(csstop);delete csstop.height;csstop.top=s.top.height();s.topresize.css(csstop);s.topresize.tclass(hidden,!s.top.hclass(cls+'-resizable'))}if(s.bottom){var cssbottom={};cssbottom.top=height-bottom;space=left?config.space:0;cssbottom.left=isbottom2?(left+space):0;if(right2visible&&isbottom2)cssbottom.left+=getWidth(s.right)+config.space;space=left&&right?2:left||right?1:0;cssbottom.width=isbottom2?(width-right-left-(config.space*space)):width;s.bottom.css(cssbottom);cssbottom.height=s.bottom.height();s.bottomlock.css(cssbottom);delete cssbottom.height;cssbottom.top=cssbottom.top-2;s.bottomresize.css(cssbottom);s.bottomresize.tclass(hidden,!s.bottom.hclass(cls+'-resizable'))}var space=left&&right?2:left?1:right?1:0,css={};css.left=left?left+config.space:0;if(right2visible)css.left+=getWidth(s.right)+config.space;css.width=(width-left-right-(config.space*space));css.top=top?top+config.space:0;space=top&&bottom?2:top||bottom?1:0;css.height=height-top-bottom-(config.space*space);s.main&&s.main.css(css);s.mainlock&&s.mainlock.css(css);self.element.SETTER('*/resize');config.resize&&self.EXEC(config.resize,WIDTH(),width,height);if(loaded==false){loaded=true;self.rclass('invisible')}isreset=false};self.setter=function(value){self.layout(value)}}); 67 | 68 | COMPONENT('loading',function(self,config,cls){var delay,prev;self.readonly();self.singleton();self.nocompile();self.make=function(){self.aclass(cls+' '+cls+'-'+(config.style||1));self.append('
')};self.show=function(text){clearTimeout(delay);if(prev!==text){prev=text;self.find('.'+cls+'-text').html(text||'')}self.rclass('hidden');document.activeElement&&document.activeElement.blur();return self};self.hide=function(timeout){clearTimeout(delay);delay=setTimeout(function(){self.aclass('hidden')},timeout||1);return self}}); 69 | 70 | COMPONENT('page','hide:1;loading:1;delay:500;delayloading:800',function(self,config,cls){var init=false,clid=null,downloading=false,isresizing=false,cache={};self.releasemode&&self.releasemode('true');self.readonly();self.make=function(){self.aclass(cls)};self.resize=function(){if(config.absolute){var pos=self.element.position();var obj={};obj.width=WW-pos.left;obj.height=WH-pos.top;self.css(obj)}};var replace=function(value){return value.replace(/\?/g,config.path||config.if)};self.setter=function(value){if(cache[value]){if(downloading)return;if(config.absolute&&!isresizing){self.on('resize2',self.resize);isresizing=true}if(self.dom.hasChildNodes()){if(clid){clearTimeout(clid);clid=null}self.release(false);var done=function(){config.hide&&self.rclass('hidden');config.reload&&EXEC(replace(config.reload));config.default&&DEFAULT(replace(config.default),true);var invisible=self.hclass('invisible');invisible&&self.rclass('invisible',config.delay);isresizing&&setTimeout(self.resize,50);setTimeout(self.emitresize,200);config.autofocus&&self.autofocus(config.autofocus)};if(config.check)EXEC(replace(config.check),done);else done()}else{config.loading&&SETTER('loading/show');downloading=true;setTimeout(function(){var preparator;if(config.replace)preparator=GET(replace(config.replace));else{preparator=function(content){var path=replace(config.path||config.if);return ADAPT(path,config.id,content)}}self.import(replace(config.url),function(){if(!init){config.init&&EXEC(replace(config.init));init=true}var done=function(){config.hide&&self.rclass('hidden');self.release(false);config.reload&&EXEC(replace(config.reload),true);config.default&&DEFAULT(replace(config.default),true);config.loading&&SETTER('loading/hide',config.delayloading);var invisible=self.hclass('invisible');invisible&&self.rclass('invisible',config.delay);isresizing&&setTimeout(self.resize,50);setTimeout(self.emitresize,200);downloading=false;config.autofocus&&self.autofocus(config.autofocus)};EMIT('pages.'+config.if,self.element,self);if(config.check)EXEC(replace(config.check),done);else done()},true,preparator)},200)}}else{if(!self.hclass('hidden')){config.hidden&&EXEC(replace(config.hidden));config.hide&&self.aclass('hidden'+(config.invisible?' invisible':''));self.release(true)}if(config.cleaner&&init&&!clid)clid=setTimeout(self.clean,config.cleaner*60000)}};self.emitresize=function(){self.element.SETTER('*','resize')};self.configure=function(key,value){switch(key){case'if':var tmp=(value+'').split(',').trim();cache={};for(var i=0;i 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | @{import('meta', 'head', 'default.css', 'default.js', 'favicon.ico')} 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
34 | 35 |
36 |
@{user.initials}
37 |
38 |
39 | @(Help) 40 | @(Settings) 41 | @(Sign out) 42 |
43 |
44 | 45 |
46 |
47 | 48 | 49 | 72 | 73 | 74 |
75 |
76 | 77 |
78 |
79 | 80 | 81 |
82 |
83 | 84 | 85 | 86 | @{json(user, 'userdata')} 87 | 88 | 120 | 121 | 122 | 123 | 124 | --------------------------------------------------------------------------------