Initial commit of LuCI2
[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(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(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.getDeviceStatus(undefined, function(devs) {
27 var devices = [ ];
28
29 for (var device in devs)
30 if (device != 'lo')
31 devices.push(device);
32
33 devices.sort();
34
35 delete m.sections[0].fields._net_dev.choices;
36
37 for (var i = 0; i < devices.length; i++)
38 m.sections[0].fields._net_dev.value(devices[i]);
39 })
40 );
41 }
42 });
43
44 var s = m.section(L.cbi.TypedSection, 'led', {
45 caption: function(sid) { return sid ? (this.fields.name.textvalue(sid) || L.tr('Unnamed LED')) : '' },
46 teasers: [ 'sysfs', 'default', 'trigger', '_net_dev', 'mode', '_usb_dev', 'delayon', 'delayoff' ],
47 collabsible: true,
48 addremove: true,
49 add_caption: L.tr('Add new LED defintion'),
50 remove_caption: L.tr('Remove LED definition'),
51 readonly: !this.options.acls.leds
52 });
53
54 s.option(L.cbi.InputValue, 'name', {
55 caption: L.tr('Name')
56 });
57
58 s.option(L.cbi.ListValue, 'sysfs', {
59 caption: L.tr('LED Name')
60 });
61
62 s.option(L.cbi.ListValue, 'default', {
63 caption: L.tr('Default state'),
64 initial: '0'
65 }).value('0', L.trc('LED state', 'off')).value('1', L.trc('LED state', 'on'));
66
67 s.option(L.cbi.ListValue, 'trigger', {
68 caption: L.tr('Trigger')
69 });
70
71
72 s.option(L.cbi.InputValue, 'delayon', {
73 caption: L.trc('LED timer trigger', 'On-State Delay'),
74 description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays on'),
75 datatype: 'uinteger'
76 }).depends('trigger', 'timer');
77
78 s.option(L.cbi.InputValue, 'delayoff', {
79 caption: L.trc('LED timer trigger', 'Off-State Delay'),
80 description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays off'),
81 datatype: 'uinteger'
82 }).depends('trigger', 'timer');
83
84
85 s.option(L.cbi.ListValue, '_net_dev', {
86 caption: L.trc('LED netdev trigger', 'Device'),
87 uci_option: 'dev',
88 optional: true
89 }).depends('trigger', 'netdev');
90
91 s.option(L.cbi.MultiValue, 'mode', {
92 caption: L.trc('LED netdev trigger', 'Trigger Mode')
93 }).depends('trigger', 'netdev')
94 .value('link', L.trc('LED netdev trigger mode', 'Link On'))
95 .value('tx', L.trc('LED netdev trigger mode', 'Transmit'))
96 .value('rx', L.trc('LED netdev trigger mode', 'Receive'));
97
98
99 s.option(L.cbi.ListValue, '_usb_dev', {
100 caption: L.trc('LED usbdev trigger', 'Device'),
101 uci_option: 'dev',
102 optional: true
103 }).depends('trigger', 'usbdev');
104
105 return m.insertInto('#map');
106 }
107 });