5 'require tools.widgets as widgets';
9 callLeds
= rpc
.declare({
15 callUSB
= rpc
.declare({
17 method
: 'getUSBDevices',
21 return L
.view
.extend({
29 render: function(results
) {
30 var leds
= results
[0],
36 for (var i
= 0; i
< leds
[k
].triggers
.length
; i
++)
37 triggers
[leds
[k
].triggers
[i
]] = true;
39 m
= new form
.Map('system',
40 _('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
41 _('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
43 s
= m
.section(form
.GridSection
, 'led', '');
47 s
.addbtntitle
= _('Add LED action');
49 s
.option(form
.Value
, 'name', _('Name'));
51 o
= s
.option(form
.ListValue
, 'sysfs', _('<abbr title="Light Emitting Diode">LED</abbr> Name'));
52 Object
.keys(leds
).sort().forEach(function(name
) { o
.value(name
) });
54 o
= s
.option(form
.Flag
, 'default', _('Default state'));
57 trigger
= s
.option(form
.ListValue
, 'trigger', _('Trigger'));
58 if (usb
.devices
&& usb
.devices
.length
)
59 triggers
['usbdev'] = true;
60 if (usb
.ports
&& usb
.ports
.length
)
61 triggers
['usbport'] = true;
62 Object
.keys(triggers
).sort().forEach(function(t
) { trigger
.value(t
, t
.replace(/-/g
, '')) });
64 o
= s
.option(form
.Value
, 'delayon', _('On-State Delay'));
66 o
.depends('trigger', 'timer');
68 o
= s
.option(form
.Value
, 'delayoff', _('Off-State Delay'));
70 o
.depends('trigger', 'timer');
72 o
= s
.option(widgets
.DeviceSelect
, '_net_dev', _('Device'));
77 o
.depends('trigger', 'netdev');
78 o
.remove = function(section_id
) {
79 var t
= trigger
.formvalue(section_id
);
80 if (t
!= 'netdev' && t
!= 'usbdev')
81 uci
.unset('system', section_id
, 'dev');
84 o
= s
.option(form
.MultiValue
, 'mode', _('Trigger Mode'));
87 o
.depends('trigger', 'netdev');
88 o
.value('link', _('Link On'));
89 o
.value('tx', _('Transmit'));
90 o
.value('rx', _('Receive'));
92 if (usb
.devices
&& usb
.devices
.length
) {
93 o
= s
.option(form
.ListValue
, '_usb_dev', _('USB Device'));
94 o
.depends('trigger', 'usbdev');
98 o
.remove = function(section_id
) {
99 var t
= trigger
.formvalue(section_id
);
100 if (t
!= 'netdev' && t
!= 'usbdev')
101 uci
.unset('system', section_id
, 'dev');
104 usb
.devices
.forEach(function(usbdev
) {
105 o
.value(usbdev
.id
, '%s (%s - %s)'.format(usbdev
.id
, usbdev
.vendor
|| '?', usbdev
.product
|| '?'));
109 if (usb
.ports
&& usb
.ports
.length
) {
110 o
= s
.option(form
.MultiValue
, 'port', _('USB Ports'));
111 o
.depends('trigger', 'usbport');
114 o
.cfgvalue = function(section_id
) {
116 value
= uci
.get('system', section_id
, 'port');
118 if (!Array
.isArray(value
))
119 value
= String(value
|| '').split(/\s+/);
121 for (var i
= 0; i
< value
.length
; i
++)
122 if (value
[i
].match(/^(\d+)-(\d+)$/))
123 ports
.push('usb%d-port%d'.format(Regexp
.$1, Regexp
.$2));
125 ports
.push(value
[i
]);
129 usb
.ports
.forEach(function(usbport
) {
130 var dev
= (usbport
.device
&& Array
.isArray(usb
.devices
))
131 ? usb
.devices
.filter(function(d
) { return d
.id
== usbport
.device
})[0] : null;
133 var label
= _('Port %s').format(usbport
.port
);
136 label
+= ' (%s - %s)'.format(dev
.vendor
|| '?', dev
.product
|| '?');
138 o
.value(usbport
.port
, label
);
142 o
= s
.option(form
.Value
, 'port_mask', _('Switch Port Mask'));
144 o
.depends('trigger', 'switch0');
145 o
.depends('trigger', 'switch1');