2025-05-29 15:07:58 +08:00

68 lines
1.7 KiB
JavaScript

'use strict';
'require form';
'require network';
'require uci';
'require view';
return view.extend({
load: function() {
return Promise.all([
uci.load('eqos'),
network.getHostHints()
]);
},
render: function(data) {
var m, s, o;
m = new form.Map('eqos', _('EQoS'),
_('Network speed control service. Not compatible with Software flow offloading.'));
s = m.section(form.NamedSection, 'config', 'eqos');
o = s.option(form.Flag, 'enabled', _('Enable'));
o.default = o.disabled;
o.rmempty = false;
o = s.option(form.Value, 'download', _('Download speed (Mbit/s)'),
_('Total download bandwidth.'));
o.datatype = 'and(uinteger,min(1))';
o.rmempty = false;
o = s.option(form.Value, 'upload', _('Upload speed (Mbit/s)'),
_('Total upload bandwidth.'));
o.datatype = 'and(uinteger,min(1))';
o.rmempty = false;
s = m.section(form.TableSection, 'device', _('Speed limit based on IP address'));
s.addremove = true;
s.anonymous = true;
s.sortable = true;
o = s.option(form.Flag, 'enabled', _('Enable'));
o.default = o.enabled;
o = s.option(form.Value, 'ip', _('IP address'));
o.datatype = 'ip4addr';
for (var i of Object.entries(data[1]?.hosts))
for (var v in i[1].ipaddrs)
if (i[1].ipaddrs[v]) {
var ip_addr = i[1].ipaddrs[v], ip_host = i[1].name;
o.value(ip_addr, ip_host ? String.format('%s (%s)', ip_host, ip_addr) : ip_addr)
}
o.rmempty = false;
o = s.option(form.Value, 'download', _('Download speed (Mbit/s)'));
o.datatype = 'and(uinteger,min(1))';
o.rmempty = false;
o = s.option(form.Value, 'upload', _('Upload speed (Mbit/s)'));
o.datatype = 'and(uinteger,min(1))';
o.rmempty = false;
o = s.option(form.Value, 'comment', _('Comment'));
return m.render();
}
});