mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-07 20:54:14 +08:00
⛄ Sync 2026-04-23 20:32:35
This commit is contained in:
1 parent
17738c6f79
commit
fe51d2b304
206 files changed
+725671
No files matched your search
@@ -0,0 +1,133 @@
|
||||
'use strict';
|
||||
'require view';
|
||||
'require uci';
|
||||
'require rpc';
|
||||
'require form';
|
||||
'require fs';
|
||||
|
||||
const callLeds = rpc.declare({
|
||||
object: 'luci',
|
||||
method: 'getLEDs',
|
||||
expect: { '': {} }
|
||||
});
|
||||
|
||||
return view.extend({
|
||||
load() {
|
||||
return Promise.all([
|
||||
callLeds(),
|
||||
L.resolveDefault(fs.list('/www' + L.resource('view/system/led-trigger')), [])
|
||||
]).then(function([leds, plugins]) {
|
||||
const tasks = [];
|
||||
|
||||
for (let p of plugins) {
|
||||
const m = p.name.match(/^(.+)\.js$/);
|
||||
|
||||
if (p.type != 'file' || m == null)
|
||||
continue;
|
||||
|
||||
tasks.push(L.require('view.system.led-trigger.' + m[1]).then(L.bind(function(name){
|
||||
return L.resolveDefault(L.require('view.system.led-trigger.' + name)).then(function(form) {
|
||||
return {
|
||||
name: name,
|
||||
form: form,
|
||||
};
|
||||
});
|
||||
}, this, m[1])));
|
||||
}
|
||||
|
||||
return Promise.all(tasks).then(function(plugins) {
|
||||
return [leds, plugins];
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
render([leds, plugins]) {
|
||||
let m, s, o;
|
||||
const triggers = [];
|
||||
|
||||
for (let k in leds)
|
||||
for (let t of leds[k].triggers)
|
||||
triggers.push(t);
|
||||
|
||||
m = new form.Map('system',
|
||||
_('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
|
||||
_('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
|
||||
|
||||
s = m.section(form.GridSection, 'led', '');
|
||||
s.anonymous = true;
|
||||
s.addremove = true;
|
||||
s.sortable = true;
|
||||
s.addbtntitle = _('Add LED action');
|
||||
s.nodescriptions = true;
|
||||
|
||||
s.option(form.Value, 'name', _('Name'));
|
||||
|
||||
o = s.option(form.ListValue, 'sysfs', _('<abbr title="Light Emitting Diode">LED</abbr> Name'));
|
||||
Object.keys(leds).sort().forEach(function(name) {
|
||||
o.value(name)
|
||||
});
|
||||
|
||||
o = s.option(form.ListValue, 'trigger', _('Trigger'));
|
||||
for (let plugin of plugins) {
|
||||
if ( plugin.form.kernel == false ) {
|
||||
o.value(plugin.name, plugin.form.trigger);
|
||||
}
|
||||
else {
|
||||
if (triggers.indexOf(plugin.name) >= 0)
|
||||
o.value(plugin.name, plugin.form.trigger);
|
||||
}
|
||||
}
|
||||
o.onchange = function(ev, section, value) {
|
||||
const nes = this.map.findElement('id', 'cbid.system.%s.trigger'.format(section)).nextElementSibling;
|
||||
for (let plugin of plugins) {
|
||||
if ( plugin.name === value && nes )
|
||||
nes.innerText = plugin.form.description || '';
|
||||
}
|
||||
}
|
||||
o.load = function(section_id) {
|
||||
const trigger = uci.get('system', section_id, 'trigger');
|
||||
for (let plugin of plugins) {
|
||||
if ( plugin.name === trigger)
|
||||
this.description = plugin.form.description || ' ';
|
||||
}
|
||||
return trigger;
|
||||
};
|
||||
|
||||
s.addModalOptions = function(s) {
|
||||
for (let plugin of plugins) {
|
||||
plugin.form.addFormOptions(s);
|
||||
}
|
||||
|
||||
const opts = s.getOption();
|
||||
|
||||
const removeIfNoneActive = function(original_remove_fn, section_id) {
|
||||
let isAnyActive = false;
|
||||
|
||||
for (let optname in opts) {
|
||||
if (opts[optname].ucioption != this.ucioption)
|
||||
continue;
|
||||
|
||||
if (!opts[optname].isActive(section_id))
|
||||
continue;
|
||||
|
||||
isAnyActive = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!isAnyActive)
|
||||
original_remove_fn.call(this, section_id);
|
||||
};
|
||||
|
||||
for (let optname in opts) {
|
||||
if (!opts[optname].ucioption || optname == opts[optname].ucioption)
|
||||
continue;
|
||||
opts[optname].remove = removeIfNoneActive.bind(opts[optname], opts[optname].remove);
|
||||
}
|
||||
};
|
||||
|
||||
o = s.option(form.Value, 'interval', _('Interval'), _('milliseconds'));
|
||||
o.placeholder = '50';
|
||||
|
||||
return m.render();
|
||||
}
|
||||
});
|
||||
Reference in new issue
Block a user