8 var callLeds
= rpc
.declare({
18 L
.resolveDefault(fs
.list('/www' + L
.resource('view/system/led-trigger')), [])
19 ]).then(function(data
) {
20 var plugins
= data
[1];
23 for (var i
= 0; i
< plugins
.length
; i
++) {
24 var m
= plugins
[i
].name
.match(/^(.+)\.js$/);
26 if (plugins
[i
].type
!= 'file' || m
== null)
29 tasks
.push(L
.require('view.system.led-trigger.' + m
[1]).then(L
.bind(function(name
){
30 return L
.resolveDefault(L
.require('view.system.led-trigger.' + name
)).then(function(form
) {
39 return Promise
.all(tasks
).then(function(plugins
) {
48 render: function(data
) {
49 var m
, s
, o
, triggers
= [];
51 var plugins
= data
[1];
54 for (var i
= 0; i
< leds
[k
].triggers
.length
; i
++)
55 triggers
[i
] = leds
[k
].triggers
[i
];
57 m
= new form
.Map('system',
58 _('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
59 _('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
61 s
= m
.section(form
.GridSection
, 'led', '');
65 s
.addbtntitle
= _('Add LED action');
66 s
.nodescriptions
= true;
68 s
.option(form
.Value
, 'name', _('Name'));
70 o
= s
.option(form
.ListValue
, 'sysfs', _('<abbr title="Light Emitting Diode">LED</abbr> Name'));
71 Object
.keys(leds
).sort().forEach(function(name
) {
75 o
= s
.option(form
.ListValue
, 'trigger', _('Trigger'));
76 for (var i
= 0; i
< plugins
.length
; i
++) {
77 var plugin
= plugins
[i
];
79 if ( plugin
.form
.kernel
== false ) {
80 o
.value(plugin
.name
, plugin
.form
.trigger
);
83 if (triggers
.indexOf(plugin
.name
) >= 0)
84 o
.value(plugin
.name
, plugin
.form
.trigger
);
87 o
.onchange = function(ev
, section
, value
) {
88 for (var i
= 0; i
< plugins
.length
; i
++) {
89 var plugin
= plugins
[i
];
90 if ( plugin
.name
=== value
)
91 this.map
.findElement('id', 'cbid.system.%s.trigger'.format(section
))
92 .nextElementSibling
.innerHTML
= plugin
.form
.description
|| '';
95 o
.load = function(section_id
) {
96 var trigger
= uci
.get('system', section_id
, 'trigger');
97 for (var i
= 0; i
< plugins
.length
; i
++) {
98 var plugin
= plugins
[i
];
99 if ( plugin
.name
=== trigger
)
100 this.description
= plugin
.form
.description
|| ' ';
105 s
.addModalOptions = function(s
) {
106 for (var i
= 0; i
< plugins
.length
; i
++) {
107 var plugin
= plugins
[i
];
108 plugin
.form
.addFormOptions(s
);
111 var opts
= s
.getOption();
113 var removeIfNoneActive = function(original_remove_fn
, section_id
) {
114 var isAnyActive
= false;
116 for (var optname
in opts
) {
117 if (opts
[optname
].ucioption
!= this.ucioption
)
120 if (!opts
[optname
].isActive(section_id
))
128 original_remove_fn
.call(this, section_id
);
131 for (var optname
in opts
) {
132 if (!opts
[optname
].ucioption
|| optname
== opts
[optname
].ucioption
)
134 opts
[optname
].remove
= removeIfNoneActive
.bind(opts
[optname
], opts
[optname
].remove
);