b0d31ea2faa848a6a19a2416ac1824e03b3012bc
[project/luci2/ui.git] / luci2 / htdocs / luci2 / view / system.leds.js
1 L.ui.view.extend({
2 execute: function() {
3 var m = new L.cbi.Map('system', {
4 caption: L.tr('LED Configuration'),
5 description: L.tr('Customizes the behaviour of the device LEDs if possible.'),
6 prepare: function() {
7 return $.when(
8 L.system.listLEDs().then(function(leds) {
9 delete m.sections[0].fields.sysfs.choices;
10 delete m.sections[0].fields.trigger.choices;
11
12 for (var i = 0; i < leds.length; i++)
13 m.sections[0].fields.sysfs.value(leds[i].name);
14
15 for (var i = 0; i < leds[0].triggers.length; i++)
16 m.sections[0].fields.trigger.value(leds[0].triggers[i]);
17 }),
18 L.system.listUSBDevices().then(function(devs) {
19 delete m.sections[0].fields._usb_dev.choices;
20
21 for (var i = 0; i < devs.length; i++)
22 m.sections[0].fields._usb_dev.value(devs[i].name,
23 '%04x:%04x (%s - %s)'.format(devs[i].vendor_id, devs[i].product_id,
24 devs[i].vendor_name || '?', devs[i].product_name || '?'));
25 }),
26 L.network.listDeviceNames().then(function(devices) {
27 delete m.sections[0].fields._net_dev.choices;
28 for (var i = 0; i < devices.length; i++)
29 m.sections[0].fields._net_dev.value(devices[i]);
30 })
31 );
32 }
33 });
34
35 var s = m.section(L.cbi.TypedSection, 'led', {
36 caption: function(sid) { return sid ? (this.fields.name.textvalue(sid) || L.tr('Unnamed LED')) : '' },
37 teasers: [ 'sysfs', 'default', 'trigger', '_net_dev', 'mode', '_usb_dev', 'delayon', 'delayoff' ],
38 collabsible: true,
39 addremove: true,
40 add_caption: L.tr('Add new LED defintion'),
41 remove_caption: L.tr('Remove LED definition'),
42 readonly: !this.options.acls.leds
43 });
44
45 s.option(L.cbi.InputValue, 'name', {
46 caption: L.tr('Name')
47 });
48
49 s.option(L.cbi.ListValue, 'sysfs', {
50 caption: L.tr('LED Name')
51 });
52
53 s.option(L.cbi.ListValue, 'default', {
54 caption: L.tr('Default state'),
55 initial: '0'
56 }).value('0', L.trc('LED state', 'off')).value('1', L.trc('LED state', 'on'));
57
58 s.option(L.cbi.ListValue, 'trigger', {
59 caption: L.tr('Trigger')
60 });
61
62
63 s.option(L.cbi.InputValue, 'delayon', {
64 caption: L.trc('LED timer trigger', 'On-State Delay'),
65 description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays on'),
66 datatype: 'uinteger'
67 }).depends('trigger', 'timer');
68
69 s.option(L.cbi.InputValue, 'delayoff', {
70 caption: L.trc('LED timer trigger', 'Off-State Delay'),
71 description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays off'),
72 datatype: 'uinteger'
73 }).depends('trigger', 'timer');
74
75
76 s.option(L.cbi.ListValue, '_net_dev', {
77 caption: L.trc('LED netdev trigger', 'Device'),
78 uci_option: 'dev',
79 optional: true
80 }).depends('trigger', 'netdev');
81
82 s.option(L.cbi.MultiValue, 'mode', {
83 caption: L.trc('LED netdev trigger', 'Trigger Mode')
84 }).depends('trigger', 'netdev')
85 .value('link', L.trc('LED netdev trigger mode', 'Link On'))
86 .value('tx', L.trc('LED netdev trigger mode', 'Transmit'))
87 .value('rx', L.trc('LED netdev trigger mode', 'Receive'));
88
89
90 s.option(L.cbi.ListValue, '_usb_dev', {
91 caption: L.trc('LED usbdev trigger', 'Device'),
92 uci_option: 'dev',
93 optional: true
94 }).depends('trigger', 'usbdev');
95
96 return m.insertInto('#map');
97 }
98 });