71ed7bf8aec2960700dfaed7c81b9f7def76b7df
[oweals/luci.git] /
1 'use strict';
2 'require baseclass';
3 'require rpc';
4 'require uci';
5 'require form';
6
7 var callUSB = rpc.declare({
8         object: 'luci',
9         method: 'getUSBDevices',
10         expect: { 'ports': [] }
11 });
12
13 return baseclass.extend({
14         trigger: _('usbport (kernel)'),
15         kernel: true,
16         addFormOptions(s){
17                 var o;
18
19                 o = s.option(form.Value, 'port', _('USB Ports'));
20                 o.depends('trigger', 'usbport');
21                 o.rmempty = true;
22                 o.modalonly = true;
23                 o.load = function(s) {
24                         return Promise.all([
25                                 callUSB()
26                         ]).then(L.bind(function(usbport){
27                                 for (var i = 0; i < usbport[0].length; i++)
28                                         o.value(usbport[0][i].port, _('Port %s').format(usbport[0][i].port));
29                         },this));
30                 };
31                 o.cfgvalue = function(section_id) {
32                         var ports = [],
33                                 value = uci.get('system', section_id, 'port');
34
35                         if (!Array.isArray(value))
36                                 value = String(value || '').split(/\s+/);
37
38                         for (var i = 0; i < value.length; i++)
39                                 if (value[i].match(/^(\d+)-(\d+)$/))
40                                         ports.push('usb%d-port%d'.format(Regexp.$1, Regexp.$2));
41                                 else
42                                         ports.push(value[i]);
43
44                         return ports;
45                 };
46         }
47 });