mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add dashboard with omr support
This commit is contained in:
parent
3c25b997dc
commit
c98df165fe
13 changed files with 1589 additions and 0 deletions
|
@ -0,0 +1,110 @@
|
|||
'use strict';
|
||||
'require view';
|
||||
'require dom';
|
||||
'require poll';
|
||||
'require fs';
|
||||
'require network';
|
||||
|
||||
document.querySelector('head').appendChild(E('link', {
|
||||
'rel': 'stylesheet',
|
||||
'type': 'text/css',
|
||||
'href': L.resource('view/dashboard/css/custom.css')
|
||||
}));
|
||||
|
||||
function invokeIncludesLoad(includes) {
|
||||
var tasks = [], has_load = false;
|
||||
|
||||
for (var i = 0; i < includes.length; i++) {
|
||||
if (typeof(includes[i].load) == 'function') {
|
||||
tasks.push(includes[i].load().catch(L.bind(function() {
|
||||
this.failed = true;
|
||||
}, includes[i])));
|
||||
|
||||
has_load = true;
|
||||
}
|
||||
else {
|
||||
tasks.push(null);
|
||||
}
|
||||
}
|
||||
|
||||
return has_load ? Promise.all(tasks) : Promise.resolve(null);
|
||||
}
|
||||
|
||||
function startPolling(includes, containers) {
|
||||
var step = function() {
|
||||
return network.flushCache().then(function() {
|
||||
return invokeIncludesLoad(includes);
|
||||
}).then(function(results) {
|
||||
for (var i = 0; i < includes.length; i++) {
|
||||
var content = null;
|
||||
|
||||
if (includes[i].failed)
|
||||
continue;
|
||||
|
||||
if (typeof(includes[i].render) == 'function')
|
||||
content = includes[i].render(results ? results[i] : null);
|
||||
else if (includes[i].content != null)
|
||||
content = includes[i].content;
|
||||
|
||||
if (content != null) {
|
||||
|
||||
if (i > 1) {
|
||||
dom.append(containers[1], content);
|
||||
} else {
|
||||
containers[i].parentNode.style.display = '';
|
||||
containers[i].parentNode.classList.add('fade-in');
|
||||
containers[i].parentNode.classList.add('Dashboard');
|
||||
dom.content(containers[i], content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ssi = document.querySelector('div.includes');
|
||||
if (ssi) {
|
||||
ssi.style.display = '';
|
||||
ssi.classList.add('fade-in');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
return step().then(function() {
|
||||
poll.add(step);
|
||||
});
|
||||
}
|
||||
|
||||
return view.extend({
|
||||
load: function() {
|
||||
return L.resolveDefault(fs.list('/www' + L.resource('view/dashboard/include')), []).then(function(entries) {
|
||||
return Promise.all(entries.filter(function(e) {
|
||||
return (e.type == 'file' && e.name.match(/\.js$/));
|
||||
}).map(function(e) {
|
||||
return 'view.dashboard.include.' + e.name.replace(/\.js$/, '');
|
||||
}).sort().map(function(n) {
|
||||
return L.require(n);
|
||||
}));
|
||||
});
|
||||
},
|
||||
|
||||
render: function(includes) {
|
||||
var rv = E([]), containers = [];
|
||||
|
||||
for (var i = 0; i < includes.length - 1; i++) {
|
||||
|
||||
var container = E('div', { 'class': 'section-content' });
|
||||
|
||||
rv.appendChild(E('div', { 'class': 'cbi-section-' + i, 'style': 'display:none' }, [
|
||||
container
|
||||
]));
|
||||
|
||||
containers.push(container);
|
||||
}
|
||||
|
||||
return startPolling(includes, containers).then(function() {
|
||||
return rv;
|
||||
});
|
||||
},
|
||||
|
||||
handleSaveApply: null,
|
||||
handleSave: null,
|
||||
handleReset: null
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue