make eslint 100% happy

lots of churn and changes but will allow to enforce linting again in
the build system.

Also switch over from var to let.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2020-06-06 17:15:42 +02:00
parent 4f1b9b8c3b
commit 05a977a227
38 changed files with 690 additions and 704 deletions

View File

@ -14,16 +14,16 @@ Ext.apply(Ext.form.field.VTypes, {
return Proxmox.Utils.IP4_match.test(v); return Proxmox.Utils.IP4_match.test(v);
}, },
IPAddressText: gettext('Example') + ': 192.168.1.1', IPAddressText: gettext('Example') + ': 192.168.1.1',
IPAddressMask: /[\d\.]/i, IPAddressMask: /[\d.]/i,
IPCIDRAddress: function(v) { IPCIDRAddress: function(v) {
var result = Proxmox.Utils.IP4_cidr_match.exec(v); let result = Proxmox.Utils.IP4_cidr_match.exec(v);
// limits according to JSON Schema see // limits according to JSON Schema see
// pve-common/src/PVE/JSONSchema.pm // pve-common/src/PVE/JSONSchema.pm
return result !== null && result[1] >= 8 && result[1] <= 32; return result !== null && result[1] >= 8 && result[1] <= 32;
}, },
IPCIDRAddressText: gettext('Example') + ': 192.168.1.1/24' + "<br>" + gettext('Valid CIDR Range') + ': 8-32', IPCIDRAddressText: gettext('Example') + ': 192.168.1.1/24<br>' + gettext('Valid CIDR Range') + ': 8-32',
IPCIDRAddressMask: /[\d\.\/]/i, IPCIDRAddressMask: /[\d./]/i,
IP6Address: function(v) { IP6Address: function(v) {
return Proxmox.Utils.IP6_match.test(v); return Proxmox.Utils.IP6_match.test(v);
@ -32,13 +32,13 @@ Ext.apply(Ext.form.field.VTypes, {
IP6AddressMask: /[A-Fa-f0-9:]/, IP6AddressMask: /[A-Fa-f0-9:]/,
IP6CIDRAddress: function(v) { IP6CIDRAddress: function(v) {
var result = Proxmox.Utils.IP6_cidr_match.exec(v); let result = Proxmox.Utils.IP6_cidr_match.exec(v);
// limits according to JSON Schema see // limits according to JSON Schema see
// pve-common/src/PVE/JSONSchema.pm // pve-common/src/PVE/JSONSchema.pm
return result !== null && result[1] >= 8 && result[1] <= 128; return result !== null && result[1] >= 8 && result[1] <= 128;
}, },
IP6CIDRAddressText: gettext('Example') + ': 2001:DB8::42/64' + "<br>" + gettext('Valid CIDR Range') + ': 8-128', IP6CIDRAddressText: gettext('Example') + ': 2001:DB8::42/64<br>' + gettext('Valid CIDR Range') + ': 8-128',
IP6CIDRAddressMask: /[A-Fa-f0-9:\/]/, IP6CIDRAddressMask: /[A-Fa-f0-9:/]/,
IP6PrefixLength: function(v) { IP6PrefixLength: function(v) {
return v >= 0 && v <= 128; return v >= 0 && v <= 128;
@ -50,10 +50,10 @@ Ext.apply(Ext.form.field.VTypes, {
return Proxmox.Utils.IP64_match.test(v); return Proxmox.Utils.IP64_match.test(v);
}, },
IP64AddressText: gettext('Example') + ': 192.168.1.1 2001:DB8::42', IP64AddressText: gettext('Example') + ': 192.168.1.1 2001:DB8::42',
IP64AddressMask: /[A-Fa-f0-9\.:]/, IP64AddressMask: /[A-Fa-f0-9.:]/,
IP64CIDRAddress: function(v) { IP64CIDRAddress: function(v) {
var result = Proxmox.Utils.IP64_cidr_match.exec(v); let result = Proxmox.Utils.IP64_cidr_match.exec(v);
if (result === null) { if (result === null) {
return false; return false;
} }
@ -66,7 +66,7 @@ Ext.apply(Ext.form.field.VTypes, {
} }
}, },
IP64CIDRAddressText: gettext('Example') + ': 192.168.1.1/24 2001:DB8::42/64', IP64CIDRAddressText: gettext('Example') + ': 192.168.1.1/24 2001:DB8::42/64',
IP64CIDRAddressMask: /[A-Fa-f0-9\.:\/]/, IP64CIDRAddressMask: /[A-Fa-f0-9.:/]/,
MacAddress: function(v) { MacAddress: function(v) {
return (/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/).test(v); return (/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/).test(v);
@ -101,24 +101,24 @@ Ext.apply(Ext.form.field.VTypes, {
InterfaceName: function(v) { InterfaceName: function(v) {
return (/^[a-z][a-z0-9_]{1,20}$/).test(v); return (/^[a-z][a-z0-9_]{1,20}$/).test(v);
}, },
InterfaceNameText: gettext("Allowed characters") + ": 'a-z', '0-9', '_'" + "<br />" + InterfaceNameText: gettext("Allowed characters") + ": 'a-z', '0-9', '_'<br />" +
gettext("Minimum characters") + ": 2" + "<br />" + gettext("Minimum characters") + ": 2<br />" +
gettext("Maximum characters") + ": 21" + "<br />" + gettext("Maximum characters") + ": 21<br />" +
gettext("Must start with") + ": 'a-z'", gettext("Must start with") + ": 'a-z'",
StorageId: function(v) { StorageId: function(v) {
return (/^[a-z][a-z0-9\-\_\.]*[a-z0-9]$/i).test(v); return (/^[a-z][a-z0-9\-_.]*[a-z0-9]$/i).test(v);
}, },
StorageIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '-', '_', '.'" + "<br />" + StorageIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '-', '_', '.'<br />" +
gettext("Minimum characters") + ": 2" + "<br />" + gettext("Minimum characters") + ": 2<br />" +
gettext("Must start with") + ": 'A-Z', 'a-z'<br />" + gettext("Must start with") + ": 'A-Z', 'a-z'<br />" +
gettext("Must end with") + ": 'A-Z', 'a-z', '0-9'<br />", gettext("Must end with") + ": 'A-Z', 'a-z', '0-9'<br />",
ConfigId: function(v) { ConfigId: function(v) {
return (/^[a-z][a-z0-9\_]+$/i).test(v); return (/^[a-z][a-z0-9_]+$/i).test(v);
}, },
ConfigIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '_'" + "<br />" + ConfigIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '_'<br />" +
gettext("Minimum characters") + ": 2" + "<br />" + gettext("Minimum characters") + ": 2<br />" +
gettext("Must start with") + ": " + gettext("letter"), gettext("Must start with") + ": " + gettext("letter"),
HttpProxy: function(v) { HttpProxy: function(v) {
@ -133,7 +133,7 @@ Ext.apply(Ext.form.field.VTypes, {
// workaround for https://www.sencha.com/forum/showthread.php?302150 // workaround for https://www.sencha.com/forum/showthread.php?302150
proxmoxMail: function(v) { proxmoxMail: function(v) {
return (/^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,63}$/).test(v); return (/^(\w+)([-+.][\w]+)*@(\w[-\w]*\.){1,5}([A-Za-z]){2,63}$/).test(v);
}, },
proxmoxMailText: gettext('Example') + ": user@example.com", proxmoxMailText: gettext('Example') + ": user@example.com",
@ -148,10 +148,10 @@ Ext.apply(Ext.form.field.VTypes, {
DnsOrIpText: gettext('Not a valid DNS name or IP address.'), DnsOrIpText: gettext('Not a valid DNS name or IP address.'),
HostList: function(v) { HostList: function(v) {
var list = v.split(/[\ \,\;]+/); let list = v.split(/[ ,;]+/);
var i; let i;
for (i = 0; i < list.length; i++) { for (i = 0; i < list.length; i++) {
if (list[i] == "") { if (list[i] === '') {
continue; continue;
} }
@ -168,9 +168,8 @@ Ext.apply(Ext.form.field.VTypes, {
password: function(val, field) { password: function(val, field) {
if (field.initialPassField) { if (field.initialPassField) {
var pwd = field.up('form').down( let pwd = field.up('form').down(`[name=${field.initialPassField}]`);
'[name=' + field.initialPassField + ']'); return val === pwd.getValue();
return val == pwd.getValue();
} }
return true; return true;
}, },
@ -184,7 +183,7 @@ Ext.apply(Ext.form.field.VTypes, {
Ext.define('EXTJS_23846.Element', { Ext.define('EXTJS_23846.Element', {
override: 'Ext.dom.Element', override: 'Ext.dom.Element',
}, function(Element) { }, function(Element) {
var supports = Ext.supports, let supports = Ext.supports,
proto = Element.prototype, proto = Element.prototype,
eventMap = proto.eventMap, eventMap = proto.eventMap,
additiveEvents = proto.additiveEvents; additiveEvents = proto.additiveEvents;
@ -213,11 +212,11 @@ Ext.define('EXTJS_23846.Element', {
Ext.define('EXTJS_23846.Gesture', { Ext.define('EXTJS_23846.Gesture', {
override: 'Ext.event.publisher.Gesture', override: 'Ext.event.publisher.Gesture',
}, function(Gesture) { }, function(Gesture) {
var me = Gesture.instance; let gestures = Gesture.instance;
if (Ext.supports.TouchEvents && !Ext.isWebKit && Ext.os.is.Desktop) { if (Ext.supports.TouchEvents && !Ext.isWebKit && Ext.os.is.Desktop) {
me.handledDomEvents.push('mousedown', 'mousemove', 'mouseup'); gestures.handledDomEvents.push('mousedown', 'mousemove', 'mouseup');
me.registerEvents(); gestures.registerEvents();
} }
}); });
@ -226,7 +225,7 @@ Ext.define('EXTJS_18900.Pie', {
// from 6.0.2 // from 6.0.2
betweenAngle: function(x, a, b) { betweenAngle: function(x, a, b) {
var pp = Math.PI * 2, let pp = Math.PI * 2,
offset = this.rotationOffset; offset = this.rotationOffset;
if (a === b) { if (a === b) {
@ -273,7 +272,7 @@ Ext.define('Proxmox.UnderlayPool', {
override: 'Ext.dom.UnderlayPool', override: 'Ext.dom.UnderlayPool',
checkOut: function() { checkOut: function() {
var cache = this.cache, let cache = this.cache,
len = cache.length, len = cache.length,
el; el;
@ -324,12 +323,13 @@ Ext.define('Proxmox.form.ComboBox', {
reset: function() { reset: function() {
// copied from combobox // copied from combobox
var me = this; let me = this;
me.callParent(); me.callParent();
// clear and set when not the same // clear and set when not the same
var value = me.getValue(); let value = me.getValue();
if (Ext.isArray(me.originalValue) && Ext.isArray(value) && !Ext.Array.equals(value, me.originalValue)) { if (Ext.isArray(me.originalValue) && Ext.isArray(value) &&
!Ext.Array.equals(value, me.originalValue)) {
me.clearValue(); me.clearValue();
me.setValue(me.originalValue); me.setValue(me.originalValue);
} }
@ -373,7 +373,7 @@ Ext.define(null, {
jumpToFocus: false, jumpToFocus: false,
saveFocusState: function() { saveFocusState: function() {
var me = this, let me = this,
store = me.dataSource, store = me.dataSource,
actionableMode = me.actionableMode, actionableMode = me.actionableMode,
navModel = me.getNavigationModel(), navModel = me.getNavigationModel(),
@ -406,9 +406,10 @@ Ext.define(null, {
// Adjust expectations of where we are able to refocus according to what kind of destruction // Adjust expectations of where we are able to refocus according to what kind of destruction
// might have been wrought on this view's DOM during focus save. // might have been wrought on this view's DOM during focus save.
refocusRow = Math.min(focusPosition.rowIdx, me.all.getCount() - 1); refocusRow = Math.min(focusPosition.rowIdx, me.all.getCount() - 1);
refocusCol = Math.min(focusPosition.colIdx, me.getVisibleColumnManager().getColumns().length - 1); refocusCol = Math.min(focusPosition.colIdx,
focusPosition = new Ext.grid.CellContext(me).setPosition( me.getVisibleColumnManager().getColumns().length - 1);
store.contains(focusPosition.record) ? focusPosition.record : refocusRow, refocusCol); refocusRow = store.contains(focusPosition.record) ? focusPosition.record : refocusRow;
focusPosition = new Ext.grid.CellContext(me).setPosition(refocusRow, refocusCol);
if (actionableMode) { if (actionableMode) {
me.ownerGrid.setActionableMode(true, focusPosition); me.ownerGrid.setActionableMode(true, focusPosition);
@ -416,8 +417,8 @@ Ext.define(null, {
me.cellFocused = true; me.cellFocused = true;
// we sometimes want to scroll back to where we were // we sometimes want to scroll back to where we were
var x = me.getScrollX(); let x = me.getScrollX();
var y = me.getScrollY(); let y = me.getScrollY();
// Pass "preventNavigation" as true so that that does not cause selection. // Pass "preventNavigation" as true so that that does not cause selection.
navModel.setPosition(focusPosition, null, null, null, true); navModel.setPosition(focusPosition, null, null, null, true);
@ -426,9 +427,7 @@ Ext.define(null, {
me.scrollTo(x, y); me.scrollTo(x, y);
} }
} }
} } else { // No rows - focus associated column header
// No rows - focus associated column header
else {
focusPosition.column.focus(); focusPosition.column.focus();
} }
}; };
@ -461,7 +460,7 @@ Ext.define(null, {
override: 'Ext.layout.container.boxOverflow.Scroller', override: 'Ext.layout.container.boxOverflow.Scroller',
createWheelListener: function() { createWheelListener: function() {
var me = this; let me = this;
if (Ext.isFirefox) { if (Ext.isFirefox) {
me.wheelListener = me.layout.innerCt.on('wheel', me.onMouseWheelFirefox, me, { destroyable: true }); me.wheelListener = me.layout.innerCt.on('wheel', me.onMouseWheelFirefox, me, { destroyable: true });
} else { } else {
@ -474,7 +473,7 @@ Ext.define(null, {
// because it is already // because it is already
onMouseWheelFirefox: function(e) { onMouseWheelFirefox: function(e) {
e.stopEvent(); e.stopEvent();
var delta = e.browserEvent.deltaY || 0; let delta = e.browserEvent.deltaY || 0;
this.scrollBy(delta * this.wheelIncrement, false); this.scrollBy(delta * this.wheelIncrement, false);
}, },
@ -483,7 +482,7 @@ Ext.define(null, {
// add '@' to the valid id // add '@' to the valid id
Ext.define('Proxmox.validIdReOverride', { Ext.define('Proxmox.validIdReOverride', {
override: 'Ext.Component', override: 'Ext.Component',
validIdRe: /^[a-z_][a-z0-9\-_\@]*$/i, validIdRe: /^[a-z_][a-z0-9\-_@]*$/i,
}); });
// force alert boxes to be rendered with an Error Icon // force alert boxes to be rendered with an Error Icon
@ -492,9 +491,9 @@ Ext.define('Proxmox.validIdReOverride', {
Ext.onReady(function() { Ext.onReady(function() {
/*jslint confusion: true */ /*jslint confusion: true */
Ext.override(Ext.Msg, { Ext.override(Ext.Msg, {
alert: function(title, message, fn, scope) { alert: function(title, message, fn, scope) { // eslint-disable-line consistent-return
if (Ext.isString(title)) { if (Ext.isString(title)) {
var config = { let config = {
title: title, title: title,
message: message, message: message,
icon: this.ERROR, icon: this.ERROR,
@ -530,7 +529,7 @@ Ext.define('Ext.ux.IFrame', {
}, },
initEvents: function() { initEvents: function() {
var me = this; let me = this;
me.callParent(); me.callParent();
me.iframeEl.on('load', me.onLoad, me); me.iframeEl.on('load', me.onLoad, me);
}, },
@ -543,7 +542,7 @@ Ext.define('Ext.ux.IFrame', {
}, },
getBody: function() { getBody: function() {
var doc = this.getDoc(); let doc = this.getDoc();
return doc.body || doc.documentElement; return doc.body || doc.documentElement;
}, },
@ -556,7 +555,7 @@ Ext.define('Ext.ux.IFrame', {
}, },
getWin: function() { getWin: function() {
var me = this, let me = this,
name = me.frameName, name = me.frameName,
win = Ext.isIE win = Ext.isIE
? me.iframeEl.dom.contentWindow ? me.iframeEl.dom.contentWindow
@ -565,7 +564,7 @@ Ext.define('Ext.ux.IFrame', {
}, },
getFrame: function() { getFrame: function() {
var me = this; let me = this;
return me.iframeEl.dom; return me.iframeEl.dom;
}, },
@ -575,29 +574,29 @@ Ext.define('Ext.ux.IFrame', {
}, },
cleanupListeners: function(destroying) { cleanupListeners: function(destroying) {
var doc, prop; let doc, prop;
if (this.rendered) { if (this.rendered) {
try { try {
doc = this.getDoc(); doc = this.getDoc();
if (doc) { if (doc) {
/*jslint nomen: true*/
Ext.get(doc).un(this._docListeners); Ext.get(doc).un(this._docListeners);
/*jslint nomen: false*/
if (destroying && doc.hasOwnProperty) { if (destroying && doc.hasOwnProperty) {
for (prop in doc) { for (prop in doc) {
if (doc.hasOwnProperty(prop)) { if (Object.prototype.hasOwnProperty.call(doc, prop)) {
delete doc[prop]; delete doc[prop];
} }
} }
} }
} }
} catch (e) { } } catch (e) {
// do nothing
}
} }
}, },
onLoad: function() { onLoad: function() {
var me = this, let me = this,
doc = me.getDoc(), doc = me.getDoc(),
fn = me.onRelayedEvent; fn = me.onRelayedEvent;
@ -638,7 +637,7 @@ Ext.define('Ext.ux.IFrame', {
onRelayedEvent: function(event) { onRelayedEvent: function(event) {
// relay event from the iframe's document to the document that owns the iframe... // relay event from the iframe's document to the document that owns the iframe...
var iframeEl = this.iframeEl, let iframeEl = this.iframeEl,
// Get the left-based iframe position // Get the left-based iframe position
iframeXY = iframeEl.getTrueXY(), iframeXY = iframeEl.getTrueXY(),
@ -659,7 +658,7 @@ Ext.define('Ext.ux.IFrame', {
}, },
load: function(src) { load: function(src) {
var me = this, let me = this,
text = me.loadMask, text = me.loadMask,
frame = me.getFrame(); frame = me.getFrame();

View File

@ -14,7 +14,7 @@ Ext.enableAriaPanels = false;
// avoid errors when running without development tools // avoid errors when running without development tools
if (!Ext.isDefined(Ext.global.console)) { if (!Ext.isDefined(Ext.global.console)) {
var console = { let console = {
dir: function() { dir: function() {
// do nothing // do nothing
}, },
@ -93,7 +93,7 @@ utilities: {
if (!value) { if (!value) {
return Proxmox.Utils.defaultText + ' (English)'; return Proxmox.Utils.defaultText + ' (English)';
} }
var text = Proxmox.Utils.language_map[value]; let text = Proxmox.Utils.language_map[value];
if (text) { if (text) {
return text + ' (' + value + ')'; return text + ' (' + value + ')';
} }
@ -101,7 +101,7 @@ utilities: {
}, },
language_array: function() { language_array: function() {
var data = [['__default__', Proxmox.Utils.render_language('')]]; let data = [['__default__', Proxmox.Utils.render_language('')]];
Ext.Object.each(Proxmox.Utils.language_map, function(key, value) { Ext.Object.each(Proxmox.Utils.language_map, function(key, value) {
data.push([key, Proxmox.Utils.render_language(value)]); data.push([key, Proxmox.Utils.render_language(value)]);
}); });
@ -192,22 +192,22 @@ utilities: {
}, },
format_duration_long: function(ut) { format_duration_long: function(ut) {
var days = Math.floor(ut / 86400); let days = Math.floor(ut / 86400);
ut -= days*86400; ut -= days*86400;
var hours = Math.floor(ut / 3600); let hours = Math.floor(ut / 3600);
ut -= hours*3600; ut -= hours*3600;
var mins = Math.floor(ut / 60); let mins = Math.floor(ut / 60);
ut -= mins*60; ut -= mins*60;
var hours_str = '00' + hours.toString(); let hours_str = '00' + hours.toString();
hours_str = hours_str.substr(hours_str.length - 2); hours_str = hours_str.substr(hours_str.length - 2);
var mins_str = "00" + mins.toString(); let mins_str = "00" + mins.toString();
mins_str = mins_str.substr(mins_str.length - 2); mins_str = mins_str.substr(mins_str.length - 2);
var ut_str = "00" + ut.toString(); let ut_str = "00" + ut.toString();
ut_str = ut_str.substr(ut_str.length - 2); ut_str = ut_str.substr(ut_str.length - 2);
if (days) { if (days) {
var ds = days > 1 ? Proxmox.Utils.daysText : Proxmox.Utils.dayText; let ds = days > 1 ? Proxmox.Utils.daysText : Proxmox.Utils.dayText;
return days.toString() + ' ' + ds + ' ' + return days.toString() + ' ' + ds + ' ' +
hours_str + ':' + mins_str + ':' + ut_str; hours_str + ':' + mins_str + ':' + ut_str;
} else { } else {
@ -232,8 +232,8 @@ utilities: {
compute_min_label_width: function(text, width) { compute_min_label_width: function(text, width) {
if (width === undefined) { width = 100; } if (width === undefined) { width = 100; }
var tm = new Ext.util.TextMetrics(); let tm = new Ext.util.TextMetrics();
var min = tm.getWidth(text + ':'); let min = tm.getWidth(text + ':');
return min < width ? width : min; return min < width ? width : min;
}, },
@ -269,7 +269,7 @@ utilities: {
// comp.setLoading() is buggy in ExtJS 4.0.7, so we // comp.setLoading() is buggy in ExtJS 4.0.7, so we
// use el.mask() instead // use el.mask() instead
setErrorMask: function(comp, msg) { setErrorMask: function(comp, msg) {
var el = comp.el; let el = comp.el;
if (!el) { if (!el) {
return; return;
} }
@ -334,7 +334,7 @@ utilities: {
}, },
extractRequestError: function(result, verbose) { extractRequestError: function(result, verbose) {
var msg = gettext('Successful'); let msg = gettext('Successful');
if (!result.success) { if (!result.success) {
msg = gettext("Unknown error"); msg = gettext("Unknown error");
@ -358,7 +358,7 @@ utilities: {
// Ext.Ajax.request // Ext.Ajax.request
API2Request: function(reqOpts) { API2Request: function(reqOpts) {
var newopts = Ext.apply({ let newopts = Ext.apply({
waitMsg: gettext('Please wait...'), waitMsg: gettext('Please wait...'),
}, reqOpts); }, reqOpts);
@ -367,7 +367,7 @@ utilities: {
} }
delete newopts.callback; delete newopts.callback;
var createWrapper = function(successFn, callbackFn, failureFn) { let createWrapper = function(successFn, callbackFn, failureFn) {
Ext.apply(newopts, { Ext.apply(newopts, {
success: function(response, options) { success: function(response, options) {
if (options.waitMsgTarget) { if (options.waitMsgTarget) {
@ -377,7 +377,7 @@ utilities: {
options.waitMsgTarget.setLoading(false); options.waitMsgTarget.setLoading(false);
} }
} }
var result = Ext.decode(response.responseText); let result = Ext.decode(response.responseText);
response.result = result; response.result = result;
if (!result.success) { if (!result.success) {
response.htmlStatus = Proxmox.Utils.extractRequestError(result, true); response.htmlStatus = Proxmox.Utils.extractRequestError(result, true);
@ -402,7 +402,7 @@ utilities: {
} catch (e) { } catch (e) {
// ignore // ignore
} }
var msg = gettext('Connection error') + ' - server offline?'; let msg = gettext('Connection error') + ' - server offline?';
if (response.aborted) { if (response.aborted) {
msg = gettext('Connection error') + ' - aborted.'; msg = gettext('Connection error') + ' - aborted.';
} else if (response.timedout) { } else if (response.timedout) {
@ -419,7 +419,7 @@ utilities: {
createWrapper(reqOpts.success, reqOpts.callback, reqOpts.failure); createWrapper(reqOpts.success, reqOpts.callback, reqOpts.failure);
var target = newopts.waitMsgTarget; let target = newopts.waitMsgTarget;
if (target) { if (target) {
if (Proxmox.Utils.toolkit === 'touch') { if (Proxmox.Utils.toolkit === 'touch') {
target.setMasked({ xtype: 'loadmask', message: newopts.waitMsg }); target.setMasked({ xtype: 'loadmask', message: newopts.waitMsg });
@ -657,11 +657,8 @@ utilities: {
}, },
format_size: function(size) { format_size: function(size) {
/*jslint confusion: true */ let units = ['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'];
let num = 0;
var units = ['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi', 'Yi'];
var num = 0;
while (size >= 1024 && num++ <= units.length) { while (size >= 1024 && num++ <= units.length) {
size = size / 1024; size = size / 1024;
} }
@ -678,7 +675,7 @@ utilities: {
}, },
render_uptime: function(value) { render_uptime: function(value) {
var uptime = value; let uptime = value;
if (uptime === undefined) { if (uptime === undefined) {
return ''; return '';
@ -692,9 +689,9 @@ utilities: {
}, },
parse_task_upid: function(upid) { parse_task_upid: function(upid) {
var task = {}; let task = {};
var res = upid.match(/^UPID:([^\s:]+):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8,9}):(([0-9A-Fa-f]{8,16}):)?([0-9A-Fa-f]{8}):([^:\s]+):([^:\s]*):([^:\s]+):$/); let res = upid.match(/^UPID:([^\s:]+):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8,9}):(([0-9A-Fa-f]{8,16}):)?([0-9A-Fa-f]{8}):([^:\s]+):([^:\s]*):([^:\s]+):$/);
if (!res) { if (!res) {
throw "unable to parse upid '" + upid + "'"; throw "unable to parse upid '" + upid + "'";
} }
@ -722,12 +719,12 @@ utilities: {
}, },
render_timestamp: function(value, metaData, record, rowIndex, colIndex, store) { render_timestamp: function(value, metaData, record, rowIndex, colIndex, store) {
var servertime = new Date(value * 1000); let servertime = new Date(value * 1000);
return Ext.Date.format(servertime, 'Y-m-d H:i:s'); return Ext.Date.format(servertime, 'Y-m-d H:i:s');
}, },
get_help_info: function(section) { get_help_info: function(section) {
var helpMap; let helpMap;
if (typeof proxmoxOnlineHelpInfo !== 'undefined') { if (typeof proxmoxOnlineHelpInfo !== 'undefined') {
helpMap = proxmoxOnlineHelpInfo; // eslint-disable-line no-undef helpMap = proxmoxOnlineHelpInfo; // eslint-disable-line no-undef
} else if (typeof pveOnlineHelpInfo !== 'undefined') { } else if (typeof pveOnlineHelpInfo !== 'undefined') {
@ -741,7 +738,7 @@ utilities: {
}, },
get_help_link: function(section) { get_help_link: function(section) {
var info = Proxmox.Utils.get_help_info(section); let info = Proxmox.Utils.get_help_info(section);
if (!info) { if (!info) {
return undefined; return undefined;
} }
@ -749,7 +746,7 @@ utilities: {
}, },
openXtermJsViewer: function(vmtype, vmid, nodename, vmname, cmd) { openXtermJsViewer: function(vmtype, vmid, nodename, vmname, cmd) {
var url = Ext.Object.toQueryString({ let url = Ext.Object.toQueryString({
console: vmtype, // kvm, lxc, upgrade or shell console: vmtype, // kvm, lxc, upgrade or shell
xtermjs: 1, xtermjs: 1,
vmid: vmid, vmid: vmid,
@ -758,7 +755,7 @@ utilities: {
cmd: cmd, cmd: cmd,
}); });
var nw = window.open("?" + url, '_blank', 'toolbar=no,location=no,status=no,menubar=no,resizable=yes,width=800,height=420'); let nw = window.open("?" + url, '_blank', 'toolbar=no,location=no,status=no,menubar=no,resizable=yes,width=800,height=420');
if (nw) { if (nw) {
nw.focus(); nw.focus();
} }
@ -768,22 +765,22 @@ utilities: {
singleton: true, singleton: true,
constructor: function() { constructor: function() {
var me = this; let me = this;
Ext.apply(me, me.utilities); Ext.apply(me, me.utilities);
var IPV4_OCTET = "(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])"; let IPV4_OCTET = "(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])";
var IPV4_REGEXP = "(?:(?:" + IPV4_OCTET + "\\.){3}" + IPV4_OCTET + ")"; let IPV4_REGEXP = "(?:(?:" + IPV4_OCTET + "\\.){3}" + IPV4_OCTET + ")";
var IPV6_H16 = "(?:[0-9a-fA-F]{1,4})"; let IPV6_H16 = "(?:[0-9a-fA-F]{1,4})";
var IPV6_LS32 = "(?:(?:" + IPV6_H16 + ":" + IPV6_H16 + ")|" + IPV4_REGEXP + ")"; let IPV6_LS32 = "(?:(?:" + IPV6_H16 + ":" + IPV6_H16 + ")|" + IPV4_REGEXP + ")";
var IPV4_CIDR_MASK = "([0-9]{1,2})"; let IPV4_CIDR_MASK = "([0-9]{1,2})";
var IPV6_CIDR_MASK = "([0-9]{1,3})"; let IPV6_CIDR_MASK = "([0-9]{1,3})";
me.IP4_match = new RegExp("^(?:" + IPV4_REGEXP + ")$"); me.IP4_match = new RegExp("^(?:" + IPV4_REGEXP + ")$");
me.IP4_cidr_match = new RegExp("^(?:" + IPV4_REGEXP + ")/" + IPV4_CIDR_MASK + "$"); me.IP4_cidr_match = new RegExp("^(?:" + IPV4_REGEXP + ")/" + IPV4_CIDR_MASK + "$");
/* eslint-disable no-useless-concat,no-multi-spaces */ /* eslint-disable no-useless-concat,no-multi-spaces */
var IPV6_REGEXP = "(?:" + let IPV6_REGEXP = "(?:" +
"(?:(?:" + "(?:" + IPV6_H16 + ":){6})" + IPV6_LS32 + ")|" + "(?:(?:" + "(?:" + IPV6_H16 + ":){6})" + IPV6_LS32 + ")|" +
"(?:(?:" + "::" + "(?:" + IPV6_H16 + ":){5})" + IPV6_LS32 + ")|" + "(?:(?:" + "::" + "(?:" + IPV6_H16 + ":){5})" + IPV6_LS32 + ")|" +
"(?:(?:(?:" + IPV6_H16 + ")?::" + "(?:" + IPV6_H16 + ":){4})" + IPV6_LS32 + ")|" + "(?:(?:(?:" + IPV6_H16 + ")?::" + "(?:" + IPV6_H16 + ":){4})" + IPV6_LS32 + ")|" +
@ -803,7 +800,7 @@ utilities: {
me.IP64_match = new RegExp("^(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + ")$"); me.IP64_match = new RegExp("^(?:" + IPV6_REGEXP + "|" + IPV4_REGEXP + ")$");
me.IP64_cidr_match = new RegExp("^(?:" + IPV6_REGEXP + "/" + IPV6_CIDR_MASK + ")|(?:" + IPV4_REGEXP + "/" + IPV4_CIDR_MASK + ")$"); me.IP64_cidr_match = new RegExp("^(?:" + IPV6_REGEXP + "/" + IPV6_CIDR_MASK + ")|(?:" + IPV4_REGEXP + "/" + IPV4_CIDR_MASK + ")$");
var DnsName_REGEXP = "(?:(([a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)\\.)*([A-Za-z0-9]([A-Za-z0-9\\-]*[A-Za-z0-9])?))"; let DnsName_REGEXP = "(?:(([a-zA-Z0-9]([a-zA-Z0-9\\-]*[a-zA-Z0-9])?)\\.)*([A-Za-z0-9]([A-Za-z0-9\\-]*[A-Za-z0-9])?))";
me.DnsName_match = new RegExp("^" + DnsName_REGEXP + "$"); me.DnsName_match = new RegExp("^" + DnsName_REGEXP + "$");
me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(:\\d+)?$"); me.HostPort_match = new RegExp("^(" + IPV4_REGEXP + "|" + DnsName_REGEXP + ")(:\\d+)?$");

View File

@ -24,14 +24,14 @@ Ext.define('Proxmox.button.Button', {
parentXType: 'grid', parentXType: 'grid',
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (me.handler) { if (me.handler) {
// Note: me.realHandler may be a string (see named scopes) // Note: me.realHandler may be a string (see named scopes)
var realHandler = me.handler; let realHandler = me.handler;
me.handler = function(button, event) { me.handler = function(button, event) {
var rec, msg; let rec, msg;
if (me.selModel) { if (me.selModel) {
rec = me.selModel.getSelection()[0]; rec = me.selModel.getSelection()[0];
if (!rec || me.enableFn(rec) === false) { if (!rec || me.enableFn(rec) === false) {
@ -66,9 +66,9 @@ Ext.define('Proxmox.button.Button', {
me.callParent(); me.callParent();
var grid; let grid;
if (!me.selModel && me.selModel !== null && me.selModel !== false) { if (!me.selModel && me.selModel !== null && me.selModel !== false) {
parent = me.up(me.parentXType); let parent = me.up(me.parentXType);
if (parent && parent.selModel) { if (parent && parent.selModel) {
me.selModel = parent.selModel; me.selModel = parent.selModel;
} }
@ -85,7 +85,7 @@ Ext.define('Proxmox.button.Button', {
if (me.selModel) { if (me.selModel) {
me.mon(me.selModel, "selectionchange", function() { me.mon(me.selModel, "selectionchange", function() {
var rec = me.selModel.getSelection()[0]; let rec = me.selModel.getSelection()[0];
if (!rec || me.enableFn(rec) === false) { if (!rec || me.enableFn(rec) === false) {
me.setDisabled(true); me.setDisabled(true);
} else { } else {
@ -113,7 +113,7 @@ Ext.define('Proxmox.button.StdRemoveButton', {
}, },
getUrl: function(rec) { getUrl: function(rec) {
var me = this; let me = this;
if (me.selModel) { if (me.selModel) {
return me.baseurl + '/' + rec.getId(); return me.baseurl + '/' + rec.getId();
@ -130,16 +130,16 @@ Ext.define('Proxmox.button.StdRemoveButton', {
getRecordName: (rec) => rec.getId(), getRecordName: (rec) => rec.getId(),
confirmMsg: function(rec) { confirmMsg: function(rec) {
var me = this; let me = this;
var name = me.getRecordName(rec); let name = me.getRecordName(rec);
return Ext.String.format(gettext('Are you sure you want to remove entry {0}'), `'${name}'`); return Ext.String.format(gettext('Are you sure you want to remove entry {0}'), `'${name}'`);
}, },
handler: function(btn, event, rec) { handler: function(btn, event, rec) {
var me = this; let me = this;
var url = me.getUrl(rec); let url = me.getUrl(rec);
if (typeof me.delay !== 'undefined' && me.delay >= 0) { if (typeof me.delay !== 'undefined' && me.delay >= 0) {
url += "?delay=" + me.delay; url += "?delay=" + me.delay;

View File

@ -1,9 +1,6 @@
/* help button pointing to an online documentation /* help button pointing to an online documentation
for components contained in a modal window for components contained in a modal window
*/ */
/*global
proxmoxOnlineHelpInfo
*/
Ext.define('Proxmox.button.Help', { Ext.define('Proxmox.button.Help', {
extend: 'Ext.button.Button', extend: 'Ext.button.Button',
xtype: 'proxmoxHelpButton', xtype: 'proxmoxHelpButton',
@ -27,28 +24,28 @@ Ext.define('Proxmox.button.Help', {
}, },
}, },
onProxmoxShowHelp: function(helpLink) { onProxmoxShowHelp: function(helpLink) {
var me = this.getView(); let view = this.getView();
if (me.listenToGlobalEvent === true) { if (view.listenToGlobalEvent === true) {
me.setOnlineHelp(helpLink); view.setOnlineHelp(helpLink);
me.show(); view.show();
} }
}, },
onProxmoxHideHelp: function() { onProxmoxHideHelp: function() {
var me = this.getView(); let view = this.getView();
if (me.listenToGlobalEvent === true) { if (view.listenToGlobalEvent === true) {
me.hide(); view.hide();
} }
}, },
}, },
// this sets the link and the tooltip text // this sets the link and the tooltip text
setOnlineHelp: function(blockid) { setOnlineHelp: function(blockid) {
var me = this; let me = this;
var info = Proxmox.Utils.get_help_info(blockid); let info = Proxmox.Utils.get_help_info(blockid);
if (info) { if (info) {
me.onlineHelp = blockid; me.onlineHelp = blockid;
var title = info.title; let title = info.title;
if (info.subtitle) { if (info.subtitle) {
title += ' - ' + info.subtitle; title += ' - ' + info.subtitle;
} }
@ -58,13 +55,13 @@ Ext.define('Proxmox.button.Help', {
// helper to set the onlineHelp via a config object // helper to set the onlineHelp via a config object
setHelpConfig: function(config) { setHelpConfig: function(config) {
var me = this; let me = this;
me.setOnlineHelp(config.onlineHelp); me.setOnlineHelp(config.onlineHelp);
}, },
handler: function() { handler: function() {
var me = this; let me = this;
var docsURI; let docsURI;
if (me.onlineHelp) { if (me.onlineHelp) {
docsURI = Proxmox.Utils.get_help_link(me.onlineHelp); docsURI = Proxmox.Utils.get_help_link(me.onlineHelp);
@ -78,8 +75,7 @@ Ext.define('Proxmox.button.Help', {
}, },
initComponent: function() { initComponent: function() {
/*jslint confusion: true */ let me = this;
var me = this;
me.callParent(); me.callParent();

View File

@ -40,7 +40,7 @@ Ext.define('Proxmox.data.DiffStore', {
}, },
constructor: function(config) { constructor: function(config) {
var me = this; let me = this;
config = config || {}; config = config || {};
@ -73,10 +73,10 @@ Ext.define('Proxmox.data.DiffStore', {
me.rstore = rstore; me.rstore = rstore;
var first_load = true; let first_load = true;
var cond_add_item = function(data, id) { let cond_add_item = function(data, id) {
var olditem = me.getById(id); let olditem = me.getById(id);
if (olditem) { if (olditem) {
olditem.beginEdit(); olditem.beginEdit();
Ext.Array.each(me.model.prototype.fields, function(field) { Ext.Array.each(me.model.prototype.fields, function(field) {
@ -87,13 +87,13 @@ Ext.define('Proxmox.data.DiffStore', {
olditem.endEdit(true); olditem.endEdit(true);
olditem.commit(); olditem.commit();
} else { } else {
var newrec = Ext.create(me.model, data); let newrec = Ext.create(me.model, data);
var pos = me.appendAtStart && !first_load ? 0 : me.data.length; let pos = me.appendAtStart && !first_load ? 0 : me.data.length;
me.insert(pos, newrec); me.insert(pos, newrec);
} }
}; };
var loadFn = function(s, records, success) { let loadFn = function(s, records, success) {
if (!success) { if (!success) {
return; return;
} }
@ -102,11 +102,11 @@ Ext.define('Proxmox.data.DiffStore', {
// getSource returns null if data is not filtered // getSource returns null if data is not filtered
// if it is filtered it returns all records // if it is filtered it returns all records
var allItems = me.getData().getSource() || me.getData(); let allItems = me.getData().getSource() || me.getData();
// remove vanished items // remove vanished items
allItems.each(function(olditem) { allItems.each(function(olditem) {
var item = me.rstore.getById(olditem.getId()); let item = me.rstore.getById(olditem.getId());
if (!item) { if (!item) {
me.remove(olditem); me.remove(olditem);
} }

View File

@ -7,8 +7,8 @@ Ext.define('Proxmox.data.ObjectStore', {
extend: 'Proxmox.data.UpdateStore', extend: 'Proxmox.data.UpdateStore',
getRecord: function() { getRecord: function() {
var me = this; let me = this;
var record = Ext.create('Ext.data.Model'); let record = Ext.create('Ext.data.Model');
me.getData().each(function(item) { me.getData().each(function(item) {
record.set(item.data.key, item.data.value); record.set(item.data.key, item.data.value);
}); });
@ -17,7 +17,7 @@ Ext.define('Proxmox.data.ObjectStore', {
}, },
constructor: function(config) { constructor: function(config) {
var me = this; let me = this;
config = config || {}; config = config || {};

View File

@ -59,8 +59,7 @@ Ext.define('Proxmox.RestProxy', {
{ {
name: 'id', name: 'id',
convert: function(value, record) { convert: function(value, record) {
var info = record.data; let info = record.data;
var text;
if (value) { if (value) {
return value; return value;

View File

@ -7,7 +7,7 @@ Ext.define('Proxmox.data.RRDStore', {
alias: 'store.proxmoxRRDStore', alias: 'store.proxmoxRRDStore',
setRRDUrl: function(timeframe, cf) { setRRDUrl: function(timeframe, cf) {
var me = this; let me = this;
if (!timeframe) { if (!timeframe) {
timeframe = me.timeframe; timeframe = me.timeframe;
} }
@ -28,7 +28,7 @@ Ext.define('Proxmox.data.RRDStore', {
cf: 'AVERAGE', cf: 'AVERAGE',
constructor: function(config) { constructor: function(config) {
var me = this; let me = this;
config = config || {}; config = config || {};
@ -47,9 +47,9 @@ Ext.define('Proxmox.data.RRDStore', {
throw "no rrdurl specified"; throw "no rrdurl specified";
} }
var stateid = 'proxmoxRRDTypeSelection'; let stateid = 'proxmoxRRDTypeSelection';
var sp = Ext.state.Manager.getProvider(); let sp = Ext.state.Manager.getProvider();
var stateinit = sp.get(stateid); let stateinit = sp.get(stateid);
if (stateinit) { if (stateinit) {
if (stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn) { if (stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn) {

View File

@ -18,7 +18,7 @@
* *
* Additional feature: specify allowed properties with default values with 'rows' object * Additional feature: specify allowed properties with default values with 'rows' object
* *
* var rows = { * let rows = {
* memory: { * memory: {
* required: true, * required: true,
* defaultValue: 512 * defaultValue: 512
@ -36,7 +36,7 @@ Ext.define('Proxmox.data.reader.JsonObject', {
rows: undefined, rows: undefined,
constructor: function(config) { constructor: function(config) {
var me = this; let me = this;
Ext.apply(me, config || {}); Ext.apply(me, config || {});
@ -44,16 +44,16 @@ Ext.define('Proxmox.data.reader.JsonObject', {
}, },
getResponseData: function(response) { getResponseData: function(response) {
var me = this; let me = this;
var data = []; let data = [];
try { try {
var result = Ext.decode(response.responseText); let result = Ext.decode(response.responseText);
// get our data items inside the server response // get our data items inside the server response
var root = result[me.getRootProperty()]; let root = result[me.getRootProperty()];
if (me.readArray) { if (me.readArray) {
var rec_hash = {}; let rec_hash = {};
Ext.Array.each(root, function(rec) { Ext.Array.each(root, function(rec) {
if (Ext.isDefined(rec.key)) { if (Ext.isDefined(rec.key)) {
rec_hash[rec.key] = rec; rec_hash[rec.key] = rec;
@ -62,7 +62,7 @@ Ext.define('Proxmox.data.reader.JsonObject', {
if (me.rows) { if (me.rows) {
Ext.Object.each(me.rows, function(key, rowdef) { Ext.Object.each(me.rows, function(key, rowdef) {
var rec = rec_hash[key]; let rec = rec_hash[key];
if (Ext.isDefined(rec)) { if (Ext.isDefined(rec)) {
if (!Ext.isDefined(rec.value)) { if (!Ext.isDefined(rec.value)) {
rec.value = rowdef.defaultValue; rec.value = rowdef.defaultValue;
@ -82,10 +82,10 @@ Ext.define('Proxmox.data.reader.JsonObject', {
}); });
} }
} else { } else {
var org_root = root; let org_root = root;
if (Ext.isArray(org_root)) { if (Ext.isArray(org_root)) {
if (root.length == 1) { if (root.length === 1) {
root = org_root[0]; root = org_root[0];
} else { } else {
root = {}; root = {};

View File

@ -5,7 +5,7 @@ Ext.define('Proxmox.form.BondModeSelector', {
openvswitch: false, openvswitch: false,
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (me.openvswitch) { if (me.openvswitch) {
me.comboItems = Proxmox.Utils.bond_mode_array([ me.comboItems = Proxmox.Utils.bond_mode_array([

View File

@ -11,14 +11,14 @@ Ext.define('Proxmox.form.Checkbox', {
inputValue: '1', inputValue: '1',
getSubmitData: function() { getSubmitData: function() {
var me = this, let me = this,
data = null, data = null,
val; val;
if (!me.disabled && me.submitValue) { if (!me.disabled && me.submitValue) {
val = me.getSubmitValue(); val = me.getSubmitValue();
if (val !== null) { if (val !== null) {
data = {}; data = {};
if (val == me.getDefaultValue() && me.getDeleteDefaultValue()) { if (val === me.getDefaultValue() && me.getDeleteDefaultValue()) {
data.delete = me.getName(); data.delete = me.getName();
} else { } else {
data[me.getName()] = val; data[me.getName()] = val;
@ -33,7 +33,7 @@ Ext.define('Proxmox.form.Checkbox', {
// also accept integer 1 as true // also accept integer 1 as true
setRawValue: function(value) { setRawValue: function(value) {
var me = this; let me = this;
if (value === 1) { if (value === 1) {
me.callParent([true]); me.callParent([true]);

View File

@ -16,11 +16,11 @@ Ext.define('Proxmox.form.ComboGrid', {
// hack: allow to select empty value // hack: allow to select empty value
// seems extjs does not allow that when 'editable == false' // seems extjs does not allow that when 'editable == false'
onKeyUp: function(e, t) { onKeyUp: function(e, t) {
var me = this; let me = this;
var key = e.getKey(); let key = e.getKey();
if (!me.editable && me.allowBlank && !me.multiSelect && if (!me.editable && me.allowBlank && !me.multiSelect &&
(key == e.BACKSPACE || key == e.DELETE)) { (key === e.BACKSPACE || key === e.DELETE)) {
me.setValue(''); me.setValue('');
} }
@ -44,14 +44,14 @@ Ext.define('Proxmox.form.ComboGrid', {
weight: -1, weight: -1,
hidden: true, hidden: true,
handler: function() { handler: function() {
var me = this; let me = this;
me.setValue(''); me.setValue('');
}, },
}, },
}, },
setValue: function(value) { setValue: function(value) {
var me = this; let me = this;
let empty = Ext.isArray(value) ? !value.length : !value; let empty = Ext.isArray(value) ? !value.length : !value;
me.triggers.clear.setVisible(!empty && me.allowBlank); me.triggers.clear.setVisible(!empty && me.allowBlank);
return me.callParent([value]); return me.callParent([value]);
@ -68,7 +68,7 @@ Ext.define('Proxmox.form.ComboGrid', {
// should be an array) and else we do callParent so // should be an array) and else we do callParent so
// it should not impact any other use of the class // it should not impact any other use of the class
getRawValue: function() { getRawValue: function() {
var me = this; let me = this;
if (me.multiSelect) { if (me.multiSelect) {
return me.rawValue; return me.rawValue;
} else { } else {
@ -77,7 +77,7 @@ Ext.define('Proxmox.form.ComboGrid', {
}, },
getSubmitData: function() { getSubmitData: function() {
var me = this; let me = this;
let data = null; let data = null;
if (!me.disabled && me.submitValue) { if (!me.disabled && me.submitValue) {
@ -94,9 +94,9 @@ Ext.define('Proxmox.form.ComboGrid', {
}, },
getSubmitValue: function() { getSubmitValue: function() {
var me = this; let me = this;
var value = me.callParent(); let value = me.callParent();
if (value !== '') { if (value !== '') {
return value; return value;
} }
@ -111,7 +111,7 @@ Ext.define('Proxmox.form.ComboGrid', {
// override ExtJS protected method // override ExtJS protected method
onBindStore: function(store, initial) { onBindStore: function(store, initial) {
var me = this, let me = this,
picker = me.picker, picker = me.picker,
extraKeySpec, extraKeySpec,
valueCollectionConfig; valueCollectionConfig;
@ -191,11 +191,12 @@ Ext.define('Proxmox.form.ComboGrid', {
// we changed here the selection to RowModel // we changed here the selection to RowModel
me.pickerSelectionModel = new Ext.selection.RowModel({ me.pickerSelectionModel = new Ext.selection.RowModel({
mode: me.multiSelect ? 'SIMPLE' : 'SINGLE', mode: me.multiSelect ? 'SIMPLE' : 'SINGLE',
// There are situations when a row is selected on mousedown but then the mouse is dragged to another row // There are situations when a row is selected on mousedown but then the mouse is
// and released. In these situations, the event target for the click event won't be the row where the mouse // dragged to another row and released. In these situations, the event target for
// was released but the boundview. The view will then determine that it should fire a container click, and // the click event won't be the row where the mouse was released but the boundview.
// the DataViewModel will then deselect all prior selections. Setting `deselectOnContainerClick` here will // The view will then determine that it should fire a container click, and the
// prevent the model from deselecting. // DataViewModel will then deselect all prior selections. Setting
// `deselectOnContainerClick` here will prevent the model from deselecting.
deselectOnContainerClick: false, deselectOnContainerClick: false,
enableInitialSelection: false, enableInitialSelection: false,
pruneRemoved: false, pruneRemoved: false,
@ -222,10 +223,10 @@ Ext.define('Proxmox.form.ComboGrid', {
// copied from ComboBox // copied from ComboBox
createPicker: function() { createPicker: function() {
var me = this; let me = this;
var picker; let picker;
var pickerCfg = Ext.apply({ let pickerCfg = Ext.apply({
// proxmox overrides: display a grid for selection // proxmox overrides: display a grid for selection
xtype: 'gridpanel', xtype: 'gridpanel',
id: me.pickerId, id: me.pickerId,
@ -273,10 +274,9 @@ Ext.define('Proxmox.form.ComboGrid', {
beforedeselect: me.onBeforeDeselect, beforedeselect: me.onBeforeDeselect,
focuschange: me.onFocusChange, focuschange: me.onFocusChange,
selectionChange: function(sm, selectedRecords) { selectionChange: function(sm, selectedRecords) {
var me = this;
if (selectedRecords.length) { if (selectedRecords.length) {
me.setValue(selectedRecords); this.setValue(selectedRecords);
me.fireEvent('select', me, selectedRecords); this.fireEvent('select', me, selectedRecords);
} }
}, },
scope: me, scope: me,
@ -312,7 +312,7 @@ Ext.define('Proxmox.form.ComboGrid', {
}, },
clearLocalFilter: function() { clearLocalFilter: function() {
var me = this, let me = this,
filter = me.queryFilter; filter = me.queryFilter;
if (filter) { if (filter) {
@ -324,9 +324,9 @@ Ext.define('Proxmox.form.ComboGrid', {
}, },
isValueInStore: function(value) { isValueInStore: function(value) {
var me = this; let me = this;
var store = me.store; let store = me.store;
var found = false; let found = false;
if (!store) { if (!store) {
return found; return found;
@ -345,6 +345,7 @@ Ext.define('Proxmox.form.ComboGrid', {
found = true; found = true;
return false; // break return false; // break
} }
return true;
}); });
} else { } else {
found = !!store.findRecord(me.valueField, value); found = !!store.findRecord(me.valueField, value);
@ -354,7 +355,7 @@ Ext.define('Proxmox.form.ComboGrid', {
}, },
validator: function(value) { validator: function(value) {
var me = this; let me = this;
if (!value) { if (!value) {
return true; // handled later by allowEmpty in the getErrors call chain return true; // handled later by allowEmpty in the getErrors call chain
@ -366,8 +367,8 @@ Ext.define('Proxmox.form.ComboGrid', {
// //
// we also have to get the 'real' value if the we have a mulitSelect // we also have to get the 'real' value if the we have a mulitSelect
// Field but got a non array value // Field but got a non array value
if (me.valueField && me.valueField !== me.displayField || if ((me.valueField && me.valueField !== me.displayField) ||
me.multiSelect && !Ext.isArray(value)) { (me.multiSelect && !Ext.isArray(value))) {
value = me.getValue(); value = me.getValue();
} }
@ -386,7 +387,7 @@ Ext.define('Proxmox.form.ComboGrid', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
Ext.apply(me, { Ext.apply(me, {
queryMode: 'local', queryMode: 'local',
@ -419,7 +420,7 @@ Ext.define('Proxmox.form.ComboGrid', {
delete me.enableLoadMask; delete me.enableLoadMask;
// if the picker exists, // if the picker exists,
// we reset its minheight to the saved var/0 // we reset its minheight to the saved let/0
// we have to update the layout, otherwise the height // we have to update the layout, otherwise the height
// gets not recalculated // gets not recalculated
if (me.picker) { if (me.picker) {
@ -429,17 +430,17 @@ Ext.define('Proxmox.form.ComboGrid', {
} }
} }
var def = me.getValue() || me.preferredValue; let def = me.getValue() || me.preferredValue;
if (def) { if (def) {
me.setValue(def, true); // sync with grid me.setValue(def, true); // sync with grid
} }
var found = false; let found = false;
if (def) { if (def) {
found = me.isValueInStore(def); found = me.isValueInStore(def);
} }
if (!found) { if (!found) {
var rec = me.store.first(); let rec = me.store.first();
if (me.autoSelect && rec && rec.data) { if (me.autoSelect && rec && rec.data) {
def = rec.data[me.valueField]; def = rec.data[me.valueField];
me.setValue(def, true); me.setValue(def, true);

View File

@ -9,24 +9,24 @@ Ext.define('Proxmox.DateTimeField', {
submitFormat: 'U', submitFormat: 'U',
getValue: function() { getValue: function() {
var me = this; let me = this;
var d = me.lookupReference('dateentry').getValue(); let d = me.lookupReference('dateentry').getValue();
if (d === undefined || d === null) { return null; } if (d === undefined || d === null) { return null; }
var t = me.lookupReference('timeentry').getValue(); let t = me.lookupReference('timeentry').getValue();
if (t === undefined || t === null) { return null; } if (t === undefined || t === null) { return null; }
var offset = (t.getHours()*3600+t.getMinutes()*60)*1000; let offset = (t.getHours() * 3600 + t.getMinutes() * 60) * 1000;
return new Date(d.getTime() + offset); return new Date(d.getTime() + offset);
}, },
getSubmitValue: function() { getSubmitValue: function() {
var me = this; let me = this;
var format = me.submitFormat; let format = me.submitFormat;
var value = me.getValue(); let value = me.getValue();
return value ? Ext.Date.format(value, format) : null; return value ? Ext.Date.format(value, format) : null;
}, },
@ -128,11 +128,11 @@ Ext.define('Proxmox.DateTimeField', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
me.callParent(); me.callParent();
var value = me.value || new Date(); let value = me.value || new Date();
me.lookupReference('dateentry').setValue(value); me.lookupReference('dateentry').setValue(value);
me.lookupReference('timeentry').setValue(value); me.lookupReference('timeentry').setValue(value);

View File

@ -11,7 +11,7 @@ Ext.define('Proxmox.form.field.Integer', {
step: 1, step: 1,
getSubmitData: function() { getSubmitData: function() {
var me = this, let me = this,
data = null, data = null,
val; val;
if (!me.disabled && me.submitValue && !me.isFileUpload()) { if (!me.disabled && me.submitValue && !me.isFileUpload()) {

View File

@ -20,7 +20,7 @@ Ext.define('Proxmox.form.KVComboBox', {
// overide framework function to implement deleteEmpty behaviour // overide framework function to implement deleteEmpty behaviour
getSubmitData: function() { getSubmitData: function() {
var me = this, let me = this,
data = null, data = null,
val; val;
if (!me.disabled && me.submitValue) { if (!me.disabled && me.submitValue) {
@ -37,15 +37,15 @@ Ext.define('Proxmox.form.KVComboBox', {
}, },
validator: function(val) { validator: function(val) {
var me = this; let me = this;
if (me.editable || val === null || val === '') { if (me.editable || val === null || val === '') {
return true; return true;
} }
if (me.store.getCount() > 0) { if (me.store.getCount() > 0) {
var values = me.multiSelect ? val.split(me.delimiter) : [val]; let values = me.multiSelect ? val.split(me.delimiter) : [val];
var items = me.store.getData().collect('value', 'data'); let items = me.store.getData().collect('value', 'data');
if (Ext.Array.every(values, function(value) { if (Ext.Array.every(values, function(value) {
return Ext.Array.contains(items, value); return Ext.Array.contains(items, value);
})) { })) {
@ -54,12 +54,11 @@ Ext.define('Proxmox.form.KVComboBox', {
} }
// returns a boolean or string // returns a boolean or string
/*jslint confusion: true */
return "value '" + val + "' not allowed!"; return "value '" + val + "' not allowed!";
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
me.store = Ext.create('Ext.data.ArrayStore', { me.store = Ext.create('Ext.data.ArrayStore', {
model: 'KeyValue', model: 'KeyValue',
@ -74,7 +73,7 @@ Ext.define('Proxmox.form.KVComboBox', {
}, },
setComboItems: function(items) { setComboItems: function(items) {
var me = this; let me = this;
me.getStore().setData(items); me.getStore().setData(items);
}, },

View File

@ -3,7 +3,7 @@ Ext.define('Proxmox.form.NetworkSelectorController', {
alias: 'controller.proxmoxNetworkSelectorController', alias: 'controller.proxmoxNetworkSelectorController',
init: function(view) { init: function(view) {
var me = this; let me = this;
if (!view.nodename) { if (!view.nodename) {
throw "missing custom view config: nodename"; throw "missing custom view config: nodename";
@ -36,7 +36,7 @@ Ext.define('Proxmox.form.NetworkSelector', {
nodename: 'localhost', nodename: 'localhost',
setNodename: function(nodename) { setNodename: function(nodename) {
this.nodename = nodename; this.nodename = nodename;
var networkSelectorStore = this.getStore(); let networkSelectorStore = this.getStore();
networkSelectorStore.removeAll(); networkSelectorStore.removeAll();
// because of manual local copy of data for ip4/6 // because of manual local copy of data for ip4/6
this.getPicker().refresh(); this.getPicker().refresh();

View File

@ -38,10 +38,10 @@ Ext.define('Proxmox.form.RRDTypeSelector', {
}, },
// save current selection in the state Provider so RRDView can read it // save current selection in the state Provider so RRDView can read it
getState: function() { getState: function() {
var ind = this.getStore().findExact('id', this.getValue()); let ind = this.getStore().findExact('id', this.getValue());
var rec = this.getStore().getAt(ind); let rec = this.getStore().getAt(ind);
if (!rec) { if (!rec) {
return; return undefined;
} }
return { return {
id: rec.data.id, id: rec.data.id,

View File

@ -13,10 +13,10 @@ Ext.define('Proxmox.form.RealmComboBox', {
if (!success) { if (!success) {
return; return;
} }
var me = this; let me = this;
var val = me.getValue(); let val = me.getValue();
if (!val || !me.store.findRecord('realm', val)) { if (!val || !me.store.findRecord('realm', val)) {
var def = 'pam'; let def = 'pam';
Ext.each(records, function(rec) { Ext.each(records, function(rec) {
if (rec.data && rec.data.default) { if (rec.data && rec.data.default) {
def = rec.data.realm; def = rec.data.realm;

View File

@ -9,7 +9,7 @@ Ext.define('Proxmox.form.field.Textfield', {
}, },
getSubmitData: function() { getSubmitData: function() {
var me = this, let me = this,
data = null, data = null,
val; val;
if (!me.disabled && me.submitValue && !me.isFileUpload()) { if (!me.disabled && me.submitValue && !me.isFileUpload()) {
@ -26,9 +26,9 @@ Ext.define('Proxmox.form.field.Textfield', {
}, },
getSubmitValue: function() { getSubmitValue: function() {
var me = this; let me = this;
var value = this.processRawValue(this.getRawValue()); let value = this.processRawValue(this.getRawValue());
if (value !== '') { if (value !== '') {
return value; return value;
} }

View File

@ -2,7 +2,7 @@
mandatory config parameters: mandatory config parameters:
rows: an object container where each propery is a key-value object we want to render rows: an object container where each propery is a key-value object we want to render
var rows = { let rows = {
keyboard: { keyboard: {
header: gettext('Keyboard Layout'), header: gettext('Keyboard Layout'),
editor: 'Your.KeyboardEdit', editor: 'Your.KeyboardEdit',
@ -25,7 +25,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
monStoreErrors: false, monStoreErrors: false,
add_combobox_row: function(name, text, opts) { add_combobox_row: function(name, text, opts) {
var me = this; let me = this;
opts = opts || {}; opts = opts || {};
me.rows = me.rows || {}; me.rows = me.rows || {};
@ -58,7 +58,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}, },
add_text_row: function(name, text, opts) { add_text_row: function(name, text, opts) {
var me = this; let me = this;
opts = opts || {}; opts = opts || {};
me.rows = me.rows || {}; me.rows = me.rows || {};
@ -90,7 +90,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}, },
add_boolean_row: function(name, text, opts) { add_boolean_row: function(name, text, opts) {
var me = this; let me = this;
opts = opts || {}; opts = opts || {};
me.rows = me.rows || {}; me.rows = me.rows || {};
@ -123,7 +123,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}, },
add_integer_row: function(name, text, opts) { add_integer_row: function(name, text, opts) {
var me = this; let me = this;
opts = opts || {}; opts = opts || {};
me.rows = me.rows || {}; me.rows = me.rows || {};
@ -159,22 +159,22 @@ Ext.define('Proxmox.grid.ObjectGrid', {
editorConfig: {}, // default config passed to editor editorConfig: {}, // default config passed to editor
run_editor: function() { run_editor: function() {
var me = this; let me = this;
var sm = me.getSelectionModel(); let sm = me.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
if (!rec) { if (!rec) {
return; return;
} }
var rows = me.rows; let rows = me.rows;
var rowdef = rows[rec.data.key]; let rowdef = rows[rec.data.key];
if (!rowdef.editor) { if (!rowdef.editor) {
return; return;
} }
var win; let win;
var config; let config;
if (Ext.isString(rowdef.editor)) { if (Ext.isString(rowdef.editor)) {
config = Ext.apply({ config = Ext.apply({
confid: rec.data.key, confid: rec.data.key,
@ -194,13 +194,13 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}, },
reload: function() { reload: function() {
var me = this; let me = this;
me.rstore.load(); me.rstore.load();
}, },
getObjectValue: function(key, defaultValue) { getObjectValue: function(key, defaultValue) {
var me = this; let me = this;
var rec = me.store.getById(key); let rec = me.store.getById(key);
if (rec) { if (rec) {
return rec.data.value; return rec.data.value;
} }
@ -208,19 +208,19 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}, },
renderKey: function(key, metaData, record, rowIndex, colIndex, store) { renderKey: function(key, metaData, record, rowIndex, colIndex, store) {
var me = this; let me = this;
var rows = me.rows; let rows = me.rows;
var rowdef = rows && rows[key] ? rows[key] : {}; let rowdef = rows && rows[key] ? rows[key] : {};
return rowdef.header || key; return rowdef.header || key;
}, },
renderValue: function(value, metaData, record, rowIndex, colIndex, store) { renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
var me = this; let me = this;
var rows = me.rows; let rows = me.rows;
var key = record.data.key; let key = record.data.key;
var rowdef = rows && rows[key] ? rows[key] : {}; let rowdef = rows && rows[key] ? rows[key] : {};
var renderer = rowdef.renderer; let renderer = rowdef.renderer;
if (renderer) { if (renderer) {
return renderer(value, metaData, record, rowIndex, colIndex, store); return renderer(value, metaData, record, rowIndex, colIndex, store);
} }
@ -235,7 +235,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
} }
}, },
itemkeyup: function(view, record, item, index, e) { itemkeyup: function(view, record, item, index, e) {
if (e.getKey() === e.ENTER && index == this.pressedIndex) { if (e.getKey() === e.ENTER && index === this.pressedIndex) {
this.run_editor(); this.run_editor();
} }
@ -244,9 +244,9 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
var rows = me.rows; let rows = me.rows;
if (!me.rstore) { if (!me.rstore) {
if (!me.url) { if (!me.url) {
@ -287,7 +287,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
store.filters.add(Ext.create('Ext.util.Filter', { store.filters.add(Ext.create('Ext.util.Filter', {
filterFn: function(item) { filterFn: function(item) {
if (rows) { if (rows) {
var rowdef = rows[item.data.key]; let rowdef = rows[item.data.key];
if (!rowdef || rowdef.visible === false) { if (!rowdef || rowdef.visible === false) {
return false; return false;
} }

View File

@ -3,10 +3,10 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
alias: ['widget.proxmoxPendingObjectGrid'], alias: ['widget.proxmoxPendingObjectGrid'],
getObjectValue: function(key, defaultValue, pending) { getObjectValue: function(key, defaultValue, pending) {
var me = this; let me = this;
var rec = me.store.getById(key); let rec = me.store.getById(key);
if (rec) { if (rec) {
var value = rec.data.value; let value = rec.data.value;
if (pending) { if (pending) {
if (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') { if (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') {
value = rec.data.pending; value = rec.data.pending;
@ -25,42 +25,42 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
}, },
hasPendingChanges: function(key) { hasPendingChanges: function(key) {
var me = this; let me = this;
var rows = me.rows; let rows = me.rows;
var rowdef = rows && rows[key] ? rows[key] : {}; let rowdef = rows && rows[key] ? rows[key] : {};
var keys = rowdef.multiKey || [key]; let keys = rowdef.multiKey || [key];
var pending = false; let pending = false;
Ext.Array.each(keys, function(k) { Ext.Array.each(keys, function(k) {
var rec = me.store.getById(k); let rec = me.store.getById(k);
if (rec && rec.data && ( if (rec && rec.data && (
Ext.isDefined(rec.data.pending) && rec.data.pending !== '' || (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') ||
rec.data.delete === 1 rec.data.delete === 1
)) { )) {
pending = true; pending = true;
return false; // break return false; // break
} }
return true;
}); });
return pending; return pending;
}, },
renderValue: function(value, metaData, record, rowIndex, colIndex, store) { renderValue: function(value, metaData, record, rowIndex, colIndex, store) {
var me = this; let me = this;
var rows = me.rows; let rows = me.rows;
var key = record.data.key; let key = record.data.key;
var rowdef = rows && rows[key] ? rows[key] : {}; let rowdef = rows && rows[key] ? rows[key] : {};
var renderer = rowdef.renderer; let renderer = rowdef.renderer;
var current = ''; let current = '';
var pendingdelete = ''; let pending = '';
var pending = '';
if (renderer) { if (renderer) {
current = renderer(value, metaData, record, rowIndex, colIndex, store, false); current = renderer(value, metaData, record, rowIndex, colIndex, store, false);
if (me.hasPendingChanges(key)) { if (me.hasPendingChanges(key)) {
pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true); pending = renderer(record.data.pending, metaData, record, rowIndex, colIndex, store, true);
} }
if (pending == current) { if (pending === current) {
pending = undefined; pending = undefined;
} }
} else { } else {
@ -69,14 +69,15 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
} }
if (record.data.delete) { if (record.data.delete) {
var delete_all = true; let delete_all = true;
if (rowdef.multiKey) { if (rowdef.multiKey) {
Ext.Array.each(rowdef.multiKey, function(k) { Ext.Array.each(rowdef.multiKey, function(k) {
var rec = me.store.getById(k); let rec = me.store.getById(k);
if (rec && rec.data && rec.data.delete !== 1) { if (rec && rec.data && rec.data.delete !== 1) {
delete_all = false; delete_all = false;
return false; // break return false; // break
} }
return true;
}); });
} }
if (delete_all) { if (delete_all) {
@ -92,9 +93,7 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
var rows = me.rows;
if (!me.rstore) { if (!me.rstore) {
if (!me.url) { if (!me.url) {

View File

@ -8,14 +8,14 @@ Ext.define('Proxmox.Mixin.CBind', {
}, },
cloneTemplates: function() { cloneTemplates: function() {
var me = this; let me = this;
if (typeof me.cbindData === "function") { if (typeof me.cbindData === "function") {
me.cbindData = me.cbindData(me.initialConfig); me.cbindData = me.cbindData(me.initialConfig);
} }
me.cbindData = me.cbindData || {}; me.cbindData = me.cbindData || {};
var getConfigValue = function(cname) { let getConfigValue = function(cname) {
if (cname in me.initialConfig) { if (cname in me.initialConfig) {
return me.initialConfig[cname]; return me.initialConfig[cname];
} }
@ -33,25 +33,26 @@ Ext.define('Proxmox.Mixin.CBind', {
throw "unable to get cbind data for '" + cname + "'"; throw "unable to get cbind data for '" + cname + "'";
}; };
var applyCBind = function(obj) { let applyCBind = function(obj) {
var cbind = obj.cbind, prop, cdata, cvalue, match, found; let cbind = obj.cbind, cdata;
if (!cbind) return; if (!cbind) return;
for (prop in cbind) { for (const prop in cbind) { // eslint-disable-line guard-for-in
let match, found;
cdata = cbind[prop]; cdata = cbind[prop];
found = false; found = false;
if (typeof cdata === 'function') { if (typeof cdata === 'function') {
obj[prop] = cdata(getConfigValue, prop); obj[prop] = cdata(getConfigValue, prop);
found = true; found = true;
} else if (match = /^\{(!)?([a-z_][a-z0-9_]*)\}$/i.exec(cdata)) { } else if ((match = /^\{(!)?([a-z_][a-z0-9_]*)\}$/i.exec(cdata))) {
var cvalue = getConfigValue(match[2]); let cvalue = getConfigValue(match[2]);
if (match[1]) cvalue = !cvalue; if (match[1]) cvalue = !cvalue;
obj[prop] = cvalue; obj[prop] = cvalue;
found = true; found = true;
} else if (match = /^\{(!)?([a-z_][a-z0-9_]*(\.[a-z_][a-z0-9_]*)+)\}$/i.exec(cdata)) { } else if ((match = /^\{(!)?([a-z_][a-z0-9_]*(\.[a-z_][a-z0-9_]*)+)\}$/i.exec(cdata))) {
var keys = match[2].split('.'); let keys = match[2].split('.');
var cvalue = getConfigValue(keys.shift()); let cvalue = getConfigValue(keys.shift());
keys.forEach(function(k) { keys.forEach(function(k) {
if (k in cvalue) { if (k in cvalue) {
cvalue = cvalue[k]; cvalue = cvalue[k];
@ -63,8 +64,8 @@ Ext.define('Proxmox.Mixin.CBind', {
obj[prop] = cvalue; obj[prop] = cvalue;
found = true; found = true;
} else { } else {
obj[prop] = cdata.replace(/{([a-z_][a-z0-9_]*)\}/ig, function(match, cname) { obj[prop] = cdata.replace(/{([a-z_][a-z0-9_]*)\}/ig, (_match, cname) => {
var cvalue = getConfigValue(cname); let cvalue = getConfigValue(cname);
found = true; found = true;
return cvalue; return cvalue;
}); });
@ -79,14 +80,15 @@ Ext.define('Proxmox.Mixin.CBind', {
applyCBind(me); applyCBind(me);
} }
var cloneTemplateArray = function(org) { let cloneTemplateObject;
var copy, i, found, el, elcopy, arrayLength; let cloneTemplateArray = function(org) {
let copy, i, found, el, elcopy, arrayLength;
arrayLength = org.length; arrayLength = org.length;
found = false; found = false;
for (i = 0; i < arrayLength; i++) { for (i = 0; i < arrayLength; i++) {
el = org[i]; el = org[i];
if (el.constructor == Object && el.xtype) { if (el.constructor === Object && el.xtype) {
found = true; found = true;
break; break;
} }
@ -97,13 +99,13 @@ Ext.define('Proxmox.Mixin.CBind', {
copy = []; copy = [];
for (i = 0; i < arrayLength; i++) { for (i = 0; i < arrayLength; i++) {
el = org[i]; el = org[i];
if (el.constructor == Object && el.xtype) { if (el.constructor === Object && el.xtype) {
elcopy = cloneTemplateObject(el); elcopy = cloneTemplateObject(el);
if (elcopy.cbind) { if (elcopy.cbind) {
applyCBind(elcopy); applyCBind(elcopy);
} }
copy.push(elcopy); copy.push(elcopy);
} else if (el.constructor == Array) { } else if (el.constructor === Array) {
elcopy = cloneTemplateArray(el); elcopy = cloneTemplateArray(el);
copy.push(elcopy); copy.push(elcopy);
} else { } else {
@ -113,21 +115,21 @@ Ext.define('Proxmox.Mixin.CBind', {
return copy; return copy;
}; };
var cloneTemplateObject = function(org) { cloneTemplateObject = function(org) {
var res = {}, prop, el, copy; let res = {}, prop, el, copy;
for (prop in org) { for (prop in org) { // eslint-disable-line guard-for-in
el = org[prop]; el = org[prop];
if (el === undefined || el === null) { if (el === undefined || el === null) {
res[prop] = el; res[prop] = el;
continue; continue;
} }
if (el.constructor == Object && el.xtype) { if (el.constructor === Object && el.xtype) {
copy = cloneTemplateObject(el); copy = cloneTemplateObject(el);
if (copy.cbind) { if (copy.cbind) {
applyCBind(copy); applyCBind(copy);
} }
res[prop] = copy; res[prop] = copy;
} else if (el.constructor == Array) { } else if (el.constructor === Array) {
copy = cloneTemplateArray(el); copy = cloneTemplateArray(el);
res[prop] = copy; res[prop] = copy;
} else { } else {
@ -137,17 +139,17 @@ Ext.define('Proxmox.Mixin.CBind', {
return res; return res;
}; };
var condCloneProperties = function() { let condCloneProperties = function() {
var prop, el, i, tmp; let prop, el, tmp;
for (prop in me) { for (prop in me) { // eslint-disable-line guard-for-in
el = me[prop]; el = me[prop];
if (el === undefined || el === null) continue; if (el === undefined || el === null) continue;
if (typeof el === 'object' && el.constructor == Object) { if (typeof el === 'object' && el.constructor === Object) {
if (el.xtype && prop != 'config') { if (el.xtype && prop !== 'config') {
me[prop] = cloneTemplateObject(el); me[prop] = cloneTemplateObject(el);
} }
} else if (el.constructor == Array) { } else if (el.constructor === Array) {
tmp = cloneTemplateArray(el); tmp = cloneTemplateArray(el);
me[prop] = tmp; me[prop] = tmp;
} }

View File

@ -45,13 +45,13 @@ Ext.define('Proxmox.node.APT', {
], ],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
} }
var store = Ext.create('Ext.data.Store', { let store = Ext.create('Ext.data.Store', {
model: 'apt-pkglist', model: 'apt-pkglist',
groupField: 'Origin', groupField: 'Origin',
proxy: { proxy: {
@ -66,15 +66,15 @@ Ext.define('Proxmox.node.APT', {
], ],
}); });
var groupingFeature = Ext.create('Ext.grid.feature.Grouping', { let groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
groupHeaderTpl: '{[ "Origin: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})', groupHeaderTpl: '{[ "Origin: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
enableGroupingMenu: false, enableGroupingMenu: false,
}); });
var rowBodyFeature = Ext.create('Ext.grid.feature.RowBody', { let rowBodyFeature = Ext.create('Ext.grid.feature.RowBody', {
getAdditionalData: function(data, rowIndex, record, orig) { getAdditionalData: function(data, rowIndex, record, orig) {
var headerCt = this.view.headerCt; let headerCt = this.view.headerCt;
var colspan = headerCt.getColumnCount(); let colspan = headerCt.getColumnCount();
return { return {
rowBody: '<div style="padding: 1em">' + rowBody: '<div style="padding: 1em">' +
Ext.String.htmlEncode(data.Description) + Ext.String.htmlEncode(data.Description) +
@ -85,13 +85,13 @@ Ext.define('Proxmox.node.APT', {
}, },
}); });
var reload = function() { let reload = function() {
store.load(); store.load();
}; };
Proxmox.Utils.monStoreErrors(me, store, true); Proxmox.Utils.monStoreErrors(me, store, true);
var apt_command = function(cmd) { let apt_command = function(cmd) {
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + me.nodename + "/apt/" + cmd, url: "/nodes/" + me.nodename + "/apt/" + cmd,
method: 'POST', method: 'POST',
@ -99,9 +99,9 @@ Ext.define('Proxmox.node.APT', {
Ext.Msg.alert(gettext('Error'), response.htmlStatus); Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}, },
success: function(response, opts) { success: function(response, opts) {
var upid = response.result.data; let upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskViewer', { let win = Ext.create('Proxmox.window.TaskViewer', {
upid: upid, upid: upid,
}); });
win.show(); win.show();
@ -110,21 +110,21 @@ Ext.define('Proxmox.node.APT', {
}); });
}; };
var sm = Ext.create('Ext.selection.RowModel', {}); let sm = Ext.create('Ext.selection.RowModel', {});
var update_btn = new Ext.Button({ let update_btn = new Ext.Button({
text: gettext('Refresh'), text: gettext('Refresh'),
handler: function() { handler: function() {
Proxmox.Utils.checked_command(function() { apt_command('update'); }); Proxmox.Utils.checked_command(function() { apt_command('update'); });
}, },
}); });
var show_changelog = function(rec) { let show_changelog = function(rec) {
if (!rec || !rec.data || !(rec.data.ChangeLogUrl && rec.data.Package)) { if (!rec || !rec.data || !(rec.data.ChangeLogUrl && rec.data.Package)) {
return; return;
} }
var view = Ext.createWidget('component', { let view = Ext.createWidget('component', {
autoScroll: true, autoScroll: true,
style: { style: {
'background-color': 'white', 'background-color': 'white',
@ -134,7 +134,7 @@ Ext.define('Proxmox.node.APT', {
}, },
}); });
var win = Ext.create('Ext.window.Window', { let win = Ext.create('Ext.window.Window', {
title: gettext('Changelog') + ": " + rec.data.Package, title: gettext('Changelog') + ": " + rec.data.Package,
width: 800, width: 800,
height: 400, height: 400,
@ -162,7 +162,7 @@ Ext.define('Proxmox.node.APT', {
}); });
}; };
var changelog_btn = new Proxmox.button.Button({ let changelog_btn = new Proxmox.button.Button({
text: gettext('Changelog'), text: gettext('Changelog'),
selModel: sm, selModel: sm,
disabled: true, disabled: true,
@ -177,7 +177,7 @@ Ext.define('Proxmox.node.APT', {
}, },
}); });
var verbose_desc_checkbox = new Ext.form.field.Checkbox({ let verbose_desc_checkbox = new Ext.form.field.Checkbox({
boxLabel: gettext('Show details'), boxLabel: gettext('Show details'),
value: false, value: false,
listeners: { listeners: {

View File

@ -3,7 +3,7 @@ Ext.define('Proxmox.node.DNSEdit', {
alias: ['widget.proxmoxNodeDNSEdit'], alias: ['widget.proxmoxNodeDNSEdit'],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";

View File

@ -3,14 +3,14 @@ Ext.define('Proxmox.node.DNSView', {
alias: ['widget.proxmoxNodeDNSView'], alias: ['widget.proxmoxNodeDNSView'],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
} }
var run_editor = function() { let run_editor = function() {
var win = Ext.create('Proxmox.node.DNSEdit', { let win = Ext.create('Proxmox.node.DNSEdit', {
nodename: me.nodename, nodename: me.nodename,
}); });
win.show(); win.show();

View File

@ -3,7 +3,7 @@ Ext.define('Proxmox.node.HostsView', {
xtype: 'proxmoxNodeHostsView', xtype: 'proxmoxNodeHostsView',
reload: function() { reload: function() {
var me = this; let me = this;
me.store.load(); me.store.load();
}, },
@ -13,17 +13,17 @@ Ext.define('Proxmox.node.HostsView', {
disabled: true, disabled: true,
itemId: 'savebtn', itemId: 'savebtn',
handler: function() { handler: function() {
var me = this.up('panel'); let view = this.up('panel');
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
params: { params: {
digest: me.digest, digest: view.digest,
data: me.down('#hostsfield').getValue(), data: view.down('#hostsfield').getValue(),
}, },
method: 'POST', method: 'POST',
url: '/nodes/' + me.nodename + '/hosts', url: '/nodes/' + view.nodename + '/hosts',
waitMsgTarget: me, waitMsgTarget: view,
success: function(response, opts) { success: function(response, opts) {
me.reload(); view.reload();
}, },
failure: function(response, opts) { failure: function(response, opts) {
Ext.Msg.alert('Error', response.htmlStatus); Ext.Msg.alert('Error', response.htmlStatus);
@ -36,8 +36,8 @@ Ext.define('Proxmox.node.HostsView', {
disabled: true, disabled: true,
itemId: 'resetbtn', itemId: 'resetbtn',
handler: function() { handler: function() {
var me = this.up('panel'); let view = this.up('panel');
me.down('#hostsfield').reset(); view.down('#hostsfield').reset();
}, },
}, },
], ],
@ -54,16 +54,16 @@ Ext.define('Proxmox.node.HostsView', {
}, },
listeners: { listeners: {
dirtychange: function(ta, dirty) { dirtychange: function(ta, dirty) {
var me = this.up('panel'); let view = this.up('panel');
me.down('#savebtn').setDisabled(!dirty); view.down('#savebtn').setDisabled(!dirty);
me.down('#resetbtn').setDisabled(!dirty); view.down('#resetbtn').setDisabled(!dirty);
}, },
}, },
}, },
], ],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
@ -85,7 +85,7 @@ Ext.define('Proxmox.node.HostsView', {
return; return;
} }
me.digest = records[0].data.digest; me.digest = records[0].data.digest;
var data = records[0].data.data; let data = records[0].data.data;
me.down('#hostsfield').setValue(data); me.down('#hostsfield').setValue(data);
me.down('#hostsfield').resetOriginalValue(); me.down('#hostsfield').resetOriginalValue();
}); });

View File

@ -3,7 +3,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
alias: ['widget.proxmoxNodeNetworkEdit'], alias: ['widget.proxmoxNodeNetworkEdit'],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
@ -15,7 +15,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
me.isCreate = !me.iface; me.isCreate = !me.iface;
var iface_vtype; let iface_vtype;
if (me.iftype === 'bridge') { if (me.iftype === 'bridge') {
iface_vtype = 'BridgeName'; iface_vtype = 'BridgeName';
@ -109,12 +109,12 @@ Ext.define('Proxmox.node.NetworkEdit', {
if (Proxmox.Utils.VlanInterface_match.test(me.iface)) { if (Proxmox.Utils.VlanInterface_match.test(me.iface)) {
me.disablevlanid = true; me.disablevlanid = true;
me.disablevlanrawdevice = true; me.disablevlanrawdevice = true;
var arr = Proxmox.Utils.VlanInterface_match.exec(me.iface); let arr = Proxmox.Utils.VlanInterface_match.exec(me.iface);
me.vlanrawdevicevalue = arr[1]; me.vlanrawdevicevalue = arr[1];
me.vlanidvalue = arr[2]; me.vlanidvalue = arr[2];
} else if (Proxmox.Utils.Vlan_match.test(me.iface)) { } else if (Proxmox.Utils.Vlan_match.test(me.iface)) {
me.disablevlanid = true; me.disablevlanid = true;
var arr = Proxmox.Utils.Vlan_match.exec(me.iface); let arr = Proxmox.Utils.Vlan_match.exec(me.iface);
me.vlanidvalue = arr[1]; me.vlanidvalue = arr[1];
} }
} else { } else {
@ -149,14 +149,14 @@ Ext.define('Proxmox.node.NetworkEdit', {
name: 'slaves', name: 'slaves',
}); });
var policySelector = Ext.createWidget('bondPolicySelector', { let policySelector = Ext.createWidget('bondPolicySelector', {
fieldLabel: gettext('Hash policy'), fieldLabel: gettext('Hash policy'),
name: 'bond_xmit_hash_policy', name: 'bond_xmit_hash_policy',
deleteEmpty: !me.isCreate, deleteEmpty: !me.isCreate,
disabled: true, disabled: true,
}); });
var primaryfield = Ext.createWidget('textfield', { let primaryfield = Ext.createWidget('textfield', {
fieldLabel: gettext('bond-primary'), fieldLabel: gettext('bond-primary'),
name: 'bond-primary', name: 'bond-primary',
value: '', value: '',
@ -222,8 +222,8 @@ Ext.define('Proxmox.node.NetworkEdit', {
name: 'comments', name: 'comments',
}); });
var url; let url;
var method; let method;
if (me.isCreate) { if (me.isCreate) {
url = "/api2/extjs/nodes/" + me.nodename + "/network"; url = "/api2/extjs/nodes/" + me.nodename + "/network";
@ -248,8 +248,8 @@ Ext.define('Proxmox.node.NetworkEdit', {
listeners: { listeners: {
change: function(f, value) { change: function(f, value) {
if (me.isCreate && iface_vtype === 'VlanName') { if (me.isCreate && iface_vtype === 'VlanName') {
var vlanidField = me.down('field[name=vlan-id]'); let vlanidField = me.down('field[name=vlan-id]');
var vlanrawdeviceField = me.down('field[name=vlan-raw-device]'); let vlanrawdeviceField = me.down('field[name=vlan-raw-device]');
if (Proxmox.Utils.VlanInterface_match.test(value)) { if (Proxmox.Utils.VlanInterface_match.test(value)) {
vlanidField.setDisabled(true); vlanidField.setDisabled(true);
vlanrawdeviceField.setDisabled(true); vlanrawdeviceField.setDisabled(true);
@ -345,9 +345,9 @@ Ext.define('Proxmox.node.NetworkEdit', {
} else { } else {
me.load({ me.load({
success: function(response, options) { success: function(response, options) {
var data = response.result.data; let data = response.result.data;
if (data.type !== me.iftype) { if (data.type !== me.iftype) {
var msg = "Got unexpected device type"; let msg = "Got unexpected device type";
Ext.Msg.alert(gettext('Error'), msg, function() { Ext.Msg.alert(gettext('Error'), msg, function() {
me.close(); me.close();
}); });

View File

@ -32,15 +32,15 @@ Ext.define('Proxmox.node.NetworkView', {
showApplyBtn: false, showApplyBtn: false,
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
} }
var baseUrl = '/nodes/' + me.nodename + '/network'; let baseUrl = '/nodes/' + me.nodename + '/network';
var store = Ext.create('Ext.data.Store', { let store = Ext.create('Ext.data.Store', {
model: 'proxmox-networks', model: 'proxmox-networks',
proxy: { proxy: {
type: 'proxmox', type: 'proxmox',
@ -54,10 +54,10 @@ Ext.define('Proxmox.node.NetworkView', {
], ],
}); });
var reload = function() { let reload = function() {
var changeitem = me.down('#changes'); let changeitem = me.down('#changes');
var apply_btn = me.down('#apply'); let apply_btn = me.down('#apply');
var revert_btn = me.down('#revert'); let revert_btn = me.down('#revert');
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: baseUrl, url: baseUrl,
failure: function(response, opts) { failure: function(response, opts) {
@ -67,9 +67,9 @@ Ext.define('Proxmox.node.NetworkView', {
changeitem.setHidden(true); changeitem.setHidden(true);
}, },
success: function(response, opts) { success: function(response, opts) {
var result = Ext.decode(response.responseText); let result = Ext.decode(response.responseText);
store.loadData(result.data); store.loadData(result.data);
var changes = result.changes; let changes = result.changes;
if (changes === undefined || changes === '') { if (changes === undefined || changes === '') {
changes = gettext("No changes"); changes = gettext("No changes");
changeitem.setHidden(true); changeitem.setHidden(true);
@ -85,15 +85,15 @@ Ext.define('Proxmox.node.NetworkView', {
}); });
}; };
var run_editor = function() { let run_editor = function() {
var grid = me.down('gridpanel'); let grid = me.down('gridpanel');
var sm = grid.getSelectionModel(); let sm = grid.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
if (!rec) { if (!rec) {
return; return;
} }
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iface: rec.data.iface, iface: rec.data.iface,
iftype: rec.data.type, iftype: rec.data.type,
@ -102,24 +102,24 @@ Ext.define('Proxmox.node.NetworkView', {
win.on('destroy', reload); win.on('destroy', reload);
}; };
var edit_btn = new Ext.Button({ let edit_btn = new Ext.Button({
text: gettext('Edit'), text: gettext('Edit'),
disabled: true, disabled: true,
handler: run_editor, handler: run_editor,
}); });
var del_btn = new Ext.Button({ let del_btn = new Ext.Button({
text: gettext('Remove'), text: gettext('Remove'),
disabled: true, disabled: true,
handler: function() { handler: function() {
var grid = me.down('gridpanel'); let grid = me.down('gridpanel');
var sm = grid.getSelectionModel(); let sm = grid.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
if (!rec) { if (!rec) {
return; return;
} }
var iface = rec.data.iface; let iface = rec.data.iface;
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: baseUrl + '/' + iface, url: baseUrl + '/' + iface,
@ -135,7 +135,7 @@ Ext.define('Proxmox.node.NetworkView', {
}, },
}); });
var apply_btn = Ext.create('Proxmox.button.Button', { let apply_btn = Ext.create('Proxmox.button.Button', {
text: gettext('Apply Configuration'), text: gettext('Apply Configuration'),
itemId: 'apply', itemId: 'apply',
disabled: true, disabled: true,
@ -147,9 +147,9 @@ Ext.define('Proxmox.node.NetworkView', {
method: 'PUT', method: 'PUT',
waitMsgTarget: me, waitMsgTarget: me,
success: function(response, opts) { success: function(response, opts) {
var upid = response.result.data; let upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskProgress', { let win = Ext.create('Proxmox.window.TaskProgress', {
taskDone: reload, taskDone: reload,
upid: upid, upid: upid,
}); });
@ -162,16 +162,16 @@ Ext.define('Proxmox.node.NetworkView', {
}, },
}); });
var set_button_status = function() { let set_button_status = function() {
var grid = me.down('gridpanel'); let grid = me.down('gridpanel');
var sm = grid.getSelectionModel(); let sm = grid.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
edit_btn.setDisabled(!rec); edit_btn.setDisabled(!rec);
del_btn.setDisabled(!rec); del_btn.setDisabled(!rec);
}; };
var render_ports = function(value, metaData, record) { let render_ports = function(value, metaData, record) {
if (value === 'bridge') { if (value === 'bridge') {
return record.data.bridge_ports; return record.data.bridge_ports;
} else if (value === 'bond') { } else if (value === 'bond') {
@ -181,10 +181,11 @@ Ext.define('Proxmox.node.NetworkView', {
} else if (value === 'OVSBond') { } else if (value === 'OVSBond') {
return record.data.ovs_bonds; return record.data.ovs_bonds;
} }
return '';
}; };
var find_next_iface_id = function(prefix) { let find_next_iface_id = function(prefix) {
var next; let next;
for (next = 0; next <= 9999; next++) { for (next = 0; next <= 9999; next++) {
if (!store.getById(prefix + next.toString())) { if (!store.getById(prefix + next.toString())) {
break; break;
@ -193,13 +194,13 @@ Ext.define('Proxmox.node.NetworkView', {
return prefix + next.toString(); return prefix + next.toString();
}; };
var menu_items = []; let menu_items = [];
if (me.types.indexOf('bridge') !== -1) { if (me.types.indexOf('bridge') !== -1) {
menu_items.push({ menu_items.push({
text: Proxmox.Utils.render_network_iface_type('bridge'), text: Proxmox.Utils.render_network_iface_type('bridge'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iftype: 'bridge', iftype: 'bridge',
iface_default: find_next_iface_id('vmbr'), iface_default: find_next_iface_id('vmbr'),
@ -215,7 +216,7 @@ Ext.define('Proxmox.node.NetworkView', {
menu_items.push({ menu_items.push({
text: Proxmox.Utils.render_network_iface_type('bond'), text: Proxmox.Utils.render_network_iface_type('bond'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iftype: 'bond', iftype: 'bond',
iface_default: find_next_iface_id('bond'), iface_default: find_next_iface_id('bond'),
@ -231,7 +232,7 @@ Ext.define('Proxmox.node.NetworkView', {
menu_items.push({ menu_items.push({
text: Proxmox.Utils.render_network_iface_type('vlan'), text: Proxmox.Utils.render_network_iface_type('vlan'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iftype: 'vlan', iftype: 'vlan',
iface_default: 'interfaceX.1', iface_default: 'interfaceX.1',
@ -252,7 +253,7 @@ Ext.define('Proxmox.node.NetworkView', {
{ {
text: Proxmox.Utils.render_network_iface_type('OVSBridge'), text: Proxmox.Utils.render_network_iface_type('OVSBridge'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iftype: 'OVSBridge', iftype: 'OVSBridge',
iface_default: find_next_iface_id('vmbr'), iface_default: find_next_iface_id('vmbr'),
@ -264,7 +265,7 @@ Ext.define('Proxmox.node.NetworkView', {
{ {
text: Proxmox.Utils.render_network_iface_type('OVSBond'), text: Proxmox.Utils.render_network_iface_type('OVSBond'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iftype: 'OVSBond', iftype: 'OVSBond',
iface_default: find_next_iface_id('bond'), iface_default: find_next_iface_id('bond'),
@ -276,7 +277,7 @@ Ext.define('Proxmox.node.NetworkView', {
{ {
text: Proxmox.Utils.render_network_iface_type('OVSIntPort'), text: Proxmox.Utils.render_network_iface_type('OVSIntPort'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', { let win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename, nodename: me.nodename,
iftype: 'OVSIntPort', iftype: 'OVSIntPort',
}); });
@ -287,9 +288,9 @@ Ext.define('Proxmox.node.NetworkView', {
); );
} }
var renderer_generator = function(fieldname) { let renderer_generator = function(fieldname) {
return function(val, metaData, rec) { return function(val, metaData, rec) {
var tmp = []; let tmp = [];
if (rec.data[fieldname]) { if (rec.data[fieldname]) {
tmp.push(rec.data[fieldname]); tmp.push(rec.data[fieldname]);
} }

View File

@ -12,13 +12,13 @@ Ext.define('Proxmox.node.ServiceView', {
startOnlyServices: {}, startOnlyServices: {},
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
} }
var rstore = Ext.create('Proxmox.data.UpdateStore', { let rstore = Ext.create('Proxmox.data.UpdateStore', {
interval: 1000, interval: 1000,
storeid: 'proxmox-services' + me.nodename, storeid: 'proxmox-services' + me.nodename,
model: 'proxmox-services', model: 'proxmox-services',
@ -28,7 +28,7 @@ Ext.define('Proxmox.node.ServiceView', {
}, },
}); });
var store = Ext.create('Proxmox.data.DiffStore', { let store = Ext.create('Proxmox.data.DiffStore', {
rstore: rstore, rstore: rstore,
sortAfterUpdate: true, sortAfterUpdate: true,
sorters: [ sorters: [
@ -39,10 +39,10 @@ Ext.define('Proxmox.node.ServiceView', {
], ],
}); });
var view_service_log = function() { let view_service_log = function() {
var sm = me.getSelectionModel(); let sm = me.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
var win = Ext.create('Ext.window.Window', { let win = Ext.create('Ext.window.Window', {
title: gettext('Syslog') + ': ' + rec.data.service, title: gettext('Syslog') + ': ' + rec.data.service,
modal: true, modal: true,
width: 800, width: 800,
@ -58,9 +58,9 @@ Ext.define('Proxmox.node.ServiceView', {
win.show(); win.show();
}; };
var service_cmd = function(cmd) { let service_cmd = function(cmd) {
var sm = me.getSelectionModel(); let sm = me.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + me.nodename + "/services/" + rec.data.service + "/" + cmd, url: "/nodes/" + me.nodename + "/services/" + rec.data.service + "/" + cmd,
method: 'POST', method: 'POST',
@ -70,9 +70,9 @@ Ext.define('Proxmox.node.ServiceView', {
}, },
success: function(response, opts) { success: function(response, opts) {
rstore.startUpdate(); rstore.startUpdate();
var upid = response.result.data; let upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskProgress', { let win = Ext.create('Proxmox.window.TaskProgress', {
upid: upid, upid: upid,
}); });
win.show(); win.show();
@ -80,7 +80,7 @@ Ext.define('Proxmox.node.ServiceView', {
}); });
}; };
var start_btn = new Ext.Button({ let start_btn = new Ext.Button({
text: gettext('Start'), text: gettext('Start'),
disabled: true, disabled: true,
handler: function() { handler: function() {
@ -88,7 +88,7 @@ Ext.define('Proxmox.node.ServiceView', {
}, },
}); });
var stop_btn = new Ext.Button({ let stop_btn = new Ext.Button({
text: gettext('Stop'), text: gettext('Stop'),
disabled: true, disabled: true,
handler: function() { handler: function() {
@ -96,7 +96,7 @@ Ext.define('Proxmox.node.ServiceView', {
}, },
}); });
var restart_btn = new Ext.Button({ let restart_btn = new Ext.Button({
text: gettext('Restart'), text: gettext('Restart'),
disabled: true, disabled: true,
handler: function() { handler: function() {
@ -104,15 +104,15 @@ Ext.define('Proxmox.node.ServiceView', {
}, },
}); });
var syslog_btn = new Ext.Button({ let syslog_btn = new Ext.Button({
text: gettext('Syslog'), text: gettext('Syslog'),
disabled: true, disabled: true,
handler: view_service_log, handler: view_service_log,
}); });
var set_button_status = function() { let set_button_status = function() {
var sm = me.getSelectionModel(); let sm = me.getSelectionModel();
var rec = sm.getSelection()[0]; let rec = sm.getSelection()[0];
if (!rec) { if (!rec) {
start_btn.disable(); start_btn.disable();
@ -121,29 +121,25 @@ Ext.define('Proxmox.node.ServiceView', {
syslog_btn.disable(); syslog_btn.disable();
return; return;
} }
var service = rec.data.service; let service = rec.data.service;
var state = rec.data.state; let state = rec.data.state;
syslog_btn.enable(); syslog_btn.enable();
if (me.startOnlyServices[service]) { if (state === 'running') {
if (state == 'running') {
start_btn.disable(); start_btn.disable();
restart_btn.enable(); restart_btn.enable();
} else { } else {
start_btn.enable(); start_btn.enable();
restart_btn.disable(); restart_btn.disable();
} }
stop_btn.disable(); if (!me.startOnlyServices[service]) {
} else if (state == 'running') { if (state === 'running') {
start_btn.disable();
restart_btn.enable();
stop_btn.enable(); stop_btn.enable();
} else { } else {
start_btn.enable();
restart_btn.disable();
stop_btn.disable(); stop_btn.disable();
} }
}
}; };
me.mon(store, 'refresh', set_button_status); me.mon(store, 'refresh', set_button_status);

View File

@ -26,7 +26,7 @@ Ext.define('Proxmox.node.TimeEdit', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";

View File

@ -3,20 +3,20 @@ Ext.define('Proxmox.node.TimeView', {
alias: ['widget.proxmoxNodeTimeView'], alias: ['widget.proxmoxNodeTimeView'],
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
} }
var tzoffset = new Date().getTimezoneOffset()*60000; let tzoffset = new Date().getTimezoneOffset()*60000;
var renderlocaltime = function(value) { let renderlocaltime = function(value) {
var servertime = new Date(value * 1000 + tzoffset); let servertime = new Date((value * 1000) + tzoffset);
return Ext.Date.format(servertime, 'Y-m-d H:i:s'); return Ext.Date.format(servertime, 'Y-m-d H:i:s');
}; };
var run_editor = function() { let run_editor = function() {
var win = Ext.create('Proxmox.node.TimeEdit', { let win = Ext.create('Proxmox.node.TimeEdit', {
nodename: me.nodename, nodename: me.nodename,
}); });
win.show(); win.show();

View File

@ -61,9 +61,9 @@ Ext.define('Proxmox.panel.GaugeWidget', {
updateValue: function(value, text) { updateValue: function(value, text) {
var me = this; let me = this;
var color = me.defaultColor; let color = me.defaultColor;
var attr = {}; let attr = {};
if (value >= me.criticalThreshold) { if (value >= me.criticalThreshold) {
color = me.criticalColor; color = me.criticalColor;
@ -88,7 +88,7 @@ Ext.define('Proxmox.panel.GaugeWidget', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
me.callParent(); me.callParent();

View File

@ -33,13 +33,13 @@ Ext.define('Proxmox.panel.InputPanel', {
}, },
getValues: function(dirtyOnly) { getValues: function(dirtyOnly) {
var me = this; let me = this;
if (Ext.isFunction(me.onGetValues)) { if (Ext.isFunction(me.onGetValues)) {
dirtyOnly = false; dirtyOnly = false;
} }
var values = {}; let values = {};
Ext.Array.each(me.query('[isFormField]'), function(field) { Ext.Array.each(me.query('[isFormField]'), function(field) {
if (!dirtyOnly || field.isDirty()) { if (!dirtyOnly || field.isDirty()) {
@ -51,17 +51,17 @@ Ext.define('Proxmox.panel.InputPanel', {
}, },
setAdvancedVisible: function(visible) { setAdvancedVisible: function(visible) {
var me = this; let me = this;
var advItems = me.getComponent('advancedContainer'); let advItems = me.getComponent('advancedContainer');
if (advItems) { if (advItems) {
advItems.setVisible(visible); advItems.setVisible(visible);
} }
}, },
setValues: function(values) { setValues: function(values) {
var me = this; let me = this;
var form = me.up('form'); let form = me.up('form');
Ext.iterate(values, function(fieldId, val) { Ext.iterate(values, function(fieldId, val) {
let fields = me.query('[isFormField][name=' + fieldId + ']'); let fields = me.query('[isFormField][name=' + fieldId + ']');
@ -77,9 +77,9 @@ Ext.define('Proxmox.panel.InputPanel', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
var items; let items;
if (me.items) { if (me.items) {
me.columns = 1; me.columns = 1;
@ -155,7 +155,7 @@ Ext.define('Proxmox.panel.InputPanel', {
throw "unsupported config"; throw "unsupported config";
} }
var advItems; let advItems;
if (me.advancedItems) { if (me.advancedItems) {
advItems = [ advItems = [
{ {

View File

@ -16,10 +16,10 @@ Ext.define('Proxmox.panel.JournalView', {
xclass: 'Ext.app.ViewController', xclass: 'Ext.app.ViewController',
updateParams: function() { updateParams: function() {
var me = this; let me = this;
var viewModel = me.getViewModel(); let viewModel = me.getViewModel();
var since = viewModel.get('since'); let since = viewModel.get('since');
var until = viewModel.get('until'); let until = viewModel.get('until');
since.setHours(0, 0, 0, 0); since.setHours(0, 0, 0, 0);
until.setHours(0, 0, 0, 0); until.setHours(0, 0, 0, 0);
@ -34,48 +34,48 @@ Ext.define('Proxmox.panel.JournalView', {
}, },
scrollPosBottom: function() { scrollPosBottom: function() {
var view = this.getView(); let view = this.getView();
var pos = view.getScrollY(); let pos = view.getScrollY();
var maxPos = view.getScrollable().getMaxPosition().y; let maxPos = view.getScrollable().getMaxPosition().y;
return maxPos - pos; return maxPos - pos;
}, },
scrollPosTop: function() { scrollPosTop: function() {
var view = this.getView(); let view = this.getView();
return view.getScrollY(); return view.getScrollY();
}, },
updateScroll: function(livemode, num, scrollPos, scrollPosTop) { updateScroll: function(livemode, num, scrollPos, scrollPosTop) {
var me = this; let me = this;
var view = me.getView(); let view = me.getView();
if (!livemode) { if (!livemode) {
setTimeout(function() { view.scrollTo(0, 0); }, 10); setTimeout(function() { view.scrollTo(0, 0); }, 10);
} else if (view.scrollToEnd && scrollPos <= 0) { } else if (view.scrollToEnd && scrollPos <= 0) {
setTimeout(function() { view.scrollTo(0, Infinity); }, 10); setTimeout(function() { view.scrollTo(0, Infinity); }, 10);
} else if (!view.scrollToEnd && scrollPosTop < 20 * view.lineHeight) { } else if (!view.scrollToEnd && scrollPosTop < 20 * view.lineHeight) {
setTimeout(function() { view.scrollTo(0, num*view.lineHeight + scrollPosTop); }, 10); setTimeout(function() { view.scrollTo(0, (num * view.lineHeight) + scrollPosTop); }, 10);
} }
}, },
updateView: function(lines, livemode, top) { updateView: function(lines, livemode, top) {
var me = this; let me = this;
var view = me.getView(); let view = me.getView();
var viewmodel = me.getViewModel(); let viewmodel = me.getViewModel();
if (!viewmodel || viewmodel.get('livemode') !== livemode) { if (!viewmodel || viewmodel.get('livemode') !== livemode) {
return; // we switched mode, do not update the content return; // we switched mode, do not update the content
} }
var contentEl = me.lookup('content'); let contentEl = me.lookup('content');
// save old scrollpositions // save old scrollpositions
var scrollPos = me.scrollPosBottom(); let scrollPos = me.scrollPosBottom();
var scrollPosTop = me.scrollPosTop(); let scrollPosTop = me.scrollPosTop();
var newend = lines.shift(); let newend = lines.shift();
var newstart = lines.pop(); let newstart = lines.pop();
var num = lines.length; let num = lines.length;
var text = lines.map(Ext.htmlEncode).join('<br>'); let text = lines.map(Ext.htmlEncode).join('<br>');
if (!livemode) { if (!livemode) {
if (num) { if (num) {
@ -107,14 +107,14 @@ Ext.define('Proxmox.panel.JournalView', {
}, },
doLoad: function(livemode, top, since, until) { doLoad: function(livemode, top, since, until) {
var me = this; let me = this;
if (me.running) { if (me.running) {
me.requested = true; me.requested = true;
return; return;
} }
me.running = true; me.running = true;
var view = me.getView(); let view = me.getView();
var params = { let params = {
lastentries: view.numEntries || 500, lastentries: view.numEntries || 500,
}; };
if (livemode) { if (livemode) {
@ -138,7 +138,7 @@ Ext.define('Proxmox.panel.JournalView', {
method: 'GET', method: 'GET',
success: function(response) { success: function(response) {
Proxmox.Utils.setErrorMask(me, false); Proxmox.Utils.setErrorMask(me, false);
var lines = response.result.data; let lines = response.result.data;
me.updateView(lines, livemode, top); me.updateView(lines, livemode, top);
me.running = false; me.running = false;
if (me.requested) { if (me.requested) {
@ -147,7 +147,7 @@ Ext.define('Proxmox.panel.JournalView', {
} }
}, },
failure: function(response) { failure: function(response) {
var msg = response.htmlStatus; let msg = response.htmlStatus;
Proxmox.Utils.setErrorMask(me, msg); Proxmox.Utils.setErrorMask(me, msg);
me.running = false; me.running = false;
if (me.requested) { if (me.requested) {
@ -159,10 +159,10 @@ Ext.define('Proxmox.panel.JournalView', {
}, },
onScroll: function(x, y) { onScroll: function(x, y) {
var me = this; let me = this;
var view = me.getView(); let view = me.getView();
var viewmodel = me.getViewModel(); let viewmodel = me.getViewModel();
var livemode = viewmodel.get('livemode'); let livemode = viewmodel.get('livemode');
if (!livemode) { if (!livemode) {
return; return;
} }
@ -176,15 +176,15 @@ Ext.define('Proxmox.panel.JournalView', {
}, },
init: function(view) { init: function(view) {
var me = this; let me = this;
if (!view.url) { if (!view.url) {
throw "no url specified"; throw "no url specified";
} }
var viewmodel = me.getViewModel(); let viewmodel = me.getViewModel();
var viewModel = this.getViewModel(); let viewModel = this.getViewModel();
var since = new Date(); let since = new Date();
since.setDate(since.getDate() - 3); since.setDate(since.getDate() - 3);
viewModel.set('until', new Date()); viewModel.set('until', new Date());
viewModel.set('since', since); viewModel.set('since', since);
@ -208,8 +208,8 @@ Ext.define('Proxmox.panel.JournalView', {
}, },
onLiveMode: function() { onLiveMode: function() {
var me = this; let me = this;
var view = me.getView(); let view = me.getView();
delete view.startcursor; delete view.startcursor;
delete view.endcursor; delete view.endcursor;
delete view.content; delete view.content;
@ -219,14 +219,14 @@ Ext.define('Proxmox.panel.JournalView', {
}, },
onTimespan: function() { onTimespan: function() {
var me = this; let me = this;
me.getViewModel().set('livemode', false); me.getViewModel().set('livemode', false);
me.updateView([], false); me.updateView([], false);
}, },
}, },
onDestroy: function() { onDestroy: function() {
var me = this; let me = this;
me.loadTask.cancel(); me.loadTask.cancel();
Ext.TaskManager.stop(me.task); Ext.TaskManager.stop(me.task);
delete me.content; delete me.content;
@ -234,7 +234,7 @@ Ext.define('Proxmox.panel.JournalView', {
// for user to initiate a load from outside // for user to initiate a load from outside
requestUpdate: function() { requestUpdate: function() {
var me = this; let me = this;
me.loadTask.delay(200); me.loadTask.delay(200);
}, },
@ -257,7 +257,7 @@ Ext.define('Proxmox.panel.JournalView', {
// the panel have a 'scroll' event' // the panel have a 'scroll' event'
scroll: { scroll: {
fn: function(scroller, x, y) { fn: function(scroller, x, y) {
var controller = this.component.getController(); let controller = this.component.getController();
if (controller) { // on destroy, controller can be gone if (controller) { // on destroy, controller can be gone
controller.onScroll(x, y); controller.onScroll(x, y);
} }

View File

@ -20,10 +20,10 @@ Ext.define('Proxmox.panel.LogView', {
xclass: 'Ext.app.ViewController', xclass: 'Ext.app.ViewController',
updateParams: function() { updateParams: function() {
var me = this; let me = this;
var viewModel = me.getViewModel(); let viewModel = me.getViewModel();
var since = viewModel.get('since'); let since = viewModel.get('since');
var until = viewModel.get('until'); let until = viewModel.get('until');
if (viewModel.get('hide_timespan')) { if (viewModel.get('hide_timespan')) {
return; return;
} }
@ -39,18 +39,18 @@ Ext.define('Proxmox.panel.LogView', {
}, },
scrollPosBottom: function() { scrollPosBottom: function() {
var view = this.getView(); let view = this.getView();
var pos = view.getScrollY(); let pos = view.getScrollY();
var maxPos = view.getScrollable().getMaxPosition().y; let maxPos = view.getScrollable().getMaxPosition().y;
return maxPos - pos; return maxPos - pos;
}, },
updateView: function(text, first, total) { updateView: function(text, first, total) {
var me = this; let me = this;
var view = me.getView(); let view = me.getView();
var viewModel = me.getViewModel(); let viewModel = me.getViewModel();
var content = me.lookup('content'); let content = me.lookup('content');
var data = viewModel.get('data'); let data = viewModel.get('data');
if (first === data.first && total === data.total && text.length === data.textlen) { if (first === data.first && total === data.total && text.length === data.textlen) {
return; // same content, skip setting and scrolling return; // same content, skip setting and scrolling
@ -61,7 +61,7 @@ Ext.define('Proxmox.panel.LogView', {
textlen: text.length, textlen: text.length,
}); });
var scrollPos = me.scrollPosBottom(); let scrollPos = me.scrollPosBottom();
content.update(text); content.update(text);
@ -72,23 +72,23 @@ Ext.define('Proxmox.panel.LogView', {
}, },
doLoad: function() { doLoad: function() {
var me = this; let me = this;
if (me.running) { if (me.running) {
me.requested = true; me.requested = true;
return; return;
} }
me.running = true; me.running = true;
var view = me.getView(); let view = me.getView();
var viewModel = me.getViewModel(); let viewModel = me.getViewModel();
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: me.getView().url, url: me.getView().url,
params: viewModel.get('params'), params: viewModel.get('params'),
method: 'GET', method: 'GET',
success: function(response) { success: function(response) {
Proxmox.Utils.setErrorMask(me, false); Proxmox.Utils.setErrorMask(me, false);
var total = response.result.total; let total = response.result.total;
var lines = new Array(); let lines = [];
var first = Infinity; let first = Infinity;
Ext.Array.each(response.result.data, function(line) { Ext.Array.each(response.result.data, function(line) {
if (first > line.n) { if (first > line.n) {
@ -109,7 +109,7 @@ Ext.define('Proxmox.panel.LogView', {
if (view.failCallback) { if (view.failCallback) {
view.failCallback(response); view.failCallback(response);
} else { } else {
var msg = response.htmlStatus; let msg = response.htmlStatus;
Proxmox.Utils.setErrorMask(me, msg); Proxmox.Utils.setErrorMask(me, msg);
} }
me.running = false; me.running = false;
@ -122,35 +122,35 @@ Ext.define('Proxmox.panel.LogView', {
}, },
onScroll: function(x, y) { onScroll: function(x, y) {
var me = this; let me = this;
var view = me.getView(); let view = me.getView();
var viewModel = me.getViewModel(); let viewModel = me.getViewModel();
var lineHeight = view.lineHeight; let lineHeight = view.lineHeight;
var line = view.getScrollY()/lineHeight; let line = view.getScrollY()/lineHeight;
var start = viewModel.get('params.start'); let start = viewModel.get('params.start');
var limit = viewModel.get('params.limit'); let limit = viewModel.get('params.limit');
var viewLines = view.getHeight()/lineHeight; let viewLines = view.getHeight()/lineHeight;
var viewStart = Math.max(parseInt(line - 1 - view.viewBuffer, 10), 0); let viewStart = Math.max(parseInt(line - 1 - view.viewBuffer, 10), 0);
var viewEnd = parseInt(line + viewLines + 1 + view.viewBuffer, 10); let viewEnd = parseInt(line + viewLines + 1 + view.viewBuffer, 10);
if (viewStart < start || viewEnd > start+limit) { if (viewStart < start || viewEnd > start+limit) {
viewModel.set('params.start', viewModel.set('params.start',
Math.max(parseInt(line - limit/2 + 10, 10), 0)); Math.max(parseInt(line - (limit / 2) + 10, 10), 0));
view.loadTask.delay(200); view.loadTask.delay(200);
} }
}, },
init: function(view) { init: function(view) {
var me = this; let me = this;
if (!view.url) { if (!view.url) {
throw "no url specified"; throw "no url specified";
} }
var viewModel = this.getViewModel(); let viewModel = this.getViewModel();
var since = new Date(); let since = new Date();
since.setDate(since.getDate() - 3); since.setDate(since.getDate() - 3);
viewModel.set('until', new Date()); viewModel.set('until', new Date());
viewModel.set('since', since); viewModel.set('since', since);
@ -177,14 +177,14 @@ Ext.define('Proxmox.panel.LogView', {
}, },
onDestroy: function() { onDestroy: function() {
var me = this; let me = this;
me.loadTask.cancel(); me.loadTask.cancel();
Ext.TaskManager.stop(me.task); Ext.TaskManager.stop(me.task);
}, },
// for user to initiate a load from outside // for user to initiate a load from outside
requestUpdate: function() { requestUpdate: function() {
var me = this; let me = this;
me.loadTask.delay(200); me.loadTask.delay(200);
}, },
@ -216,7 +216,7 @@ Ext.define('Proxmox.panel.LogView', {
// the panel have a 'scroll' event' // the panel have a 'scroll' event'
scroll: { scroll: {
fn: function(scroller, x, y) { fn: function(scroller, x, y) {
var controller = this.component.getController(); let controller = this.component.getController();
if (controller) { // on destroy, controller can be gone if (controller) { // on destroy, controller can be gone
controller.onScroll(x, y); controller.onScroll(x, y);
} }

View File

@ -8,8 +8,8 @@ Ext.define('Proxmox.widget.RRDChart', {
xclass: 'Ext.app.ViewController', xclass: 'Ext.app.ViewController',
convertToUnits: function(value) { convertToUnits: function(value) {
var units = ['', 'k', 'M', 'G', 'T', 'P']; let units = ['', 'k', 'M', 'G', 'T', 'P'];
var si = 0; let si = 0;
let format = '0.##'; let format = '0.##';
if (value < 0.1) format += '#'; if (value < 0.1) format += '#';
while (value >= 1000 && si < units.length -1) { while (value >= 1000 && si < units.length -1) {
@ -27,26 +27,25 @@ Ext.define('Proxmox.widget.RRDChart', {
}, },
leftAxisRenderer: function(axis, label, layoutContext) { leftAxisRenderer: function(axis, label, layoutContext) {
var me = this; let me = this;
return me.convertToUnits(label); return me.convertToUnits(label);
}, },
onSeriesTooltipRender: function(tooltip, record, item) { onSeriesTooltipRender: function(tooltip, record, item) {
var me = this.getView(); let view = this.getView();
var suffix = ''; let suffix = '';
if (view.unit === 'percent') {
if (me.unit === 'percent') {
suffix = '%'; suffix = '%';
} else if (me.unit === 'bytes') { } else if (view.unit === 'bytes') {
suffix = 'B'; suffix = 'B';
} else if (me.unit === 'bytespersecond') { } else if (view.unit === 'bytespersecond') {
suffix = 'B/s'; suffix = 'B/s';
} }
var prefix = item.field; let prefix = item.field;
if (me.fieldTitles && me.fieldTitles[me.fields.indexOf(item.field)]) { if (view.fieldTitles && view.fieldTitles[view.fields.indexOf(item.field)]) {
prefix = me.fieldTitles[me.fields.indexOf(item.field)]; prefix = view.fieldTitles[view.fields.indexOf(item.field)];
} }
let v = this.convertToUnits(record.get(item.field)); let v = this.convertToUnits(record.get(item.field));
let t = new Date(record.get('time')); let t = new Date(record.get('time'));
@ -55,8 +54,8 @@ Ext.define('Proxmox.widget.RRDChart', {
onAfterAnimation: function(chart, eopts) { onAfterAnimation: function(chart, eopts) {
// if the undo button is disabled, disable our tool // if the undo button is disabled, disable our tool
var ourUndoZoomButton = chart.header.tools[0]; let ourUndoZoomButton = chart.header.tools[0];
var undoButton = chart.interactions[0].getUndoButton(); let undoButton = chart.interactions[0].getUndoButton();
ourUndoZoomButton.setDisabled(undoButton.isDisabled()); ourUndoZoomButton.setDisabled(undoButton.isDisabled());
}, },
}, },
@ -92,8 +91,7 @@ Ext.define('Proxmox.widget.RRDChart', {
}, },
initComponent: function() { initComponent: function() {
var me = this; let me = this;
var series = {};
if (!me.store) { if (!me.store) {
throw "cannot work without store"; throw "cannot work without store";
@ -106,7 +104,7 @@ Ext.define('Proxmox.widget.RRDChart', {
me.callParent(); me.callParent();
// add correct label for left axis // add correct label for left axis
var axisTitle = ""; let axisTitle = "";
if (me.unit === 'percent') { if (me.unit === 'percent') {
axisTitle = "%"; axisTitle = "%";
} else if (me.unit === 'bytes') { } else if (me.unit === 'bytes') {
@ -134,7 +132,7 @@ Ext.define('Proxmox.widget.RRDChart', {
disabled: true, disabled: true,
tooltip: gettext('Undo Zoom'), tooltip: gettext('Undo Zoom'),
handler: function() { handler: function() {
var undoButton = me.interactions[0].getUndoButton(); let undoButton = me.interactions[0].getUndoButton();
if (undoButton.handler) { if (undoButton.handler) {
undoButton.handler(); undoButton.handler();
} }
@ -144,7 +142,7 @@ Ext.define('Proxmox.widget.RRDChart', {
// add a series for each field we get // add a series for each field we get
me.fields.forEach(function(item, index) { me.fields.forEach(function(item, index) {
var title = item; let title = item;
if (me.fieldTitles && me.fieldTitles[index]) { if (me.fieldTitles && me.fieldTitles[index]) {
title = me.fieldTitles[index]; title = me.fieldTitles[index];
} }

View File

@ -1,5 +1,4 @@
// fixme: how can we avoid those lint errors? // fixme: how can we avoid those lint errors?
/*jslint confusion: true */
Ext.define('Proxmox.window.Edit', { Ext.define('Proxmox.window.Edit', {
extend: 'Ext.window.Window', extend: 'Ext.window.Window',
alias: 'widget.proxmoxWindowEdit', alias: 'widget.proxmoxWindowEdit',

View File

@ -5,15 +5,15 @@ Ext.define('Proxmox.window.TaskProgress', {
taskDone: Ext.emptyFn, taskDone: Ext.emptyFn,
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.upid) { if (!me.upid) {
throw "no task specified"; throw "no task specified";
} }
var task = Proxmox.Utils.parse_task_upid(me.upid); let task = Proxmox.Utils.parse_task_upid(me.upid);
var statstore = Ext.create('Proxmox.data.ObjectStore', { let statstore = Ext.create('Proxmox.data.ObjectStore', {
url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status", url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
interval: 1000, interval: 1000,
rows: { rows: {
@ -24,21 +24,21 @@ Ext.define('Proxmox.window.TaskProgress', {
me.on('destroy', statstore.stopUpdate); me.on('destroy', statstore.stopUpdate);
var getObjectValue = function(key, defaultValue) { let getObjectValue = function(key, defaultValue) {
var rec = statstore.getById(key); let rec = statstore.getById(key);
if (rec) { if (rec) {
return rec.data.value; return rec.data.value;
} }
return defaultValue; return defaultValue;
}; };
var pbar = Ext.create('Ext.ProgressBar', { text: 'running...' }); let pbar = Ext.create('Ext.ProgressBar', { text: 'running...' });
me.mon(statstore, 'load', function() { me.mon(statstore, 'load', function() {
var status = getObjectValue('status'); let status = getObjectValue('status');
if (status === 'stopped') { if (status === 'stopped') {
var exitstatus = getObjectValue('exitstatus'); let exitstatus = getObjectValue('exitstatus');
if (exitstatus == 'OK') { if (exitstatus === 'OK') {
pbar.reset(); pbar.reset();
pbar.updateText("Done!"); pbar.updateText("Done!");
Ext.Function.defer(me.close, 1000, me); Ext.Function.defer(me.close, 1000, me);
@ -46,11 +46,11 @@ Ext.define('Proxmox.window.TaskProgress', {
me.close(); me.close();
Ext.Msg.alert('Task failed', exitstatus); Ext.Msg.alert('Task failed', exitstatus);
} }
me.taskDone(exitstatus == 'OK'); me.taskDone(exitstatus === 'OK');
} }
}); });
var descr = Proxmox.Utils.format_task_description(task.type, task.id); let descr = Proxmox.Utils.format_task_description(task.type, task.id);
Ext.apply(me, { Ext.apply(me, {
title: gettext('Task') + ': ' + descr, title: gettext('Task') + ': ' + descr,
@ -63,7 +63,7 @@ Ext.define('Proxmox.window.TaskProgress', {
{ {
text: gettext('Details'), text: gettext('Details'),
handler: function() { handler: function() {
var win = Ext.create('Proxmox.window.TaskViewer', { let win = Ext.create('Proxmox.window.TaskViewer', {
taskDone: me.taskDone, taskDone: me.taskDone,
upid: me.upid, upid: me.upid,
}); });
@ -83,7 +83,6 @@ Ext.define('Proxmox.window.TaskProgress', {
}); });
// fixme: how can we avoid those lint errors? // fixme: how can we avoid those lint errors?
/*jslint confusion: true */
Ext.define('Proxmox.window.TaskViewer', { Ext.define('Proxmox.window.TaskViewer', {
extend: 'Ext.window.Window', extend: 'Ext.window.Window',
@ -94,28 +93,29 @@ Ext.define('Proxmox.window.TaskViewer', {
taskDone: Ext.emptyFn, taskDone: Ext.emptyFn,
initComponent: function() { initComponent: function() {
var me = this; let me = this;
if (!me.upid) { if (!me.upid) {
throw "no task specified"; throw "no task specified";
} }
var task = Proxmox.Utils.parse_task_upid(me.upid); let task = Proxmox.Utils.parse_task_upid(me.upid);
var statgrid; let statgrid;
var rows = { let rows = {
status: { status: {
header: gettext('Status'), header: gettext('Status'),
defaultValue: 'unknown', defaultValue: 'unknown',
renderer: function(value) { renderer: function(value) {
if (value != 'stopped') { if (value !== 'stopped') {
return value; return value;
} }
var es = statgrid.getObjectValue('exitstatus'); let es = statgrid.getObjectValue('exitstatus');
if (es) { if (es) {
return value + ': ' + es; return value + ': ' + es;
} }
return 'unknown';
}, },
}, },
exitstatus: { exitstatus: {
@ -152,7 +152,7 @@ Ext.define('Proxmox.window.TaskViewer', {
}, },
}; };
var statstore = Ext.create('Proxmox.data.ObjectStore', { let statstore = Ext.create('Proxmox.data.ObjectStore', {
url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status", url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
interval: 1000, interval: 1000,
rows: rows, rows: rows,
@ -160,7 +160,7 @@ Ext.define('Proxmox.window.TaskViewer', {
me.on('destroy', statstore.stopUpdate); me.on('destroy', statstore.stopUpdate);
var stop_task = function() { let stop_task = function() {
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + task.node + "/tasks/" + me.upid, url: "/nodes/" + task.node + "/tasks/" + me.upid,
waitMsgTarget: me, waitMsgTarget: me,
@ -171,13 +171,13 @@ Ext.define('Proxmox.window.TaskViewer', {
}); });
}; };
var stop_btn1 = new Ext.Button({ let stop_btn1 = new Ext.Button({
text: gettext('Stop'), text: gettext('Stop'),
disabled: true, disabled: true,
handler: stop_task, handler: stop_task,
}); });
var stop_btn2 = new Ext.Button({ let stop_btn2 = new Ext.Button({
text: gettext('Stop'), text: gettext('Stop'),
disabled: true, disabled: true,
handler: stop_task, handler: stop_task,
@ -192,7 +192,7 @@ Ext.define('Proxmox.window.TaskViewer', {
border: false, border: false,
}); });
var logView = Ext.create('Proxmox.panel.LogView', { let logView = Ext.create('Proxmox.panel.LogView', {
title: gettext('Output'), title: gettext('Output'),
tbar: [stop_btn2], tbar: [stop_btn2],
border: false, border: false,
@ -200,13 +200,13 @@ Ext.define('Proxmox.window.TaskViewer', {
}); });
me.mon(statstore, 'load', function() { me.mon(statstore, 'load', function() {
var status = statgrid.getObjectValue('status'); let status = statgrid.getObjectValue('status');
if (status === 'stopped') { if (status === 'stopped') {
logView.scrollToEnd = false; logView.scrollToEnd = false;
logView.requestUpdate(); logView.requestUpdate();
statstore.stopUpdate(); statstore.stopUpdate();
me.taskDone(statgrid.getObjectValue('exitstatus') == 'OK'); me.taskDone(statgrid.getObjectValue('exitstatus') === 'OK');
} }
stop_btn1.setDisabled(status !== 'running'); stop_btn1.setDisabled(status !== 'running');