luci2: add missing depends to OpenWrt Makefile
[project/luci2/ui.git] / luci2 / htdocs / luci2 / view / system.leds.js
1 L.ui.view.extend({
2         listLEDs: L.rpc.declare({
3                 object: 'luci2.system',
4                 method: 'led_list',
5                 expect: { leds: [ ] }
6         }),
7
8         listUSBDevices: L.rpc.declare({
9                 object: 'luci2.system',
10                 method: 'usb_list',
11                 expect: { devices: [ ] }
12         }),
13
14         execute: function() {
15                 var self = this;
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.'),
19                         prepare: function() {
20                                 delete m.sections[0].fields._net_dev.choices;
21
22                                 var devs = L.network.getDevices().sort(function(a, b) {
23                                         if (a.name() < b.name())
24                                                 return -1;
25                                         else if (a.name() > b.name())
26                                                 return 1;
27                                         else
28                                                 return 0;
29                                 });
30
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());
34
35                                 return $.when(
36                                         self.listLEDs().then(function(leds) {
37                                                 delete m.sections[0].fields.sysfs.choices;
38                                                 delete m.sections[0].fields.trigger.choices;
39
40                                                 for (var i = 0; i < leds.length; i++)
41                                                         m.sections[0].fields.sysfs.value(leds[i].name);
42
43                                                 for (var i = 0; i < leds[0].triggers.length; i++)
44                                                         m.sections[0].fields.trigger.value(leds[0].triggers[i]);
45                                         }),
46                                         self.listUSBDevices().then(function(devs) {
47                                                 delete m.sections[0].fields._usb_dev.choices;
48
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 || '?'));
53                                         })
54                                 );
55                         }
56                 });
57
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' ],
61                         collabsible: true,
62                         addremove:   true,
63                         add_caption: L.tr('Add new LED defintion'),
64                         remove_caption: L.tr('Remove LED definition'),
65                         readonly:    !this.options.acls.leds
66                 });
67
68                 s.option(L.cbi.InputValue, 'name', {
69                         caption:     L.tr('Name')
70                 });
71
72                 s.option(L.cbi.ListValue, 'sysfs', {
73                         caption:     L.tr('LED Name')
74                 });
75
76                 s.option(L.cbi.ListValue, 'default', {
77                         caption:     L.tr('Default state'),
78                         initial:     '0'
79                 }).value('0', L.trc('LED state', 'off')).value('1', L.trc('LED state', 'on'));
80
81                 s.option(L.cbi.ListValue, 'trigger', {
82                         caption:     L.tr('Trigger')
83                 });
84
85
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'),
89                         datatype:    'uinteger'
90                 }).depends('trigger', 'timer');
91
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'),
95                         datatype:    'uinteger'
96                 }).depends('trigger', 'timer');
97
98
99                 s.option(L.cbi.ListValue, '_net_dev', {
100                         caption:     L.trc('LED netdev trigger', 'Device'),
101                         uci_option:  'dev',
102                         optional:    true
103                 }).depends('trigger', 'netdev');
104
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'));
111
112
113                 s.option(L.cbi.ListValue, '_usb_dev', {
114                         caption:     L.trc('LED usbdev trigger', 'Device'),
115                         uci_option:  'dev',
116                         optional:    true
117                 }).depends('trigger', 'usbdev');
118
119                 return m.insertInto('#map');
120         }
121 });