8 function invokeIncludesLoad(includes) {
9 var tasks = [], has_load = false;
11 for (var i = 0; i < includes.length; i++) {
12 if (typeof(includes[i].load) == 'function') {
13 tasks.push(includes[i].load().catch(L.bind(function() {
24 return has_load ? Promise.all(tasks) : Promise.resolve(null);
27 function startPolling(includes, containers) {
28 var step = function() {
29 return network.flushCache().then(function() {
30 return invokeIncludesLoad(includes);
31 }).then(function(results) {
32 for (var i = 0; i < includes.length; i++) {
35 if (includes[i].failed)
38 if (typeof(includes[i].render) == 'function')
39 content = includes[i].render(results ? results[i] : null);
40 else if (includes[i].content != null)
41 content = includes[i].content;
43 if (content != null) {
44 containers[i].parentNode.style.display = '';
45 containers[i].parentNode.classList.add('fade-in');
47 dom.content(containers[i], content);
51 var ssi = document.querySelector('div.includes');
53 ssi.style.display = '';
54 ssi.classList.add('fade-in');
59 return step().then(function() {
66 return L.resolveDefault(fs.list('/www' + L.resource('view/status/include')), []).then(function(entries) {
67 return Promise.all(entries.filter(function(e) {
68 return (e.type == 'file' && e.name.match(/\.js$/));
70 return 'view.status.include.' + e.name.replace(/\.js$/, '');
71 }).sort().map(function(n) {
77 render: function(includes) {
78 var rv = E([]), containers = [];
80 for (var i = 0; i < includes.length; i++) {
83 if (includes[i].title != null)
84 title = includes[i].title;
86 title = String(includes[i]).replace(/^\[ViewStatusInclude\d+_(.+)Class\]$/,
87 function(m, n) { return n.replace(/(^|_)(.)/g,
88 function(m, s, c) { return (s ? ' ' : '') + c.toUpperCase() })
91 var container = E('div');
93 rv.appendChild(E('div', { 'class': 'cbi-section', 'style': 'display:none' }, [
94 title != '' ? E('h3', title) : '',
98 containers.push(container);
101 return startPolling(includes, containers).then(function() {
106 handleSaveApply: null,