luci2: move most RPC proxy function declarations into the views using them to reduce...
[project/luci2/ui.git] / luci2 / htdocs / luci2 / view / system.leds.js
index c19462d..8165daf 100644 (file)
 L.ui.view.extend({
-    execute: function() {
-        var m = new L.cbi.Map('system', {
-            caption:     L.tr('LED Configuration'),
-            description: L.tr('Customizes the behaviour of the device LEDs if possible.'),
-            prepare: function() {
-                return $.when(
-                    L.system.listLEDs().then(function(leds) {
-                        delete m.sections[0].fields.sysfs.choices;
-                        delete m.sections[0].fields.trigger.choices;
-
-                        for (var i = 0; i < leds.length; i++)
-                            m.sections[0].fields.sysfs.value(leds[i].name);
-
-                        for (var i = 0; i < leds[0].triggers.length; i++)
-                            m.sections[0].fields.trigger.value(leds[0].triggers[i]);
-                    }),
-                    L.system.listUSBDevices().then(function(devs) {
-                        delete m.sections[0].fields._usb_dev.choices;
-
-                        for (var i = 0; i < devs.length; i++)
-                            m.sections[0].fields._usb_dev.value(devs[i].name,
-                                                                '%04x:%04x (%s - %s)'.format(devs[i].vendor_id, devs[i].product_id,
-                                                                                             devs[i].vendor_name || '?', devs[i].product_name || '?'));
-                    }),
-                    L.network.listDeviceNames().then(function(devices) {
-                        delete m.sections[0].fields._net_dev.choices;
-                        for (var i = 0; i < devices.length; i++)
-                            m.sections[0].fields._net_dev.value(devices[i]);
-                    })
-                );
-            }
-        });
-
-        var s = m.section(L.cbi.TypedSection, 'led', {
-            caption:     L.tr('LED Definitions'),
-            teasers:     [ 'name', 'sysfs', 'default', 'trigger', '_net_dev', 'mode', '_usb_dev', 'delayon', 'delayoff' ],
-            collabsible: true,
-            addremove:   true,
-            add_caption: L.tr('Add new LED defintion'),
-            remove_caption: L.tr('Remove LED definition'),
-            readonly:    !this.options.acls.leds
-        });
-
-        s.option(L.cbi.InputValue, 'name', {
-            caption:     L.tr('Name')
-        });
-
-        s.option(L.cbi.ListValue, 'sysfs', {
-            caption:     L.tr('LED Name')
-        });
-
-        s.option(L.cbi.ListValue, 'default', {
-            caption:     L.tr('Default state'),
-            initial:     '0'
-        }).value('0', L.trc('LED state', 'off')).value('1', L.trc('LED state', 'on'));
-
-        s.option(L.cbi.ListValue, 'trigger', {
-            caption:     L.tr('Trigger')
-        });
-
-
-        s.option(L.cbi.InputValue, 'delayon', {
-            caption:     L.trc('LED timer trigger', 'On-State Delay'),
-            description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays on'),
-            datatype:    'uinteger'
-        }).depends('trigger', 'timer');
-
-        s.option(L.cbi.InputValue, 'delayoff', {
-            caption:     L.trc('LED timer trigger', 'Off-State Delay'),
-            description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays off'),
-            datatype:    'uinteger'
-        }).depends('trigger', 'timer');
-
-
-        s.option(L.cbi.ListValue, '_net_dev', {
-            caption:     L.trc('LED netdev trigger', 'Device'),
-            uci_option:  'dev',
-            optional:    true
-        }).depends('trigger', 'netdev');
-
-        s.option(L.cbi.MultiValue, 'mode', {
-            caption:     L.trc('LED netdev trigger', 'Trigger Mode')
-        }).depends('trigger', 'netdev')
-            .value('link', L.trc('LED netdev trigger mode', 'Link On'))
-            .value('tx',   L.trc('LED netdev trigger mode', 'Transmit'))
-            .value('rx',   L.trc('LED netdev trigger mode', 'Receive'));
-
-
-        s.option(L.cbi.ListValue, '_usb_dev', {
-            caption:     L.trc('LED usbdev trigger', 'Device'),
-            uci_option:  'dev',
-            optional:    true
-        }).depends('trigger', 'usbdev');
-
-        return m.insertInto('#map');
-    }
+       listLEDs: L.rpc.declare({
+               object: 'luci2.system',
+               method: 'led_list',
+               expect: { leds: [ ] }
+       }),
+
+       listUSBDevices: L.rpc.declare({
+               object: 'luci2.system',
+               method: 'usb_list',
+               expect: { devices: [ ] }
+       }),
+
+       execute: function() {
+               var self = this;
+               var m = new L.cbi.Map('system', {
+                       caption:     L.tr('LED Configuration'),
+                       description: L.tr('Customizes the behaviour of the device LEDs if possible.'),
+                       prepare: function() {
+                               delete m.sections[0].fields._net_dev.choices;
+
+                               var devs = L.NetworkModel.getDevices().sort(function(a, b) {
+                                       if (a.name() < b.name())
+                                               return -1;
+                                       else if (a.name() > b.name())
+                                               return 1;
+                                       else
+                                               return 0;
+                               });
+
+                               for (var i = 0; i < devs.length; i++)
+                                       if (!devs[i].isAlias())
+                                               m.sections[0].fields._net_dev.value(devs[i].name());
+
+                               return $.when(
+                                       self.listLEDs().then(function(leds) {
+                                               delete m.sections[0].fields.sysfs.choices;
+                                               delete m.sections[0].fields.trigger.choices;
+
+                                               for (var i = 0; i < leds.length; i++)
+                                                       m.sections[0].fields.sysfs.value(leds[i].name);
+
+                                               for (var i = 0; i < leds[0].triggers.length; i++)
+                                                       m.sections[0].fields.trigger.value(leds[0].triggers[i]);
+                                       }),
+                                       self.listUSBDevices().then(function(devs) {
+                                               delete m.sections[0].fields._usb_dev.choices;
+
+                                               for (var i = 0; i < devs.length; i++)
+                                                       m.sections[0].fields._usb_dev.value(devs[i].name,
+                                                                                                                               '%04x:%04x (%s - %s)'.format(devs[i].vendor_id, devs[i].product_id,
+                                                                                                                                                                                        devs[i].vendor_name || '?', devs[i].product_name || '?'));
+                                       })
+                               );
+                       }
+               });
+
+               var s = m.section(L.cbi.TypedSection, 'led', {
+                       caption:     L.tr('LED Definitions'),
+                       teasers:     [ 'name', 'sysfs', 'default', 'trigger', '_net_dev', 'mode', '_usb_dev', 'delayon', 'delayoff' ],
+                       collabsible: true,
+                       addremove:   true,
+                       add_caption: L.tr('Add new LED defintion'),
+                       remove_caption: L.tr('Remove LED definition'),
+                       readonly:    !this.options.acls.leds
+               });
+
+               s.option(L.cbi.InputValue, 'name', {
+                       caption:     L.tr('Name')
+               });
+
+               s.option(L.cbi.ListValue, 'sysfs', {
+                       caption:     L.tr('LED Name')
+               });
+
+               s.option(L.cbi.ListValue, 'default', {
+                       caption:     L.tr('Default state'),
+                       initial:     '0'
+               }).value('0', L.trc('LED state', 'off')).value('1', L.trc('LED state', 'on'));
+
+               s.option(L.cbi.ListValue, 'trigger', {
+                       caption:     L.tr('Trigger')
+               });
+
+
+               s.option(L.cbi.InputValue, 'delayon', {
+                       caption:     L.trc('LED timer trigger', 'On-State Delay'),
+                       description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays on'),
+                       datatype:    'uinteger'
+               }).depends('trigger', 'timer');
+
+               s.option(L.cbi.InputValue, 'delayoff', {
+                       caption:     L.trc('LED timer trigger', 'Off-State Delay'),
+                       description: L.trc('LED timer trigger', 'Time in milliseconds the LED stays off'),
+                       datatype:    'uinteger'
+               }).depends('trigger', 'timer');
+
+
+               s.option(L.cbi.ListValue, '_net_dev', {
+                       caption:     L.trc('LED netdev trigger', 'Device'),
+                       uci_option:  'dev',
+                       optional:    true
+               }).depends('trigger', 'netdev');
+
+               s.option(L.cbi.MultiValue, 'mode', {
+                       caption:     L.trc('LED netdev trigger', 'Trigger Mode')
+               }).depends('trigger', 'netdev')
+                       .value('link', L.trc('LED netdev trigger mode', 'Link On'))
+                       .value('tx',   L.trc('LED netdev trigger mode', 'Transmit'))
+                       .value('rx',   L.trc('LED netdev trigger mode', 'Receive'));
+
+
+               s.option(L.cbi.ListValue, '_usb_dev', {
+                       caption:     L.trc('LED usbdev trigger', 'Device'),
+                       uci_option:  'dev',
+                       optional:    true
+               }).depends('trigger', 'usbdev');
+
+               return m.insertInto('#map');
+       }
 });