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');