6 var callLeds
, callUSB
, callNetdevs
;
8 callLeds
= rpc
.declare({
14 callUSB
= rpc
.declare({
16 method
: 'getUSBDevices',
20 callNetdevs
= rpc
.declare({
23 expect
: { result
: [] },
24 filter: function(res
) {
26 for (var i
= 0; i
< res
.length
; i
++)
27 devs
[res
[i
].name
] = true;
28 return Object
.keys(devs
).sort();
32 return L
.view
.extend({
41 render: function(results
) {
42 var leds
= results
[0],
49 for (var i
= 0; i
< leds
[k
].triggers
.length
; i
++)
50 triggers
[leds
[k
].triggers
[i
]] = true;
52 m
= new form
.Map('system',
53 _('<abbr title="Light Emitting Diode">LED</abbr> Configuration'),
54 _('Customizes the behaviour of the device <abbr title="Light Emitting Diode">LED</abbr>s if possible.'));
56 s
= m
.section(form
.TypedSection
, 'led', '');
60 s
.option(form
.Value
, 'name', _('Name'));
62 o
= s
.option(form
.ListValue
, 'sysfs', _('<abbr title="Light Emitting Diode">LED</abbr> Name'));
63 Object
.keys(leds
).sort().forEach(function(name
) { o
.value(name
) });
65 o
= s
.option(form
.Flag
, 'default', _('Default state'));
68 trigger
= s
.option(form
.ListValue
, 'trigger', _('Trigger'));
69 Object
.keys(triggers
).sort().forEach(function(t
) { trigger
.value(t
, t
.replace(/-/g
, '')) });
70 if (usb
.devices
&& usb
.devices
.length
)
71 trigger
.value('usbdev');
72 if (usb
.ports
&& usb
.ports
.length
)
73 trigger
.value('usbport');
75 o
= s
.option(form
.Value
, 'delayon', _('On-State Delay'));
76 o
.depends('trigger', 'timer');
78 o
= s
.option(form
.Value
, 'delayoff', _('Off-State Delay'));
79 o
.depends('trigger', 'timer');
81 o
= s
.option(form
.ListValue
, '_net_dev', _('Device'));
84 o
.depends('trigger', 'netdev');
85 o
.remove = function(section_id
) {
86 var t
= trigger
.formvalue(section_id
);
87 if (t
!= 'netdev' && t
!= 'usbdev')
88 uci
.unset('system', section_id
, 'dev');
91 netdevs
.sort().forEach(function(dev
) { o
.value(dev
) });
93 o
= s
.option(form
.MultiValue
, 'mode', _('Trigger Mode'));
95 o
.depends('trigger', 'netdev');
96 o
.value('link', _('Link On'));
97 o
.value('tx', _('Transmit'));
98 o
.value('rx', _('Receive'));
100 if (usb
.devices
&& usb
.devices
.length
) {
101 o
= s
.option(form
.ListValue
, '_usb_dev', _('USB Device'));
102 o
.depends('trigger', 'usbdev');
105 o
.remove = function(section_id
) {
106 var t
= trigger
.formvalue(section_id
);
107 if (t
!= 'netdev' && t
!= 'usbdev')
108 uci
.unset('system', section_id
, 'dev');
111 usb
.devices
.forEach(function(usbdev
) {
112 o
.value(usbdev
.id
, '%s (%s - %s)'.format(usbdev
.id
, usbdev
.vendor
|| '?', usbdev
.product
|| '?'));
116 if (usb
.ports
&& usb
.ports
.length
) {
117 o
= s
.option(form
.MultiValue
, 'port', _('USB Ports'));
118 o
.depends('trigger', 'usbport');
120 o
.cfgvalue = function(section_id
) {
122 value
= uci
.get('system', section_id
, 'port');
124 if (!Array
.isArray(value
))
125 value
= String(value
|| '').split(/\s+/);
127 for (var i
= 0; i
< value
.length
; i
++)
128 if (value
[i
].match(/^(\d+)-(\d+)$/))
129 ports
.push('usb%d-port%d'.format(Regexp
.$1, Regexp
.$2));
131 ports
.push(value
[i
]);
135 usb
.ports
.forEach(function(usbport
) {
136 var dev
= (usbport
.device
&& Array
.isArray(usb
.devices
))
137 ? usb
.devices
.filter(function(d
) { return d
.id
== usbport
.device
})[0] : null;
139 var label
= _('Port %s').format(usbport
.port
);
142 label
+= ' (%s - %s)'.format(dev
.vendor
|| '?', dev
.product
|| '?');
144 o
.value(usbport
.port
, label
);
148 o
= s
.option(form
.Value
, 'port_mask', _('Switch Port Mask'));
149 o
.depends('trigger', 'switch0');
150 o
.depends('trigger', 'switch1');