RSNewWebUI/webui-src/app/config/config_network.js
2020-02-26 11:02:50 +05:30

114 lines
3.1 KiB
JavaScript

let m = require('mithril');
let rs = require('rswebui');
let util = require('config/config_util');
let SetNwMode = () => {
mode = undefined;
sslId = undefined;
setMode = () => rs.rsJsonApiRequest('/');
return {
oninit: util.getSslId().then(val => {
sslId = val;
rs.rsJsonApiRequest('/');
}),
view: () => [
m('p', 'Network mode:'),
m('select', {
oninput: (e) => mode = e.target.value,
value: mode,
onchange: setMode,
}, ['Discovery on(recommended)', 'Discovery off'].map(
(val, i) => m('option[value=' + (i + 1) + ']',
val))),
],
};
};
let SetLimits = () => {
let dlim = undefined;
let ulim = undefined;
let setMaxRates = () => rs.rsJsonApiRequest('/rsConfig/SetMaxDataRates', {
downKb: dlim,
upKb: ulim
});
return {
oninit: () => rs.rsJsonApiRequest('/rsConfig/GetMaxDataRates', {}, (data) => {
dlim = data.inKb;
ulim = data.outKb;
}),
view: () => [
m('p',
util.tooltip(
'The download limit covers the whole application. ' +
'However, in some situations, such as when transfering ' +
'many files at once, the estimated bandwidth becomes ' +
'unreliable and the total value reported by Retroshare ' +
'might exceed that limit.'
), 'Download limit(KB/s):'),
m(
'input[type=number][name=download]', {
value: dlim,
oninput: (e) => dlim = Number(e.target.value),
onchange: setMaxRates,
}),
m('p',
util.tooltip(
'The upload limit covers the entire software. ' +
'Too small an upload limit may eventually block ' +
'low priority services(forums, channels). ' +
'A minimum recommended value is 50KB/s.'
), 'Upload limit(KB/s):'),
m('input[type=number][name=upload]', {
value: ulim,
oninput: (e) => ulim = Number(e.target.value),
onchange: setMaxRates,
}),
],
};
};
SetOpMode = () => {
opmode = undefined;
setmode = () => rs.rsJsonApiRequest('/rsconfig/SetOperatingMode', {
opMode: Number(opmode)
}, () => {});
return {
oninit: () => rs.rsJsonApiRequest('/rsConfig/getOperatingMode', {},
(data) => opmode = data.retval),
view: () => [
m('p', 'Operating mode:',
util.tooltip(
`No Anon D/L: Switches off file forwarding\n
Gaming Mode: 25% standard traffic and TODO: Reduced popups\n
Low traffic: 10% standard traffic and TODO: pause all file transfers\n`
),
),
m('select', {
oninput: (e) => opmode = e.target.value,
value: opmode,
onchange: setmode,
}, ['Normal', 'No Anon D/L', 'Gaming', 'Low traffic'].map(
(val, i) => m('option[value=' + (i + 1) + ']', val))),
],
};
};
let Component = () => {
return {
view: () => m('.widget.widget-half', [
m('h3', 'Network Configuration'),
m('hr'),
m('.grid-2col', [
m(SetLimits),
m(SetOpMode),
//m(SetNwMode),
]),
]),
};
};
module.exports = Component;