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:
parent
94ac12f1bd
commit
01031528ad
117
Toolkit.js
117
Toolkit.js
@ -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@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;
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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]);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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',
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -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', {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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'],
|
||||
],
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -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'],
|
||||
],
|
||||
});
|
||||
|
||||
|
@ -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]);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
@ -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', {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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']);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -24,7 +24,7 @@ Ext.define('Proxmox.form.field.DisplayEdit', {
|
||||
|
||||
layout: 'fit',
|
||||
defaults: {
|
||||
hideLabel: true
|
||||
hideLabel: true,
|
||||
},
|
||||
|
||||
initComponent: function() {
|
||||
|
@ -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;
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
@ -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(),
|
||||
});
|
||||
|
@ -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',
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
79
node/APT.js
79
node/APT.js
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -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',
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
});
|
||||
|
@ -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',
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
});
|
||||
|
@ -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 });
|
||||
},
|
||||
});
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user