2 listLEDs
: L
.rpc
.declare({
3 object
: 'luci2.system',
8 listUSBDevices
: L
.rpc
.declare({
9 object
: 'luci2.system',
11 expect
: { devices
: [ ] }
16 var m
= new L
.cbi
.Map('system', {
17 caption
: L
.tr('LED Configuration'),
18 description
: L
.tr('Customizes the behaviour of the device LEDs if possible.'),
20 delete m
.sections
[0].fields
._net_dev
.choices
;
22 var devs
= L
.NetworkModel
.getDevices().sort(function(a
, b
) {
23 if (a
.name() < b
.name())
25 else if (a
.name() > b
.name())
31 for (var i
= 0; i
< devs
.length
; i
++)
32 if (!devs
[i
].isAlias())
33 m
.sections
[0].fields
._net_dev
.value(devs
[i
].name());
36 self
.listLEDs().then(function(leds
) {
37 delete m
.sections
[0].fields
.sysfs
.choices
;
38 delete m
.sections
[0].fields
.trigger
.choices
;
40 for (var i
= 0; i
< leds
.length
; i
++)
41 m
.sections
[0].fields
.sysfs
.value(leds
[i
].name
);
43 for (var i
= 0; i
< leds
[0].triggers
.length
; i
++)
44 m
.sections
[0].fields
.trigger
.value(leds
[0].triggers
[i
]);
46 self
.listUSBDevices().then(function(devs
) {
47 delete m
.sections
[0].fields
._usb_dev
.choices
;
49 for (var i
= 0; i
< devs
.length
; i
++)
50 m
.sections
[0].fields
._usb_dev
.value(devs
[i
].name
,
51 '%04x:%04x (%s - %s)'.format(devs
[i
].vendor_id
, devs
[i
].product_id
,
52 devs
[i
].vendor_name
|| '?', devs
[i
].product_name
|| '?'));
58 var s
= m
.section(L
.cbi
.TypedSection
, 'led', {
59 caption
: L
.tr('LED Definitions'),
60 teasers
: [ 'name', 'sysfs', 'default', 'trigger', '_net_dev', 'mode', '_usb_dev', 'delayon', 'delayoff' ],
63 add_caption
: L
.tr('Add new LED defintion'),
64 remove_caption
: L
.tr('Remove LED definition'),
65 readonly
: !this.options
.acls
.leds
68 s
.option(L
.cbi
.InputValue
, 'name', {
72 s
.option(L
.cbi
.ListValue
, 'sysfs', {
73 caption
: L
.tr('LED Name')
76 s
.option(L
.cbi
.ListValue
, 'default', {
77 caption
: L
.tr('Default state'),
79 }).value('0', L
.trc('LED state', 'off')).value('1', L
.trc('LED state', 'on'));
81 s
.option(L
.cbi
.ListValue
, 'trigger', {
82 caption
: L
.tr('Trigger')
86 s
.option(L
.cbi
.InputValue
, 'delayon', {
87 caption
: L
.trc('LED timer trigger', 'On-State Delay'),
88 description
: L
.trc('LED timer trigger', 'Time in milliseconds the LED stays on'),
90 }).depends('trigger', 'timer');
92 s
.option(L
.cbi
.InputValue
, 'delayoff', {
93 caption
: L
.trc('LED timer trigger', 'Off-State Delay'),
94 description
: L
.trc('LED timer trigger', 'Time in milliseconds the LED stays off'),
96 }).depends('trigger', 'timer');
99 s
.option(L
.cbi
.ListValue
, '_net_dev', {
100 caption
: L
.trc('LED netdev trigger', 'Device'),
103 }).depends('trigger', 'netdev');
105 s
.option(L
.cbi
.MultiValue
, 'mode', {
106 caption
: L
.trc('LED netdev trigger', 'Trigger Mode')
107 }).depends('trigger', 'netdev')
108 .value('link', L
.trc('LED netdev trigger mode', 'Link On'))
109 .value('tx', L
.trc('LED netdev trigger mode', 'Transmit'))
110 .value('rx', L
.trc('LED netdev trigger mode', 'Receive'));
113 s
.option(L
.cbi
.ListValue
, '_usb_dev', {
114 caption
: L
.trc('LED usbdev trigger', 'Device'),
117 }).depends('trigger', 'usbdev');
119 return m
.insertInto('#map');