eslint fixes all over the place

all autofixed by eslint with a slightly reduced base config rule set
to avoid rules which may give some undesired results in our code
base.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2020-06-06 15:01:33 +02:00
parent 94ac12f1bd
commit 01031528ad
39 changed files with 604 additions and 630 deletions

View File

@ -10,46 +10,46 @@ if (Ext.isFirefox) {
// custom Vtypes
Ext.apply(Ext.form.field.VTypes, {
IPAddress: function(v) {
IPAddress: function(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,
IPCIDRAddress: function(v) {
IPCIDRAddress: function(v) {
var result = Proxmox.Utils.IP4_cidr_match.exec(v);
// limits according to JSON Schema see
// 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,
IP6Address: function(v) {
IP6Address: function(v) {
return Proxmox.Utils.IP6_match.test(v);
},
IP6AddressText: gettext('Example') + ': 2001:DB8::42',
IP6AddressText: gettext('Example') + ': 2001:DB8::42',
IP6AddressMask: /[A-Fa-f0-9:]/,
IP6CIDRAddress: function(v) {
IP6CIDRAddress: function(v) {
var result = Proxmox.Utils.IP6_cidr_match.exec(v);
// limits according to JSON Schema see
// 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',
IP6CIDRAddressMask: /[A-Fa-f0-9:\/]/,
IP6CIDRAddressText: gettext('Example') + ': 2001:DB8::42/64' + "<br>" + gettext('Valid CIDR Range') + ': 8-128',
IP6CIDRAddressMask: /[A-Fa-f0-9:\/]/,
IP6PrefixLength: function(v) {
IP6PrefixLength: function(v) {
return v >= 0 && v <= 128;
},
IP6PrefixLengthText: gettext('Example') + ': X, where 0 <= X <= 128',
IP6PrefixLengthMask: /[0-9]/,
IP6PrefixLengthText: gettext('Example') + ': X, where 0 <= X <= 128',
IP6PrefixLengthMask: /[0-9]/,
IP64Address: function(v) {
IP64Address: function(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\.:]/,
IP64CIDRAddress: function(v) {
@ -74,7 +74,7 @@ Ext.apply(Ext.form.field.VTypes, {
MacAddressMask: /[a-fA-F0-9:]/,
MacAddressText: gettext('Example') + ': 01:23:45:67:89:ab',
MacPrefix: function(v) {
MacPrefix: function(v) {
return (/^[a-f0-9][02468ace](?::[a-f0-9]{2}){0,2}:?$/i).test(v);
},
MacPrefixMask: /[a-fA-F0-9:]/,
@ -106,7 +106,7 @@ Ext.apply(Ext.form.field.VTypes, {
gettext("Maximum characters") + ": 21" + "<br />" +
gettext("Must start with") + ": 'a-z'",
StorageId: function(v) {
StorageId: function(v) {
return (/^[a-z][a-z0-9\-\_\.]*[a-z0-9]$/i).test(v);
},
StorageIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '-', '_', '.'" + "<br />" +
@ -114,14 +114,14 @@ Ext.apply(Ext.form.field.VTypes, {
gettext("Must start with") + ": 'A-Z', 'a-z'<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);
},
ConfigIdText: gettext("Allowed characters") + ": 'A-Z', 'a-z', '0-9', '_'" + "<br />" +
gettext("Minimum characters") + ": 2" + "<br />" +
gettext("Must start with") + ": " + gettext("letter"),
HttpProxy: function(v) {
HttpProxy: function(v) {
return (/^http:\/\/.*$/).test(v);
},
HttpProxyText: gettext('Example') + ": http://username:password&#64;host:port/",
@ -170,19 +170,19 @@ Ext.apply(Ext.form.field.VTypes, {
if (field.initialPassField) {
var pwd = field.up('form').down(
'[name=' + field.initialPassField + ']');
return (val == pwd.getValue());
return val == pwd.getValue();
}
return true;
},
passwordText: gettext('Passwords do not match')
passwordText: gettext('Passwords do not match'),
});
// Firefox 52+ Touchscreen bug
// see https://www.sencha.com/forum/showthread.php?336762-Examples-don-t-work-in-Firefox-52-touchscreen/page2
// and https://bugzilla.proxmox.com/show_bug.cgi?id=1223
Ext.define('EXTJS_23846.Element', {
override: 'Ext.dom.Element'
override: 'Ext.dom.Element',
}, function(Element) {
var supports = Ext.supports,
proto = Element.prototype,
@ -211,7 +211,7 @@ Ext.define('EXTJS_23846.Element', {
});
Ext.define('EXTJS_23846.Gesture', {
override: 'Ext.event.publisher.Gesture'
override: 'Ext.event.publisher.Gesture',
}, function(Gesture) {
var me = Gesture.instance;
@ -225,7 +225,7 @@ Ext.define('EXTJS_18900.Pie', {
override: 'Ext.chart.series.Pie',
// from 6.0.2
betweenAngle: function (x, a, b) {
betweenAngle: function(x, a, b) {
var pp = Math.PI * 2,
offset = this.rotationOffset;
@ -264,7 +264,7 @@ Ext.define('EXTJS_18900.Pie', {
// we always want the number in x.y format and never in, e.g., x,y
Ext.define('PVE.form.field.Number', {
override: 'Ext.form.field.Number',
submitLocaleSeparator: false
submitLocaleSeparator: false,
});
// ExtJs 5-6 has an issue with caching
@ -272,7 +272,7 @@ Ext.define('PVE.form.field.Number', {
Ext.define('Proxmox.UnderlayPool', {
override: 'Ext.dom.UnderlayPool',
checkOut: function () {
checkOut: function() {
var cache = this.cache,
len = cache.length,
el;
@ -297,7 +297,7 @@ Ext.define('Proxmox.UnderlayPool', {
}
return el;
}
},
});
// 'Enter' in Textareas and aria multiline fields should not activate the
@ -311,7 +311,7 @@ Ext.define('PVE.panel.Panel', {
return true;
}
return this.callParent(arguments);
}
},
});
// if the order of the values are not the same in originalValue and value
@ -352,7 +352,7 @@ Ext.define('Proxmox.form.ComboBox', {
me.skip_expand_on_focus = true;
}
this.callParent(arguments);
}
},
});
me.on("focus", function(combobox) {
@ -403,7 +403,6 @@ Ext.define(null, {
return function() {
// If we still have data, attempt to refocus in the same mode.
if (store.getCount()) {
// 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.
refocusRow = Math.min(focusPosition.rowIdx, me.all.getCount() - 1);
@ -424,7 +423,7 @@ Ext.define(null, {
navModel.setPosition(focusPosition, null, null, null, true);
if (!me.jumpToFocus) {
me.scrollTo(x,y);
me.scrollTo(x, y);
}
}
}
@ -435,14 +434,14 @@ Ext.define(null, {
};
}
return Ext.emptyFn;
}
},
});
// should be fixed with ExtJS 6.0.2, see:
// https://www.sencha.com/forum/showthread.php?307244-Bug-with-datefield-in-window-with-scroll
Ext.define('Proxmox.Datepicker', {
override: 'Ext.picker.Date',
hideMode: 'visibility'
hideMode: 'visibility',
});
// ExtJS 6.0.1 has no setSubmitValue() (although you find it in the docs).
@ -464,9 +463,9 @@ Ext.define(null, {
createWheelListener: function() {
var me = this;
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 {
me.wheelListener = me.layout.innerCt.on('mousewheel', me.onMouseWheel, me, {destroyable: true});
me.wheelListener = me.layout.innerCt.on('mousewheel', me.onMouseWheel, me, { destroyable: true });
}
},
@ -477,7 +476,7 @@ Ext.define(null, {
e.stopEvent();
var delta = e.browserEvent.deltaY || 0;
this.scrollBy(delta * this.wheelIncrement, false);
}
},
});
@ -501,12 +500,12 @@ Ext.onReady(function() {
icon: this.ERROR,
buttons: this.OK,
fn: fn,
scope : scope,
minWidth: this.minWidth
scope: scope,
minWidth: this.minWidth,
};
return this.show(config);
}
}
},
});
/*jslint confusion: false */
});
@ -520,17 +519,17 @@ Ext.define('Ext.ux.IFrame', {
src: 'about:blank',
renderTpl: [
'<iframe src="{src}" id="{id}-iframeEl" data-ref="iframeEl" name="{frameName}" width="100%" height="100%" frameborder="0" allowfullscreen="true"></iframe>'
'<iframe src="{src}" id="{id}-iframeEl" data-ref="iframeEl" name="{frameName}" width="100%" height="100%" frameborder="0" allowfullscreen="true"></iframe>',
],
childEls: ['iframeEl'],
initComponent: function () {
initComponent: function() {
this.callParent();
this.frameName = this.frameName || this.id + '-frame';
},
initEvents : function() {
initEvents: function() {
var me = this;
me.callParent();
me.iframeEl.on('load', me.onLoad, me);
@ -539,7 +538,7 @@ Ext.define('Ext.ux.IFrame', {
initRenderData: function() {
return Ext.apply(this.callParent(), {
src: this.src,
frameName: this.frameName
frameName: this.frameName,
});
},
@ -570,12 +569,12 @@ Ext.define('Ext.ux.IFrame', {
return me.iframeEl.dom;
},
beforeDestroy: function () {
beforeDestroy: function() {
this.cleanupListeners(true);
this.callParent();
},
cleanupListeners: function(destroying){
cleanupListeners: function(destroying) {
var doc, prop;
if (this.rendered) {
@ -593,7 +592,7 @@ Ext.define('Ext.ux.IFrame', {
}
}
}
} catch(e) { }
} catch (e) { }
}
},
@ -614,14 +613,14 @@ Ext.define('Ext.ux.IFrame', {
me._docListeners = {
mousedown: fn, // menu dismisal (MenuManager) and Window onMouseDown (toFront)
mousemove: fn, // window resize drag detection
mouseup: fn, // window resize termination
click: fn, // not sure, but just to be safe
dblclick: fn, // not sure again
scope: me
}
mouseup: fn, // window resize termination
click: fn, // not sure, but just to be safe
dblclick: fn, // not sure again
scope: me,
},
);
/*jslint nomen: false*/
} catch(e) {
} catch (e) {
// cannot do this xss
}
@ -630,17 +629,13 @@ Ext.define('Ext.ux.IFrame', {
this.el.unmask();
this.fireEvent('load', this);
} else if (me.src) {
this.el.unmask();
this.fireEvent('error', this);
}
},
onRelayedEvent: function (event) {
onRelayedEvent: function(event) {
// relay event from the iframe's document to the document that owns the iframe...
var iframeEl = this.iframeEl,
@ -663,7 +658,7 @@ Ext.define('Ext.ux.IFrame', {
event.xy = originalEventXY; // restore the original XY (just for safety)
},
load: function (src) {
load: function(src) {
var me = this,
text = me.loadMask,
frame = me.getFrame();
@ -673,7 +668,7 @@ Ext.define('Ext.ux.IFrame', {
me.el.mask(text);
}
frame.src = me.src = (src || me.src);
frame.src = me.src = src || me.src;
}
}
},
});

View File

@ -23,8 +23,8 @@ Ext.define('Proxmox.button.Help', {
listen: {
global: {
proxmoxShowHelp: 'onProxmoxShowHelp',
proxmoxHideHelp: 'onProxmoxHideHelp'
}
proxmoxHideHelp: 'onProxmoxHideHelp',
},
},
onProxmoxShowHelp: function(helpLink) {
var me = this.getView();
@ -38,11 +38,11 @@ Ext.define('Proxmox.button.Help', {
if (me.listenToGlobalEvent === true) {
me.hide();
}
}
},
},
// this sets the link and the tooltip text
setOnlineHelp:function(blockid) {
setOnlineHelp: function(blockid) {
var me = this;
var info = Proxmox.Utils.get_help_info(blockid);
@ -83,8 +83,8 @@ Ext.define('Proxmox.button.Help', {
me.callParent();
if (me.onlineHelp) {
if (me.onlineHelp) {
me.setOnlineHelp(me.onlineHelp); // set tooltip
}
}
},
});

View File

@ -66,7 +66,7 @@ Ext.define('Proxmox.data.DiffStore', {
Ext.apply(config, {
model: rstore.model,
proxy: { type: 'memory' }
proxy: { type: 'memory' },
});
me.callParent([config]);
@ -88,13 +88,12 @@ Ext.define('Proxmox.data.DiffStore', {
olditem.commit();
} else {
var newrec = Ext.create(me.model, data);
var pos = (me.appendAtStart && !first_load) ? 0 : me.data.length;
var pos = me.appendAtStart && !first_load ? 0 : me.data.length;
me.insert(pos, newrec);
}
};
var loadFn = function(s, records, success) {
if (!success) {
return;
}
@ -137,5 +136,5 @@ Ext.define('Proxmox.data.DiffStore', {
}
me.mon(me.rstore, 'load', loadFn);
}
},
});

View File

@ -3,7 +3,7 @@
*
* Designed to work with the KeyValue model and the JsonObject data reader
*/
Ext.define('Proxmox.data.ObjectStore', {
Ext.define('Proxmox.data.ObjectStore', {
extend: 'Proxmox.data.UpdateStore',
getRecord: function() {
@ -22,7 +22,7 @@ Ext.define('Proxmox.data.ObjectStore', {
config = config || {};
if (!config.storeid) {
config.storeid = 'proxmox-store-' + (++Ext.idSeed);
config.storeid = 'proxmox-store-' + ++Ext.idSeed;
}
Ext.applyIf(config, {
@ -35,11 +35,11 @@ Ext.define('Proxmox.data.ObjectStore', {
type: 'jsonobject',
rows: config.rows,
readArray: config.readArray,
rootProperty: config.root || 'data'
}
}
rootProperty: config.root || 'data',
},
},
});
me.callParent([config]);
}
},
});

View File

@ -1,14 +1,14 @@
Ext.define('Proxmox.RestProxy', {
extend: 'Ext.data.RestProxy',
alias : 'proxy.proxmox',
alias: 'proxy.proxmox',
pageParam : null,
pageParam: null,
startParam: null,
limitParam: null,
groupParam: null,
sortParam: null,
filterParam: null,
noCache : false,
noCache: false,
afterRequest: function(request, success) {
this.fireEvent('afterload', this, request, success);
@ -16,46 +16,44 @@ Ext.define('Proxmox.RestProxy', {
},
constructor: function(config) {
Ext.applyIf(config, {
reader: {
type: 'json',
rootProperty: config.root || 'data'
}
rootProperty: config.root || 'data',
},
});
this.callParent([config]);
}
},
}, function() {
Ext.define('KeyValue', {
extend: "Ext.data.Model",
fields: [ 'key', 'value' ],
idProperty: 'key'
fields: ['key', 'value'],
idProperty: 'key',
});
Ext.define('KeyValuePendingDelete', {
extend: "Ext.data.Model",
fields: [ 'key', 'value', 'pending', 'delete' ],
idProperty: 'key'
fields: ['key', 'value', 'pending', 'delete'],
idProperty: 'key',
});
Ext.define('proxmox-tasks', {
extend: 'Ext.data.Model',
fields: [
{ name: 'starttime', type : 'date', dateFormat: 'timestamp' },
{ name: 'endtime', type : 'date', dateFormat: 'timestamp' },
fields: [
{ name: 'starttime', type: 'date', dateFormat: 'timestamp' },
{ name: 'endtime', type: 'date', dateFormat: 'timestamp' },
{ name: 'pid', type: 'int' },
'node', 'upid', 'user', 'status', 'type', 'id'
'node', 'upid', 'user', 'status', 'type', 'id',
],
idProperty: 'upid'
idProperty: 'upid',
});
Ext.define('proxmox-cluster-log', {
extend: 'Ext.data.Model',
fields: [
{ name: 'uid' , type: 'int' },
{ name: 'time', type : 'date', dateFormat: 'timestamp' },
fields: [
{ name: 'uid', type: 'int' },
{ name: 'time', type: 'date', dateFormat: 'timestamp' },
{ name: 'pri', type: 'int' },
{ name: 'pid', type: 'int' },
'node', 'user', 'tag', 'msg',
@ -70,10 +68,9 @@ Ext.define('Proxmox.RestProxy', {
}
// compute unique ID
return info.uid + ':' + info.node;
}
}
},
},
],
idProperty: 'id'
idProperty: 'id',
});
});

View File

@ -20,7 +20,7 @@ Ext.define('Proxmox.data.RRDStore', {
},
proxy: {
type: 'proxmox'
type: 'proxmox',
},
timeframe: 'hour',
@ -39,7 +39,7 @@ Ext.define('Proxmox.data.RRDStore', {
// set a new storeid
if (!config.storeid) {
config.storeid = 'rrdstore-' + (++Ext.idSeed);
config.storeid = 'rrdstore-' + ++Ext.idSeed;
}
// rrdurl is required
@ -52,7 +52,7 @@ Ext.define('Proxmox.data.RRDStore', {
var stateinit = sp.get(stateid);
if (stateinit) {
if(stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn){
if (stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn) {
me.timeframe = stateinit.timeframe;
me.rrdcffn = stateinit.cf;
}
@ -61,7 +61,7 @@ Ext.define('Proxmox.data.RRDStore', {
me.callParent([config]);
me.setRRDUrl();
me.mon(sp, 'statechange', function(prov, key, state){
me.mon(sp, 'statechange', function(prov, key, state) {
if (key === stateid) {
if (state && state.id) {
if (state.timeframe !== me.timeframe || state.cf !== me.cf) {
@ -73,5 +73,5 @@ Ext.define('Proxmox.data.RRDStore', {
}
}
});
}
},
});

View File

@ -1,6 +1,6 @@
Ext.define('Timezone', {
extend: 'Ext.data.Model',
fields: ['zone']
fields: ['zone'],
});
Ext.define('Proxmox.data.TimezoneStore', {
@ -414,6 +414,6 @@ Ext.define('Proxmox.data.TimezoneStore', {
['Pacific/Tongatapu'],
['Pacific/Wake'],
['Pacific/Wallis'],
['UTC']
]
['UTC'],
],
});

View File

@ -47,7 +47,7 @@ Ext.define('Proxmox.data.UpdateStore', {
if (Proxmox.Utils.authOK()) {
let start = new Date();
me.load(function() {
let runtime = (new Date()) - start;
let runtime = new Date() - start;
let interval = me.getInterval() + runtime*2;
load_task.delay(interval, run_load_task);
});
@ -65,7 +65,7 @@ Ext.define('Proxmox.data.UpdateStore', {
stopUpdate: function() {
me.setIsStopped(true);
load_task.cancel();
}
},
});
me.callParent([config]);
@ -75,5 +75,5 @@ Ext.define('Proxmox.data.UpdateStore', {
if (me.getAutoStart()) {
me.startUpdate();
}
}
},
});

View File

@ -29,7 +29,7 @@
Ext.define('Proxmox.data.reader.JsonObject', {
extend: 'Ext.data.reader.Json',
alias : 'reader.jsonobject',
alias: 'reader.jsonobject',
readArray: false,
@ -53,7 +53,6 @@ Ext.define('Proxmox.data.reader.JsonObject', {
var root = result[me.getRootProperty()];
if (me.readArray) {
var rec_hash = {};
Ext.Array.each(root, function(rec) {
if (Ext.isDefined(rec.key)) {
@ -70,9 +69,9 @@ Ext.define('Proxmox.data.reader.JsonObject', {
}
data.push(rec);
} else if (Ext.isDefined(rowdef.defaultValue)) {
data.push({key: key, value: rowdef.defaultValue} );
data.push({ key: key, value: rowdef.defaultValue });
} else if (rowdef.required) {
data.push({key: key, value: undefined });
data.push({ key: key, value: undefined });
}
});
} else {
@ -82,9 +81,7 @@ Ext.define('Proxmox.data.reader.JsonObject', {
}
});
}
} else {
var org_root = root;
if (Ext.isArray(org_root)) {
@ -98,30 +95,29 @@ Ext.define('Proxmox.data.reader.JsonObject', {
if (me.rows) {
Ext.Object.each(me.rows, function(key, rowdef) {
if (Ext.isDefined(root[key])) {
data.push({key: key, value: root[key]});
data.push({ key: key, value: root[key] });
} else if (Ext.isDefined(rowdef.defaultValue)) {
data.push({key: key, value: rowdef.defaultValue});
data.push({ key: key, value: rowdef.defaultValue });
} else if (rowdef.required) {
data.push({key: key, value: undefined});
data.push({ key: key, value: undefined });
}
});
} else {
Ext.Object.each(root, function(key, value) {
data.push({key: key, value: value });
data.push({ key: key, value: value });
});
}
}
}
catch (ex) {
} catch (ex) {
Ext.Error.raise({
response: response,
json: response.responseText,
parseError: ex,
msg: 'Unable to parse the JSON returned by the server: ' + ex.toString()
msg: 'Unable to parse the JSON returned by the server: ' + ex.toString(),
});
}
return data;
}
},
});

View File

@ -27,7 +27,7 @@ Ext.define('Proxmox.form.BondModeSelector', {
}
me.callParent();
}
},
});
Ext.define('Proxmox.form.BondPolicySelector', {
@ -36,7 +36,7 @@ Ext.define('Proxmox.form.BondPolicySelector', {
comboItems: [
['layer2', 'layer2'],
['layer2+3', 'layer2+3'],
['layer3+4', 'layer3+4']
]
['layer3+4', 'layer3+4'],
],
});

View File

@ -5,7 +5,7 @@ Ext.define('Proxmox.form.Checkbox', {
config: {
defaultValue: undefined,
deleteDefaultValue: false,
deleteEmpty: false
deleteEmpty: false,
},
inputValue: '1',
@ -18,14 +18,14 @@ Ext.define('Proxmox.form.Checkbox', {
val = me.getSubmitValue();
if (val !== null) {
data = {};
if ((val == me.getDefaultValue()) && me.getDeleteDefaultValue()) {
data['delete'] = me.getName();
if (val == me.getDefaultValue() && me.getDeleteDefaultValue()) {
data.delete = me.getName();
} else {
data[me.getName()] = val;
}
} else if (me.getDeleteEmpty()) {
data = {};
data['delete'] = me.getName();
data.delete = me.getName();
}
}
return data;
@ -40,6 +40,6 @@ Ext.define('Proxmox.form.Checkbox', {
} else {
me.callParent([value]);
}
}
},
});

View File

@ -46,8 +46,8 @@ Ext.define('Proxmox.form.ComboGrid', {
handler: function() {
var me = this;
me.setValue('');
}
}
},
},
},
setValue: function(value) {
@ -87,7 +87,7 @@ Ext.define('Proxmox.form.ComboGrid', {
data[me.getName()] = val;
} else if (me.getDeleteEmpty()) {
data = {};
data['delete'] = me.getName();
data.delete = me.getName();
}
}
return data;
@ -142,8 +142,8 @@ Ext.define('Proxmox.form.ComboGrid', {
extraKeySpec = {
byValue: {
rootProperty: 'data',
unique: false
}
unique: false,
},
};
extraKeySpec.byValue.property = me.valueField;
store.setExtraKeys(extraKeySpec);
@ -153,7 +153,7 @@ Ext.define('Proxmox.form.ComboGrid', {
} else {
extraKeySpec.byText = {
rootProperty: 'data',
unique: false
unique: false,
};
extraKeySpec.byText.property = me.displayField;
store.setExtraKeys(extraKeySpec);
@ -165,20 +165,20 @@ Ext.define('Proxmox.form.ComboGrid', {
rootProperty: 'data',
extraKeys: {
byInternalId: {
property: 'internalId'
property: 'internalId',
},
byValue: {
property: me.valueField,
rootProperty: 'data'
}
rootProperty: 'data',
},
},
// Whenever this collection is changed by anyone, whether by this field adding to it,
// or the BoundList operating, we must refresh our value.
listeners: {
beginupdate: me.onValueCollectionBeginUpdate,
endupdate: me.onValueCollectionEndUpdate,
scope: me
}
scope: me,
},
};
// This becomes our collection of selected records for the Field.
@ -203,8 +203,8 @@ Ext.define('Proxmox.form.ComboGrid', {
store: store,
listeners: {
scope: me,
lastselectedchanged: me.updateBindSelection
}
lastselectedchanged: me.updateBindSelection,
},
});
if (!initial) {
@ -238,7 +238,7 @@ Ext.define('Proxmox.form.ComboGrid', {
pageSize: me.pageSize,
tpl: me.tpl,
selModel: me.pickerSelectionModel,
focusOnToFront: false
focusOnToFront: false,
}, me.listConfig, me.defaultListConfig);
picker = me.picker || Ext.widget(pickerCfg);
@ -265,21 +265,21 @@ Ext.define('Proxmox.form.ComboGrid', {
if (!picker.initialConfig.maxHeight) {
picker.on({
beforeshow: me.onBeforePickerShow,
scope: me
scope: me,
});
}
picker.getSelectionModel().on({
beforeselect: me.onBeforeSelect,
beforedeselect: me.onBeforeDeselect,
focuschange: me.onFocusChange,
selectionChange: function (sm, selectedRecords) {
selectionChange: function(sm, selectedRecords) {
var me = this;
if (selectedRecords.length) {
me.setValue(selectedRecords);
me.fireEvent('select', me, selectedRecords);
}
},
scope: me
scope: me,
});
// hack for extjs6
@ -287,7 +287,7 @@ Ext.define('Proxmox.form.ComboGrid', {
// it does not select the item
// instead we hide the picker
if (!me.multiSelect) {
picker.on('itemclick', function (sm,record) {
picker.on('itemclick', function(sm, record) {
if (picker.getSelection()[0] === record) {
picker.hide();
}
@ -353,7 +353,7 @@ Ext.define('Proxmox.form.ComboGrid', {
return found;
},
validator: function (value) {
validator: function(value) {
var me = this;
if (!value) {
@ -366,8 +366,8 @@ Ext.define('Proxmox.form.ComboGrid', {
//
// we also have to get the 'real' value if the we have a mulitSelect
// Field but got a non array value
if ((me.valueField && me.valueField !== me.displayField) ||
(me.multiSelect && !Ext.isArray(value))) {
if (me.valueField && me.valueField !== me.displayField ||
me.multiSelect && !Ext.isArray(value)) {
value = me.getValue();
}
@ -390,10 +390,10 @@ Ext.define('Proxmox.form.ComboGrid', {
Ext.apply(me, {
queryMode: 'local',
matchFieldWidth: false
matchFieldWidth: false,
});
Ext.applyIf(me, { value: ''}); // hack: avoid ExtJS validate() bug
Ext.applyIf(me, { value: '' }); // hack: avoid ExtJS validate() bug
Ext.applyIf(me.listConfig, { width: 400 });
@ -452,5 +452,5 @@ Ext.define('Proxmox.form.ComboGrid', {
}
}
});
}
},
});

View File

@ -37,7 +37,7 @@ Ext.define('Proxmox.DateTimeField', {
editable: false,
reference: 'dateentry',
flex: 1,
format: 'Y-m-d'
format: 'Y-m-d',
},
{
xtype: 'timefield',
@ -45,8 +45,8 @@ Ext.define('Proxmox.DateTimeField', {
format: 'H:i',
width: 80,
value: '00:00',
increment: 60
}
increment: 60,
},
],
setMinValue: function(value) {
@ -83,7 +83,7 @@ Ext.define('Proxmox.DateTimeField', {
// current time is smaller than the time part of the new minimum
// so we have to add 1 to the day
if ((minhours*60+minminutes) > (hours*60+minutes)) {
if (minhours*60+minminutes > hours*60+minutes) {
value.setDate(value.getDate()+1);
}
me.lookup('dateentry').setMinValue(value);
@ -120,7 +120,7 @@ Ext.define('Proxmox.DateTimeField', {
// current time is biger than the time part of the new maximum
// so we have to subtract 1 to the day
if ((maxhours*60+maxminutes) < (hours*60+minutes)) {
if (maxhours*60+maxminutes < hours*60+minutes) {
value.setDate(value.getDate()-1);
}
@ -147,5 +147,5 @@ Ext.define('Proxmox.DateTimeField', {
me.relayEvents(me.lookupReference('dateentry'), ['change']);
me.relayEvents(me.lookupReference('timeentry'), ['change']);
}
},
});

View File

@ -24,7 +24,7 @@ Ext.define('Proxmox.form.field.DisplayEdit', {
layout: 'fit',
defaults: {
hideLabel: true
hideLabel: true,
},
initComponent: function() {

View File

@ -1,9 +1,9 @@
Ext.define('Proxmox.form.field.Integer',{
Ext.define('Proxmox.form.field.Integer', {
extend: 'Ext.form.field.Number',
alias: 'widget.proxmoxintegerfield',
config: {
deleteEmpty: false
deleteEmpty: false,
},
allowDecimals: false,
@ -21,10 +21,10 @@ Ext.define('Proxmox.form.field.Integer',{
data[me.getName()] = val;
} else if (me.getDeleteEmpty()) {
data = {};
data['delete'] = me.getName();
data.delete = me.getName();
}
}
return data;
}
},
});

View File

@ -10,7 +10,7 @@ Ext.define('Proxmox.form.KVComboBox', {
alias: 'widget.proxmoxKVComboBox',
config: {
deleteEmpty: true
deleteEmpty: true,
},
comboItems: undefined,
@ -30,7 +30,7 @@ Ext.define('Proxmox.form.KVComboBox', {
data[me.getName()] = val;
} else if (me.getDeleteEmpty()) {
data = {};
data['delete'] = me.getName();
data.delete = me.getName();
}
}
return data;
@ -63,7 +63,7 @@ Ext.define('Proxmox.form.KVComboBox', {
me.store = Ext.create('Ext.data.ArrayStore', {
model: 'KeyValue',
data : me.comboItems
data: me.comboItems,
});
if (me.initialConfig.editable === undefined) {
@ -77,6 +77,6 @@ Ext.define('Proxmox.form.KVComboBox', {
var me = this;
me.getStore().setData(items);
}
},
});

View File

@ -2,5 +2,5 @@ Ext.define('Proxmox.form.LanguageSelector', {
extend: 'Proxmox.form.KVComboBox',
xtype: 'proxmoxLanguageSelector',
comboItems: Proxmox.Utils.language_array()
comboItems: Proxmox.Utils.language_array(),
});

View File

@ -9,22 +9,22 @@ Ext.define('Proxmox.form.NetworkSelectorController', {
throw "missing custom view config: nodename";
}
view.getStore().getProxy().setUrl('/api2/json/nodes/'+ view.nodename + '/network');
}
},
});
Ext.define('Proxmox.data.NetworkSelector', {
extend: 'Ext.data.Model',
fields: [
{name: 'active'},
{name: 'cidr'},
{name: 'cidr6'},
{name: 'address'},
{name: 'address6'},
{name: 'comments'},
{name: 'iface'},
{name: 'slaves'},
{name: 'type'}
]
{ name: 'active' },
{ name: 'cidr' },
{ name: 'cidr6' },
{ name: 'address' },
{ name: 'address6' },
{ name: 'comments' },
{ name: 'iface' },
{ name: 'slaves' },
{ name: 'type' },
],
});
Ext.define('Proxmox.form.NetworkSelector', {
@ -55,26 +55,25 @@ Ext.define('Proxmox.form.NetworkSelector', {
autoLoad: true,
model: 'Proxmox.data.NetworkSelector',
proxy: {
type: 'proxmox'
type: 'proxmox',
},
sorters: [
{
property : 'iface',
direction: 'ASC'
}
property: 'iface',
direction: 'ASC',
},
],
filters: [
function(item) {
return item.data.cidr;
}
},
],
listeners: {
load: function(store, records, successfull) {
if (successfull) {
records.forEach(function(record) {
if (record.data.cidr6) {
let dest = (record.data.cidr) ? record.copy(null) : record;
let dest = record.data.cidr ? record.copy(null) : record;
dest.data.cidr = record.data.cidr6;
dest.data.address = record.data.address6;
delete record.data.cidr6;
@ -84,8 +83,8 @@ Ext.define('Proxmox.form.NetworkSelector', {
}
});
}
}
}
},
},
},
listConfig: {
width: 600,
@ -95,7 +94,7 @@ Ext.define('Proxmox.form.NetworkSelector', {
header: gettext('CIDR'),
dataIndex: 'cidr',
hideable: false,
flex: 1
flex: 1,
},
{
@ -106,25 +105,25 @@ Ext.define('Proxmox.form.NetworkSelector', {
{
header: gettext('Interface'),
width: 90,
dataIndex: 'iface'
dataIndex: 'iface',
},
{
header: gettext('Active'),
renderer: Proxmox.Utils.format_boolean,
width: 60,
dataIndex: 'active'
dataIndex: 'active',
},
{
header: gettext('Type'),
width: 80,
hidden: true,
dataIndex: 'type'
dataIndex: 'type',
},
{
header: gettext('Comment'),
flex: 2,
dataIndex: 'comments'
}
]
}
dataIndex: 'comments',
},
],
},
});

View File

@ -7,34 +7,34 @@ Ext.define('Proxmox.form.RRDTypeSelector', {
editable: false,
queryMode: 'local',
value: 'hour',
stateEvents: [ 'select' ],
stateEvents: ['select'],
stateful: true,
stateId: 'proxmoxRRDTypeSelection',
store: {
type: 'array',
fields: [ 'id', 'timeframe', 'cf', 'text' ],
data : [
[ 'hour', 'hour', 'AVERAGE',
gettext('Hour') + ' (' + gettext('average') +')' ],
[ 'hourmax', 'hour', 'MAX',
gettext('Hour') + ' (' + gettext('maximum') + ')' ],
[ 'day', 'day', 'AVERAGE',
gettext('Day') + ' (' + gettext('average') + ')' ],
[ 'daymax', 'day', 'MAX',
gettext('Day') + ' (' + gettext('maximum') + ')' ],
[ 'week', 'week', 'AVERAGE',
gettext('Week') + ' (' + gettext('average') + ')' ],
[ 'weekmax', 'week', 'MAX',
gettext('Week') + ' (' + gettext('maximum') + ')' ],
[ 'month', 'month', 'AVERAGE',
gettext('Month') + ' (' + gettext('average') + ')' ],
[ 'monthmax', 'month', 'MAX',
gettext('Month') + ' (' + gettext('maximum') + ')' ],
[ 'year', 'year', 'AVERAGE',
gettext('Year') + ' (' + gettext('average') + ')' ],
[ 'yearmax', 'year', 'MAX',
gettext('Year') + ' (' + gettext('maximum') + ')' ]
]
fields: ['id', 'timeframe', 'cf', 'text'],
data: [
['hour', 'hour', 'AVERAGE',
gettext('Hour') + ' (' + gettext('average') +')'],
['hourmax', 'hour', 'MAX',
gettext('Hour') + ' (' + gettext('maximum') + ')'],
['day', 'day', 'AVERAGE',
gettext('Day') + ' (' + gettext('average') + ')'],
['daymax', 'day', 'MAX',
gettext('Day') + ' (' + gettext('maximum') + ')'],
['week', 'week', 'AVERAGE',
gettext('Week') + ' (' + gettext('average') + ')'],
['weekmax', 'week', 'MAX',
gettext('Week') + ' (' + gettext('maximum') + ')'],
['month', 'month', 'AVERAGE',
gettext('Month') + ' (' + gettext('average') + ')'],
['monthmax', 'month', 'MAX',
gettext('Month') + ' (' + gettext('maximum') + ')'],
['year', 'year', 'AVERAGE',
gettext('Year') + ' (' + gettext('average') + ')'],
['yearmax', 'year', 'MAX',
gettext('Year') + ' (' + gettext('maximum') + ')'],
],
},
// save current selection in the state Provider so RRDView can read it
getState: function() {
@ -46,13 +46,13 @@ Ext.define('Proxmox.form.RRDTypeSelector', {
return {
id: rec.data.id,
timeframe: rec.data.timeframe,
cf: rec.data.cf
cf: rec.data.cf,
};
},
// set selection based on last saved state
applyState : function(state) {
applyState: function(state) {
if (state && state.id) {
this.setValue(state.id);
}
}
},
});

View File

@ -19,7 +19,7 @@ Ext.define('Proxmox.form.field.Textfield', {
data[me.getName()] = val;
} else if (me.getDeleteEmpty()) {
data = {};
data['delete'] = me.getName();
data.delete = me.getName();
}
}
return data;
@ -39,5 +39,5 @@ Ext.define('Proxmox.form.field.Textfield', {
setAllowBlank: function(allowBlank) {
this.allowBlank = allowBlank;
this.validate();
}
},
});

View File

@ -40,20 +40,20 @@ Ext.define('Proxmox.grid.ObjectGrid', {
subject: text,
onlineHelp: opts.onlineHelp,
fieldDefaults: {
labelWidth: opts.labelWidth || 100
labelWidth: opts.labelWidth || 100,
},
items: {
xtype: 'proxmoxKVComboBox',
name: name,
comboItems: opts.comboItems,
value: opts.defaultValue,
deleteEmpty: opts.deleteEmpty ? true : false,
deleteEmpty: !!opts.deleteEmpty,
emptyText: opts.defaultValue,
labelWidth: Proxmox.Utils.compute_min_label_width(
text, opts.labelWidth),
fieldLabel: text
}
}
fieldLabel: text,
},
},
};
},
@ -73,19 +73,19 @@ Ext.define('Proxmox.grid.ObjectGrid', {
subject: text,
onlineHelp: opts.onlineHelp,
fieldDefaults: {
labelWidth: opts.labelWidth || 100
labelWidth: opts.labelWidth || 100,
},
items: {
xtype: 'proxmoxtextfield',
name: name,
deleteEmpty: opts.deleteEmpty ? true : false,
deleteEmpty: !!opts.deleteEmpty,
emptyText: opts.defaultValue,
labelWidth: Proxmox.Utils.compute_min_label_width(
text, opts.labelWidth),
vtype: opts.vtype,
fieldLabel: text
}
}
fieldLabel: text,
},
},
};
},
@ -105,27 +105,27 @@ Ext.define('Proxmox.grid.ObjectGrid', {
subject: text,
onlineHelp: opts.onlineHelp,
fieldDefaults: {
labelWidth: opts.labelWidth || 100
labelWidth: opts.labelWidth || 100,
},
items: {
xtype: 'proxmoxcheckbox',
name: name,
uncheckedValue: 0,
defaultValue: opts.defaultValue || 0,
checked: opts.defaultValue ? true : false,
deleteDefaultValue: opts.deleteDefaultValue ? true : false,
defaultValue: opts.defaultValue || 0,
checked: !!opts.defaultValue,
deleteDefaultValue: !!opts.deleteDefaultValue,
labelWidth: Proxmox.Utils.compute_min_label_width(
text, opts.labelWidth),
fieldLabel: text
}
}
fieldLabel: text,
},
},
};
},
add_integer_row: function(name, text, opts) {
var me = this;
opts = opts || {}
opts = opts || {};
me.rows = me.rows || {};
me.rows[name] = {
@ -138,7 +138,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
subject: text,
onlineHelp: opts.onlineHelp,
fieldDefaults: {
labelWidth: opts.labelWidth || 100
labelWidth: opts.labelWidth || 100,
},
items: {
xtype: 'proxmoxintegerfield',
@ -146,13 +146,13 @@ Ext.define('Proxmox.grid.ObjectGrid', {
minValue: opts.minValue,
maxValue: opts.maxValue,
emptyText: gettext('Default'),
deleteEmpty: opts.deleteEmpty ? true : false,
deleteEmpty: !!opts.deleteEmpty,
value: opts.defaultValue,
labelWidth: Proxmox.Utils.compute_min_label_width(
text, opts.labelWidth),
fieldLabel: text
}
}
fieldLabel: text,
},
},
};
},
@ -178,12 +178,12 @@ Ext.define('Proxmox.grid.ObjectGrid', {
if (Ext.isString(rowdef.editor)) {
config = Ext.apply({
confid: rec.data.key,
}, me.editorConfig);
}, me.editorConfig);
win = Ext.create(rowdef.editor, config);
} else {
config = Ext.apply({
confid: rec.data.key,
}, me.editorConfig);
}, me.editorConfig);
Ext.apply(config, rowdef.editor);
win = Ext.createWidget(rowdef.editor.xtype, config);
win.load();
@ -210,7 +210,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
renderKey: function(key, metaData, record, rowIndex, colIndex, store) {
var me = this;
var rows = me.rows;
var rowdef = (rows && rows[key]) ? rows[key] : {};
var rowdef = rows && rows[key] ? rows[key] : {};
return rowdef.header || key;
},
@ -218,7 +218,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
var me = this;
var rows = me.rows;
var key = record.data.key;
var rowdef = (rows && rows[key]) ? rows[key] : {};
var rowdef = rows && rows[key] ? rows[key] : {};
var renderer = rowdef.renderer;
if (renderer) {
@ -240,10 +240,10 @@ Ext.define('Proxmox.grid.ObjectGrid', {
}
this.pressedIndex = undefined;
}
},
},
initComponent : function() {
initComponent: function() {
var me = this;
var rows = me.rows;
@ -257,7 +257,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
url: me.url,
interval: me.interval,
extraParams: me.extraParams,
rows: me.rows
rows: me.rows,
});
}
@ -265,7 +265,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore,
sorters: [],
filters: []
filters: [],
});
if (rows) {
@ -280,7 +280,7 @@ Ext.define('Proxmox.grid.ObjectGrid', {
if (me.sorterFn) {
store.sorters.add(Ext.create('Ext.util.Sorter', {
sorterFn: me.sorterFn
sorterFn: me.sorterFn,
}));
}
@ -288,12 +288,12 @@ Ext.define('Proxmox.grid.ObjectGrid', {
filterFn: function(item) {
if (rows) {
var rowdef = rows[item.data.key];
if (!rowdef || (rowdef.visible === false)) {
if (!rowdef || rowdef.visible === false) {
return false;
}
}
return true;
}
},
}));
Proxmox.Utils.monStoreErrors(me, rstore);
@ -306,15 +306,15 @@ Ext.define('Proxmox.grid.ObjectGrid', {
header: gettext('Name'),
width: me.cwidth1 || 200,
dataIndex: 'key',
renderer: me.renderKey
renderer: me.renderKey,
},
{
flex: 1,
header: gettext('Value'),
dataIndex: 'value',
renderer: me.renderValue
}
]
renderer: me.renderValue,
},
],
});
me.callParent();
@ -322,5 +322,5 @@ Ext.define('Proxmox.grid.ObjectGrid', {
if (me.monStoreErrors) {
Proxmox.Utils.monStoreErrors(me, me.store);
}
}
},
});

View File

@ -10,12 +10,12 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
if (pending) {
if (Ext.isDefined(rec.data.pending) && rec.data.pending !== '') {
value = rec.data.pending;
} else if (rec.data['delete'] === 1) {
} else if (rec.data.delete === 1) {
value = defaultValue;
}
}
if (Ext.isDefined(value) && (value !== '')) {
if (Ext.isDefined(value) && value !== '') {
return value;
} else {
return defaultValue;
@ -27,15 +27,15 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
hasPendingChanges: function(key) {
var me = this;
var rows = me.rows;
var rowdef = (rows && rows[key]) ? rows[key] : {};
var keys = rowdef.multiKey || [ key ];
var rowdef = rows && rows[key] ? rows[key] : {};
var keys = rowdef.multiKey || [key];
var pending = false;
Ext.Array.each(keys, function(k) {
var rec = me.store.getById(k);
if (rec && rec.data && (
(Ext.isDefined(rec.data.pending) && rec.data.pending !== '') ||
rec.data['delete'] === 1
Ext.isDefined(rec.data.pending) && rec.data.pending !== '' ||
rec.data.delete === 1
)) {
pending = true;
return false; // break
@ -49,7 +49,7 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
var me = this;
var rows = me.rows;
var key = record.data.key;
var rowdef = (rows && rows[key]) ? rows[key] : {};
var rowdef = rows && rows[key] ? rows[key] : {};
var renderer = rowdef.renderer;
var current = '';
var pendingdelete = '';
@ -68,12 +68,12 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
pending = record.data.pending;
}
if (record.data['delete']) {
if (record.data.delete) {
var delete_all = true;
if (rowdef.multiKey) {
Ext.Array.each(rowdef.multiKey, function(k) {
var rec = me.store.getById(k);
if (rec && rec.data && rec.data['delete'] !== 1) {
if (rec && rec.data && rec.data.delete !== 1) {
delete_all = false;
return false; // break
}
@ -91,7 +91,7 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
}
},
initComponent : function() {
initComponent: function() {
var me = this;
var rows = me.rows;
@ -107,10 +107,10 @@ Ext.define('Proxmox.grid.PendingObjectGrid', {
url: me.url,
interval: me.interval,
extraParams: me.extraParams,
rows: me.rows
rows: me.rows,
});
}
me.callParent();
}
},
});

View File

@ -3,26 +3,25 @@ Ext.define('Proxmox.Mixin.CBind', {
mixinConfig: {
before: {
initComponent: 'cloneTemplates'
}
initComponent: 'cloneTemplates',
},
},
cloneTemplates: function() {
var me = this;
if (typeof(me.cbindData) == "function") {
if (typeof me.cbindData == "function") {
me.cbindData = me.cbindData(me.initialConfig);
}
me.cbindData = me.cbindData || {};
var getConfigValue = function(cname) {
if (cname in me.initialConfig) {
return me.initialConfig[cname];
}
if (cname in me.cbindData) {
let res = me.cbindData[cname];
if (typeof(res) == "function") {
if (typeof res == "function") {
return res(me.initialConfig);
} else {
return res;
@ -73,7 +72,6 @@ Ext.define('Proxmox.Mixin.CBind', {
if (!found) {
throw "unable to parse cbind template '" + cdata + "'";
}
}
};
@ -145,7 +143,7 @@ Ext.define('Proxmox.Mixin.CBind', {
for (prop in me) {
el = me[prop];
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') {
me[prop] = cloneTemplateObject(el);
}
@ -157,5 +155,5 @@ Ext.define('Proxmox.Mixin.CBind', {
};
condCloneProperties();
}
},
});

View File

@ -1,8 +1,8 @@
Ext.define('apt-pkglist', {
extend: 'Ext.data.Model',
fields: [ 'Package', 'Title', 'Description', 'Section', 'Arch',
'Priority', 'Version', 'OldVersion', 'ChangeLogUrl', 'Origin' ],
idProperty: 'Package'
fields: ['Package', 'Title', 'Description', 'Section', 'Arch',
'Priority', 'Version', 'OldVersion', 'ChangeLogUrl', 'Origin'],
idProperty: 'Package',
});
Ext.define('Proxmox.node.APT', {
@ -17,7 +17,7 @@ Ext.define('Proxmox.node.APT', {
header: gettext('Package'),
width: 200,
sortable: true,
dataIndex: 'Package'
dataIndex: 'Package',
},
{
text: gettext('Version'),
@ -26,25 +26,25 @@ Ext.define('Proxmox.node.APT', {
header: gettext('current'),
width: 100,
sortable: false,
dataIndex: 'OldVersion'
dataIndex: 'OldVersion',
},
{
header: gettext('new'),
width: 100,
sortable: false,
dataIndex: 'Version'
}
]
dataIndex: 'Version',
},
],
},
{
header: gettext('Description'),
sortable: false,
dataIndex: 'Title',
flex: 1
}
flex: 1,
},
],
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -56,23 +56,23 @@ Ext.define('Proxmox.node.APT', {
groupField: 'Origin',
proxy: {
type: 'proxmox',
url: "/api2/json/nodes/" + me.nodename + "/apt/update"
url: "/api2/json/nodes/" + me.nodename + "/apt/update",
},
sorters: [
{
property : 'Package',
direction: 'ASC'
}
]
property: 'Package',
direction: 'ASC',
},
],
});
var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
groupHeaderTpl: '{[ "Origin: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
enableGroupingMenu: false
enableGroupingMenu: false,
});
var rowBodyFeature = Ext.create('Ext.grid.feature.RowBody', {
getAdditionalData: function (data, rowIndex, record, orig) {
getAdditionalData: function(data, rowIndex, record, orig) {
var headerCt = this.view.headerCt;
var colspan = headerCt.getColumnCount();
return {
@ -80,9 +80,9 @@ Ext.define('Proxmox.node.APT', {
Ext.String.htmlEncode(data.Description) +
'</div>',
rowBodyCls: me.full_description ? '' : Ext.baseCSSPrefix + 'grid-row-body-hidden',
rowBodyColspan: colspan
rowBodyColspan: colspan,
};
}
},
});
var reload = function() {
@ -91,7 +91,7 @@ Ext.define('Proxmox.node.APT', {
Proxmox.Utils.monStoreErrors(me, store, true);
var apt_command = function(cmd){
var apt_command = function(cmd) {
Proxmox.Utils.API2Request({
url: "/nodes/" + me.nodename + "/apt/" + cmd,
method: 'POST',
@ -102,11 +102,11 @@ Ext.define('Proxmox.node.APT', {
var upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskViewer', {
upid: upid
upid: upid,
});
win.show();
me.mon(win, 'close', reload);
}
},
});
};
@ -116,7 +116,7 @@ Ext.define('Proxmox.node.APT', {
text: gettext('Refresh'),
handler: function() {
Proxmox.Utils.checked_command(function() { apt_command('update'); });
}
},
});
var show_changelog = function(rec) {
@ -130,8 +130,8 @@ Ext.define('Proxmox.node.APT', {
'background-color': 'white',
'white-space': 'pre',
'font-family': 'monospace',
padding: '5px'
}
padding: '5px',
},
});
var win = Ext.create('Ext.window.Window', {
@ -140,7 +140,7 @@ Ext.define('Proxmox.node.APT', {
height: 400,
layout: 'fit',
modal: true,
items: [ view ]
items: [view],
});
Proxmox.Utils.API2Request({
@ -148,7 +148,7 @@ Ext.define('Proxmox.node.APT', {
url: "/nodes/" + me.nodename + "/apt/changelog",
params: {
name: rec.data.Package,
version: rec.data.Version
version: rec.data.Version,
},
method: 'GET',
failure: function(response, opts) {
@ -158,9 +158,8 @@ Ext.define('Proxmox.node.APT', {
success: function(response, opts) {
win.show();
view.update(Ext.htmlEncode(response.result.data));
}
},
});
};
var changelog_btn = new Proxmox.button.Button({
@ -175,7 +174,7 @@ Ext.define('Proxmox.node.APT', {
},
handler: function(b, e, rec) {
show_changelog(rec);
}
},
});
var verbose_desc_checkbox = new Ext.form.field.Checkbox({
@ -185,14 +184,14 @@ Ext.define('Proxmox.node.APT', {
change: (f, val) => {
me.full_description = val;
me.getView().refresh();
}
}
},
},
});
if (me.upgradeBtn) {
me.tbar = [ update_btn, me.upgradeBtn, changelog_btn, '->', verbose_desc_checkbox ];
me.tbar = [update_btn, me.upgradeBtn, changelog_btn, '->', verbose_desc_checkbox];
} else {
me.tbar = [ update_btn, changelog_btn, '->', verbose_desc_checkbox ];
me.tbar = [update_btn, changelog_btn, '->', verbose_desc_checkbox];
}
Ext.apply(me, {
@ -202,17 +201,17 @@ Ext.define('Proxmox.node.APT', {
selModel: sm,
viewConfig: {
stripeRows: false,
emptyText: '<div style="display:table; width:100%; height:100%;"><div style="display:table-cell; vertical-align: middle; text-align:center;"><b>' + gettext('No updates available.') + '</div></div>'
emptyText: '<div style="display:table; width:100%; height:100%;"><div style="display:table-cell; vertical-align: middle; text-align:center;"><b>' + gettext('No updates available.') + '</div></div>',
},
features: [ groupingFeature, rowBodyFeature ],
features: [groupingFeature, rowBodyFeature],
listeners: {
activate: reload,
itemdblclick: function(v, rec) {
show_changelog(rec);
}
}
},
},
});
me.callParent();
}
},
});

View File

@ -2,7 +2,7 @@ Ext.define('Proxmox.node.DNSEdit', {
extend: 'Proxmox.window.Edit',
alias: ['widget.proxmoxNodeDNSEdit'],
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -14,41 +14,41 @@ Ext.define('Proxmox.node.DNSEdit', {
xtype: 'textfield',
fieldLabel: gettext('Search domain'),
name: 'search',
allowBlank: false
allowBlank: false,
},
{
xtype: 'proxmoxtextfield',
fieldLabel: gettext('DNS server') + " 1",
vtype: 'IP64Address',
skipEmptyText: true,
name: 'dns1'
name: 'dns1',
},
{
xtype: 'proxmoxtextfield',
fieldLabel: gettext('DNS server') + " 2",
vtype: 'IP64Address',
skipEmptyText: true,
name: 'dns2'
name: 'dns2',
},
{
xtype: 'proxmoxtextfield',
fieldLabel: gettext('DNS server') + " 3",
vtype: 'IP64Address',
skipEmptyText: true,
name: 'dns3'
}
name: 'dns3',
},
];
Ext.applyIf(me, {
subject: gettext('DNS'),
url: "/api2/extjs/nodes/" + me.nodename + "/dns",
fieldDefaults: {
labelWidth: 120
}
labelWidth: 120,
},
});
me.callParent();
me.load();
}
},
});

View File

@ -2,7 +2,7 @@ Ext.define('Proxmox.node.DNSView', {
extend: 'Proxmox.grid.ObjectGrid',
alias: ['widget.proxmoxNodeDNSView'],
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -11,7 +11,7 @@ Ext.define('Proxmox.node.DNSView', {
var run_editor = function() {
var win = Ext.create('Proxmox.node.DNSEdit', {
nodename: me.nodename
nodename: me.nodename,
});
win.show();
};
@ -25,31 +25,31 @@ Ext.define('Proxmox.node.DNSView', {
search: {
header: 'Search domain',
required: true,
renderer: Ext.htmlEncode
renderer: Ext.htmlEncode,
},
dns1: {
header: gettext('DNS server') + " 1",
required: true,
renderer: Ext.htmlEncode
renderer: Ext.htmlEncode,
},
dns2: {
header: gettext('DNS server') + " 2",
renderer: Ext.htmlEncode
renderer: Ext.htmlEncode,
},
dns3: {
header: gettext('DNS server') + " 3",
renderer: Ext.htmlEncode
}
renderer: Ext.htmlEncode,
},
},
tbar: [
{
text: gettext("Edit"),
handler: run_editor
}
handler: run_editor,
},
],
listeners: {
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
@ -57,5 +57,5 @@ Ext.define('Proxmox.node.DNSView', {
me.on('activate', me.rstore.startUpdate);
me.on('deactivate', me.rstore.stopUpdate);
me.on('destroy', me.rstore.stopUpdate);
}
},
});

View File

@ -17,7 +17,7 @@ Ext.define('Proxmox.node.HostsView', {
Proxmox.Utils.API2Request({
params: {
digest: me.digest,
data: me.down('#hostsfield').getValue()
data: me.down('#hostsfield').getValue(),
},
method: 'POST',
url: '/nodes/' + me.nodename + '/hosts',
@ -27,9 +27,9 @@ Ext.define('Proxmox.node.HostsView', {
},
failure: function(response, opts) {
Ext.Msg.alert('Error', response.htmlStatus);
}
},
});
}
},
},
{
text: gettext('Revert'),
@ -38,8 +38,8 @@ Ext.define('Proxmox.node.HostsView', {
handler: function() {
var me = this.up('panel');
me.down('#hostsfield').reset();
}
}
},
},
],
layout: 'fit',
@ -50,19 +50,19 @@ Ext.define('Proxmox.node.HostsView', {
itemId: 'hostsfield',
fieldStyle: {
'font-family': 'monospace',
'white-space': 'pre'
'white-space': 'pre',
},
listeners: {
dirtychange: function(ta, dirty) {
var me = this.up('panel');
me.down('#savebtn').setDisabled(!dirty);
me.down('#resetbtn').setDisabled(!dirty);
}
}
}
},
},
},
],
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -73,7 +73,7 @@ Ext.define('Proxmox.node.HostsView', {
proxy: {
type: 'proxmox',
url: "/api2/json/nodes/" + me.nodename + "/hosts",
}
},
});
me.callParent();
@ -91,5 +91,5 @@ Ext.define('Proxmox.node.HostsView', {
});
me.reload();
}
},
});

View File

@ -2,7 +2,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
extend: 'Proxmox.window.Edit',
alias: ['widget.proxmoxNodeNetworkEdit'],
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -52,7 +52,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
fieldLabel: gettext('Autostart'),
name: 'autostart',
uncheckedValue: 0,
checked: me.isCreate ? true : undefined
checked: me.isCreate ? true : undefined,
});
}
@ -61,23 +61,23 @@ Ext.define('Proxmox.node.NetworkEdit', {
xtype: 'proxmoxcheckbox',
fieldLabel: gettext('VLAN aware'),
name: 'bridge_vlan_aware',
deleteEmpty: !me.isCreate
deleteEmpty: !me.isCreate,
});
column2.push({
xtype: 'textfield',
fieldLabel: gettext('Bridge ports'),
name: 'bridge_ports'
name: 'bridge_ports',
});
} else if (me.iftype === 'OVSBridge') {
column2.push({
xtype: 'textfield',
fieldLabel: gettext('Bridge ports'),
name: 'ovs_ports'
name: 'ovs_ports',
});
column2.push({
xtype: 'textfield',
fieldLabel: gettext('OVS options'),
name: 'ovs_options'
name: 'ovs_options',
});
} else if (me.iftype === 'OVSPort' || me.iftype === 'OVSIntPort') {
column2.push({
@ -86,23 +86,21 @@ Ext.define('Proxmox.node.NetworkEdit', {
allowBlank: false,
nodename: me.nodename,
bridgeType: 'OVSBridge',
name: 'ovs_bridge'
name: 'ovs_bridge',
});
column2.push({
xtype: 'pveVlanField',
deleteEmpty: !me.isCreate,
name: 'ovs_tag',
value: ''
value: '',
});
column2.push({
xtype: 'textfield',
fieldLabel: gettext('OVS options'),
name: 'ovs_options'
name: 'ovs_options',
});
} else if (me.iftype === 'vlan') {
if (!me.isCreate) {
me.disablevlanid = false;
me.disablevlanrawdevice = false;
me.vlanrawdevicevalue = '';
@ -114,14 +112,12 @@ Ext.define('Proxmox.node.NetworkEdit', {
var arr = Proxmox.Utils.VlanInterface_match.exec(me.iface);
me.vlanrawdevicevalue = arr[1];
me.vlanidvalue = arr[2];
} else if (Proxmox.Utils.Vlan_match.test(me.iface)) {
me.disablevlanid = true;
var arr = Proxmox.Utils.Vlan_match.exec(me.iface);
me.vlanidvalue = arr[1];
}
} else {
me.disablevlanid = true;
me.disablevlanrawdevice = true;
}
@ -131,14 +127,14 @@ Ext.define('Proxmox.node.NetworkEdit', {
fieldLabel: gettext('Vlan raw device'),
name: 'vlan-raw-device',
value: me.vlanrawdevicevalue,
disabled: me.disablevlanrawdevice
disabled: me.disablevlanrawdevice,
});
column2.push({
xtype: 'pveVlanField',
name: 'vlan-id',
value: me.vlanidvalue,
disabled: me.disablevlanid
disabled: me.disablevlanid,
});
columnB.push({
@ -146,26 +142,25 @@ Ext.define('Proxmox.node.NetworkEdit', {
userCls: 'pmx-hint',
text: 'Either add the VLAN number to an existing interface name, or choose your own name and set the VLAN raw device (for the latter ifupdown1 supports vlanXY naming only)',
});
} else if (me.iftype === 'bond') {
column2.push({
xtype: 'textfield',
fieldLabel: gettext('Slaves'),
name: 'slaves'
name: 'slaves',
});
var policySelector = Ext.createWidget('bondPolicySelector', {
fieldLabel: gettext('Hash policy'),
name: 'bond_xmit_hash_policy',
deleteEmpty: !me.isCreate,
disabled: true
disabled: true,
});
var primaryfield = Ext.createWidget('textfield', {
fieldLabel: gettext('bond-primary'),
name: 'bond-primary',
value: '',
disabled: true
disabled: true,
});
column2.push({
@ -190,14 +185,13 @@ Ext.define('Proxmox.node.NetworkEdit', {
primaryfield.setDisabled(true);
primaryfield.setValue('');
}
}
},
},
allowBlank: false
allowBlank: false,
});
column2.push(policySelector);
column2.push(primaryfield);
} else if (me.iftype === 'OVSBond') {
column2.push({
xtype: me.isCreate ? 'PVE.form.BridgeSelector' : 'displayfield',
@ -205,18 +199,18 @@ Ext.define('Proxmox.node.NetworkEdit', {
allowBlank: false,
nodename: me.nodename,
bridgeType: 'OVSBridge',
name: 'ovs_bridge'
name: 'ovs_bridge',
});
column2.push({
xtype: 'pveVlanField',
deleteEmpty: !me.isCreate,
name: 'ovs_tag',
value: ''
value: '',
});
column2.push({
xtype: 'textfield',
fieldLabel: gettext('OVS options'),
name: 'ovs_options'
name: 'ovs_options',
});
}
@ -225,7 +219,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
fieldLabel: gettext('Comment'),
allowBlank: true,
nodename: me.nodename,
name: 'comments'
name: 'comments',
});
var url;
@ -242,7 +236,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
column1.push({
xtype: 'hiddenfield',
name: 'type',
value: me.iftype
value: me.iftype,
},
{
xtype: me.isCreate ? 'textfield' : 'displayfield',
@ -267,8 +261,8 @@ Ext.define('Proxmox.node.NetworkEdit', {
vlanrawdeviceField.setDisabled(false);
}
}
}
}
},
},
});
if (me.iftype === 'OVSBond') {
@ -279,47 +273,46 @@ Ext.define('Proxmox.node.NetworkEdit', {
name: 'bond_mode',
openvswitch: true,
value: me.isCreate ? 'active-backup' : undefined,
allowBlank: false
allowBlank: false,
},
{
xtype: 'textfield',
fieldLabel: gettext('Slaves'),
name: 'ovs_bonds'
}
name: 'ovs_bonds',
},
);
} else {
column1.push(
{
xtype: 'proxmoxtextfield',
deleteEmpty: !me.isCreate,
fieldLabel: 'IPv4/CIDR',
vtype: 'IPCIDRAddress',
name: 'cidr'
name: 'cidr',
},
{
xtype: 'proxmoxtextfield',
deleteEmpty: !me.isCreate,
fieldLabel: gettext('Gateway') + ' (IPv4)',
vtype: 'IPAddress',
name: 'gateway'
name: 'gateway',
},
{
xtype: 'proxmoxtextfield',
deleteEmpty: !me.isCreate,
fieldLabel: 'IPv6/CIDR',
vtype: 'IP6CIDRAddress',
name: 'cidr6'
name: 'cidr6',
},
{
xtype: 'proxmoxtextfield',
deleteEmpty: !me.isCreate,
fieldLabel: gettext('Gateway') + ' (IPv6)',
vtype: 'IP6Address',
name: 'gateway6'
name: 'gateway6',
},
);
advancedColumn1. push(
advancedColumn1.push(
{
xtype: 'proxmoxintegerfield',
minValue: 1280,
@ -327,7 +320,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
deleteEmpty: !me.isCreate,
emptyText: 1500,
fieldLabel: 'MTU',
name: 'mtu'
name: 'mtu',
},
);
}
@ -342,7 +335,7 @@ Ext.define('Proxmox.node.NetworkEdit', {
columnB: columnB,
advancedColumn1: advancedColumn1,
advancedColumn2: advancedColumn2,
}
},
});
me.callParent();
@ -362,8 +355,8 @@ Ext.define('Proxmox.node.NetworkEdit', {
}
me.setValues(data);
me.isValid(); // trigger validation
}
},
});
}
}
},
});

View File

@ -17,7 +17,7 @@ Ext.define('proxmox-networks', {
'slaves',
'type',
],
idProperty: 'iface'
idProperty: 'iface',
});
Ext.define('Proxmox.node.NetworkView', {
@ -31,7 +31,7 @@ Ext.define('Proxmox.node.NetworkView', {
showApplyBtn: false,
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -44,14 +44,14 @@ Ext.define('Proxmox.node.NetworkView', {
model: 'proxmox-networks',
proxy: {
type: 'proxmox',
url: '/api2/json' + baseUrl
url: '/api2/json' + baseUrl,
},
sorters: [
{
property : 'iface',
direction: 'ASC'
}
]
property: 'iface',
direction: 'ASC',
},
],
});
var reload = function() {
@ -81,7 +81,7 @@ Ext.define('Proxmox.node.NetworkView', {
apply_btn.setDisabled(false);
revert_btn.setDisabled(false);
}
}
},
});
};
@ -96,7 +96,7 @@ Ext.define('Proxmox.node.NetworkView', {
var win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename,
iface: rec.data.iface,
iftype: rec.data.type
iftype: rec.data.type,
});
win.show();
win.on('destroy', reload);
@ -105,13 +105,13 @@ Ext.define('Proxmox.node.NetworkView', {
var edit_btn = new Ext.Button({
text: gettext('Edit'),
disabled: true,
handler: run_editor
handler: run_editor,
});
var del_btn = new Ext.Button({
text: gettext('Remove'),
disabled: true,
handler: function(){
handler: function() {
var grid = me.down('gridpanel');
var sm = grid.getSelectionModel();
var rec = sm.getSelection()[0];
@ -130,9 +130,9 @@ Ext.define('Proxmox.node.NetworkView', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
}
},
});
var apply_btn = Ext.create('Proxmox.button.Button', {
@ -151,15 +151,15 @@ Ext.define('Proxmox.node.NetworkView', {
var win = Ext.create('Proxmox.window.TaskProgress', {
taskDone: reload,
upid: upid
upid: upid,
});
win.show();
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
}
},
});
var set_button_status = function() {
@ -207,7 +207,7 @@ Ext.define('Proxmox.node.NetworkView', {
});
win.on('destroy', reload);
win.show();
}
},
});
}
@ -223,7 +223,7 @@ Ext.define('Proxmox.node.NetworkView', {
});
win.on('destroy', reload);
win.show();
}
},
});
}
@ -239,7 +239,7 @@ Ext.define('Proxmox.node.NetworkView', {
});
win.on('destroy', reload);
win.show();
}
},
});
}
@ -255,11 +255,11 @@ Ext.define('Proxmox.node.NetworkView', {
var win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename,
iftype: 'OVSBridge',
iface_default: find_next_iface_id('vmbr')
iface_default: find_next_iface_id('vmbr'),
});
win.on('destroy', reload);
win.show();
}
},
},
{
text: Proxmox.Utils.render_network_iface_type('OVSBond'),
@ -267,23 +267,23 @@ Ext.define('Proxmox.node.NetworkView', {
var win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename,
iftype: 'OVSBond',
iface_default: find_next_iface_id('bond')
iface_default: find_next_iface_id('bond'),
});
win.on('destroy', reload);
win.show();
}
},
},
{
text: Proxmox.Utils.render_network_iface_type('OVSIntPort'),
handler: function() {
var win = Ext.create('Proxmox.node.NetworkEdit', {
nodename: me.nodename,
iftype: 'OVSIntPort'
iftype: 'OVSIntPort',
});
win.on('destroy', reload);
win.show();
}
}
},
},
);
}
@ -307,8 +307,8 @@ Ext.define('Proxmox.node.NetworkView', {
text: gettext('Create'),
menu: {
plain: true,
items: menu_items
}
items: menu_items,
},
}, '-',
{
text: gettext('Revert'),
@ -323,14 +323,14 @@ Ext.define('Proxmox.node.NetworkView', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
}
},
},
edit_btn,
del_btn,
'-',
apply_btn
apply_btn,
],
items: [
{
@ -344,14 +344,14 @@ Ext.define('Proxmox.node.NetworkView', {
{
header: gettext('Name'),
sortable: true,
dataIndex: 'iface'
dataIndex: 'iface',
},
{
header: gettext('Type'),
sortable: true,
width: 120,
renderer: Proxmox.Utils.render_network_iface_type,
dataIndex: 'type'
dataIndex: 'type',
},
{
xtype: 'booleancolumn',
@ -371,7 +371,7 @@ Ext.define('Proxmox.node.NetworkView', {
dataIndex: 'autostart',
trueText: Proxmox.Utils.yesText,
falseText: Proxmox.Utils.noText,
undefinedText: Proxmox.Utils.noText
undefinedText: Proxmox.Utils.noText,
},
{
xtype: 'booleancolumn',
@ -381,12 +381,12 @@ Ext.define('Proxmox.node.NetworkView', {
dataIndex: 'bridge_vlan_aware',
trueText: Proxmox.Utils.yesText,
falseText: Proxmox.Utils.noText,
undefinedText: Proxmox.Utils.noText
undefinedText: Proxmox.Utils.noText,
},
{
header: gettext('Ports/Slaves'),
dataIndex: 'type',
renderer: render_ports
renderer: render_ports,
},
{
header: gettext('Bond Mode'),
@ -432,13 +432,13 @@ Ext.define('Proxmox.node.NetworkView', {
header: gettext('Comment'),
dataIndex: 'comments',
flex: 1,
renderer: Ext.String.htmlEncode
}
renderer: Ext.String.htmlEncode,
},
],
listeners: {
selectionchange: set_button_status,
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
},
{
border: false,
@ -448,17 +448,17 @@ Ext.define('Proxmox.node.NetworkView', {
itemId: 'changes',
tbar: [
gettext('Pending changes') + ' (' +
gettext("Either reboot or use 'Apply Configuration' (needs ifupdown2) to activate") + ')'
gettext("Either reboot or use 'Apply Configuration' (needs ifupdown2) to activate") + ')',
],
split: true,
bodyPadding: 5,
flex: 0.6,
html: gettext("No changes")
}
html: gettext("No changes"),
},
],
});
me.callParent();
reload();
}
},
});

View File

@ -1,7 +1,7 @@
Ext.define('proxmox-services', {
extend: 'Ext.data.Model',
fields: [ 'service', 'name', 'desc', 'state' ],
idProperty: 'service'
fields: ['service', 'name', 'desc', 'state'],
idProperty: 'service',
});
Ext.define('Proxmox.node.ServiceView', {
@ -11,7 +11,7 @@ Ext.define('Proxmox.node.ServiceView', {
startOnlyServices: {},
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -24,8 +24,8 @@ Ext.define('Proxmox.node.ServiceView', {
model: 'proxmox-services',
proxy: {
type: 'proxmox',
url: "/api2/json/nodes/" + me.nodename + "/services"
}
url: "/api2/json/nodes/" + me.nodename + "/services",
},
});
var store = Ext.create('Proxmox.data.DiffStore', {
@ -33,10 +33,10 @@ Ext.define('Proxmox.node.ServiceView', {
sortAfterUpdate: true,
sorters: [
{
property : 'name',
direction: 'ASC'
}
]
property: 'name',
direction: 'ASC',
},
],
});
var view_service_log = function() {
@ -52,8 +52,8 @@ Ext.define('Proxmox.node.ServiceView', {
xtype: 'proxmoxLogView',
url: "/api2/extjs/nodes/" + me.nodename + "/syslog?service=" +
rec.data.service,
log_select_timespan: 1
}
log_select_timespan: 1,
},
});
win.show();
};
@ -73,41 +73,41 @@ Ext.define('Proxmox.node.ServiceView', {
var upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskProgress', {
upid: upid
upid: upid,
});
win.show();
}
},
});
};
var start_btn = new Ext.Button({
text: gettext('Start'),
disabled: true,
handler: function(){
handler: function() {
service_cmd("start");
}
},
});
var stop_btn = new Ext.Button({
text: gettext('Stop'),
disabled: true,
handler: function(){
handler: function() {
service_cmd("stop");
}
},
});
var restart_btn = new Ext.Button({
text: gettext('Restart'),
disabled: true,
handler: function(){
handler: function() {
service_cmd("restart");
}
},
});
var syslog_btn = new Ext.Button({
text: gettext('Syslog'),
disabled: true,
handler: view_service_log
handler: view_service_log,
});
var set_button_status = function() {
@ -135,8 +135,7 @@ Ext.define('Proxmox.node.ServiceView', {
restart_btn.disable();
}
stop_btn.disable();
} else {
if (state == 'running') {
} else if (state == 'running') {
start_btn.disable();
restart_btn.enable();
stop_btn.enable();
@ -145,7 +144,6 @@ Ext.define('Proxmox.node.ServiceView', {
restart_btn.disable();
stop_btn.disable();
}
}
};
me.mon(store, 'refresh', set_button_status);
@ -155,35 +153,35 @@ Ext.define('Proxmox.node.ServiceView', {
Ext.apply(me, {
store: store,
stateful: false,
tbar: [ start_btn, stop_btn, restart_btn, syslog_btn ],
tbar: [start_btn, stop_btn, restart_btn, syslog_btn],
columns: [
{
header: gettext('Name'),
flex: 1,
sortable: true,
dataIndex: 'name'
dataIndex: 'name',
},
{
header: gettext('Status'),
width: 100,
sortable: true,
dataIndex: 'state'
dataIndex: 'state',
},
{
header: gettext('Description'),
renderer: Ext.String.htmlEncode,
dataIndex: 'desc',
flex: 2
}
flex: 2,
},
],
listeners: {
selectionchange: set_button_status,
itemdblclick: view_service_log,
activate: rstore.startUpdate,
destroy: rstore.stopUpdate
}
destroy: rstore.stopUpdate,
},
});
me.callParent();
}
},
});

View File

@ -9,7 +9,7 @@ Ext.define('Proxmox.node.TimeEdit', {
autoLoad: true,
fieldDefaults: {
labelWidth: 70
labelWidth: 70,
},
items: {
@ -22,10 +22,10 @@ Ext.define('Proxmox.node.TimeEdit', {
editable: true,
anyMatch: true,
forceSelection: true,
allowBlank: false
allowBlank: false,
},
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
@ -34,5 +34,5 @@ Ext.define('Proxmox.node.TimeEdit', {
me.url = "/api2/extjs/nodes/" + me.nodename + "/time";
me.callParent();
}
},
});

View File

@ -2,22 +2,22 @@ Ext.define('Proxmox.node.TimeView', {
extend: 'Proxmox.grid.ObjectGrid',
alias: ['widget.proxmoxNodeTimeView'],
initComponent : function() {
initComponent: function() {
var me = this;
if (!me.nodename) {
throw "no node name specified";
}
var tzoffset = (new Date()).getTimezoneOffset()*60000;
var tzoffset = new Date().getTimezoneOffset()*60000;
var renderlocaltime = function(value) {
var servertime = new Date((value * 1000) + tzoffset);
var servertime = new Date(value * 1000 + tzoffset);
return Ext.Date.format(servertime, 'Y-m-d H:i:s');
};
var run_editor = function() {
var win = Ext.create('Proxmox.node.TimeEdit', {
nodename: me.nodename
nodename: me.nodename,
});
win.show();
};
@ -30,23 +30,23 @@ Ext.define('Proxmox.node.TimeView', {
rows: {
timezone: {
header: gettext('Time zone'),
required: true
required: true,
},
localtime: {
header: gettext('Server time'),
required: true,
renderer: renderlocaltime
}
renderer: renderlocaltime,
},
},
tbar: [
{
text: gettext("Edit"),
handler: run_editor
}
handler: run_editor,
},
],
listeners: {
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
@ -54,5 +54,5 @@ Ext.define('Proxmox.node.TimeView', {
me.on('activate', me.rstore.startUpdate);
me.on('deactivate', me.rstore.stopUpdate);
me.on('destroy', me.rstore.stopUpdate);
}
},
});

View File

@ -4,17 +4,17 @@ Ext.define('Proxmox.panel.GaugeWidget', {
defaults: {
style: {
'text-align':'center'
}
'text-align': 'center',
},
},
items: [
{
xtype: 'box',
itemId: 'title',
data: {
title: ''
title: '',
},
tpl: '<h3>{title}</h3>'
tpl: '<h3>{title}</h3>',
},
{
xtype: 'polar',
@ -28,7 +28,7 @@ Ext.define('Proxmox.panel.GaugeWidget', {
sectors: [0],
donut: 90,
needleLength: 100,
totalAngle: Math.PI
totalAngle: Math.PI,
}],
sprites: [{
id: 'valueSprite',
@ -38,13 +38,13 @@ Ext.define('Proxmox.panel.GaugeWidget', {
textBaseline: 'bottom',
x: 125,
y: 110,
fontSize: 30
}]
fontSize: 30,
}],
},
{
xtype: 'box',
itemId: 'text'
}
itemId: 'text',
},
],
header: false,
@ -93,10 +93,10 @@ Ext.define('Proxmox.panel.GaugeWidget', {
me.callParent();
if (me.title) {
me.getComponent('title').update({title: me.title});
me.getComponent('title').update({ title: me.title });
}
me.text = me.getComponent('text');
me.chart = me.getComponent('chart');
me.valueSprite = me.chart.getSurface('chart').get('valueSprite');
}
},
});

View File

@ -12,7 +12,7 @@ Ext.define('Proxmox.panel.InputPanel', {
if (this.onlineHelp) {
Ext.GlobalEvents.fireEvent('proxmoxHideHelp', this.onlineHelp);
}
}
},
},
border: false,
@ -87,8 +87,8 @@ Ext.define('Proxmox.panel.InputPanel', {
{
columnWidth: 1,
layout: 'anchor',
items: me.items
}
items: me.items,
},
];
me.items = undefined;
} else if (me.column4) {
@ -98,33 +98,33 @@ Ext.define('Proxmox.panel.InputPanel', {
columnWidth: 0.25,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column1
items: me.column1,
},
{
columnWidth: 0.25,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column2
items: me.column2,
},
{
columnWidth: 0.25,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column3
items: me.column3,
},
{
columnWidth: 0.25,
padding: '0 0 0 10',
layout: 'anchor',
items: me.column4
}
items: me.column4,
},
];
if (me.columnB) {
items.push({
columnWidth: 1,
padding: '10 0 0 0',
layout: 'anchor',
items: me.columnB
items: me.columnB,
});
}
} else if (me.column1) {
@ -134,21 +134,21 @@ Ext.define('Proxmox.panel.InputPanel', {
columnWidth: 0.5,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column1
items: me.column1,
},
{
columnWidth: 0.5,
padding: '0 0 0 10',
layout: 'anchor',
items: me.column2 || [] // allow empty column
}
items: me.column2 || [], // allow empty column
},
];
if (me.columnB) {
items.push({
columnWidth: 1,
padding: '10 0 0 0',
layout: 'anchor',
items: me.columnB
items: me.columnB,
});
}
} else {
@ -161,8 +161,8 @@ Ext.define('Proxmox.panel.InputPanel', {
{
columnWidth: 1,
layout: 'anchor',
items: me.advancedItems
}
items: me.advancedItems,
},
];
me.advancedItems = undefined;
} else if (me.advancedColumn1) {
@ -171,14 +171,14 @@ Ext.define('Proxmox.panel.InputPanel', {
columnWidth: 0.5,
padding: '0 10 0 0',
layout: 'anchor',
items: me.advancedColumn1
items: me.advancedColumn1,
},
{
columnWidth: 0.5,
padding: '0 0 0 10',
layout: 'anchor',
items: me.advancedColumn2 || [] // allow empty column
}
items: me.advancedColumn2 || [], // allow empty column
},
];
me.advancedColumn1 = undefined;
@ -189,7 +189,7 @@ Ext.define('Proxmox.panel.InputPanel', {
columnWidth: 1,
padding: '10 0 0 0',
layout: 'anchor',
items: me.advancedColumnB
items: me.advancedColumnB,
});
me.advancedColumnB = undefined;
}
@ -203,8 +203,8 @@ Ext.define('Proxmox.panel.InputPanel', {
hidden: false,
border: true,
autoEl: {
tag: 'hr'
}
tag: 'hr',
},
});
items.push({
columnWidth: 1,
@ -213,9 +213,9 @@ Ext.define('Proxmox.panel.InputPanel', {
hidden: !me.showAdvanced,
layout: 'column',
defaults: {
border: false
border: false,
},
items: advItems
items: advItems,
});
}
@ -225,17 +225,17 @@ Ext.define('Proxmox.panel.InputPanel', {
items: Ext.apply(me.useFieldContainer, {
layout: 'column',
defaultType: 'container',
items: items
})
items: items,
}),
});
} else {
Ext.apply(me, {
layout: 'column',
defaultType: 'container',
items: items
items: items,
});
}
me.callParent();
}
},
});

View File

@ -29,7 +29,7 @@ Ext.define('Proxmox.panel.JournalView', {
false,
false,
Ext.Date.format(since, "U"),
Ext.Date.format(until, "U")
Ext.Date.format(until, "U"),
]);
},
@ -120,7 +120,7 @@ Ext.define('Proxmox.panel.JournalView', {
if (livemode) {
if (!top && view.startcursor) {
params = {
startcursor: view.startcursor
startcursor: view.startcursor,
};
} else if (view.endcursor) {
params.endcursor = view.endcursor;
@ -128,13 +128,13 @@ Ext.define('Proxmox.panel.JournalView', {
} else {
params = {
since: since,
until: until
until: until,
};
}
Proxmox.Utils.API2Request({
url: view.url,
params: params,
waitMsgTarget: (!livemode) ? view : undefined,
waitMsgTarget: !livemode ? view : undefined,
method: 'GET',
success: function(response) {
Proxmox.Utils.setErrorMask(me, false);
@ -154,7 +154,7 @@ Ext.define('Proxmox.panel.JournalView', {
me.requested = false;
view.loadTask.delay(200);
}
}
},
});
},
@ -203,7 +203,7 @@ Ext.define('Proxmox.panel.JournalView', {
view.loadTask.delay(200, undefined, undefined, [true, false]);
}
},
interval: 1000
interval: 1000,
});
},
@ -222,7 +222,7 @@ Ext.define('Proxmox.panel.JournalView', {
var me = this;
me.getViewModel().set('livemode', false);
me.updateView([], false);
}
},
},
onDestroy: function() {
@ -242,8 +242,8 @@ Ext.define('Proxmox.panel.JournalView', {
data: {
livemode: true,
until: null,
since: null
}
since: null,
},
},
layout: 'auto',
@ -259,12 +259,12 @@ Ext.define('Proxmox.panel.JournalView', {
fn: function(scroller, x, y) {
var controller = this.component.getController();
if (controller) { // on destroy, controller can be gone
controller.onScroll(x,y);
controller.onScroll(x, y);
}
},
buffer: 200
buffer: 200,
},
}
},
},
tbar: {
@ -277,23 +277,23 @@ Ext.define('Proxmox.panel.JournalView', {
{
text: gettext('Live Mode'),
bind: {
pressed: '{livemode}'
pressed: '{livemode}',
},
handler: 'onLiveMode',
},
{
text: gettext('Select Timespan'),
bind: {
pressed: '{!livemode}'
pressed: '{!livemode}',
},
handler: 'onTimespan',
}
]
},
],
},
{
xtype: 'box',
bind: { disabled: '{livemode}' },
autoEl: { cn: gettext('Since') + ':' }
autoEl: { cn: gettext('Since') + ':' },
},
{
xtype: 'datefield',
@ -303,13 +303,13 @@ Ext.define('Proxmox.panel.JournalView', {
bind: {
disabled: '{livemode}',
value: '{since}',
maxValue: '{until}'
}
maxValue: '{until}',
},
},
{
xtype: 'box',
bind: { disabled: '{livemode}' },
autoEl: { cn: gettext('Until') + ':' }
autoEl: { cn: gettext('Until') + ':' },
},
{
xtype: 'datefield',
@ -319,8 +319,8 @@ Ext.define('Proxmox.panel.JournalView', {
bind: {
disabled: '{livemode}',
value: '{until}',
minValue: '{since}'
}
minValue: '{since}',
},
},
{
xtype: 'button',
@ -328,10 +328,10 @@ Ext.define('Proxmox.panel.JournalView', {
reference: 'updateBtn',
handler: 'updateParams',
bind: {
disabled: '{livemode}'
}
}
]
disabled: '{livemode}',
},
},
],
},
items: [
@ -340,8 +340,8 @@ Ext.define('Proxmox.panel.JournalView', {
reference: 'content',
style: {
font: 'normal 11px tahoma, arial, verdana, sans-serif',
'white-space': 'pre'
'white-space': 'pre',
},
}
]
},
],
});

View File

@ -58,7 +58,7 @@ Ext.define('Proxmox.panel.LogView', {
viewModel.set('data', {
first: first,
total: total,
textlen: text.length
textlen: text.length,
});
var scrollPos = me.scrollPosBottom();
@ -117,7 +117,7 @@ Ext.define('Proxmox.panel.LogView', {
me.requested = false;
view.loadTask.delay(200);
}
}
},
});
},
@ -135,7 +135,7 @@ Ext.define('Proxmox.panel.LogView', {
var viewStart = Math.max(parseInt(line - 1 - view.viewBuffer, 10), 0);
var viewEnd = parseInt(line + viewLines + 1 + view.viewBuffer, 10);
if (viewStart < start || viewEnd > (start+limit)) {
if (viewStart < start || viewEnd > start+limit) {
viewModel.set('params.start',
Math.max(parseInt(line - limit/2 + 10, 10), 0));
view.loadTask.delay(200);
@ -171,9 +171,9 @@ Ext.define('Proxmox.panel.LogView', {
view.loadTask.delay(200);
}
},
interval: 1000
interval: 1000,
});
}
},
},
onDestroy: function() {
@ -196,13 +196,13 @@ Ext.define('Proxmox.panel.LogView', {
data: {
start: 0,
total: 0,
textlen: 0
textlen: 0,
},
params: {
start: 0,
limit: 500,
}
}
},
},
},
layout: 'auto',
@ -218,17 +218,17 @@ Ext.define('Proxmox.panel.LogView', {
fn: function(scroller, x, y) {
var controller = this.component.getController();
if (controller) { // on destroy, controller can be gone
controller.onScroll(x,y);
controller.onScroll(x, y);
}
},
buffer: 200
buffer: 200,
},
}
},
},
tbar: {
bind: {
hidden: '{hide_timespan}'
hidden: '{hide_timespan}',
},
items: [
'->',
@ -240,8 +240,8 @@ Ext.define('Proxmox.panel.LogView', {
format: 'Y-m-d',
bind: {
value: '{since}',
maxValue: '{until}'
}
maxValue: '{until}',
},
},
'Until: ',
{
@ -251,14 +251,14 @@ Ext.define('Proxmox.panel.LogView', {
format: 'Y-m-d',
bind: {
value: '{until}',
minValue: '{since}'
}
minValue: '{since}',
},
},
{
xtype: 'button',
text: 'Update',
handler: 'updateParams'
}
handler: 'updateParams',
},
],
},
@ -268,8 +268,8 @@ Ext.define('Proxmox.panel.LogView', {
reference: 'content',
style: {
font: 'normal 11px tahoma, arial, verdana, sans-serif',
'white-space': 'pre'
'white-space': 'pre',
},
}
]
},
],
});

View File

@ -8,11 +8,11 @@ Ext.define('Proxmox.widget.RRDChart', {
xclass: 'Ext.app.ViewController',
convertToUnits: function(value) {
var units = ['', 'k','M','G','T', 'P'];
var units = ['', 'k', 'M', 'G', 'T', 'P'];
var si = 0;
let format = '0.##';
if (value < 0.1) format += '#';
while(value >= 1000 && si < (units.length -1)){
while (value >= 1000 && si < units.length -1) {
value = value / 1000;
si++;
}
@ -58,7 +58,7 @@ Ext.define('Proxmox.widget.RRDChart', {
var ourUndoZoomButton = chart.header.tools[0];
var undoButton = chart.interactions[0].getUndoButton();
ourUndoZoomButton.setDisabled(undoButton.isDisabled());
}
},
},
width: 770,
@ -66,7 +66,7 @@ Ext.define('Proxmox.widget.RRDChart', {
animation: false,
interactions: [
{
type: 'crosszoom'
type: 'crosszoom',
},
],
legend: {
@ -78,17 +78,17 @@ Ext.define('Proxmox.widget.RRDChart', {
position: 'left',
grid: true,
renderer: 'leftAxisRenderer',
minimum: 0
minimum: 0,
},
{
type: 'time',
position: 'bottom',
grid: true,
fields: ['time']
fields: ['time'],
},
],
listeners: {
animationend: 'onAfterAnimation'
animationend: 'onAfterAnimation',
},
initComponent: function() {
@ -133,17 +133,17 @@ Ext.define('Proxmox.widget.RRDChart', {
type: 'minus',
disabled: true,
tooltip: gettext('Undo Zoom'),
handler: function(){
handler: function() {
var undoButton = me.interactions[0].getUndoButton();
if (undoButton.handler) {
undoButton.handler();
}
}
},
});
}
// add a series for each field we get
me.fields.forEach(function(item, index){
me.fields.forEach(function(item, index) {
var title = item;
if (me.fieldTitles && me.fieldTitles[index]) {
title = me.fieldTitles[index];
@ -157,32 +157,32 @@ Ext.define('Proxmox.widget.RRDChart', {
fill: true,
style: {
lineWidth: 1.5,
opacity: 0.60
opacity: 0.60,
},
marker: {
opacity: 0,
scaling: 0.01,
fx: {
duration: 200,
easing: 'easeOut'
}
easing: 'easeOut',
},
},
highlightCfg: {
opacity: 1,
scaling: 1.5
scaling: 1.5,
},
tooltip: {
trackMouse: true,
renderer: 'onSeriesTooltipRender'
}
renderer: 'onSeriesTooltipRender',
},
},
me.seriesConfig
me.seriesConfig,
));
});
// enable animation after the store is loaded
me.store.onAfter('load', function() {
me.setAnimation(true);
}, this, {single: true});
}
}, this, { single: true });
},
});

View File

@ -88,7 +88,7 @@ Ext.define('Proxmox.window.Edit', {
Ext.iterate(values, function(id, val) {
let fields = formfields.filterBy((f) =>
(f.id === id || f.name === id || f.dataIndex === id) && !f.up('inputpanel')
(f.id === id || f.name === id || f.dataIndex === id) && !f.up('inputpanel'),
);
fields.each((field) => {
field.setValue(val);

View File

@ -18,8 +18,8 @@ Ext.define('Proxmox.window.TaskProgress', {
interval: 1000,
rows: {
status: { defaultValue: 'unknown' },
exitstatus: { defaultValue: 'unknown' }
}
exitstatus: { defaultValue: 'unknown' },
},
});
me.on('destroy', statstore.stopUpdate);
@ -65,13 +65,13 @@ Ext.define('Proxmox.window.TaskProgress', {
handler: function() {
var win = Ext.create('Proxmox.window.TaskViewer', {
taskDone: me.taskDone,
upid: me.upid
upid: me.upid,
});
win.show();
me.close();
}
}
]
},
},
],
});
me.callParent();
@ -79,7 +79,7 @@ Ext.define('Proxmox.window.TaskProgress', {
statstore.startUpdate();
pbar.wait();
}
},
});
// fixme: how can we avoid those lint errors?
@ -116,27 +116,27 @@ Ext.define('Proxmox.window.TaskViewer', {
if (es) {
return value + ': ' + es;
}
}
},
},
exitstatus: {
visible: false
visible: false,
},
type: {
header: gettext('Task type'),
required: true
required: true,
},
user: {
header: gettext('User name'),
renderer: Ext.String.htmlEncode,
required: true
required: true,
},
node: {
header: gettext('Node'),
required: true
required: true,
},
pid: {
header: gettext('Process ID'),
required: true
required: true,
},
task_id: {
header: gettext('Task ID'),
@ -144,18 +144,18 @@ Ext.define('Proxmox.window.TaskViewer', {
starttime: {
header: gettext('Start Time'),
required: true,
renderer: Proxmox.Utils.render_timestamp
renderer: Proxmox.Utils.render_timestamp,
},
upid: {
header: gettext('Unique task ID'),
renderer: Ext.String.htmlEncode,
}
},
};
var statstore = Ext.create('Proxmox.data.ObjectStore', {
url: "/api2/json/nodes/" + task.node + "/tasks/" + me.upid + "/status",
interval: 1000,
rows: rows
rows: rows,
});
me.on('destroy', statstore.stopUpdate);
@ -167,36 +167,36 @@ Ext.define('Proxmox.window.TaskViewer', {
method: 'DELETE',
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
};
var stop_btn1 = new Ext.Button({
text: gettext('Stop'),
disabled: true,
handler: stop_task
handler: stop_task,
});
var stop_btn2 = new Ext.Button({
text: gettext('Stop'),
disabled: true,
handler: stop_task
handler: stop_task,
});
statgrid = Ext.create('Proxmox.grid.ObjectGrid', {
title: gettext('Status'),
layout: 'fit',
tbar: [ stop_btn1 ],
tbar: [stop_btn1],
rstore: statstore,
rows: rows,
border: false
border: false,
});
var logView = Ext.create('Proxmox.panel.LogView', {
title: gettext('Output'),
tbar: [ stop_btn2 ],
tbar: [stop_btn2],
border: false,
url: "/api2/extjs/nodes/" + task.node + "/tasks/" + me.upid + "/log"
url: "/api2/extjs/nodes/" + task.node + "/tasks/" + me.upid + "/log",
});
me.mon(statstore, 'load', function() {
@ -224,13 +224,13 @@ Ext.define('Proxmox.window.TaskViewer', {
items: [{
xtype: 'tabpanel',
region: 'center',
items: [ logView, statgrid ]
}]
items: [logView, statgrid],
}],
});
me.callParent();
logView.fireEvent('show', logView);
}
},
});