6 var callInitAction
, callLeds
, callUSB
, callNetdevs
;
8 callInitAction
= rpc
.declare({
11 params
: [ 'name', 'action' ],
12 expect
: { result
: false }
15 callLeds
= rpc
.declare({
20 callUSB
= rpc
.declare({
25 callNetdevs
= rpc
.declare({
28 expect
: { result
: [] },
29 filter: function(res
) {
31 for (var i
= 0; i
< res
.length
; i
++)
32 devs
[res
[i
].name
] = true;
33 return Object
.keys(devs
).sort();
37 return L
.view
.extend({
46 render: function(results
) {
47 var leds
= results
[0],
54 for (var i
= 0; i
< leds
[k
].triggers
.length
; i
++)
55 triggers
[leds
[k
].triggers
[i
]] = true;
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
.TypedSection
, 'led', '');
65 s
.option(form
.Value
, 'name', _('Name'));
67 o
= s
.option(form
.ListValue
, 'sysfs', _('<abbr title="Light Emitting Diode">LED</abbr> Name'));
68 Object
.keys(leds
).sort().forEach(function(name
) { o
.value(name
) });
70 o
= s
.option(form
.Flag
, 'default', _('Default state'));
73 trigger
= s
.option(form
.ListValue
, 'trigger', _('Trigger'));
74 Object
.keys(triggers
).sort().forEach(function(t
) { trigger
.value(t
, t
.replace(/-/g
, '')) });
75 if (usb
.devices
&& usb
.devices
.length
)
76 trigger
.value('usbdev');
77 if (usb
.ports
&& usb
.ports
.length
)
78 trigger
.value('usbport');
80 o
= s
.option(form
.Value
, 'delayon', _('On-State Delay'));
81 o
.depends('trigger', 'timer');
83 o
= s
.option(form
.Value
, 'delayoff', _('Off-State Delay'));
84 o
.depends('trigger', 'timer');
86 o
= s
.option(form
.ListValue
, '_net_dev', _('Device'));
89 o
.depends('trigger', 'netdev');
90 o
.remove = function(section_id
) {
91 var t
= trigger
.formvalue(section_id
);
92 if (t
!= 'netdev' && t
!= 'usbdev')
93 uci
.unset('system', section_id
, 'dev');
96 netdevs
.sort().forEach(function(dev
) { o
.value(dev
) });
98 o
= s
.option(form
.MultiValue
, 'mode', _('Trigger Mode'));
100 o
.depends('trigger', 'netdev');
101 o
.value('link', _('Link On'));
102 o
.value('tx', _('Transmit'));
103 o
.value('rx', _('Receive'));
105 if (usb
.devices
&& usb
.devices
.length
) {
106 o
= s
.option(form
.ListValue
, '_usb_dev', _('USB Device'));
107 o
.depends('trigger', 'usbdev');
110 o
.remove = function(section_id
) {
111 var t
= trigger
.formvalue(section_id
);
112 if (t
!= 'netdev' && t
!= 'usbdev')
113 uci
.unset('system', section_id
, 'dev');
116 usb
.devices
.forEach(function(usbdev
) {
117 o
.value(usbdev
.id
, '%s (%s - %s)'.format(usbdev
.id
, usbdev
.vendor
|| '?', usbdev
.product
|| '?'));
121 if (usb
.ports
&& usb
.ports
.length
) {
122 o
= s
.option(form
.MultiValue
, 'port', _('USB Ports'));
123 o
.depends('trigger', 'usbport');
125 o
.cfgvalue = function(section_id
) {
127 value
= uci
.get('system', section_id
, 'port');
129 if (!Array
.isArray(value
))
130 value
= String(value
|| '').split(/\s+/);
132 for (var i
= 0; i
< value
.length
; i
++)
133 if (value
[i
].match(/^usb(\d+)-port(\d+)$/))
134 ports
.push(value
[i
]);
135 else if (value
[i
].match(/^(\d+)-(\d+)$/))
136 ports
.push('usb%d-port%d'.format(Regexp
.$1, Regexp
.$2));
140 usb
.ports
.forEach(function(usbport
) {
141 o
.value('usb%d-port%d'.format(usbport
.hub
, usbport
.port
),
142 'Hub %d, Port %d'.format(usbport
.hub
, usbport
.port
));
146 o
= s
.option(form
.Value
, 'port_mask', _('Switch Port Mask'));
147 o
.depends('trigger', 'switch0');
148 o
.depends('trigger', 'switch1');