ui: eslint: fix trailing comma and comma related whitespaces errors

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-01-19 17:31:03 +01:00
parent 2a4971d8c9
commit f6710aac38
231 changed files with 3847 additions and 3847 deletions

View File

@ -366,7 +366,7 @@ Ext.define('PVE.Parser', { statics: {
Ext.Object.each(netif, function(iface, data) {
var tmparray = [];
Ext.Array.each(['ifname', 'mac', 'bridge', 'host_ifname' , 'host_mac', 'mac_filter', 'tag', 'firewall'], function(key) {
Ext.Array.each(['ifname', 'mac', 'bridge', 'host_ifname', 'host_mac', 'mac_filter', 'tag', 'firewall'], function(key) {
var value = data[key];
if (key === 'bridge'){
if(data.tag){
@ -686,7 +686,7 @@ Ext.define('PVE.Parser', { statics: {
return {
type: m[1],
key: m[2],
comment: m[3]
comment: m[3],
};
}
if (m[2].match(typere)) {
@ -694,7 +694,7 @@ Ext.define('PVE.Parser', { statics: {
options: m[1],
type: m[2],
key: m[3],
comment: m[4]
comment: m[4],
};
}
return null;

View File

@ -44,7 +44,7 @@ Ext.define('PVE.StateProvider', {
['pooltab', ''],
['kvmtab', ''],
['lxctab', ''],
['dctab', '']
['dctab', ''],
],
hprefix: 'v1',
@ -103,7 +103,7 @@ Ext.define('PVE.StateProvider', {
clog: 3,
storage: 2,
folder: 1,
server: 0
server: 0,
},
decodeHToken: function(token) {
@ -253,5 +253,5 @@ Ext.define('PVE.StateProvider', {
} else {
me.callParent(arguments);
}
}
},
});

View File

@ -12,7 +12,7 @@ Ext.apply(Ext.form.field.VTypes, {
IP64AddressList: v => PVE.Utils.verify_ip64_address_list(v, false),
IP64AddressWithSuffixList: v => PVE.Utils.verify_ip64_address_list(v, true),
IP64AddressListText: gettext('Example') + ': 192.168.1.1,192.168.1.2',
IP64AddressListMask: /[A-Fa-f0-9\,\:\.\;\ ]/
IP64AddressListMask: /[A-Fa-f0-9\,\:\.\;\ ]/,
});
Ext.define('PVE.form.field.Display', {
@ -21,5 +21,5 @@ Ext.define('PVE.form.field.Display', {
setSubmitValue: function(value) {
// do nothing, this is only to allow generalized bindings for the:
// `me.isCreate ? 'textfield' : 'displayfield'` cases we have.
}
},
});

View File

@ -10,13 +10,13 @@ Ext.enableAriaPanels = false;
// avoid errors when running without development tools
if (!Ext.isDefined(Ext.global.console)) {
var console = {
log: function() {}
log: function() {},
};
}
console.log("Starting PVE Manager");
Ext.Ajax.defaultHeaders = {
'Accept': 'application/json'
'Accept': 'application/json',
};
Ext.define('PVE.Utils', { utilities: {
@ -35,14 +35,14 @@ Ext.define('PVE.Utils', { utilities: {
4: "warning",
5: "notice",
6: "info",
7: "debug"
7: "debug",
},
support_level_hash: {
'c': gettext('Community'),
'b': gettext('Basic'),
's': gettext('Standard'),
'p': gettext('Premium')
'p': gettext('Premium'),
},
noSubKeyHtml: 'You do not have a valid subscription for this server. Please visit <a target="_blank" href="https://www.proxmox.com/products/proxmox-ve/subscription-service-plans">www.proxmox.com</a> to get a list of available options.',
@ -50,7 +50,7 @@ Ext.define('PVE.Utils', { utilities: {
kvm_ostypes: {
'Linux': [
{ desc: '5.x - 2.6 Kernel', val: 'l26' },
{ desc: '2.4 Kernel', val: 'l24' }
{ desc: '2.4 Kernel', val: 'l24' },
],
'Microsoft Windows': [
{ desc: '10/2016/2019', val: 'win10' },
@ -58,14 +58,14 @@ Ext.define('PVE.Utils', { utilities: {
{ desc: '7/2008r2', val: 'win7' },
{ desc: 'Vista/2008', val: 'w2k8' },
{ desc: 'XP/2003', val: 'wxp' },
{ desc: '2000', val: 'w2k' }
{ desc: '2000', val: 'w2k' },
],
'Solaris Kernel': [
{ desc: '-', val: 'solaris'}
{ desc: '-', val: 'solaris'},
],
'Other': [
{ desc: '-', val: 'other'}
]
{ desc: '-', val: 'other'},
],
},
get_health_icon: function(state, circle) {
@ -172,13 +172,13 @@ Ext.define('PVE.Utils', { utilities: {
'HEALTH_UPGRADE':'upgrade',
'HEALTH_OLD':'old',
'HEALTH_WARN':'warning',
'HEALTH_ERR':'critical'
'HEALTH_ERR':'critical',
},
render_ceph_health: function(healthObj) {
var state = {
iconCls: PVE.Utils.get_health_icon(),
text: ''
text: '',
};
if (!healthObj || !healthObj.status) {
@ -544,7 +544,7 @@ Ext.define('PVE.Utils', { utilities: {
sl: 'Slovenian',
sv: 'Swedish',
//th: 'Thai',
tr: 'Turkish'
tr: 'Turkish',
},
kvm_vga_drivers: {
@ -559,7 +559,7 @@ Ext.define('PVE.Utils', { utilities: {
serial2: gettext('Serial terminal') + ' 2',
serial3: gettext('Serial terminal') + ' 3',
virtio: 'VirtIO-GPU',
none: Proxmox.Utils.noneText
none: Proxmox.Utils.noneText,
},
render_kvm_language: function (value) {
@ -586,7 +586,7 @@ Ext.define('PVE.Utils', { utilities: {
'__default__': Proxmox.Utils.defaultText + ' (xterm.js)',
'vv': 'SPICE (remote-viewer)',
'html5': 'HTML5 (noVNC)',
'xtermjs': 'xterm.js'
'xtermjs': 'xterm.js',
},
render_console_viewer: function(value) {
@ -673,7 +673,7 @@ Ext.define('PVE.Utils', { utilities: {
'vztmpl': gettext('Container template'),
'iso': gettext('ISO image'),
'rootdir': gettext('Container'),
'snippets': gettext('Snippets')
'snippets': gettext('Snippets'),
},
volume_is_qemu_backup: function(volid, format) {
@ -806,51 +806,51 @@ Ext.define('PVE.Utils', { utilities: {
sdnvnetSchema: {
vnet: {
name: 'vnet',
faIcon: 'folder'
faIcon: 'folder',
},
},
sdnzoneSchema: {
zone: {
name: 'zone',
hideAdd: true
hideAdd: true,
},
simple: {
name: 'Simple',
ipanel: 'SimpleInputPanel',
faIcon: 'th'
faIcon: 'th',
},
vlan: {
name: 'VLAN',
ipanel: 'VlanInputPanel',
faIcon: 'th'
faIcon: 'th',
},
qinq: {
name: 'QinQ',
ipanel: 'QinQInputPanel',
faIcon: 'th'
faIcon: 'th',
},
vxlan: {
name: 'VXLAN',
ipanel: 'VxlanInputPanel',
faIcon: 'th'
faIcon: 'th',
},
evpn: {
name: 'EVPN',
ipanel: 'EvpnInputPanel',
faIcon: 'th'
faIcon: 'th',
},
},
sdncontrollerSchema: {
controller: {
name: 'controller',
hideAdd: true
hideAdd: true,
},
evpn: {
name: 'evpn',
ipanel: 'EvpnInputPanel',
faIcon: 'crosshairs'
faIcon: 'crosshairs',
},
},
@ -917,10 +917,10 @@ Ext.define('PVE.Utils', { utilities: {
Ext.isNumber(data.id) &&
Ext.isNumber(data.lun)) {
return "CH " +
Ext.String.leftPad(data.channel,2, '0') +
Ext.String.leftPad(data.channel, 2, '0') +
" ID " + data.id + " LUN " + data.lun;
}
return data.volid.replace(/^.*?:(.*?\/)?/,'');
return data.volid.replace(/^.*?:(.*?\/)?/, '');
},
render_serverity: function (value) {
@ -1077,7 +1077,7 @@ Ext.define('PVE.Utils', { utilities: {
render_resource_type: function(value, metaData, record, rowIndex, colIndex, store) {
var cls = PVE.Utils.get_object_icon_class(value,record.data);
var cls = PVE.Utils.get_object_icon_class(value, record.data);
var fa = '<i class="fa-fw x-grid-icon-custom ' + cls + '"></i> ';
return fa + value;
@ -1157,7 +1157,7 @@ Ext.define('PVE.Utils', { utilities: {
'2': gettext('Bad Request'),
'3': gettext('Configuration Unsupported'),
'4': gettext('Device Ineligible'),
'5': gettext('Timeout')
'5': gettext('Timeout'),
};
return "U2F Error: " + ErrorNames[error] || Proxmox.Utils.unknownText;
},
@ -1240,7 +1240,7 @@ Ext.define('PVE.Utils', { utilities: {
vmname: vmname,
node: nodename,
resize: scaling,
cmd: cmd
cmd: cmd,
});
var nw = window.open("?" + url, '_blank', "innerWidth=745,innerheight=427");
if (nw) {
@ -1254,7 +1254,7 @@ Ext.define('PVE.Utils', { utilities: {
var link = Ext.DomHelper.append(document.body, {
tag: 'a',
href: uri,
css : 'display:none;visibility:hidden;height:0px;'
css : 'display:none;visibility:hidden;height:0px;',
});
// Note: we need to tell android the correct file name extension
@ -1290,7 +1290,7 @@ Ext.define('PVE.Utils', { utilities: {
encodeURIComponent(raw);
downloadWithName(url, "pve-spice.vv");
}
},
});
},
@ -1312,7 +1312,7 @@ Ext.define('PVE.Utils', { utilities: {
xtermjs: !!conf.serial,
};
PVE.Utils.openDefaultConsoleWindow(consoles, 'kvm', vmid, nodename, vmname);
}
},
});
} else if (record.data.type === 'lxc' && !record.data.template) {
PVE.Utils.openDefaultConsoleWindow(true, 'lxc', vmid, nodename, vmname);
@ -1348,7 +1348,7 @@ Ext.define('PVE.Utils', { utilities: {
if (template) {
if (type === 'qemu' || type == 'lxc') {
menu = Ext.create('PVE.menu.TemplateMenu', {
pveSelNode: record
pveSelNode: record,
});
}
} else if (type === 'qemu' ||
@ -1356,7 +1356,7 @@ Ext.define('PVE.Utils', { utilities: {
type === 'node') {
menu = Ext.create('PVE.' + type + '.CmdMenu', {
pveSelNode: record,
nodename: record.data.node
nodename: record.data.node,
});
} else {
return;
@ -1545,7 +1545,7 @@ Ext.define('PVE.Utils', { utilities: {
if (!container.down('pveCephInstallWindow')){
var isInstalled = msg.match(/not initialized/i) ? true : false;
var win = Ext.create('PVE.ceph.Install', {
nodename: nodename
nodename: nodename,
});
win.getViewModel().set('isInstalled', isInstalled);
container.add(win);
@ -1617,7 +1617,7 @@ Ext.define('PVE.Utils', { utilities: {
cpu_vendor_map: {
'default': 'QEMU',
'AuthenticAMD': 'AMD',
'GenuineIntel': 'Intel'
'GenuineIntel': 'Intel',
},
cpu_vendor_order: {
@ -1745,6 +1745,6 @@ Ext.define('PVE.Utils', { utilities: {
vzumount: ['CT', gettext('Unmount')],
zfscreate: [gettext('ZFS Storage'), gettext('Create')],
});
}
},
});

View File

@ -52,8 +52,8 @@ Ext.define('PVE.noVncConsole', {
PVE.Utils.cleanEmptyObjectKeys(queryDict);
var url = '/?' + Ext.Object.toQueryString(queryDict);
box.load(url);
}
}
},
},
});
me.callParent();
@ -67,6 +67,6 @@ Ext.define('PVE.noVncConsole', {
// reload IFrame content to forcibly reconnect VNC/xterm.js to VM
var box = this.down('[itemid=vncconsole]');
box.getWin().location.reload();
}
},
});

View File

@ -48,7 +48,7 @@ Ext.define('PVE.Workspace', {
me.login = null;
me.updateLoginData(data);
Proxmox.Utils.checked_command(function() {}); // display subscription status
}
},
});
}
me.onLogin(null);
@ -92,20 +92,20 @@ Ext.define('PVE.Workspace', {
Ext.Ajax.request({
params: {
username: Proxmox.UserName,
password: ticket
password: ticket,
},
url: '/api2/json/access/ticket',
method: 'POST',
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
me.updateLoginData(obj.data);
}
},
});
},
interval: 15*60*1000
interval: 15*60*1000,
});
}
},
});
Ext.define('PVE.StdWorkspace', {
@ -161,7 +161,7 @@ Ext.define('PVE.StdWorkspace', {
success: function(response) {
PVE.VersionInfo = response.result.data;
me.updateVersionInfo();
}
},
});
Proxmox.Utils.API2Request({
@ -228,7 +228,7 @@ Ext.define('PVE.StdWorkspace', {
lxc: 'PVE.lxc.Config',
storage: 'PVE.storage.Browser',
sdn: 'PVE.sdn.Browser',
pool: 'pvePoolConfig'
pool: 'pvePoolConfig',
};
var comp = {
xtype: tlckup[n.data.type || 'root'] ||
@ -237,14 +237,14 @@ Ext.define('PVE.StdWorkspace', {
Ext.isDefined(n.data.groupbyid),
pveSelNode: n,
workspace: me,
viewFilter: selview.getViewFilter()
viewFilter: selview.getViewFilter(),
};
PVE.curSelectedNode = n;
me.setContent(comp);
}
}
}
}
},
},
},
});
selview.on('select', function(combo, records) {
@ -266,7 +266,7 @@ Ext.define('PVE.StdWorkspace', {
handler: function() {
var wiz = Ext.create('PVE.qemu.CreateWizard', {});
wiz.show();
}
},
});
var createCT = Ext.createWidget('button', {
@ -279,7 +279,7 @@ Ext.define('PVE.StdWorkspace', {
handler: function() {
var wiz = Ext.create('PVE.lxc.CreateWizard', {});
wiz.show();
}
},
});
sprovider.on('statechange', function(sp, key, value) {
@ -298,11 +298,11 @@ Ext.define('PVE.StdWorkspace', {
region: 'north',
layout: {
type: 'hbox',
align: 'middle'
align: 'middle',
},
baseCls: 'x-plain',
defaults: {
baseCls: 'x-plain'
baseCls: 'x-plain',
},
border: false,
margin: '2 0 2 5',
@ -313,14 +313,14 @@ Ext.define('PVE.StdWorkspace', {
{
minWidth: 150,
id: 'versioninfo',
html: 'Virtual Environment'
html: 'Virtual Environment',
},
{
xtype: 'pveGlobalSearchField',
tree: rtree
tree: rtree,
},
{
flex: 1
flex: 1,
},
{
xtype: 'proxmoxHelpButton',
@ -330,7 +330,7 @@ Ext.define('PVE.StdWorkspace', {
listenToGlobalEvent: false,
onlineHelp: 'pve_documentation_index',
text: gettext('Documentation'),
margin: '0 5 0 0'
margin: '0 5 0 0',
},
createVM,
createCT,
@ -343,7 +343,7 @@ Ext.define('PVE.StdWorkspace', {
style: {
// proxmox dark grey p light grey as border
backgroundColor: '#464d4d',
borderColor: '#ABBABA'
borderColor: '#ABBABA',
},
iconCls: 'fa fa-user',
menu: [
@ -353,27 +353,27 @@ Ext.define('PVE.StdWorkspace', {
handler: function() {
var win = Ext.create('PVE.window.Settings');
win.show();
}
},
},
{
text: gettext('Password'),
iconCls: 'fa fa-fw fa-key',
handler: function() {
var win = Ext.create('Proxmox.window.PasswordEdit', {
userid: Proxmox.UserName
userid: Proxmox.UserName,
});
win.show();
}
},
},
{
text: 'TFA',
iconCls: 'fa fa-fw fa-lock',
handler: function(btn, event, rec) {
var win = Ext.create('PVE.window.TFAEdit',{
userid: Proxmox.UserName
var win = Ext.create('PVE.window.TFAEdit', {
userid: Proxmox.UserName,
});
win.show();
}
},
},
{
iconCls: 'fa fa-language',
@ -402,11 +402,11 @@ Ext.define('PVE.StdWorkspace', {
comp.getStore().loadData([], false);
}
});
}
}
]
}
]
},
},
],
},
],
},
{
region: 'center',
@ -419,7 +419,7 @@ Ext.define('PVE.StdWorkspace', {
layout: { type: 'card' },
border: false,
margin: '0 5 0 0',
items: []
items: [],
},
{
region: 'west',
@ -439,8 +439,8 @@ Ext.define('PVE.StdWorkspace', {
if (width > viewWidth - 100) {
panel.setWidth(viewWidth - 100);
}
}
}
},
},
},
{
xtype: 'pveStatusPanel',
@ -460,10 +460,10 @@ Ext.define('PVE.StdWorkspace', {
if (height > (viewHeight - 150)) {
panel.setHeight(viewHeight - 150);
}
}
}
}
]
},
},
},
],
});
me.callParent();
@ -479,6 +479,6 @@ Ext.define('PVE.StdWorkspace', {
});
}
});
}
},
});

View File

@ -37,7 +37,7 @@ Ext.define('PVE.button.ConsoleButton', {
var me = this;
var consoles = {
spice: me.enableSpice,
xtermjs: me.enableXtermjs
xtermjs: me.enableXtermjs,
};
PVE.Utils.openDefaultConsoleWindow(consoles, me.consoleType, me.vmid,
me.nodename, me.consoleName, me.cmd);
@ -52,7 +52,7 @@ Ext.define('PVE.button.ConsoleButton', {
handler: function(button) {
var me = this.up('button');
PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName, me.cmd);
}
},
},
{
xterm: 'menuitem',
@ -63,7 +63,7 @@ Ext.define('PVE.button.ConsoleButton', {
handler: function(button) {
var me = this.up('button');
PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName, me.cmd);
}
},
},
{
text: 'xterm.js',
@ -73,8 +73,8 @@ Ext.define('PVE.button.ConsoleButton', {
handler: function(button) {
var me = this.up('button');
PVE.Utils.openConsoleWindow(button.type, me.consoleType, me.vmid, me.nodename, me.consoleName, me.cmd);
}
}
},
},
],
initComponent: function() {
@ -85,5 +85,5 @@ Ext.define('PVE.button.ConsoleButton', {
}
me.callParent();
}
},
});

View File

@ -28,7 +28,7 @@ Ext.define('PVE.button.PendingRevert', {
selModel: view.getSelectionModel(),
method: 'PUT',
params: {
'revert': keys.join(',')
'revert': keys.join(','),
},
callback: () => view.reload(),
failure: (response) => Ext.Msg.alert('Error', response.htmlStatus),

View File

@ -47,7 +47,7 @@ Ext.define('PVE.button.Split', {
return;
}
me.realHandler(button, event, rec);
}
},
});
} else {
me.realHandler(button, event, rec);
@ -96,5 +96,5 @@ Ext.define('PVE.button.Split', {
}
});
}
}
},
});

View File

@ -126,7 +126,7 @@ Ext.define('PVE.ceph.CephHighestVersionDisplay', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
},
});
@ -145,10 +145,10 @@ Ext.define('PVE.ceph.CephInstallWizard', {
cephRelease: 'octopus',
configuration: true,
isInstalled: false,
}
},
},
cbindData: {
nodename: undefined
nodename: undefined,
},
title: gettext('Setup'),
@ -204,7 +204,7 @@ Ext.define('PVE.ceph.CephInstallWizard', {
xtype: 'pveCephHighestVersionDisplay',
labelWidth: 180,
cbind:{
nodename: '{nodename}'
nodename: '{nodename}',
},
gotNewestVersion: function(release, maxversiontext, maxversion) {
if (release === 'unknown') {
@ -249,22 +249,22 @@ Ext.define('PVE.ceph.CephInstallWizard', {
Ext.GlobalEvents.fireEvent('proxmoxHideHelp', this.onlineHelp);
}
this.up('pveCephInstallWizard').down('#next').setText(gettext('Next'));
}
}
},
},
},
{
title: gettext('Installation'),
xtype: 'panel',
layout: 'fit',
cbind:{
nodename: '{nodename}'
nodename: '{nodename}',
},
viewModel: {}, // needed to inherit parent viewModel data
listeners: {
afterrender: function() {
var me = this;
if (this.getViewModel().get('isInstalled')) {
this.mask("Ceph is already installed, click next to create your configuration.",['pve-static-mask']);
this.mask("Ceph is already installed, click next to create your configuration.", ['pve-static-mask']);
} else {
me.down('pveNoVncConsole').fireEvent('activate');
}
@ -277,7 +277,7 @@ Ext.define('PVE.ceph.CephInstallWizard', {
interval: 1000,
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/' + nodename + '/ceph/status'
url: '/api2/json/nodes/' + nodename + '/ceph/status',
},
listeners: {
load: function(rec, response, success, operation) {
@ -287,17 +287,17 @@ Ext.define('PVE.ceph.CephInstallWizard', {
me.down('textfield').setValue('success');
} else if (operation.error.statusText.match("not initialized", "i")) {
me.updateStore.stopUpdate();
me.up('pveCephInstallWizard').getViewModel().set('configuration',false);
me.up('pveCephInstallWizard').getViewModel().set('configuration', false);
me.down('textfield').setValue('success');
} else if (operation.error.statusText.match("rados_connect failed", "i")) {
me.updateStore.stopUpdate();
me.up('pveCephInstallWizard').getViewModel().set('configuration',true);
me.up('pveCephInstallWizard').getViewModel().set('configuration', true);
me.down('textfield').setValue('success');
} else if (!operation.error.statusText.match("not installed", "i")) {
Proxmox.Utils.setErrorMask(me, operation.error.statusText);
}
}
}
},
},
});
me.updateStore.startUpdate();
},
@ -306,7 +306,7 @@ Ext.define('PVE.ceph.CephInstallWizard', {
if (me.updateStore) {
me.updateStore.stopUpdate();
}
}
},
},
items: [
{
@ -331,22 +331,22 @@ Ext.define('PVE.ceph.CephInstallWizard', {
value: '',
allowBlank: false,
submitValue: false,
hidden: true
}
]
hidden: true,
},
],
},
{
xtype: 'inputpanel',
title: gettext('Configuration'),
onlineHelp: 'chapter_pveceph',
cbind: {
nodename: '{nodename}'
nodename: '{nodename}',
},
viewModel: {
data: {
replicas: undefined,
minreplicas: undefined
}
minreplicas: undefined,
},
},
listeners: {
activate: function() {
@ -354,19 +354,19 @@ Ext.define('PVE.ceph.CephInstallWizard', {
},
beforeshow: function() {
if (this.up('pveCephInstallWizard').getViewModel().get('configuration')) {
this.mask("Configuration already initialized",['pve-static-mask']);
this.mask("Configuration already initialized", ['pve-static-mask']);
} else {
this.unmask();
}
},
deactivate: function() {
this.up('pveCephInstallWizard').down('#submit').setText(gettext('Finish'));
}
},
},
column1: [
{
xtype: 'displayfield',
value: gettext('Ceph cluster configuration') + ':'
value: gettext('Ceph cluster configuration') + ':',
},
{
xtype: 'proxmoxNetworkSelector',
@ -374,11 +374,11 @@ Ext.define('PVE.ceph.CephInstallWizard', {
value: '',
fieldLabel: 'Public Network IP/CIDR',
bind: {
allowBlank: '{configuration}'
allowBlank: '{configuration}',
},
cbind: {
nodename: '{nodename}'
}
nodename: '{nodename}',
},
},
{
xtype: 'proxmoxNetworkSelector',
@ -388,28 +388,28 @@ Ext.define('PVE.ceph.CephInstallWizard', {
autoSelect: false,
emptyText: gettext('Same as Public Network'),
cbind: {
nodename: '{nodename}'
}
}
nodename: '{nodename}',
},
},
// FIXME: add hint about cluster network and/or reference user to docs??
],
column2: [
{
xtype: 'displayfield',
value: gettext('First Ceph monitor') + ':'
value: gettext('First Ceph monitor') + ':',
},
{
xtype: 'pveNodeSelector',
fieldLabel: gettext('Monitor node'),
name: 'mon-node',
selectCurNode: true,
allowBlank: false
allowBlank: false,
},
{
xtype: 'displayfield',
value: gettext('Additional monitors are recommended. They can be created at any time in the Monitor tab.'),
userCls: 'pmx-hint'
}
userCls: 'pmx-hint',
},
],
advancedColumn1: [
{
@ -417,11 +417,11 @@ Ext.define('PVE.ceph.CephInstallWizard', {
name: 'size',
fieldLabel: 'Number of replicas',
bind: {
value: '{replicas}'
value: '{replicas}',
},
maxValue: 7,
minValue: 2,
emptyText: '3'
emptyText: '3',
},
{
xtype: 'numberfield',
@ -429,7 +429,7 @@ Ext.define('PVE.ceph.CephInstallWizard', {
fieldLabel: 'Minimum replicas',
bind: {
maxValue: '{replicas}',
value: '{minreplicas}'
value: '{minreplicas}',
},
minValue: 2,
maxValue: 3,
@ -442,8 +442,8 @@ Ext.define('PVE.ceph.CephInstallWizard', {
this.toggleSpinners();
this.validate();
},
emptyText: '2'
}
emptyText: '2',
},
],
onGetValues: function(values) {
['cluster-network', 'size', 'min_size'].forEach(function(field) {
@ -478,18 +478,18 @@ Ext.define('PVE.ceph.CephInstallWizard', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
} else {
me.up('pveCephInstallWizard').navigateNext();
}
}
},
},
{
title: gettext('Success'),
@ -524,12 +524,12 @@ Ext.define('PVE.ceph.CephInstallWizard', {
if (this.onlineHelp) {
Ext.GlobalEvents.fireEvent('proxmoxHideHelp', this.onlineHelp);
}
}
},
},
onSubmit: function() {
var wizard = this.up('pveCephInstallWizard');
wizard.close();
}
}
]
},
},
],
});

View File

@ -5,8 +5,8 @@ Ext.define('PVE.node.CephConfigDb', {
border: false,
store: {
proxy: {
type: 'proxmox'
}
type: 'proxmox',
},
},
columns: [
@ -41,7 +41,7 @@ Ext.define('PVE.node.CephConfigDb', {
text: 'Runtime Updatable',
hidden: true,
width: 80,
renderer: Proxmox.Utils.format_boolean
renderer: Proxmox.Utils.format_boolean,
},
],
@ -59,7 +59,7 @@ Ext.define('PVE.node.CephConfigDb', {
Proxmox.Utils.monStoreErrors(me, me.getStore());
me.getStore().load();
}
},
});
Ext.define('PVE.node.CephConfig', {
extend: 'Ext.panel.Panel',
@ -83,14 +83,14 @@ Ext.define('PVE.node.CephConfig', {
me.mon(win, 'cephInstallWindowClosed', function(){
me.load();
});
}
},
);
},
success: function(response, opts) {
var data = response.result.data;
me.update(Ext.htmlEncode(data));
}
},
});
},
@ -107,14 +107,14 @@ Ext.define('PVE.node.CephConfig', {
listeners: {
activate: function() {
me.load();
}
}
},
},
});
me.callParent();
me.load();
}
},
});
Ext.define('PVE.node.CephConfigCrush', {
@ -127,14 +127,14 @@ Ext.define('PVE.node.CephConfigCrush', {
items: [{
title: gettext('Configuration'),
xtype: 'pveNodeCephConfig',
region: 'center'
region: 'center',
},
{
title: 'Crush Map', // do not localize
xtype: 'pveNodeCephCrushMap',
region: 'east',
split: true,
width: '50%'
width: '50%',
},
{
title: gettext('Configuration Database'),
@ -142,14 +142,14 @@ Ext.define('PVE.node.CephConfigCrush', {
region: 'south',
split: true,
weight: -30,
height: '50%'
height: '50%',
}],
initComponent: function() {
var me = this;
me.defaults = {
pveSelNode: me.pveSelNode
pveSelNode: me.pveSelNode,
};
me.callParent();
}
},
});

View File

@ -21,13 +21,13 @@ Ext.define('PVE.node.CephCrushMap', {
me.mon(win, 'cephInstallWindowClosed', function(){
me.load();
});
}
},
);
},
success: function(response, opts) {
var data = response.result.data;
me.update(Ext.htmlEncode(data));
}
},
});
},
@ -45,12 +45,12 @@ Ext.define('PVE.node.CephCrushMap', {
listeners: {
activate: function() {
me.load();
}
}
},
},
});
me.callParent();
me.load();
}
},
});

View File

@ -28,10 +28,10 @@ Ext.define('PVE.CephCreateFS', {
listeners: {
change: function(f, value) {
this.up('pveCephCreateFS').setFSName(value);
}
},
},
submitValue: false, // already encoded in apicall URL
emptyText: 'cephfs'
emptyText: 'cephfs',
},
{
xtype: 'proxmoxintegerfield',
@ -41,7 +41,7 @@ Ext.define('PVE.CephCreateFS', {
emptyText: 128,
minValue: 8,
maxValue: 32768,
allowBlank: false
allowBlank: false,
},
{
xtype: 'proxmoxcheckbox',
@ -52,7 +52,7 @@ Ext.define('PVE.CephCreateFS', {
tag: 'div',
'data-qtip': gettext('Add the new CephFS to the cluster storage configuration.'),
},
}
},
],
initComponent : function() {
@ -64,7 +64,7 @@ Ext.define('PVE.CephCreateFS', {
me.setFSName();
me.callParent();
}
},
});
Ext.define('PVE.NodeCephFSPanel', {
@ -79,21 +79,21 @@ Ext.define('PVE.NodeCephFSPanel', {
defaults: {
border: false,
cbind: {
nodename: '{nodename}'
}
nodename: '{nodename}',
},
},
viewModel: {
parent: null,
data: {
cephfsConfigured: false,
mdsCount: 0
mdsCount: 0,
},
formulas: {
canCreateFS: function(get) {
return (!get('cephfsConfigured') && get('mdsCount') > 0);
}
}
},
},
},
items: [
@ -112,16 +112,16 @@ Ext.define('PVE.NodeCephFSPanel', {
storeid: 'pve-ceph-fs',
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/' + view.nodename + '/ceph/fs'
url: '/api2/json/nodes/' + view.nodename + '/ceph/fs',
},
model: 'pve-ceph-fs'
model: 'pve-ceph-fs',
});
view.setStore(Ext.create('Proxmox.data.DiffStore', {
rstore: view.rstore,
sorters: {
property: 'name',
order: 'DESC'
}
order: 'DESC',
},
}));
var regex = new RegExp("not (installed|initialized)", "i");
PVE.Utils.handleStoreErrorOrMask(view, view.rstore, regex, function(me, error){
@ -131,7 +131,7 @@ Ext.define('PVE.NodeCephFSPanel', {
me.mon(win, 'cephInstallWindowClosed', function(){
me.rstore.startUpdate();
});
}
},
);
});
view.rstore.on('load', this.onLoad, this);
@ -147,8 +147,8 @@ Ext.define('PVE.NodeCephFSPanel', {
listeners: {
destroy: function() {
view.rstore.startUpdate();
}
}
},
},
});
},
@ -159,7 +159,7 @@ Ext.define('PVE.NodeCephFSPanel', {
return;
}
vm.set('cephfsConfigured', true);
}
},
},
tbar: [
{
@ -168,30 +168,30 @@ Ext.define('PVE.NodeCephFSPanel', {
handler: 'onCreate',
bind: {
// only one CephFS per Ceph cluster makes sense for now
disabled: '{!canCreateFS}'
}
}
disabled: '{!canCreateFS}',
},
},
],
columns: [
{
header: gettext('Name'),
flex: 1,
dataIndex: 'name'
dataIndex: 'name',
},
{
header: 'Data Pool',
flex: 1,
dataIndex: 'data_pool'
dataIndex: 'data_pool',
},
{
header: 'Metadata Pool',
flex: 1,
dataIndex: 'metadata_pool'
}
dataIndex: 'metadata_pool',
},
],
cbind: {
nodename: '{nodename}'
}
nodename: '{nodename}',
},
},
{
xtype: 'pveNodeCephServiceList',
@ -207,18 +207,18 @@ Ext.define('PVE.NodeCephFSPanel', {
vm.set('mdsCount', records.length);
},
cbind: {
nodename: '{nodename}'
}
}
]
nodename: '{nodename}',
},
},
],
}, function() {
Ext.define('pve-ceph-fs', {
extend: 'Ext.data.Model',
fields: [ 'name', 'data_pool', 'metadata_pool' ],
proxy: {
type: 'proxmox',
url: "/api2/json/nodes/localhost/ceph/fs"
url: "/api2/json/nodes/localhost/ceph/fs",
},
idProperty: 'name'
idProperty: 'name',
});
});

View File

@ -12,10 +12,10 @@ Ext.define('PVE.ceph.Log', {
me.mon(win, 'cephInstallWindowClosed', function(){
me.loadTask.delay(200);
});
}
},
);
if (!windowShow) {
Proxmox.Utils.setErrorMask(me, msg);
}
}
},
});

View File

@ -9,12 +9,12 @@ Ext.define('PVE.node.CephMonMgrList', {
defaults: {
border: false,
onlineHelp: 'chapter_pveceph',
flex: 1
flex: 1,
},
layout: {
type: 'vbox',
align: 'stretch'
align: 'stretch',
},
items: [
@ -28,19 +28,19 @@ Ext.define('PVE.node.CephMonMgrList', {
width: 70,
sortable: true,
renderer: Proxmox.Utils.format_boolean,
dataIndex: 'quorum'
}
dataIndex: 'quorum',
},
],
stateId: 'grid-ceph-monitor',
showCephInstallMask: true,
title: gettext('Monitor')
title: gettext('Monitor'),
},
{
xtype: 'pveNodeCephServiceList',
type: 'mgr',
stateId: 'grid-ceph-manager',
cbind: { pveSelNode: '{pveSelNode}' },
title: gettext('Manager')
}
]
title: gettext('Manager'),
},
],
});

View File

@ -13,7 +13,7 @@ Ext.define('PVE.CephCreatePool', {
xtype: 'textfield',
fieldLabel: gettext('Name'),
name: 'name',
allowBlank: false
allowBlank: false,
},
{
xtype: 'proxmoxintegerfield',
@ -22,7 +22,7 @@ Ext.define('PVE.CephCreatePool', {
value: 3,
minValue: 1,
maxValue: 7,
allowBlank: false
allowBlank: false,
},
{
xtype: 'proxmoxintegerfield',
@ -31,13 +31,13 @@ Ext.define('PVE.CephCreatePool', {
value: 2,
minValue: 1,
maxValue: 7,
allowBlank: false
allowBlank: false,
},
{
xtype: 'pveCephRuleSelector',
fieldLabel: 'Crush Rule', // do not localize
name: 'crush_rule',
allowBlank: false
allowBlank: false,
},
{
xtype: 'proxmoxKVComboBox',
@ -71,7 +71,7 @@ Ext.define('PVE.CephCreatePool', {
tag: 'div',
'data-qtip': gettext('Add the new pool to the cluster storage configuration.'),
},
}
},
],
initComponent : function() {
var me = this;
@ -83,12 +83,12 @@ Ext.define('PVE.CephCreatePool', {
Ext.apply(me, {
url: "/nodes/" + me.nodename + "/ceph/pools",
defaults: {
nodename: me.nodename
}
nodename: me.nodename,
},
});
me.callParent();
}
},
});
Ext.define('PVE.node.CephPoolList', {
@ -108,7 +108,7 @@ Ext.define('PVE.node.CephPoolList', {
header: gettext('Name'),
width: 120,
sortable: true,
dataIndex: 'pool_name'
dataIndex: 'pool_name',
},
{
header: gettext('Size') + '/min',
@ -117,7 +117,7 @@ Ext.define('PVE.node.CephPoolList', {
renderer: function(v, meta, rec) {
return v + '/' + rec.data.min_size;
},
dataIndex: 'size'
dataIndex: 'size',
},
{
text: 'Placement Groups',
@ -126,15 +126,15 @@ Ext.define('PVE.node.CephPoolList', {
text: '# of PGs', // pg_num',
width: 150,
align: 'right',
dataIndex: 'pg_num'
dataIndex: 'pg_num',
},
{
text: gettext('Autoscale'),
width: 140,
align: 'right',
dataIndex: 'pg_autoscale_mode'
dataIndex: 'pg_autoscale_mode',
},
]
],
},
{
text: 'CRUSH Rule',
@ -143,14 +143,14 @@ Ext.define('PVE.node.CephPoolList', {
text: 'ID',
align: 'right',
width: 50,
dataIndex: 'crush_rule'
dataIndex: 'crush_rule',
},
{
text: gettext('Name'),
width: 150,
dataIndex: 'crush_rule_name',
},
]
],
},
{
text: gettext('Used'),
@ -173,10 +173,10 @@ Ext.define('PVE.node.CephPoolList', {
align: 'right',
dataIndex: 'bytes_used',
summaryType: 'sum',
summaryRenderer: PVE.Utils.render_size
}
]
}
summaryRenderer: PVE.Utils.render_size,
},
],
},
],
initComponent: function() {
var me = this;
@ -194,8 +194,8 @@ Ext.define('PVE.node.CephPoolList', {
model: 'ceph-pool-list',
proxy: {
type: 'proxmox',
url: "/api2/json/nodes/" + nodename + "/ceph/pools"
}
url: "/api2/json/nodes/" + nodename + "/ceph/pools",
},
});
var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore });
@ -208,7 +208,7 @@ Ext.define('PVE.node.CephPoolList', {
me.mon(win, 'cephInstallWindowClosed', function(){
me.store.rstore.startUpdate();
});
}
},
);
});
@ -216,13 +216,13 @@ Ext.define('PVE.node.CephPoolList', {
text: gettext('Create'),
handler: function() {
var win = Ext.create('PVE.CephCreatePool', {
nodename: nodename
nodename: nodename,
});
win.show();
win.on('destroy', function() {
rstore.load();
});
}
},
});
var destroy_btn = Ext.create('Proxmox.button.Button', {
@ -242,14 +242,14 @@ Ext.define('PVE.node.CephPoolList', {
showProgress: true,
url: base_url,
params: {
remove_storages: 1
remove_storages: 1,
},
item: { type: 'CephPool', id: rec.data.pool_name }
item: { type: 'CephPool', id: rec.data.pool_name },
}).show();
win.on('destroy', function() {
rstore.load();
});
}
},
});
Ext.apply(me, {
@ -259,11 +259,11 @@ Ext.define('PVE.node.CephPoolList', {
listeners: {
activate: () => rstore.startUpdate(),
destroy: () => rstore.stopUpdate(),
}
},
});
me.callParent();
}
},
}, function() {
Ext.define('ceph-pool-list', {
@ -276,9 +276,9 @@ Ext.define('PVE.node.CephPoolList', {
{ name: 'bytes_used', type: 'integer'},
{ name: 'percent_used', type: 'number'},
{ name: 'crush_rule', type: 'integer'},
{ name: 'crush_rule_name', type: 'string'}
{ name: 'crush_rule_name', type: 'string'},
],
idProperty: 'pool_name'
idProperty: 'pool_name',
});
});
@ -304,12 +304,12 @@ Ext.define('PVE.form.CephRuleSelector', {
sorters: 'name',
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodename + '/ceph/rules'
}
url: '/api2/json/nodes/' + me.nodename + '/ceph/rules',
},
});
Ext.apply(me, {
store: store
store: store,
});
me.callParent();
@ -319,8 +319,8 @@ Ext.define('PVE.form.CephRuleSelector', {
if (success && rec.length > 0) {
me.select(rec[0]);
}
}
},
});
}
},
});

View File

@ -25,9 +25,9 @@ Ext.define('PVE.CephCreateService', {
change: function(f, value) {
var me = this.up('pveCephCreateService');
me.setNode(value);
}
}
}
},
},
},
],
initComponent : function() {
@ -44,7 +44,7 @@ Ext.define('PVE.CephCreateService', {
me.setNode(me.nodename);
me.callParent();
}
},
});
Ext.define('PVE.node.CephServiceList', {
@ -126,8 +126,8 @@ Ext.define('PVE.node.CephServiceList', {
storeid: 'ceph-versions-' + view.type + '-list' + view.nodename,
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/ceph/metadata?scope=versions"
}
url: "/api2/json/cluster/ceph/metadata?scope=versions",
},
});
view.versionsstore.on('load', this.getMaxVersions, this);
@ -140,13 +140,13 @@ Ext.define('PVE.node.CephServiceList', {
model: 'ceph-service-list',
proxy: {
type: 'proxmox',
url: "/api2/json/nodes/" + view.nodename + "/ceph/" + view.type
}
url: "/api2/json/nodes/" + view.nodename + "/ceph/" + view.type,
},
});
view.setStore(Ext.create('Proxmox.data.DiffStore', {
rstore: view.rstore,
sorters: [{ property: 'name' }]
sorters: [{ property: 'name' }],
}));
if (view.storeLoadCallback) {
@ -163,7 +163,7 @@ Ext.define('PVE.node.CephServiceList', {
me.mon(win, 'cephInstallWindowClosed', function(){
view.rstore.startUpdate();
});
}
},
);
});
}
@ -185,13 +185,13 @@ Ext.define('PVE.node.CephServiceList', {
upid: upid,
taskDone: function() {
view.rstore.load();
}
},
});
win.show();
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
},
onChangeService: function(btn) {
@ -216,8 +216,8 @@ Ext.define('PVE.node.CephServiceList', {
items: [{
xtype: 'proxmoxLogView',
url: url,
log_select_timespan: 1
}]
log_select_timespan: 1,
}],
});
win.show();
},
@ -231,9 +231,9 @@ Ext.define('PVE.node.CephServiceList', {
type: view.type,
taskDone: function() {
view.rstore.load();
}
},
});
}
},
},
tbar: [
@ -247,7 +247,7 @@ Ext.define('PVE.node.CephServiceList', {
return rec.data.state === 'stopped' ||
rec.data.state === 'unknown';
},
handler: 'onChangeService'
handler: 'onChangeService',
},
{
xtype: 'proxmoxButton',
@ -258,7 +258,7 @@ Ext.define('PVE.node.CephServiceList', {
return rec.data.state !== 'stopped';
},
disabled: true,
handler: 'onChangeService'
handler: 'onChangeService',
},
{
xtype: 'proxmoxButton',
@ -269,13 +269,13 @@ Ext.define('PVE.node.CephServiceList', {
enableFn: function(rec) {
return rec.data.state !== 'stopped';
},
handler: 'onChangeService'
handler: 'onChangeService',
},
'-',
{
text: gettext('Create'),
reference: 'createButton',
handler: 'onCreate'
handler: 'onCreate',
},
{
text: gettext('Destroy'),
@ -299,18 +299,18 @@ Ext.define('PVE.node.CephServiceList', {
upid: upid,
taskDone: function() {
view.rstore.load();
}
},
});
win.show();
}
},
},
'-',
{
xtype: 'proxmoxButton',
text: gettext('Syslog'),
disabled: true,
handler: 'showSyslog'
}
handler: 'showSyslog',
},
],
columns: [
@ -321,7 +321,7 @@ Ext.define('PVE.node.CephServiceList', {
renderer: function(v) {
return this.type + '.' + v;
},
dataIndex: 'name'
dataIndex: 'name',
},
{
header: gettext('Host'),
@ -330,13 +330,13 @@ Ext.define('PVE.node.CephServiceList', {
renderer: function(v) {
return v || Proxmox.Utils.unknownText;
},
dataIndex: 'host'
dataIndex: 'host',
},
{
header: gettext('Status'),
flex: 1,
sortable: false,
dataIndex: 'state'
dataIndex: 'state',
},
{
header: gettext('Address'),
@ -345,7 +345,7 @@ Ext.define('PVE.node.CephServiceList', {
renderer: function(v) {
return v || Proxmox.Utils.unknownText;
},
dataIndex: 'addr'
dataIndex: 'addr',
},
{
header: gettext('Version'),
@ -353,7 +353,7 @@ Ext.define('PVE.node.CephServiceList', {
sortable: true,
dataIndex: 'version',
renderer: 'render_version',
}
},
],
initComponent: function() {
@ -364,7 +364,7 @@ Ext.define('PVE.node.CephServiceList', {
}
me.callParent();
}
},
}, function() {
@ -374,8 +374,8 @@ Ext.define('PVE.node.CephServiceList', {
'ceph_version', 'ceph_version_short',
{ type: 'string', name: 'version', calculate: function(data) {
return PVE.Utils.parse_ceph_version(data);
} }
} },
],
idProperty: 'name'
idProperty: 'name',
});
});

View File

@ -4,15 +4,15 @@ Ext.define('PVE.ceph.Services', {
layout: {
type: 'hbox',
align: 'stretch'
align: 'stretch',
},
bodyPadding: '0 5 20',
defaults: {
xtype: 'box',
style: {
'text-align':'center'
}
'text-align':'center',
},
},
items: [
@ -20,20 +20,20 @@ Ext.define('PVE.ceph.Services', {
flex: 1,
xtype: 'pveCephServiceList',
itemId: 'mons',
title: gettext('Monitors')
title: gettext('Monitors'),
},
{
flex: 1,
xtype: 'pveCephServiceList',
itemId: 'mgrs',
title: gettext('Managers')
title: gettext('Managers'),
},
{
flex: 1,
xtype: 'pveCephServiceList',
itemId: 'mdss',
title: gettext('Meta Data Servers')
}
title: gettext('Meta Data Servers'),
},
],
updateAll: function(metadata, status) {
@ -45,7 +45,7 @@ Ext.define('PVE.ceph.Services', {
'HEALTH_WARN': 2,
'HEALTH_UPGRADE': 3,
'HEALTH_OLD': 4,
'HEALTH_OK': 5
'HEALTH_OK': 5,
};
var healthmap = [
'HEALTH_UNKNOWN',
@ -53,7 +53,7 @@ Ext.define('PVE.ceph.Services', {
'HEALTH_WARN',
'HEALTH_UPGRADE',
'HEALTH_OLD',
'HEALTH_OK'
'HEALTH_OK',
];
var reduceFn = function(first, second) {
return first + '\n' + second.message;
@ -87,14 +87,14 @@ Ext.define('PVE.ceph.Services', {
if (!monmessages[monid]) {
monmessages[monid] = {
worstSeverity: healthstates.HEALTH_OK,
messages: []
messages: [],
};
}
monmessages[monid].messages.push(
PVE.Utils.get_ceph_icon_html(value.severity, true) +
Ext.Array.reduce(value.detail, reduceFn, '')
Ext.Array.reduce(value.detail, reduceFn, ''),
);
if (healthstates[value.severity] < monmessages[monid].worstSeverity) {
monmessages[monid].worstSeverity = healthstates[value.severity];
@ -153,7 +153,7 @@ Ext.define('PVE.ceph.Services', {
}
return mds;
}
},
};
for (let type of ['mon', 'mgr', 'mds']) {
@ -174,12 +174,12 @@ Ext.define('PVE.ceph.Services', {
host: host,
version: PVE.Utils.parse_ceph_version(metadata[type][id]),
service: metadata[type][id].service,
addr: metadata[type][id].addr || metadata[type][id].addrs || Proxmox.Utils.unknownText
addr: metadata[type][id].addr || metadata[type][id].addrs || Proxmox.Utils.unknownText,
};
result.statuses = [
gettext('Host') + ": " + result.host,
gettext('Address') + ": " + result.addr
gettext('Address') + ": " + result.addr,
];
if (checks[type]) {
@ -189,7 +189,7 @@ Ext.define('PVE.ceph.Services', {
if (result.service && !result.version) {
result.messages.push(
PVE.Utils.get_ceph_icon_html('HEALTH_UNKNOWN', true) +
gettext('Stopped')
gettext('Stopped'),
);
result.health = healthstates.HEALTH_UNKNOWN;
}
@ -208,7 +208,7 @@ Ext.define('PVE.ceph.Services', {
}
result.messages.push(
PVE.Utils.get_ceph_icon_html('HEALTH_OLD', true) +
gettext('A newer version was installed but old version still running, please restart')
gettext('A newer version was installed but old version still running, please restart'),
);
} else {
if (result.health > healthstates.HEALTH_UPGRADE) {
@ -216,7 +216,7 @@ Ext.define('PVE.ceph.Services', {
}
result.messages.push(
PVE.Utils.get_ceph_icon_html('HEALTH_UPGRADE', true) +
gettext('Other cluster members use a newer version of this service, please upgrade and restart')
gettext('Other cluster members use a newer version of this service, please upgrade and restart'),
);
}
}
@ -234,7 +234,7 @@ Ext.define('PVE.ceph.Services', {
me.getComponent('mons').updateAll(Object.values(me.mon));
me.getComponent('mgrs').updateAll(Object.values(me.mgr));
me.getComponent('mdss').updateAll(Object.values(me.mds));
}
},
});
Ext.define('PVE.ceph.ServiceList', {
@ -242,23 +242,23 @@ Ext.define('PVE.ceph.ServiceList', {
xtype: 'pveCephServiceList',
style: {
'text-align':'center'
'text-align':'center',
},
defaults: {
xtype: 'box',
style: {
'text-align':'center'
}
'text-align':'center',
},
},
items: [
{
itemId: 'title',
data: {
title: ''
title: '',
},
tpl: '<h3>{title}</h3>'
}
tpl: '<h3>{title}</h3>',
},
],
updateAll: function(list) {
@ -279,7 +279,7 @@ Ext.define('PVE.ceph.ServiceList', {
// we can add it at the service+1 position (because of the title)
service = me.insert(i+1, {
xtype: 'pveCephServiceWidget',
itemId: list[i].id
itemId: list[i].id,
});
if (!me.ids) {
me.ids = [];
@ -302,9 +302,9 @@ Ext.define('PVE.ceph.ServiceList', {
var me = this;
me.callParent();
me.getComponent('title').update({
title: me.title
title: me.title,
});
}
},
});
Ext.define('PVE.ceph.ServiceWidget', {
@ -316,12 +316,12 @@ Ext.define('PVE.ceph.ServiceWidget', {
title: '0',
health: 'HEALTH_ERR',
text: '',
iconCls: PVE.Utils.get_health_icon()
iconCls: PVE.Utils.get_health_icon(),
},
tpl: [
'{title}: ',
'<i class="fa fa-fw {iconCls}"></i>'
'<i class="fa fa-fw {iconCls}"></i>',
],
updateService: function(title, text, health) {
@ -331,7 +331,7 @@ Ext.define('PVE.ceph.ServiceWidget', {
health: health,
text: text,
title: title,
iconCls: PVE.Utils.get_health_icon(PVE.Utils.map_ceph_health[health])
iconCls: PVE.Utils.get_health_icon(PVE.Utils.map_ceph_health[health]),
}));
if (me.tooltip) {
@ -360,11 +360,11 @@ Ext.define('PVE.ceph.ServiceWidget', {
trackMouse: true,
dismissDelay: 0,
renderTo: Ext.getBody(),
html: me.data.text
html: me.data.text,
});
}
me.tooltip.show();
}
},
},
mouseleave: {
element: 'el',
@ -374,7 +374,7 @@ Ext.define('PVE.ceph.ServiceWidget', {
me.tooltip.destroy();
delete me.tooltip;
}
}
}
}
},
},
},
});

View File

@ -9,11 +9,11 @@ Ext.define('PVE.node.CephStatus', {
bodyPadding: 5,
layout: {
type: 'column'
type: 'column',
},
defaults: {
padding: 5
padding: 5,
},
items: [
@ -25,16 +25,16 @@ Ext.define('PVE.node.CephStatus', {
responsiveConfig: {
'width < 1900': {
minHeight: 230,
columnWidth: 1
columnWidth: 1,
},
'width >= 1900': {
minHeight: 500,
columnWidth: 0.5
}
columnWidth: 0.5,
},
},
layout: {
type: 'hbox',
align: 'stretch'
align: 'stretch',
},
items: [
{
@ -49,7 +49,7 @@ Ext.define('PVE.node.CephStatus', {
flex: 1,
itemId: 'overallhealth',
xtype: 'pveHealthWidget',
title: gettext('Status')
title: gettext('Status'),
},
{
itemId: 'versioninfo',
@ -64,7 +64,7 @@ Ext.define('PVE.node.CephStatus', {
style: {
'text-align': 'center',
},
}
},
],
},
{
@ -93,16 +93,16 @@ Ext.define('PVE.node.CephStatus', {
return '<i class="fa fa-fw ' + classes + '"></i>';
},
sorter: {
sorterFn: function(a,b) {
sorterFn: function(a, b) {
var healthArr = ['HEALTH_ERR', 'HEALTH_WARN', 'HEALTH_OK'];
return healthArr.indexOf(b.data.severity) - healthArr.indexOf(a.data.severity);
}
}
},
},
},
{
dataIndex: 'summary',
header: gettext('Summary'),
flex: 1
flex: 1,
},
{
xtype: 'actioncolumn',
@ -120,7 +120,7 @@ Ext.define('PVE.node.CephStatus', {
width: 650,
height: 400,
layout: {
type: 'fit'
type: 'fit',
},
items: [{
scrollable: true,
@ -128,18 +128,18 @@ Ext.define('PVE.node.CephStatus', {
xtype: 'box',
html: [
'<span>' + Ext.htmlEncode(record.data.summary) + '</span>',
'<pre>' + Ext.htmlEncode(record.data.detail) + '</pre>'
]
}]
'<pre>' + Ext.htmlEncode(record.data.detail) + '</pre>',
],
}],
});
win.show();
}
}
]
}
]
}
]
},
},
],
},
],
},
],
},
{
xtype: 'pveCephStatusDetail',
@ -148,14 +148,14 @@ Ext.define('PVE.node.CephStatus', {
responsiveConfig: {
'width < 1900': {
columnWidth: 1,
minHeight: 250
minHeight: 250,
},
'width >= 1900': {
columnWidth: 0.5,
minHeight: 300
}
minHeight: 300,
},
},
title: gettext('Status')
title: gettext('Status'),
},
{
title: gettext('Services'),
@ -164,18 +164,18 @@ Ext.define('PVE.node.CephStatus', {
plugins: 'responsive',
layout: {
type: 'hbox',
align: 'stretch'
align: 'stretch',
},
responsiveConfig: {
'width < 1900': {
columnWidth: 1,
minHeight: 200
minHeight: 200,
},
'width >= 1900': {
columnWidth: 0.5,
minHeight: 200
}
}
minHeight: 200,
},
},
},
{
xtype: 'panel',
@ -184,7 +184,7 @@ Ext.define('PVE.node.CephStatus', {
bodyPadding: 5,
layout: {
type: 'hbox',
align: 'center'
align: 'center',
},
items: [
{
@ -194,7 +194,7 @@ Ext.define('PVE.node.CephStatus', {
{
xtype: 'proxmoxGauge',
itemId: 'space',
title: gettext('Usage')
title: gettext('Usage'),
},
{
flex: 1,
@ -217,46 +217,46 @@ Ext.define('PVE.node.CephStatus', {
xtype: 'progressbar',
itemId: 'recoveryprogress',
},
]
],
},
]
],
},
{
flex: 2,
xtype: 'container',
defaults: {
padding: 0,
height: 100
height: 100,
},
items: [
{
itemId: 'reads',
xtype: 'pveRunningChart',
title: gettext('Reads'),
renderer: PVE.Utils.render_bandwidth
renderer: PVE.Utils.render_bandwidth,
},
{
itemId: 'writes',
xtype: 'pveRunningChart',
title: gettext('Writes'),
renderer: PVE.Utils.render_bandwidth
renderer: PVE.Utils.render_bandwidth,
},
{
itemId: 'readiops',
xtype: 'pveRunningChart',
title: 'IOPS: ' + gettext('Reads'),
renderer: Ext.util.Format.numberRenderer('0,000')
renderer: Ext.util.Format.numberRenderer('0,000'),
},
{
itemId: 'writeiops',
xtype: 'pveRunningChart',
title: 'IOPS: ' + gettext('Writes'),
renderer: Ext.util.Format.numberRenderer('0,000')
renderer: Ext.util.Format.numberRenderer('0,000'),
},
]
}
]
}
],
},
],
},
],
generateCheckData: function(health) {
@ -274,9 +274,9 @@ Ext.define('PVE.node.CephStatus', {
function(first, second) {
return first + '\n' + second.message;
},
''
'',
),
severity: checks[key].severity
severity: checks[key].severity,
});
});
@ -310,7 +310,7 @@ Ext.define('PVE.node.CephStatus', {
var text = Ext.String.format(gettext('{0} of {1}'),
PVE.Utils.render_size(used),
PVE.Utils.render_size(total)
PVE.Utils.render_size(total),
);
// update the usage widget
@ -369,8 +369,8 @@ Ext.define('PVE.node.CephStatus', {
interval: 5000,
proxy: {
type: 'proxmox',
url: baseurl + '/status'
}
url: baseurl + '/status',
},
});
me.metadatastore = Ext.create('Proxmox.data.UpdateStore', {
@ -378,8 +378,8 @@ Ext.define('PVE.node.CephStatus', {
interval: 15*1000,
proxy: {
type: 'proxmox',
url: '/api2/json/cluster/ceph/metadata'
}
url: '/api2/json/cluster/ceph/metadata',
},
});
// save references for the updatefunction
@ -397,7 +397,7 @@ Ext.define('PVE.node.CephStatus', {
me.mon(win, 'cephInstallWindowClosed', function(){
me.store.startUpdate();
});
}
},
);
});
@ -431,6 +431,6 @@ Ext.define('PVE.node.CephStatus', {
me.on('destroy', me.metadatastore.stopUpdate);
me.store.startUpdate();
me.metadatastore.startUpdate();
}
},
});

View File

@ -4,15 +4,15 @@ Ext.define('PVE.ceph.StatusDetail', {
layout: {
type: 'hbox',
align: 'stretch'
align: 'stretch',
},
bodyPadding: '0 5',
defaults: {
xtype: 'box',
style: {
'text-align':'center'
}
'text-align':'center',
},
},
items: [{
@ -27,7 +27,7 @@ Ext.define('PVE.ceph.StatusDetail', {
upout: 0,
downin: 0,
downout: 0,
oldosds: []
oldosds: [],
},
tpl: [
'<h3>' + 'OSDs' + '</h3>',
@ -68,8 +68,8 @@ Ext.define('PVE.ceph.StatusDetail', {
'<div style="clear:both"></div>',
'</tpl>',
'</div>',
'</tpl>'
]
'</tpl>',
],
},
{
flex: 1,
@ -83,7 +83,7 @@ Ext.define('PVE.ceph.StatusDetail', {
'#CFCFCF',
'#21BF4B',
'#FFCC00',
'#FF6C59'
'#FF6C59',
],
store: { },
series: [
@ -101,13 +101,13 @@ Ext.define('PVE.ceph.StatusDetail', {
state.state_name + ': ' + state.count.toString();
});
tooltip.setHtml(html);
}
},
},
subStyle: {
strokeStyle: false
}
}
]
strokeStyle: false,
},
},
],
},
{
flex: 1.6,
@ -116,7 +116,7 @@ Ext.define('PVE.ceph.StatusDetail', {
maxHeight: 250,
scrollable: true,
data: {
states: []
states: [],
},
tpl: [
'<h3>' + 'PGs' + '</h3>',
@ -124,8 +124,8 @@ Ext.define('PVE.ceph.StatusDetail', {
'<div class="left-aligned"><i class ="fa fa-circle {cls}"></i> {state_name}:</div>',
'<div class="right-aligned">{count}</div><br />',
'<div style="clear:both"></div>',
'</tpl>'
]
'</tpl>',
],
}],
// similar to mgr dashboard
@ -163,7 +163,7 @@ Ext.define('PVE.ceph.StatusDetail', {
recovery_unfound: 3,
snaptrim_error: 3,
stale: 3,
undersized: 3
undersized: 3,
},
statecategories: [
@ -171,20 +171,20 @@ Ext.define('PVE.ceph.StatusDetail', {
text: gettext('Unknown'),
count: 0,
states: [],
cls: 'faded'
cls: 'faded',
},
{
text: gettext('Clean'),
cls: 'good'
cls: 'good',
},
{
text: gettext('Working'),
cls: 'warning'
cls: 'warning',
},
{
text: gettext('Error'),
cls: 'critical'
}
cls: 'critical',
},
],
updateAll: function(metadata, status) {
@ -206,7 +206,7 @@ Ext.define('PVE.ceph.StatusDetail', {
if (version != maxversion) {
oldosds.push({
id: osd.id,
version: version
version: version,
});
}
});
@ -215,7 +215,7 @@ Ext.define('PVE.ceph.StatusDetail', {
// update PGs sorted
var pgmap = status.pgmap || {};
var pgs_by_state = pgmap.pgs_by_state || [];
pgs_by_state.sort(function(a,b){
pgs_by_state.sort(function(a, b){
return (a.state_name < b.state_name)?-1:(a.state_name === b.state_name)?0:1;
});
@ -253,7 +253,7 @@ Ext.define('PVE.ceph.StatusDetail', {
if (key === 'OSD_DOWN') {
found = value.summary.message.match(downinregex);
if (found !== null) {
downin_osds = parseInt(found[1],10);
downin_osds = parseInt(found[1], 10);
}
}
});
@ -278,13 +278,13 @@ Ext.define('PVE.ceph.StatusDetail', {
upout: upout_osds,
downin: downin_osds,
downout: downout_osds,
oldosds: oldosds
oldosds: oldosds,
};
var osdcomponent = me.getComponent('osds');
osdcomponent.update(Ext.apply(osdcomponent.data, osds));
me.suspendLayout = false;
me.updateLayout();
}
},
});

View File

@ -15,7 +15,7 @@ Ext.define('PVE.controller.StorageEdit', {
maxfiles.reset();
}
maxfiles.setDisabled(!hasBackups);
}
}
}
},
},
},
});

View File

@ -65,14 +65,14 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_resource_type,
sortable: true,
hideable: false,
width: 100
width: 100,
},
id: {
header: 'ID',
type: 'string',
hidden: true,
sortable: true,
width: 80
width: 80,
},
running: {
header: gettext('Online'),
@ -82,7 +82,7 @@ Ext.define('PVE.data.ResourceStore', {
convert: function(value, record) {
var info = record.data;
return (Ext.isNumeric(info.uptime) && (info.uptime > 0));
}
},
},
text: {
header: gettext('Description'),
@ -110,20 +110,20 @@ Ext.define('PVE.data.ResourceStore', {
}
return text;
}
},
},
vmid: {
header: 'VMID',
type: 'integer',
hidden: true,
sortable: true,
width: 80
width: 80,
},
name: {
header: gettext('Name'),
hidden: true,
sortable: true,
type: 'string'
type: 'string',
},
disk: {
header: gettext('Disk usage'),
@ -131,7 +131,7 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_disk_usage,
sortable: true,
width: 100,
hidden: true
hidden: true,
},
diskuse: {
header: gettext('Disk usage') + " %",
@ -140,7 +140,7 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_disk_usage_percent,
width: 100,
calculate: PVE.Utils.calculate_disk_usage,
sortType: 'asFloat'
sortType: 'asFloat',
},
maxdisk: {
header: gettext('Disk size'),
@ -148,7 +148,7 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_size,
sortable: true,
hidden: true,
width: 100
width: 100,
},
mem: {
header: gettext('Memory usage'),
@ -156,7 +156,7 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_mem_usage,
sortable: true,
hidden: true,
width: 100
width: 100,
},
memuse: {
header: gettext('Memory usage') + " %",
@ -165,7 +165,7 @@ Ext.define('PVE.data.ResourceStore', {
calculate: PVE.Utils.calculate_mem_usage,
sortType: 'asFloat',
sortable: true,
width: 100
width: 100,
},
maxmem: {
header: gettext('Memory size'),
@ -173,21 +173,21 @@ Ext.define('PVE.data.ResourceStore', {
renderer: PVE.Utils.render_size,
hidden: true,
sortable: true,
width: 100
width: 100,
},
cpu: {
header: gettext('CPU usage'),
type: 'float',
renderer: PVE.Utils.render_cpu,
sortable: true,
width: 100
width: 100,
},
maxcpu: {
header: gettext('maxcpu'),
type: 'integer',
hidden: true,
sortable: true,
width: 60
width: 60,
},
diskread: {
header: gettext('Total Disk Read'),
@ -195,7 +195,7 @@ Ext.define('PVE.data.ResourceStore', {
hidden: true,
sortable: true,
renderer: Proxmox.Utils.format_size,
width: 100
width: 100,
},
diskwrite: {
header: gettext('Total Disk Write'),
@ -203,7 +203,7 @@ Ext.define('PVE.data.ResourceStore', {
hidden: true,
sortable: true,
renderer: Proxmox.Utils.format_size,
width: 100
width: 100,
},
netin: {
header: gettext('Total NetIn'),
@ -211,7 +211,7 @@ Ext.define('PVE.data.ResourceStore', {
hidden: true,
sortable: true,
renderer: Proxmox.Utils.format_size,
width: 100
width: 100,
},
netout: {
header: gettext('Total NetOut'),
@ -219,64 +219,64 @@ Ext.define('PVE.data.ResourceStore', {
hidden: true,
sortable: true,
renderer: Proxmox.Utils.format_size,
width: 100
width: 100,
},
template: {
header: gettext('Template'),
type: 'integer',
hidden: true,
sortable: true,
width: 60
width: 60,
},
uptime: {
header: gettext('Uptime'),
type: 'integer',
renderer: Proxmox.Utils.render_uptime,
sortable: true,
width: 110
width: 110,
},
node: {
header: gettext('Node'),
type: 'string',
hidden: true,
sortable: true,
width: 110
width: 110,
},
storage: {
header: gettext('Storage'),
type: 'string',
hidden: true,
sortable: true,
width: 110
width: 110,
},
pool: {
header: gettext('Pool'),
type: 'string',
hidden: true,
sortable: true,
width: 110
width: 110,
},
hastate: {
header: gettext('HA State'),
type: 'string',
defaultValue: 'unmanaged',
hidden: true,
sortable: true
sortable: true,
},
status: {
header: gettext('Status'),
type: 'string',
hidden: true,
sortable: true,
width: 110
width: 110,
},
lock: {
header: gettext('Lock'),
type: 'string',
hidden: true,
sortable: true,
width: 110
}
width: 110,
},
};
var fields = [];
@ -304,14 +304,14 @@ Ext.define('PVE.data.ResourceStore', {
fields: fields,
proxy: {
type: 'proxmox',
url: '/api2/json/cluster/resources'
}
url: '/api2/json/cluster/resources',
},
});
Ext.define('PVETree', {
extend: "Ext.data.Model",
fields: fields,
proxy: { type: 'memory' }
proxy: { type: 'memory' },
});
Ext.apply(config, {
@ -325,9 +325,9 @@ Ext.define('PVE.data.ResourceStore', {
});
return res;
},
fieldNames: fieldNames
fieldNames: fieldNames,
});
me.callParent([config]);
}
},
});

View File

@ -6,14 +6,14 @@ Ext.define('pve-rrd-node', {
// percentage
convert: function(value) {
return value*100;
}
},
},
{
name:'iowait',
// percentage
convert: function(value) {
return value*100;
}
},
},
'loadavg',
'maxcpu',
@ -25,8 +25,8 @@ Ext.define('pve-rrd-node', {
'rootused',
'swaptotal',
'swapused',
{ type: 'date', dateFormat: 'timestamp', name: 'time' }
]
{ type: 'date', dateFormat: 'timestamp', name: 'time' },
],
});
Ext.define('pve-rrd-guest', {
@ -37,7 +37,7 @@ Ext.define('pve-rrd-guest', {
// percentage
convert: function(value) {
return value*100;
}
},
},
'maxcpu',
'netin',
@ -48,8 +48,8 @@ Ext.define('pve-rrd-guest', {
'maxdisk',
'diskread',
'diskwrite',
{ type: 'date', dateFormat: 'timestamp', name: 'time' }
]
{ type: 'date', dateFormat: 'timestamp', name: 'time' },
],
});
Ext.define('pve-rrd-storage', {
@ -57,6 +57,6 @@ Ext.define('pve-rrd-storage', {
fields: [
'used',
'total',
{ type: 'date', dateFormat: 'timestamp', name: 'time' }
]
{ type: 'date', dateFormat: 'timestamp', name: 'time' },
],
});

View File

@ -16,8 +16,8 @@ Ext.define('PVE.dc.ACLAdd', {
name: 'path',
value: me.path,
allowBlank: false,
fieldLabel: gettext('Path')
}
fieldLabel: gettext('Path'),
},
];
if (me.aclType === 'group') {
@ -25,21 +25,21 @@ Ext.define('PVE.dc.ACLAdd', {
items.push({
xtype: 'pveGroupSelector',
name: 'groups',
fieldLabel: gettext('Group')
fieldLabel: gettext('Group'),
});
} else if (me.aclType === 'user') {
me.subject = gettext("User Permission");
items.push({
xtype: 'pveUserSelector',
name: 'users',
fieldLabel: gettext('User')
fieldLabel: gettext('User'),
});
} else if (me.aclType === 'token') {
me.subject = gettext("API Token Permission");
items.push({
xtype: 'pveTokenSelector',
name: 'tokens',
fieldLabel: gettext('API Token')
fieldLabel: gettext('API Token'),
});
} else {
throw "unknown ACL type";
@ -49,7 +49,7 @@ Ext.define('PVE.dc.ACLAdd', {
xtype: 'pmxRoleSelector',
name: 'roles',
value: 'NoAccess',
fieldLabel: gettext('Role')
fieldLabel: gettext('Role'),
});
if (!me.path) {
@ -58,21 +58,21 @@ Ext.define('PVE.dc.ACLAdd', {
name: 'propagate',
checked: true,
uncheckedValue: 0,
fieldLabel: gettext('Propagate')
fieldLabel: gettext('Propagate'),
});
}
var ipanel = Ext.create('Proxmox.panel.InputPanel', {
items: items,
onlineHelp: 'pveum_permission_management'
onlineHelp: 'pveum_permission_management',
});
Ext.apply(me, {
items: [ ipanel ]
items: [ ipanel ],
});
me.callParent();
}
},
});
Ext.define('PVE.dc.ACLView', {
@ -91,25 +91,25 @@ Ext.define('PVE.dc.ACLView', {
initComponent : function() {
var me = this;
var store = Ext.create('Ext.data.Store',{
var store = Ext.create('Ext.data.Store', {
model: 'pve-acl',
proxy: {
type: 'proxmox',
url: "/api2/json/access/acl"
url: "/api2/json/access/acl",
},
sorters: {
property: 'path',
order: 'DESC'
}
order: 'DESC',
},
});
if (me.path) {
store.addFilter(Ext.create('Ext.util.Filter',{
store.addFilter(Ext.create('Ext.util.Filter', {
filterFn: function(item) {
if (item.data.path === me.path) {
return true;
}
}
},
}));
}
@ -127,14 +127,14 @@ Ext.define('PVE.dc.ACLView', {
flex: 1,
sortable: true,
renderer: render_ugid,
dataIndex: 'ugid'
dataIndex: 'ugid',
},
{
header: gettext('Role'),
flex: 1,
sortable: true,
dataIndex: 'roleid'
}
dataIndex: 'roleid',
},
];
if (!me.path) {
@ -142,13 +142,13 @@ Ext.define('PVE.dc.ACLView', {
header: gettext('Path'),
flex: 1,
sortable: true,
dataIndex: 'path'
dataIndex: 'path',
});
columns.push({
header: gettext('Propagate'),
width: 80,
sortable: true,
dataIndex: 'propagate'
dataIndex: 'propagate',
});
}
@ -167,7 +167,7 @@ Ext.define('PVE.dc.ACLView', {
var params = {
'delete': 1,
path: rec.data.path,
roles: rec.data.roleid
roles: rec.data.roleid,
};
if (rec.data.type === 'group') {
params.groups = rec.data.ugid;
@ -189,9 +189,9 @@ Ext.define('PVE.dc.ACLView', {
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
}
},
});
Proxmox.Utils.monStoreErrors(me, store);
@ -209,54 +209,54 @@ Ext.define('PVE.dc.ACLView', {
text: gettext('Group Permission'),
iconCls: 'fa fa-fw fa-group',
handler: function() {
var win = Ext.create('PVE.dc.ACLAdd',{
var win = Ext.create('PVE.dc.ACLAdd', {
aclType: 'group',
path: me.path
path: me.path,
});
win.on('destroy', reload);
win.show();
}
},
},
{
text: gettext('User Permission'),
iconCls: 'fa fa-fw fa-user',
handler: function() {
var win = Ext.create('PVE.dc.ACLAdd',{
var win = Ext.create('PVE.dc.ACLAdd', {
aclType: 'user',
path: me.path
path: me.path,
});
win.on('destroy', reload);
win.show();
}
},
},
{
text: gettext('API Token Permission'),
iconCls: 'fa fa-fw fa-user-o',
handler: function() {
var win = Ext.create('PVE.dc.ACLAdd',{
var win = Ext.create('PVE.dc.ACLAdd', {
aclType: 'token',
path: me.path
path: me.path,
});
win.on('destroy', reload);
win.show();
}
}
]
}
},
},
],
},
},
remove_btn
remove_btn,
],
viewConfig: {
trackOver: false
trackOver: false,
},
columns: columns,
listeners: {
activate: reload
}
activate: reload,
},
});
me.callParent();
}
},
}, function() {
Ext.define('pve-acl', {
@ -265,9 +265,9 @@ Ext.define('PVE.dc.ACLView', {
'path', 'type', 'ugid', 'roleid',
{
name: 'propagate',
type: 'boolean'
}
]
type: 'boolean',
},
],
});
});

View File

@ -21,7 +21,7 @@ Ext.define('PVE.dc.BackupEdit', {
}
var vmidField = Ext.create('Ext.form.field.Hidden', {
name: 'vmid'
name: 'vmid',
});
// 'value' can be assigned a string or an array
@ -31,11 +31,11 @@ Ext.define('PVE.dc.BackupEdit', {
['include', gettext('Include selected VMs')],
['all', gettext('All')],
['exclude', gettext('Exclude selected VMs')],
['pool', gettext('Pool based')]
['pool', gettext('Pool based')],
],
fieldLabel: gettext('Selection mode'),
name: 'selMode',
value: ''
value: '',
});
var sm = Ext.create('Ext.selection.CheckboxModel', {
@ -52,8 +52,8 @@ Ext.define('PVE.dc.BackupEdit', {
vmidField.suspendEvent('change');
vmidField.setValue(sel);
vmidField.resumeEvent('change');
}
}
},
},
});
var storagesel = Ext.create('PVE.form.StorageSelector', {
@ -74,16 +74,16 @@ Ext.define('PVE.dc.BackupEdit', {
} else if (!compressionSelector.getEditable()) {
compressionSelector.setDisabled(false);
}
}
}
},
},
});
var store = new Ext.data.Store({
model: 'PVEResources',
sorters: {
property: 'vmid',
order: 'ASC'
}
order: 'ASC',
},
});
var vmgrid = Ext.createWidget('grid', {
@ -96,11 +96,11 @@ Ext.define('PVE.dc.BackupEdit', {
{
header: 'ID',
dataIndex: 'vmid',
width: 60
width: 60,
},
{
header: gettext('Node'),
dataIndex: 'node'
dataIndex: 'node',
},
{
header: gettext('Status'),
@ -111,18 +111,18 @@ Ext.define('PVE.dc.BackupEdit', {
} else {
return Proxmox.Utils.stoppedText;
}
}
},
},
{
header: gettext('Name'),
dataIndex: 'name',
flex: 1
flex: 1,
},
{
header: gettext('Type'),
dataIndex: 'type'
}
]
dataIndex: 'type',
},
],
});
var selectPoolMembers = function(poolid) {
@ -134,8 +134,8 @@ Ext.define('PVE.dc.BackupEdit', {
{
id: 'poolFilter',
property: 'pool',
value: poolid
}
value: poolid,
},
]);
sm.selectAll(true);
};
@ -148,8 +148,8 @@ Ext.define('PVE.dc.BackupEdit', {
listeners: {
change: function( selpool, newValue, oldValue) {
selectPoolMembers(newValue);
}
}
},
},
});
var nodesel = Ext.create('PVE.form.NodeSelector', {
@ -174,8 +174,8 @@ Ext.define('PVE.dc.BackupEdit', {
if (mode === 'pool') {
selectPoolMembers(selPool.value);
}
}
}
},
},
});
var column1 = [
@ -187,7 +187,7 @@ Ext.define('PVE.dc.BackupEdit', {
fieldLabel: gettext('Day of week'),
multiSelect: true,
value: ['sat'],
allowBlank: false
allowBlank: false,
},
{
xtype: 'timefield',
@ -196,37 +196,37 @@ Ext.define('PVE.dc.BackupEdit', {
format: 'H:i',
formatText: 'HH:MM',
value: '00:00',
allowBlank: false
allowBlank: false,
},
selModeField,
selPool
selPool,
];
var column2 = [
{
xtype: 'textfield',
fieldLabel: gettext('Send email to'),
name: 'mailto'
name: 'mailto',
},
{
xtype: 'pveEmailNotificationSelector',
fieldLabel: gettext('Email notification'),
name: 'mailnotification',
deleteEmpty: me.isCreate ? false : true,
value: me.isCreate ? 'always' : ''
value: me.isCreate ? 'always' : '',
},
{
xtype: 'pveCompressionSelector',
fieldLabel: gettext('Compression'),
name: 'compress',
deleteEmpty: me.isCreate ? false : true,
value: 'zstd'
value: 'zstd',
},
{
xtype: 'pveBackupModeSelector',
fieldLabel: gettext('Mode'),
value: 'snapshot',
name: 'mode'
name: 'mode',
},
{
xtype: 'proxmoxcheckbox',
@ -234,9 +234,9 @@ Ext.define('PVE.dc.BackupEdit', {
name: 'enabled',
uncheckedValue: 0,
defaultValue: 1,
checked: true
checked: true,
},
vmidField
vmidField,
];
var ipanel = Ext.create('Proxmox.panel.InputPanel', {
@ -270,7 +270,7 @@ Ext.define('PVE.dc.BackupEdit', {
delete values.pool;
}
return values;
}
},
});
var update_vmid_selection = function(list, mode) {
@ -342,7 +342,7 @@ Ext.define('PVE.dc.BackupEdit', {
} else {
update_vmid_selection(list, mode);
}
}
},
});
};
@ -350,7 +350,7 @@ Ext.define('PVE.dc.BackupEdit', {
subject: gettext("Backup Job"),
url: url,
method: method,
items: [ ipanel, vmgrid ]
items: [ ipanel, vmgrid ],
});
me.callParent();
@ -380,12 +380,12 @@ Ext.define('PVE.dc.BackupEdit', {
}
me.setValues(data);
}
},
});
}
reload();
}
},
});
@ -416,7 +416,7 @@ Ext.define('PVE.dc.BackupDiskTree', {
scope: this,
callback: function(panel) {
panel.collapseAll();
}
},
},
],
@ -500,8 +500,8 @@ Ext.define('PVE.dc.BackupDiskTree', {
} else {
return txt + 'question-circle';
}
}
}
},
},
],
header: {
items: [{
@ -547,16 +547,16 @@ Ext.define('PVE.dc.BackupDiskTree', {
});
return match;
});
}
}
}
},
},
},
]},
});
me.callParent();
me.reload();
}
},
});
Ext.define('PVE.dc.BackupInfo', {
@ -603,7 +603,7 @@ Ext.define('PVE.dc.BackupInfo', {
name: 'pool',
fieldLabel: gettext('Pool to backup'),
xtype: 'displayfield',
}
},
],
column2: [
{
@ -709,7 +709,7 @@ Ext.define('PVE.dc.BackupInfo', {
me.callParent();
me.setValues(me.record);
}
},
});
@ -783,9 +783,9 @@ Ext.define('PVE.dc.BackedGuests', {
});
return match;
});
}
}
}
},
},
},
],
viewConfig: {
stripeRows: true,
@ -812,8 +812,8 @@ Ext.define('PVE.dc.BackupView', {
model: 'pve-cluster-backup',
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/backup"
}
url: "/api2/json/cluster/backup",
},
});
var not_backed_store = new Ext.data.Store({
@ -848,7 +848,7 @@ Ext.define('PVE.dc.BackupView', {
}
var win = Ext.create('PVE.dc.BackupEdit', {
jobid: rec.data.id
jobid: rec.data.id,
});
win.on('destroy', reload);
win.show();
@ -886,10 +886,10 @@ Ext.define('PVE.dc.BackupView', {
region: 'center',
layout: {
type: 'vbox',
align: 'stretch'
align: 'stretch',
},
items: [infoview, disktree],
}]
}],
}).show();
};
@ -949,7 +949,7 @@ Ext.define('PVE.dc.BackupView', {
errors.push(node + ': ' + response.htmlStatus);
postRequest();
},
success: postRequest
success: postRequest,
}));
};
@ -974,10 +974,10 @@ Ext.define('PVE.dc.BackupView', {
region: 'center',
layout: {
type: 'vbox',
align: 'stretch'
align: 'stretch',
},
items: [backedinfo],
}]
}],
}).show();
};
@ -985,7 +985,7 @@ Ext.define('PVE.dc.BackupView', {
text: gettext('Edit'),
disabled: true,
selModel: sm,
handler: run_editor
handler: run_editor,
});
var run_btn = new Proxmox.button.Button({
@ -1008,9 +1008,9 @@ Ext.define('PVE.dc.BackupView', {
return;
}
run_backup_now(rec.data);
}
},
});
}
},
});
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
@ -1018,7 +1018,7 @@ Ext.define('PVE.dc.BackupView', {
baseurl: '/cluster/backup',
callback: function() {
reload();
}
},
});
var detail_btn = new Proxmox.button.Button({
@ -1048,16 +1048,16 @@ Ext.define('PVE.dc.BackupView', {
stateful: true,
stateId: 'grid-dc-backup',
viewConfig: {
trackOver: false
trackOver: false,
},
tbar: [
{
text: gettext('Add'),
handler: function() {
var win = Ext.create('PVE.dc.BackupEdit',{});
var win = Ext.create('PVE.dc.BackupEdit', {});
win.on('destroy', reload);
win.show();
}
},
},
'-',
remove_btn,
@ -1078,7 +1078,7 @@ Ext.define('PVE.dc.BackupView', {
sortable: true,
disabled: true,
disabledCls: 'x-item-enabled',
stopSelection: false
stopSelection: false,
},
{
header: gettext('Node'),
@ -1090,43 +1090,43 @@ Ext.define('PVE.dc.BackupView', {
return value;
}
return me.allText;
}
},
},
{
header: gettext('Day of week'),
width: 200,
sortable: false,
dataIndex: 'dow',
renderer: PVE.Utils.render_backup_days_of_week
renderer: PVE.Utils.render_backup_days_of_week,
},
{
header: gettext('Start Time'),
width: 60,
sortable: true,
dataIndex: 'starttime'
dataIndex: 'starttime',
},
{
header: gettext('Storage'),
width: 100,
sortable: true,
dataIndex: 'storage'
dataIndex: 'storage',
},
{
header: gettext('Selection'),
flex: 1,
sortable: false,
dataIndex: 'vmid',
renderer: PVE.Utils.render_backup_selection
}
renderer: PVE.Utils.render_backup_selection,
},
],
listeners: {
activate: reload,
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
}
},
}, function() {
Ext.define('pve-cluster-backup', {
@ -1136,7 +1136,7 @@ Ext.define('PVE.dc.BackupView', {
'storage', 'node', 'vmid', 'exclude',
'mailto', 'pool', 'compress', 'mode',
{ name: 'enabled', type: 'boolean' },
{ name: 'all', type: 'boolean' }
]
{ name: 'all', type: 'boolean' },
],
});
});

View File

@ -2,21 +2,21 @@ Ext.define('pve-cluster-nodes', {
extend: 'Ext.data.Model',
fields: [
'node', { type: 'integer', name: 'nodeid' }, 'ring0_addr', 'ring1_addr',
{ type: 'integer', name: 'quorum_votes' }
{ type: 'integer', name: 'quorum_votes' },
],
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/config/nodes"
url: "/api2/json/cluster/config/nodes",
},
idProperty: 'nodeid'
idProperty: 'nodeid',
});
Ext.define('pve-cluster-info', {
extend: 'Ext.data.Model',
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/config/join"
}
url: "/api2/json/cluster/config/join",
},
});
Ext.define('PVE.ClusterAdministration', {
@ -37,11 +37,11 @@ Ext.define('PVE.ClusterAdministration', {
preferred_node: {
name: '',
fp: '',
addr: ''
addr: '',
},
isInCluster: false,
nodecount: 0
}
nodecount: 0,
},
},
items: [
@ -56,7 +56,7 @@ Ext.define('PVE.ClusterAdministration', {
autoStart: true,
interval: 15 * 1000,
storeid: 'pve-cluster-info',
model: 'pve-cluster-info'
model: 'pve-cluster-info',
});
view.store.on('load', this.onLoad, this);
view.on('destroy', view.store.stopUpdate);
@ -71,7 +71,7 @@ Ext.define('PVE.ClusterAdministration', {
vm.set('preferred_node', {
name: '',
addr: '',
fp: ''
fp: '',
});
return;
}
@ -96,7 +96,7 @@ Ext.define('PVE.ClusterAdministration', {
addr: nodeinfo.pve_addr,
peerLinks: links,
ring_addr: ring_addr,
fp: nodeinfo.pve_fp
fp: nodeinfo.pve_fp,
});
},
@ -108,8 +108,8 @@ Ext.define('PVE.ClusterAdministration', {
listeners: {
destroy: function() {
view.store.startUpdate();
}
}
},
},
});
},
@ -121,8 +121,8 @@ Ext.define('PVE.ClusterAdministration', {
fingerprint: vm.get('preferred_node.fp'),
peerLinks: vm.get('preferred_node.peerLinks'),
ring_addr: vm.get('preferred_node.ring_addr'),
totem: vm.get('totem')
}
totem: vm.get('totem'),
},
});
win.show();
},
@ -135,10 +135,10 @@ Ext.define('PVE.ClusterAdministration', {
listeners: {
destroy: function() {
view.store.startUpdate();
}
}
},
},
});
}
},
},
tbar: [
{
@ -146,25 +146,25 @@ Ext.define('PVE.ClusterAdministration', {
reference: 'createButton',
handler: 'onCreate',
bind: {
disabled: '{isInCluster}'
}
disabled: '{isInCluster}',
},
},
{
text: gettext('Join Information'),
reference: 'addButton',
handler: 'onClusterInfo',
bind: {
disabled: '{!isInCluster}'
}
disabled: '{!isInCluster}',
},
},
{
text: gettext('Join Cluster'),
reference: 'joinButton',
handler: 'onJoin',
bind: {
disabled: '{isInCluster}'
}
}
disabled: '{isInCluster}',
},
},
],
layout: 'hbox',
bodyPadding: 5,
@ -174,18 +174,18 @@ Ext.define('PVE.ClusterAdministration', {
fieldLabel: gettext('Cluster Name'),
bind: {
value: '{totem.cluster_name}',
hidden: '{!isInCluster}'
hidden: '{!isInCluster}',
},
flex: 1
flex: 1,
},
{
xtype: 'displayfield',
fieldLabel: gettext('Config Version'),
bind: {
value: '{totem.config_version}',
hidden: '{!isInCluster}'
hidden: '{!isInCluster}',
},
flex: 1
flex: 1,
},
{
xtype: 'displayfield',
@ -193,19 +193,19 @@ Ext.define('PVE.ClusterAdministration', {
labelWidth: 120,
bind: {
value: '{nodecount}',
hidden: '{!isInCluster}'
hidden: '{!isInCluster}',
},
flex: 1
flex: 1,
},
{
xtype: 'displayfield',
value: gettext('Standalone node - no cluster defined'),
bind: {
hidden: '{isInCluster}'
hidden: '{isInCluster}',
},
flex: 1
}
]
flex: 1,
},
],
},
{
xtype: 'grid',
@ -222,14 +222,14 @@ Ext.define('PVE.ClusterAdministration', {
interval: 5 * 1000,
autoStart: true,
storeid: 'pve-cluster-nodes',
model: 'pve-cluster-nodes'
model: 'pve-cluster-nodes',
});
view.setStore(Ext.create('Proxmox.data.DiffStore', {
rstore: view.rstore,
sorters: {
property: 'nodeid',
order: 'DESC'
}
order: 'DESC',
},
}));
Proxmox.Utils.monStoreErrors(view, view.rstore);
view.rstore.on('load', this.onLoad, this);
@ -266,16 +266,16 @@ Ext.define('PVE.ClusterAdministration', {
return;
}
view.columns[linkIndex+linknum].setHidden(false);
}
},
);
}
},
},
columns: {
items: [
{
header: gettext('Nodename'),
hidden: false,
dataIndex: 'name'
dataIndex: 'name',
},
{
header: gettext('ID'),
@ -283,7 +283,7 @@ Ext.define('PVE.ClusterAdministration', {
width: 100,
flex: 0,
hidden: false,
dataIndex: 'nodeid'
dataIndex: 'nodeid',
},
{
header: gettext('Votes'),
@ -291,55 +291,55 @@ Ext.define('PVE.ClusterAdministration', {
width: 100,
flex: 0,
hidden: false,
dataIndex: 'quorum_votes'
dataIndex: 'quorum_votes',
},
{
header: Ext.String.format(gettext('Link {0}'), 0),
dataIndex: 'ring0_addr',
linkNumber: 0
linkNumber: 0,
},
{
header: Ext.String.format(gettext('Link {0}'), 1),
dataIndex: 'ring1_addr',
linkNumber: 1
linkNumber: 1,
},
{
header: Ext.String.format(gettext('Link {0}'), 2),
dataIndex: 'ring2_addr',
linkNumber: 2
linkNumber: 2,
},
{
header: Ext.String.format(gettext('Link {0}'), 3),
dataIndex: 'ring3_addr',
linkNumber: 3
linkNumber: 3,
},
{
header: Ext.String.format(gettext('Link {0}'), 4),
dataIndex: 'ring4_addr',
linkNumber: 4
linkNumber: 4,
},
{
header: Ext.String.format(gettext('Link {0}'), 5),
dataIndex: 'ring5_addr',
linkNumber: 5
linkNumber: 5,
},
{
header: Ext.String.format(gettext('Link {0}'), 6),
dataIndex: 'ring6_addr',
linkNumber: 6
linkNumber: 6,
},
{
header: Ext.String.format(gettext('Link {0}'), 7),
dataIndex: 'ring7_addr',
linkNumber: 7
}
linkNumber: 7,
},
],
defaults: {
flex: 1,
hidden: true,
minWidth: 150
}
}
}
]
minWidth: 150,
},
},
},
],
});

View File

@ -21,7 +21,7 @@ Ext.define('PVE.ClusterCreateWindow', {
fieldLabel: gettext('Cluster Name'),
allowBlank: false,
maxLength: 15,
name: 'clustername'
name: 'clustername',
},
{
xtype: 'fieldcontainer',
@ -30,11 +30,11 @@ Ext.define('PVE.ClusterCreateWindow', {
{
xtype: 'pveCorosyncLinkEditor',
infoText: gettext("Multiple links are used as failover, lower numbers have higher priority."),
name: 'links'
name: 'links',
},
]
}]
}
],
}],
},
});
Ext.define('PVE.ClusterInfoWindow', {
@ -50,7 +50,7 @@ Ext.define('PVE.ClusterInfoWindow', {
joinInfo: {
ipAddress: undefined,
fingerprint: undefined,
totem: {}
totem: {},
},
items: [
@ -58,7 +58,7 @@ Ext.define('PVE.ClusterInfoWindow', {
xtype: 'component',
border: false,
padding: '10 10 10 10',
html: gettext("Copy the Join Information here and use it on the node you want to add.")
html: gettext("Copy the Join Information here and use it on the node you want to add."),
},
{
xtype: 'container',
@ -99,11 +99,11 @@ Ext.define('PVE.ClusterInfoWindow', {
var jsons = Ext.JSON.encode(field.joinInfo);
var base64s = Ext.util.Base64.encode(jsons);
field.setValue(base64s);
}
}
}
]
}
},
},
},
],
},
],
dockedItems: [{
dock: 'bottom',
@ -115,9 +115,9 @@ Ext.define('PVE.ClusterInfoWindow', {
el.select();
document.execCommand("copy");
},
text: gettext('Copy Information')
}]
}]
text: gettext('Copy Information'),
}],
}],
});
Ext.define('PVE.ClusterJoinNodeWindow', {
@ -145,7 +145,7 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
info: {
fp: '',
ip: '',
clusterName: ''
clusterName: '',
},
hasAssistedInfo: false,
},
@ -170,18 +170,18 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
'#': {
close: function() {
delete PVE.Utils.silenceAuthFailures;
}
},
},
'proxmoxcheckbox[name=assistedEntry]': {
change: 'onInputTypeChange'
change: 'onInputTypeChange',
},
'textarea[name=serializedinfo]': {
change: 'recomputeSerializedInfo',
enable: 'resetField'
enable: 'resetField',
},
'textfield': {
disable: 'resetField'
}
disable: 'resetField',
},
},
resetField: function(field) {
field.reset();
@ -216,7 +216,7 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
let info = {
fp: '',
ip: '',
clusterName: ''
clusterName: '',
};
if (!(joinInfo && joinInfo.totem)) {
@ -236,7 +236,7 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
number: linkNumber,
value: '',
text: peerLink ? Ext.String.format(gettext("peer's link address: {0}"), peerLink) : '',
allowBlank: false
allowBlank: false,
};
});
@ -253,13 +253,13 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
info = {
ip: joinInfo.ipAddress,
fp: joinInfo.fingerprint,
clusterName: joinInfo.totem.cluster_name
clusterName: joinInfo.totem.cluster_name,
};
field.valid = true;
vm.set('hasAssistedInfo', true);
}
vm.set('info', info);
}
},
},
submit: function() {
@ -282,7 +282,7 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
Ext.Msg.show({
title: gettext('Join Task Finished'),
icon: Ext.Msg.INFO,
msg: txt
msg: txt,
});
}
},
@ -296,9 +296,9 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
value: true,
autoEl: {
tag: 'div',
'data-qtip': gettext('Select if join information should be extracted from pasted cluster information, deselect for manual entering')
'data-qtip': gettext('Select if join information should be extracted from pasted cluster information, deselect for manual entering'),
},
boxLabel: gettext('Assisted join: Paste encoded cluster join information and enter password.')
boxLabel: gettext('Assisted join: Paste encoded cluster join information and enter password.'),
},
{
xtype: 'textarea',
@ -313,16 +313,16 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
},
bind: {
disabled: '{!assistedEntry.checked}',
hidden: '{!assistedEntry.checked}'
hidden: '{!assistedEntry.checked}',
},
value: ''
value: '',
},
{
xtype: 'panel',
width: 776,
layout: {
type: 'hbox',
align: 'center'
align: 'center',
},
bind: {
hidden: '{!showClusterFields}',
@ -338,7 +338,7 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
value: '{info.ip}',
readOnly: '{assistedEntry.checked}',
},
name: 'hostname'
name: 'hostname',
},
{
xtype: 'textfield',
@ -348,9 +348,9 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
emptyText: gettext("Peer's root password"),
fieldLabel: gettext('Password'),
allowBlank: false,
name: 'password'
name: 'password',
},
]
],
},
{
xtype: 'textfield',
@ -361,7 +361,7 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
readOnly: '{assistedEntry.checked}',
hidden: '{!showClusterFields}',
},
name: 'fingerprint'
name: 'fingerprint',
},
{
xtype: 'fieldcontainer',
@ -374,8 +374,8 @@ Ext.define('PVE.ClusterJoinNodeWindow', {
xtype: 'pveCorosyncLinkEditor',
itemId: 'linkEditor',
reference: 'linkEditor',
allowNumberEdit: false
allowNumberEdit: false,
},
]
}]
],
}],
});

View File

@ -17,7 +17,7 @@ Ext.define('PVE.dc.Config', {
Ext.apply(me, {
title: gettext("Datacenter"),
hstateid: 'dctab'
hstateid: 'dctab',
});
if (caps.dc['Sys.Audit']) {
@ -25,25 +25,25 @@ Ext.define('PVE.dc.Config', {
title: gettext('Summary'),
xtype: 'pveDcSummary',
iconCls: 'fa fa-book',
itemId: 'summary'
itemId: 'summary',
},
{
title: gettext('Cluster'),
xtype: 'pveClusterAdministration',
iconCls: 'fa fa-server',
itemId: 'cluster'
itemId: 'cluster',
},
{
title: 'Ceph',
itemId: 'ceph',
iconCls: 'fa fa-ceph',
xtype: 'pveNodeCephStatus'
xtype: 'pveNodeCephStatus',
},
{
xtype: 'pveDcOptionView',
title: gettext('Options'),
iconCls: 'fa fa-gear',
itemId: 'options'
itemId: 'options',
});
}
@ -52,7 +52,7 @@ Ext.define('PVE.dc.Config', {
xtype: 'pveStorageView',
title: gettext('Storage'),
iconCls: 'fa fa-database',
itemId: 'storage'
itemId: 'storage',
});
}
@ -62,20 +62,20 @@ Ext.define('PVE.dc.Config', {
xtype: 'pveDcBackupView',
iconCls: 'fa fa-floppy-o',
title: gettext('Backup'),
itemId: 'backup'
itemId: 'backup',
},
{
xtype: 'pveReplicaView',
iconCls: 'fa fa-retweet',
title: gettext('Replication'),
itemId: 'replication'
itemId: 'replication',
},
{
xtype: 'pveACLView',
title: gettext('Permissions'),
iconCls: 'fa fa-unlock',
itemId: 'permissions',
expandedOnInit: true
expandedOnInit: true,
});
}
@ -84,7 +84,7 @@ Ext.define('PVE.dc.Config', {
groups: ['permissions'],
iconCls: 'fa fa-user',
title: gettext('Users'),
itemId: 'users'
itemId: 'users',
});
me.items.push({
@ -92,7 +92,7 @@ Ext.define('PVE.dc.Config', {
groups: ['permissions'],
iconCls: 'fa fa-user-o',
title: gettext('API Tokens'),
itemId: 'apitokens'
itemId: 'apitokens',
});
if (caps.dc['Sys.Audit']) {
@ -101,48 +101,48 @@ Ext.define('PVE.dc.Config', {
title: gettext('Groups'),
iconCls: 'fa fa-users',
groups: ['permissions'],
itemId: 'groups'
itemId: 'groups',
},
{
xtype: 'pvePoolView',
title: gettext('Pools'),
iconCls: 'fa fa-tags',
groups: ['permissions'],
itemId: 'pools'
itemId: 'pools',
},
{
xtype: 'pveRoleView',
title: gettext('Roles'),
iconCls: 'fa fa-male',
groups: ['permissions'],
itemId: 'roles'
itemId: 'roles',
},
{
xtype: 'pveAuthView',
title: gettext('Authentication'),
groups: ['permissions'],
iconCls: 'fa fa-key',
itemId: 'domains'
itemId: 'domains',
},
{
xtype: 'pveHAStatus',
title: 'HA',
iconCls: 'fa fa-heartbeat',
itemId: 'ha'
itemId: 'ha',
},
{
title: gettext('Groups'),
groups: ['ha'],
xtype: 'pveHAGroupsView',
iconCls: 'fa fa-object-group',
itemId: 'ha-groups'
itemId: 'ha-groups',
},
{
title: gettext('Fencing'),
groups: ['ha'],
iconCls: 'fa fa-bolt',
xtype: 'pveFencingView',
itemId: 'ha-fencing'
itemId: 'ha-fencing',
});
if (PVE.SDNInfo || PVE.SDNInfo === undefined) {
me.items.push({
@ -151,7 +151,7 @@ Ext.define('PVE.dc.Config', {
iconCls: 'fa fa-sdn',
hidden: true,
itemId: 'sdn',
expandedOnInit: true
expandedOnInit: true,
},
{
xtype: 'pveSDNControllerView',
@ -159,7 +159,7 @@ Ext.define('PVE.dc.Config', {
title: gettext('Controllers'),
hidden: true,
iconCls: 'fa fa-crosshairs',
itemId: 'sdncontroller'
itemId: 'sdncontroller',
},
{
xtype: 'pveSDNZoneView',
@ -167,7 +167,7 @@ Ext.define('PVE.dc.Config', {
title: gettext('Zones'),
hidden: true,
iconCls: 'fa fa-th',
itemId: 'sdnzone'
itemId: 'sdnzone',
},
{
xtype: 'pveSDNVnetView',
@ -175,7 +175,7 @@ Ext.define('PVE.dc.Config', {
title: gettext('Vnets'),
hidden: true,
iconCls: 'fa fa-network-wired',
itemId: 'sdnvnet'
itemId: 'sdnvnet',
});
}
@ -184,7 +184,7 @@ Ext.define('PVE.dc.Config', {
xtype: 'pveACMEClusterView',
title: 'ACME',
iconCls: 'fa fa-certificate',
itemId: 'acme'
itemId: 'acme',
});
}
@ -195,7 +195,7 @@ Ext.define('PVE.dc.Config', {
base_url: '/cluster/firewall/rules',
list_refs_url: '/cluster/firewall/refs',
iconCls: 'fa fa-shield',
itemId: 'firewall'
itemId: 'firewall',
},
{
xtype: 'pveFirewallOptions',
@ -205,14 +205,14 @@ Ext.define('PVE.dc.Config', {
base_url: '/cluster/firewall/options',
onlineHelp: 'pve_firewall_cluster_wide_setup',
fwtype: 'dc',
itemId: 'firewall-options'
itemId: 'firewall-options',
},
{
xtype: 'pveSecurityGroups',
title: gettext('Security Group'),
groups: ['firewall'],
iconCls: 'fa fa-group',
itemId: 'firewall-sg'
itemId: 'firewall-sg',
},
{
xtype: 'pveFirewallAliases',
@ -220,7 +220,7 @@ Ext.define('PVE.dc.Config', {
groups: ['firewall'],
iconCls: 'fa fa-external-link',
base_url: '/cluster/firewall/aliases',
itemId: 'firewall-aliases'
itemId: 'firewall-aliases',
},
{
xtype: 'pveIPSet',
@ -229,7 +229,7 @@ Ext.define('PVE.dc.Config', {
iconCls: 'fa fa-list-ol',
base_url: '/cluster/firewall/ipset',
list_refs_url: '/cluster/firewall/refs',
itemId: 'firewall-ipset'
itemId: 'firewall-ipset',
},
{
xtype: 'pveMetricServerView',
@ -242,10 +242,10 @@ Ext.define('PVE.dc.Config', {
xtype: 'pveDcSupport',
title: gettext('Support'),
itemId: 'support',
iconCls: 'fa fa-comments-o'
iconCls: 'fa fa-comments-o',
});
}
me.callParent();
}
},
});

View File

@ -56,7 +56,7 @@ Ext.define('PVE.form.CorosyncLinkEditorController', {
view.remove(this);
me.updateDeleteButtonState();
}
},
});
view.add(linkSelector);
@ -115,7 +115,7 @@ Ext.define('PVE.form.CorosyncLinkEditorController', {
// all numbers in use, this should never happen since add button is
// disabled automatically
return 0;
}
},
});
Ext.define('PVE.form.CorosyncLinkSelector', {
@ -147,7 +147,7 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
fieldLabel: 'Link',
cbind: {
hidden: '{allowNumberEdit}',
value: '{initNumber}'
value: '{initNumber}',
},
width: 45,
labelWidth: 30,
@ -159,7 +159,7 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
cbind: {
maxValue: '{maxLinkNumber}',
hidden: '{!allowNumberEdit}',
value: '{initNumber}'
value: '{initNumber}',
},
width: 80,
labelWidth: 30,
@ -187,14 +187,14 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
let linkNumber = numSelect.getValue();
me.name = 'link' + linkNumber;
return me.getValue();
}
},
},
{
xtype: 'button',
iconCls: 'fa fa-trash-o',
cls: 'removeLinkBtn',
cbind: {
hidden: '{!allowNumberEdit}'
hidden: '{!allowNumberEdit}',
},
handler: function() {
let me = this;
@ -202,7 +202,7 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
if (parent.removeBtnHandler !== undefined) {
parent.removeBtnHandler();
}
}
},
},
{
xtype: 'label',
@ -212,9 +212,9 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
cls: 'x-form-item-label-default',
cbind: {
text: '{text}'
}
}
text: '{text}',
},
},
],
initComponent: function() {
@ -227,12 +227,12 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
numSelect.validator = this.createNoDuplicatesValidator(
'numberfield',
gettext("Duplicate link number not allowed.")
gettext("Duplicate link number not allowed."),
);
netSelect.validator = this.createNoDuplicatesValidator(
'proxmoxNetworkSelector',
gettext("Duplicate link address not allowed.")
gettext("Duplicate link address not allowed."),
);
},
@ -278,7 +278,7 @@ Ext.define('PVE.form.CorosyncLinkSelector', {
return err || true;
};
}
},
});
Ext.define('PVE.form.CorosyncLinkEditor', {
@ -296,7 +296,7 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
maxLinkCount: 8,
networks: null,
allowNumberEdit: true,
infoText: ''
infoText: '',
},
formulas: {
addDisabled: function(get) {
@ -305,8 +305,8 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
},
dockHidden: function(get) {
return !(get('allowNumberEdit') || get('infoText'));
}
}
},
},
},
dockedItems: [{
@ -316,7 +316,7 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
border: false,
padding: '6 0 6 0',
bind: {
hidden: '{dockHidden}'
hidden: '{dockHidden}',
},
items: [
{
@ -324,17 +324,17 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
text: gettext('Add'),
bind: {
disabled: '{addDisabled}',
hidden: '{!allowNumberEdit}'
hidden: '{!allowNumberEdit}',
},
handler: 'addEmptyLink'
handler: 'addEmptyLink',
},
{
xtype: 'label',
bind: {
text: '{infoText}'
}
}
]
text: '{infoText}',
},
},
],
}],
setInfoText: function(text) {
@ -382,7 +382,7 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
let me = this;
let vm = me.up('pveCorosyncLinkEditor').getViewModel();
return vm.get('linkCount') > 0;
}
},
}],
initComponent: function() {
@ -429,8 +429,8 @@ Ext.define('PVE.form.CorosyncLinkEditor', {
if (vm.get('allowNumberEdit')) {
controller.addLinkIfEmpty();
}
}
},
});
}
},
});

View File

@ -28,15 +28,15 @@ Ext.define('PVE.dc.GroupEdit', {
fieldLabel: gettext('Name'),
name: 'groupid',
value: me.groupid,
allowBlank: false
allowBlank: false,
},
{
xtype: 'textfield',
fieldLabel: gettext('Comment'),
name: 'comment',
allowBlank: true
}
]
allowBlank: true,
},
],
});
me.callParent();
@ -44,5 +44,5 @@ Ext.define('PVE.dc.GroupEdit', {
if (!me.isCreate) {
me.load();
}
}
},
});

View File

@ -15,8 +15,8 @@ Ext.define('PVE.dc.GroupView', {
model: 'pve-groups',
sorters: {
property: 'groupid',
order: 'DESC'
}
order: 'DESC',
},
});
var reload = function() {
@ -30,7 +30,7 @@ Ext.define('PVE.dc.GroupView', {
callback: function() {
reload();
},
baseurl: '/access/groups/'
baseurl: '/access/groups/',
});
var run_editor = function() {
@ -39,8 +39,8 @@ Ext.define('PVE.dc.GroupView', {
return;
}
var win = Ext.create('PVE.dc.GroupEdit',{
groupid: rec.data.groupid
var win = Ext.create('PVE.dc.GroupEdit', {
groupid: rec.data.groupid,
});
win.on('destroy', reload);
win.show();
@ -50,7 +50,7 @@ Ext.define('PVE.dc.GroupView', {
text: gettext('Edit'),
disabled: true,
selModel: sm,
handler: run_editor
handler: run_editor,
});
var tbar = [
@ -60,9 +60,9 @@ Ext.define('PVE.dc.GroupView', {
var win = Ext.create('PVE.dc.GroupEdit', {});
win.on('destroy', reload);
win.show();
}
},
},
edit_btn, remove_btn
edit_btn, remove_btn,
];
Proxmox.Utils.monStoreErrors(me, store);
@ -72,36 +72,36 @@ Ext.define('PVE.dc.GroupView', {
selModel: sm,
tbar: tbar,
viewConfig: {
trackOver: false
trackOver: false,
},
columns: [
{
header: gettext('Name'),
width: 200,
sortable: true,
dataIndex: 'groupid'
dataIndex: 'groupid',
},
{
header: gettext('Comment'),
sortable: false,
renderer: Ext.String.htmlEncode,
dataIndex: 'comment',
flex: 1
flex: 1,
},
{
header: gettext('Users'),
sortable: false,
dataIndex: 'users',
renderer: Ext.String.htmlEncode,
flex: 1
}
flex: 1,
},
],
listeners: {
activate: reload,
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
}
},
});

View File

@ -10,9 +10,9 @@ Ext.define('PVE.dc.Guests', {
columns: 2,
tableAttrs: {
style: {
width: '100%'
}
}
width: '100%',
},
},
},
bodyPadding: '0 20 20 20',
@ -21,8 +21,8 @@ Ext.define('PVE.dc.Guests', {
padding: '0 50 0 50',
style: {
'text-align':'center',
'line-height':'1.2'
}
'line-height':'1.2',
},
},
items: [{
itemId: 'qemu',
@ -30,7 +30,7 @@ Ext.define('PVE.dc.Guests', {
running: 0,
paused: 0,
stopped: 0,
template: 0
template: 0,
},
tpl: [
'<h3>' + gettext("Virtual Machines") + '</h3>',
@ -57,15 +57,15 @@ Ext.define('PVE.dc.Guests', {
gettext('Templates'),
'</div>',
'<div class="right-aligned">{template}</div>',
'</tpl>'
]
},{
'</tpl>',
],
}, {
itemId: 'lxc',
data: {
running: 0,
paused: 0,
stopped: 0,
template: 0
template: 0,
},
tpl: [
'<h3>' + gettext("LXC Container") + '</h3>',
@ -92,13 +92,13 @@ Ext.define('PVE.dc.Guests', {
gettext('Templates'),
'</div>',
'<div class="right-aligned">{template}</div>',
'</tpl>'
]
},{
'</tpl>',
],
}, {
itemId: 'error',
colspan: 2,
data: {
num: 0
num: 0,
},
columnWidth: 1,
padding: '10 250 0 250',
@ -109,8 +109,8 @@ Ext.define('PVE.dc.Guests', {
gettext('Error'),
'</div>',
'<div class="right-aligned">{num}</div>',
'</tpl>'
]
'</tpl>',
],
}],
updateValues: function(qemu, lxc, error) {
@ -118,5 +118,5 @@ Ext.define('PVE.dc.Guests', {
me.getComponent('qemu').update(qemu);
me.getComponent('lxc').update(lxc);
me.getComponent('error').update({num: error});
}
},
});

View File

@ -8,15 +8,15 @@ Ext.define('PVE.dc.Health', {
height: 250,
layout: {
type: 'hbox',
align: 'stretch'
align: 'stretch',
},
defaults: {
flex: 1,
xtype: 'box',
style: {
'text-align':'center'
}
'text-align':'center',
},
},
nodeList: [],
@ -30,12 +30,12 @@ Ext.define('PVE.dc.Health', {
var cluster = {
iconCls: PVE.Utils.get_health_icon('good', true),
text: gettext("Standalone node - no cluster defined")
text: gettext("Standalone node - no cluster defined"),
};
var nodes = {
online: 0,
offline: 0
offline: 0,
};
// by default we have one node
@ -98,20 +98,20 @@ Ext.define('PVE.dc.Health', {
destroy: function() {
var me = this;
me.cephstore.stopUpdate();
}
},
},
items: [
{
itemId: 'clusterstatus',
xtype: 'pveHealthWidget',
title: gettext('Status')
title: gettext('Status'),
},
{
itemId: 'nodestatus',
data: {
online: 0,
offline: 0
offline: 0,
},
tpl: [
'<h3>' + gettext('Nodes') + '</h3><br />',
@ -127,8 +127,8 @@ Ext.define('PVE.dc.Health', {
gettext('Offline'),
'</div>',
'<div class="right-aligned">{offline}</div>',
'</div>'
]
'</div>',
],
},
{
itemId: 'ceph',
@ -143,9 +143,9 @@ Ext.define('PVE.dc.Health', {
click: function() {
var sp = Ext.state.Manager.getProvider();
sp.set('dctab', {value:'ceph'}, true);
}
}
}
},
},
},
],
initComponent: function() {
@ -158,11 +158,11 @@ Ext.define('PVE.dc.Health', {
storeid: 'pve-cluster-ceph',
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodeList[me.nodeIndex].node + '/ceph/status'
}
url: '/api2/json/nodes/' + me.nodeList[me.nodeIndex].node + '/ceph/status',
},
});
me.callParent();
me.mon(me.cephstore, 'load', me.updateCeph, me);
me.cephstore.startUpdate();
}
},
});

View File

@ -15,13 +15,13 @@ Ext.define('PVE.dc.Log', {
model: 'proxmox-cluster-log',
proxy: {
type: 'proxmox',
url: '/api2/json/cluster/log'
}
url: '/api2/json/cluster/log',
},
});
var store = Ext.create('Proxmox.data.DiffStore', {
rstore: logstore,
appendAtStart: true
appendAtStart: true,
});
Ext.apply(me, {
@ -38,7 +38,7 @@ Ext.define('PVE.dc.Log', {
if (pri && pri <= 3) {
return "proxmox-invalid-row";
}
}
},
},
sortableColumns: false,
columns: [
@ -48,49 +48,49 @@ Ext.define('PVE.dc.Log', {
width: 150,
renderer: function(value) {
return Ext.Date.format(value, "M d H:i:s");
}
},
},
{
header: gettext("Node"),
dataIndex: 'node',
width: 150
width: 150,
},
{
header: gettext("Service"),
dataIndex: 'tag',
width: 100
width: 100,
},
{
header: "PID",
dataIndex: 'pid',
width: 100
width: 100,
},
{
header: gettext("User name"),
dataIndex: 'user',
renderer: Ext.String.htmlEncode,
width: 150
width: 150,
},
{
header: gettext("Severity"),
dataIndex: 'pri',
renderer: PVE.Utils.render_serverity,
width: 100
width: 100,
},
{
header: gettext("Message"),
dataIndex: 'msg',
renderer: Ext.String.htmlEncode,
flex: 1
}
flex: 1,
},
],
listeners: {
activate: () => logstore.startUpdate(),
deactivate: () => logstore.stopUpdate(),
destroy: () => logstore.stopUpdate(),
}
},
});
me.callParent();
}
},
});

View File

@ -11,13 +11,13 @@ Ext.define('PVE.dc.NodeView', {
header: gettext('Name'),
flex: 1,
sortable: true,
dataIndex: 'name'
dataIndex: 'name',
},
{
header: 'ID',
width: 40,
sortable: true,
dataIndex: 'nodeid'
dataIndex: 'nodeid',
},
{
header: gettext('Online'),
@ -27,20 +27,20 @@ Ext.define('PVE.dc.NodeView', {
renderer: function(value) {
var cls = (value)?'good':'critical';
return '<i class="fa ' + PVE.Utils.get_health_icon(cls) + '"><i/>';
}
},
},
{
header: gettext('Support'),
width: 100,
sortable: true,
dataIndex: 'level',
renderer: PVE.Utils.render_support_level
renderer: PVE.Utils.render_support_level,
},
{
header: gettext('Server Address'),
width: 115,
sortable: true,
dataIndex: 'ip'
dataIndex: 'ip',
},
{
header: gettext('CPU usage'),
@ -50,8 +50,8 @@ Ext.define('PVE.dc.NodeView', {
tdCls: 'x-progressbar-default-cell',
xtype: 'widgetcolumn',
widget: {
xtype: 'pveProgressBar'
}
xtype: 'pveProgressBar',
},
},
{
header: gettext('Memory usage'),
@ -61,16 +61,16 @@ Ext.define('PVE.dc.NodeView', {
dataIndex: 'memoryusage',
xtype: 'widgetcolumn',
widget: {
xtype: 'pveProgressBar'
}
xtype: 'pveProgressBar',
},
},
{
header: gettext('Uptime'),
sortable: true,
dataIndex: 'uptime',
align: 'right',
renderer: Proxmox.Utils.render_uptime
}
renderer: Proxmox.Utils.render_uptime,
},
],
stateful: true,
@ -82,7 +82,7 @@ Ext.define('PVE.dc.NodeView', {
var me = this.up('grid');
var height = Math.max(me.getHeight()-50, 250);
me.setHeight(height);
}
},
},
{
type: 'down',
@ -90,26 +90,26 @@ Ext.define('PVE.dc.NodeView', {
var me = this.up('grid');
var height = me.getHeight()+50;
me.setHeight(height);
}
}
]
},
},
],
}, function() {
Ext.define('pve-dc-nodes', {
extend: 'Ext.data.Model',
fields: [ 'id', 'type', 'name', 'nodeid', 'ip', 'level', 'local', 'online'],
idProperty: 'id'
idProperty: 'id',
});
});
Ext.define('PVE.widget.ProgressBar',{
Ext.define('PVE.widget.ProgressBar', {
extend: 'Ext.Progress',
alias: 'widget.pveProgressBar',
animate: true,
textTpl: [
'{percent}%'
'{percent}%',
],
setValue: function(value){
@ -123,5 +123,5 @@ Ext.define('PVE.widget.ProgressBar',{
} else if (value > 0.59) {
me.addCls('warning');
}
}
},
});

View File

@ -24,7 +24,7 @@ Ext.define('PVE.dc.OptionView', {
subject: text,
onlineHelp: opts.onlineHelp,
fieldDefaults: {
labelWidth: opts.labelWidth || 100
labelWidth: opts.labelWidth || 100,
},
setValues: function(values) {
var edit_value = values[name];
@ -48,9 +48,9 @@ Ext.define('PVE.dc.OptionView', {
ret_val[name] = PVE.Parser.printPropertyString(values);
return ret_val;
},
items: opts.items
}]
} : undefined
items: opts.items,
}],
} : undefined,
};
},
@ -74,28 +74,28 @@ Ext.define('PVE.dc.OptionView', {
renderer: PVE.Utils.render_kvm_language,
comboItems: PVE.Utils.kvm_keymap_array(),
defaultValue: '__default__',
deleteEmpty: true
deleteEmpty: true,
});
me.add_text_row('http_proxy', gettext('HTTP proxy'), {
defaultValue: Proxmox.Utils.noneText,
vtype: 'HttpProxy',
deleteEmpty: true
deleteEmpty: true,
});
me.add_combobox_row('console', gettext('Console Viewer'), {
renderer: PVE.Utils.render_console_viewer,
comboItems: PVE.Utils.console_viewer_array(),
defaultValue: '__default__',
deleteEmpty: true
deleteEmpty: true,
});
me.add_text_row('email_from', gettext('Email from address'), {
deleteEmpty: true,
vtype: 'proxmoxMail',
defaultValue: 'root@$hostname'
defaultValue: 'root@$hostname',
});
me.add_text_row('mac_prefix', gettext('MAC address prefix'), {
deleteEmpty: true,
vtype: 'MacPrefix',
defaultValue: Proxmox.Utils.noneText
defaultValue: Proxmox.Utils.noneText,
});
me.add_inputpanel_row('migration', gettext('Migration Settings'), {
renderer: PVE.Utils.render_dc_ha_opts,
@ -115,8 +115,8 @@ Ext.define('PVE.dc.OptionView', {
value: null,
emptyText: Proxmox.Utils.defaultText,
autoSelect: false,
skipEmptyText: true
}]
skipEmptyText: true,
}],
});
me.add_inputpanel_row('ha', gettext('HA Settings'), {
renderer: PVE.Utils.render_dc_ha_opts,
@ -134,10 +134,10 @@ Ext.define('PVE.dc.OptionView', {
['freeze', 'freeze'],
['failover', 'failover'],
['migrate', 'migrate'],
['conditional', 'conditional']
['conditional', 'conditional'],
],
defaultValue: '__default__'
}]
defaultValue: '__default__',
}],
});
me.add_inputpanel_row('u2f', gettext('U2F Settings'), {
renderer: PVE.Utils.render_dc_ha_opts,
@ -168,7 +168,7 @@ Ext.define('PVE.dc.OptionView', {
xtype: 'displayfield',
userCls: 'pmx-hint',
value: gettext('NOTE: Changing an AppID breaks existing U2F registrations!'),
}]
}],
});
me.add_inputpanel_row('bwlimit', gettext('Bandwidth Limits'), {
renderer: me.render_bwlimits,
@ -210,7 +210,7 @@ Ext.define('PVE.dc.OptionView', {
fieldLabel: gettext('Disk Move'),
emptyText: gettext('default'),
backendUnit: "KiB",
}]
}],
});
me.add_integer_row('max_workers', gettext('Maximal Workers/bulk-action'), {
deleteEmpty: true,
@ -227,17 +227,17 @@ Ext.define('PVE.dc.OptionView', {
xtype: 'proxmoxButton',
disabled: true,
handler: function() { me.run_editor(); },
selModel: me.selModel
selModel: me.selModel,
}],
url: "/api2/json/cluster/options",
editorConfig: {
url: "/api2/extjs/cluster/options"
url: "/api2/extjs/cluster/options",
},
interval: 5000,
cwidth1: 200,
listeners: {
itemdblclick: me.run_editor
}
itemdblclick: me.run_editor,
},
});
me.callParent();
@ -258,5 +258,5 @@ Ext.define('PVE.dc.OptionView', {
me.on('activate', me.rstore.startUpdate);
me.on('destroy', me.rstore.stopUpdate);
me.on('deactivate', me.rstore.stopUpdate);
}
},
});

View File

@ -15,8 +15,8 @@ Ext.define('PVE.dc.PoolView', {
model: 'pve-pools',
sorters: {
property: 'poolid',
order: 'DESC'
}
order: 'DESC',
},
});
var reload = function() {
@ -30,7 +30,7 @@ Ext.define('PVE.dc.PoolView', {
baseurl: '/pools/',
callback: function () {
reload();
}
},
});
var run_editor = function() {
@ -39,8 +39,8 @@ Ext.define('PVE.dc.PoolView', {
return;
}
var win = Ext.create('PVE.dc.PoolEdit',{
poolid: rec.data.poolid
var win = Ext.create('PVE.dc.PoolEdit', {
poolid: rec.data.poolid,
});
win.on('destroy', reload);
win.show();
@ -50,7 +50,7 @@ Ext.define('PVE.dc.PoolView', {
text: gettext('Edit'),
disabled: true,
selModel: sm,
handler: run_editor
handler: run_editor,
});
var tbar = [
@ -60,9 +60,9 @@ Ext.define('PVE.dc.PoolView', {
var win = Ext.create('PVE.dc.PoolEdit', {});
win.on('destroy', reload);
win.show();
}
},
},
edit_btn, remove_btn
edit_btn, remove_btn,
];
Proxmox.Utils.monStoreErrors(me, store);
@ -72,29 +72,29 @@ Ext.define('PVE.dc.PoolView', {
selModel: sm,
tbar: tbar,
viewConfig: {
trackOver: false
trackOver: false,
},
columns: [
{
header: gettext('Name'),
width: 200,
sortable: true,
dataIndex: 'poolid'
dataIndex: 'poolid',
},
{
header: gettext('Comment'),
sortable: false,
renderer: Ext.String.htmlEncode,
dataIndex: 'comment',
flex: 1
}
flex: 1,
},
],
listeners: {
activate: reload,
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
}
},
});

View File

@ -30,16 +30,16 @@ Ext.define('PVE.dc.RoleEdit', {
name: 'roleid',
value: me.roleid,
allowBlank: false,
fieldLabel: gettext('Name')
fieldLabel: gettext('Name'),
},
{
xtype: 'pvePrivilegesSelector',
name: 'privs',
value: me.privs,
allowBlank: false,
fieldLabel: gettext('Privileges')
}
]
fieldLabel: gettext('Privileges'),
},
],
});
me.callParent();
@ -52,10 +52,10 @@ Ext.define('PVE.dc.RoleEdit', {
me.setValues({
privs: keys,
roleid: me.roleid
roleid: me.roleid,
});
}
},
});
}
}
},
});

View File

@ -15,8 +15,8 @@ Ext.define('PVE.dc.RoleView', {
model: 'pmx-roles',
sorters: {
property: 'roleid',
order: 'DESC'
}
order: 'DESC',
},
});
var render_privs = function(value, metaData) {
@ -49,9 +49,9 @@ Ext.define('PVE.dc.RoleView', {
return;
}
var win = Ext.create('PVE.dc.RoleEdit',{
var win = Ext.create('PVE.dc.RoleEdit', {
roleid: rec.data.roleid,
privs: rec.data.privs
privs: rec.data.privs,
});
win.on('destroy', reload);
win.show();
@ -62,7 +62,7 @@ Ext.define('PVE.dc.RoleView', {
selModel: sm,
viewConfig: {
trackOver: false
trackOver: false,
},
columns: [
{
@ -70,13 +70,13 @@ Ext.define('PVE.dc.RoleView', {
width: 65,
sortable: true,
dataIndex: 'special',
renderer: Proxmox.Utils.format_boolean
renderer: Proxmox.Utils.format_boolean,
},
{
header: gettext('Name'),
width: 150,
sortable: true,
dataIndex: 'roleid'
dataIndex: 'roleid',
},
{
itemid: 'privs',
@ -84,14 +84,14 @@ Ext.define('PVE.dc.RoleView', {
sortable: false,
renderer: render_privs,
dataIndex: 'privs',
flex: 1
}
flex: 1,
},
],
listeners: {
activate: function() {
store.load();
},
itemdblclick: run_editor
itemdblclick: run_editor,
},
tbar: [
{
@ -100,7 +100,7 @@ Ext.define('PVE.dc.RoleView', {
var win = Ext.create('PVE.dc.RoleEdit', {});
win.on('destroy', reload);
win.show();
}
},
},
{
xtype: 'proxmoxButton',
@ -118,10 +118,10 @@ Ext.define('PVE.dc.RoleView', {
},
baseurl: '/access/roles/',
enableFn: (rec) => !rec.data.special,
}
]
},
],
});
me.callParent();
}
},
});

View File

@ -2,7 +2,7 @@ Ext.define('pve-security-groups', {
extend: 'Ext.data.Model',
fields: [ 'group', 'comment', 'digest' ],
idProperty: 'group'
idProperty: 'group',
});
Ext.define('PVE.SecurityGroupEdit', {
@ -28,14 +28,14 @@ Ext.define('PVE.SecurityGroupEdit', {
name: 'group',
value: me.group_name || '',
fieldLabel: gettext('Name'),
allowBlank: false
allowBlank: false,
},
{
xtype: 'textfield',
name: 'comment',
value: me.group_comment || '',
fieldLabel: gettext('Comment')
}
fieldLabel: gettext('Comment'),
},
];
if (me.isCreate) {
@ -45,24 +45,24 @@ Ext.define('PVE.SecurityGroupEdit', {
items.push({
xtype: 'hiddenfield',
name: 'rename',
value: me.group_name
value: me.group_name,
});
}
var ipanel = Ext.create('Proxmox.panel.InputPanel', {
// InputPanel does not have a 'create' property, does it need a 'isCreate'
isCreate: me.isCreate,
items: items
items: items,
});
Ext.apply(me, {
subject: subject,
items: [ ipanel ]
items: [ ipanel ],
});
me.callParent();
}
},
});
Ext.define('PVE.SecurityGroupList', {
@ -95,12 +95,12 @@ Ext.define('PVE.SecurityGroupList', {
model: 'pve-security-groups',
proxy: {
type: 'proxmox',
url: '/api2/json' + me.base_url
url: '/api2/json' + me.base_url,
},
sorters: {
property: 'group',
order: 'DESC'
}
order: 'DESC',
},
});
var sm = Ext.create('Ext.selection.RowModel', {});
@ -125,7 +125,7 @@ Ext.define('PVE.SecurityGroupList', {
var win = Ext.create('PVE.SecurityGroupEdit', {
digest: rec.data.digest,
group_name: rec.data.group,
group_comment: rec.data.comment
group_comment: rec.data.comment,
});
win.show();
win.on('destroy', reload);
@ -135,7 +135,7 @@ Ext.define('PVE.SecurityGroupList', {
text: gettext('Edit'),
disabled: true,
selModel: sm,
handler: run_editor
handler: run_editor,
});
me.addBtn = new Proxmox.button.Button({
@ -145,7 +145,7 @@ Ext.define('PVE.SecurityGroupList', {
var win = Ext.create('PVE.SecurityGroupEdit', {});
win.show();
win.on('destroy', reload);
}
},
});
me.removeBtn = Ext.create('Proxmox.button.StdRemoveButton', {
@ -156,7 +156,7 @@ Ext.define('PVE.SecurityGroupList', {
},
callback: function() {
reload();
}
},
});
Ext.apply(me, {
@ -165,7 +165,7 @@ Ext.define('PVE.SecurityGroupList', {
selModel: sm,
columns: [
{ header: gettext('Group'), dataIndex: 'group', width: '100' },
{ header: gettext('Comment'), dataIndex: 'comment', renderer: Ext.String.htmlEncode, flex: 1 }
{ header: gettext('Comment'), dataIndex: 'comment', renderer: Ext.String.htmlEncode, flex: 1 },
],
listeners: {
itemdblclick: run_editor,
@ -176,14 +176,14 @@ Ext.define('PVE.SecurityGroupList', {
deselect: function() {
me.rule_panel.setBaseUrl(undefined);
},
show: reload
}
show: reload,
},
});
me.callParent();
store.load();
}
},
});
Ext.define('PVE.SecurityGroups', {
@ -200,7 +200,7 @@ Ext.define('PVE.SecurityGroups', {
allow_groups: false,
list_refs_url: '/cluster/firewall/refs',
tbar_prefix: '<b>' + gettext('Rules') + ':</b>',
border: false
border: false,
});
var sglist = Ext.createWidget('pveSecurityGroupList', {
@ -208,7 +208,7 @@ Ext.define('PVE.SecurityGroups', {
rule_panel: rule_panel,
width: '25%',
border: false,
split: true
split: true,
});
@ -218,10 +218,10 @@ Ext.define('PVE.SecurityGroups', {
listeners: {
show: function() {
sglist.fireEvent('show', sglist);
}
}
},
},
});
me.callParent();
}
},
});

View File

@ -21,8 +21,8 @@ Ext.define('PVE.dc.StorageView', {
canDoBackups: schema.backups,
autoShow: true,
listeners: {
destroy: this.reloadStore
}
destroy: this.reloadStore,
},
});
},
@ -33,12 +33,12 @@ Ext.define('PVE.dc.StorageView', {
model: 'pve-storage',
proxy: {
type: 'proxmox',
url: "/api2/json/storage"
url: "/api2/json/storage",
},
sorters: {
property: 'storage',
order: 'DESC'
}
order: 'DESC',
},
});
var reload = function() {
@ -62,13 +62,13 @@ Ext.define('PVE.dc.StorageView', {
text: gettext('Edit'),
disabled: true,
selModel: sm,
handler: run_editor
handler: run_editor,
});
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
selModel: sm,
baseurl: '/storage/',
callback: reload
callback: reload,
});
// else we cannot dynamically generate the add menu handlers
@ -84,7 +84,7 @@ Ext.define('PVE.dc.StorageView', {
addMenuItems.push({
text: PVE.Utils.format_storage_type(type),
iconCls: 'fa fa-fw fa-' + storage.faIcon,
handler: addHandleGenerator(type)
handler: addHandleGenerator(type),
});
}
@ -93,38 +93,38 @@ Ext.define('PVE.dc.StorageView', {
reloadStore: reload,
selModel: sm,
viewConfig: {
trackOver: false
trackOver: false,
},
tbar: [
{
text: gettext('Add'),
menu: new Ext.menu.Menu({
items: addMenuItems
})
items: addMenuItems,
}),
},
remove_btn,
edit_btn
edit_btn,
],
columns: [
{
header: 'ID',
flex: 2,
sortable: true,
dataIndex: 'storage'
dataIndex: 'storage',
},
{
header: gettext('Type'),
flex: 1,
sortable: true,
dataIndex: 'type',
renderer: PVE.Utils.format_storage_type
renderer: PVE.Utils.format_storage_type,
},
{
header: gettext('Content'),
flex: 3,
sortable: true,
dataIndex: 'content',
renderer: PVE.Utils.format_content_types
renderer: PVE.Utils.format_content_types,
},
{
header: gettext('Path') + '/' + gettext('Target'),
@ -136,37 +136,37 @@ Ext.define('PVE.dc.StorageView', {
return record.data.target;
}
return value;
}
},
},
{
header: gettext('Shared'),
flex: 1,
sortable: true,
dataIndex: 'shared',
renderer: Proxmox.Utils.format_boolean
renderer: Proxmox.Utils.format_boolean,
},
{
header: gettext('Enabled'),
flex: 1,
sortable: true,
dataIndex: 'disable',
renderer: Proxmox.Utils.format_neg_boolean
renderer: Proxmox.Utils.format_neg_boolean,
},
{
header: gettext('Bandwidth Limit'),
flex: 2,
sortable: true,
dataIndex: 'bwlimit'
}
dataIndex: 'bwlimit',
},
],
listeners: {
activate: reload,
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
}
},
}, function() {
Ext.define('pve-storage', {
@ -174,9 +174,9 @@ Ext.define('PVE.dc.StorageView', {
fields: [
'path', 'type', 'content', 'server', 'portal', 'target', 'export', 'storage',
{ name: 'shared', type: 'boolean'},
{ name: 'disable', type: 'boolean'}
{ name: 'disable', type: 'boolean'},
],
idProperty: 'storage'
idProperty: 'storage',
});
});

View File

@ -30,27 +30,27 @@ Ext.define('PVE.dc.Summary', {
layout: 'hbox',
defaults: {
xtype: 'proxmoxGauge',
flex: 1
flex: 1,
},
items:[
{
title: gettext('CPU'),
itemId: 'cpu'
itemId: 'cpu',
},
{
title: gettext('Memory'),
itemId: 'memory'
itemId: 'memory',
},
{
title: gettext('Storage'),
itemId: 'storage'
}
]
itemId: 'storage',
},
],
},
{
itemId: 'nodeview',
xtype: 'pveDcNodeView',
height: 250
height: 250,
},
{
title: gettext('Subscriptions'),
@ -66,11 +66,11 @@ Ext.define('PVE.dc.Summary', {
if (this.component.userCls === 'pointer') {
window.open('https://www.proxmox.com/en/proxmox-ve/pricing', '_blank');
}
}
}
}
]
}
},
},
},
],
},
],
listeners: {
@ -88,20 +88,20 @@ Ext.define('PVE.dc.Summary', {
model: 'pve-dc-nodes',
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/status"
}
url: "/api2/json/cluster/status",
},
});
var gridstore = Ext.create('Proxmox.data.DiffStore', {
rstore: rstore,
filters: {
property: 'type',
value: 'node'
value: 'node',
},
sorters: {
property: 'id',
direction: 'ASC'
}
direction: 'ASC',
},
});
me.callParent();
@ -141,13 +141,13 @@ Ext.define('PVE.dc.Summary', {
running: 0,
paused: 0,
stopped: 0,
template: 0
template: 0,
};
var lxc = {
running: 0,
paused: 0,
stopped: 0,
template: 0
template: 0,
};
var error = 0;
@ -215,7 +215,7 @@ Ext.define('PVE.dc.Summary', {
text = Ext.String.format(gettext('{0} of {1}'), PVE.Utils.render_size(used), PVE.Utils.render_size(total));
storagestat.updateValue((used/total), text);
gueststatus.updateValues(qemu,lxc,error);
gueststatus.updateValues(qemu, lxc, error);
me.suspendLayout = false;
me.updateLayout(true);
@ -255,27 +255,27 @@ Ext.define('PVE.dc.Summary', {
var data = {
title: Proxmox.Utils.unknownText,
text: Proxmox.Utils.unknownText,
iconCls: PVE.Utils.get_health_icon(undefined, true)
iconCls: PVE.Utils.get_health_icon(undefined, true),
};
if (level === '') {
data = {
title: gettext('No Subscription'),
iconCls: PVE.Utils.get_health_icon('critical', true),
text: gettext('You have at least one node without subscription.')
text: gettext('You have at least one node without subscription.'),
};
subs.setUserCls('pointer');
} else if (mixed) {
data = {
title: gettext('Mixed Subscriptions'),
iconCls: PVE.Utils.get_health_icon('warning', true),
text: gettext('Warning: Your subscription levels are not the same.')
text: gettext('Warning: Your subscription levels are not the same.'),
};
subs.setUserCls('pointer');
} else if (level) {
data = {
title: PVE.Utils.render_support_level(level),
iconCls: PVE.Utils.get_health_icon('good', true),
text: gettext('Your subscription status is valid.')
text: gettext('Your subscription status is valid.'),
};
subs.setUserCls('');
}
@ -295,6 +295,6 @@ Ext.define('PVE.dc.Summary', {
});
rstore.startUpdate();
}
},
});

View File

@ -71,7 +71,7 @@ Ext.define('PVE.dc.Support', {
} else {
me.updateInactive(data);
}
}
},
});
};
@ -79,10 +79,10 @@ Ext.define('PVE.dc.Support', {
autoScroll: true,
bodyStyle: 'padding:10px',
listeners: {
activate: reload
}
activate: reload,
},
});
me.callParent();
}
},
});

View File

@ -137,7 +137,7 @@ Ext.define('PVE.dc.SyncWindow', {
reference: 'defaulthint',
value: gettext('Default sync options can be set by editing the realm.'),
userCls: 'pmx-hint',
hidden: true
hidden: true,
},
],
}],

View File

@ -14,7 +14,7 @@ Ext.define('PVE.window.TFAEdit', {
layout: {
type: 'vbox',
align: 'stretch'
align: 'stretch',
},
updateQrCode: function() {
@ -34,7 +34,7 @@ Ext.define('PVE.window.TFAEdit', {
'&period=' + values.step +
'&digits=' + values.digits +
'&algorithm=' + algorithm +
'&issuer=' + encodeURIComponent(values.issuer)
'&issuer=' + encodeURIComponent(values.issuer),
);
me.lookup('challenge').setVisible(true);
@ -44,7 +44,7 @@ Ext.define('PVE.window.TFAEdit', {
showError: function(error) {
Ext.Msg.alert(
gettext('Error'),
PVE.Utils.render_u2f_error(error)
PVE.Utils.render_u2f_error(error),
);
},
@ -56,7 +56,7 @@ Ext.define('PVE.window.TFAEdit', {
var msg = Ext.Msg.show({
title: 'U2F: '+gettext('Setup'),
message: gettext('Please press the button on your U2F Device'),
buttons: []
buttons: [],
});
Ext.Function.defer(function() {
u2f.register(data.appId, [data], [], function(data) {
@ -75,7 +75,7 @@ Ext.define('PVE.window.TFAEdit', {
var params = {
userid: me.userid,
action: 'confirm',
response: JSON.stringify(data)
response: JSON.stringify(data),
};
if (Proxmox.UserName !== 'root@pam') {
params.password = me.lookup('password').value;
@ -89,12 +89,12 @@ Ext.define('PVE.window.TFAEdit', {
Ext.Msg.show({
title: gettext('Success'),
message: gettext('U2F Device successfully connected.'),
buttons: Ext.Msg.OK
buttons: Ext.Msg.OK,
});
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
},
@ -128,7 +128,7 @@ Ext.define('PVE.window.TFAEdit', {
selectedTab: function(get) {
return (get('tfa_type') || 'totp') + '-panel';
},
}
},
},
afterLoading: function(realm_tfa_type, user_tfa_type) {
@ -167,8 +167,8 @@ Ext.define('PVE.window.TFAEdit', {
gettext('Error'),
Ext.String.format(
gettext("Custom 2nd factor configuration is not supported on realms with '{0}' TFA."),
realm_tfa_type
)
realm_tfa_type,
),
);
}
},
@ -180,7 +180,7 @@ Ext.define('PVE.window.TFAEdit', {
change: function() {
var me = this.getView();
me.updateQrCode();
}
},
},
'field': {
validitychange: function(field, valid) {
@ -190,7 +190,7 @@ Ext.define('PVE.window.TFAEdit', {
var challenge = me.lookup('challenge');
var password = me.lookup('password');
viewModel.set('valid', form.isValid() && challenge.isValid() && password.isValid());
}
},
},
'#': {
show: function() {
@ -209,14 +209,14 @@ Ext.define('PVE.window.TFAEdit', {
failure: function(response, opts) {
me.close();
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
me.qrdiv = document.createElement('center');
me.qrcode = new QRCode(me.qrdiv, {
width: 256,
height: 256,
correctLevel: QRCode.CorrectLevel.M
correctLevel: QRCode.CorrectLevel.M,
});
me.down('#qrbox').getEl().appendChild(me.qrdiv);
@ -224,14 +224,14 @@ Ext.define('PVE.window.TFAEdit', {
me.lookup('password').setVisible(false);
me.lookup('password').setDisabled(true);
}
}
},
},
'#tfatabs': {
tabchange: function(panel, newcard) {
var viewmodel = this.getViewModel();
viewmodel.set('in_totp_tab', newcard.itemId === 'totp-panel');
}
}
},
},
},
applySettings: function() {
@ -244,10 +244,10 @@ Ext.define('PVE.window.TFAEdit', {
config: PVE.Parser.printPropertyString({
type: 'oath',
digits: values.digits,
step: values.step
step: values.step,
}),
// this is used to verify that the client generates the correct codes:
response: me.lookup('challenge').value
response: me.lookup('challenge').value,
};
if (Proxmox.UserName !== 'root@pam') {
@ -264,7 +264,7 @@ Ext.define('PVE.window.TFAEdit', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
},
@ -273,7 +273,7 @@ Ext.define('PVE.window.TFAEdit', {
var values = me.lookup('totp_form').getValues();
var params = {
userid: me.getView().userid,
action: 'delete'
action: 'delete',
};
if (Proxmox.UserName !== 'root@pam') {
@ -290,7 +290,7 @@ Ext.define('PVE.window.TFAEdit', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
},
@ -318,7 +318,7 @@ Ext.define('PVE.window.TFAEdit', {
var params = {
userid: me.getView().userid,
action: 'new'
action: 'new',
};
if (Proxmox.UserName !== 'root@pam') {
@ -335,9 +335,9 @@ Ext.define('PVE.window.TFAEdit', {
},
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
}
},
},
items: [
@ -358,11 +358,11 @@ Ext.define('PVE.window.TFAEdit', {
tfa_type: 'totp',
border: false,
bind: {
disabled: '{!canSetupTOTP}'
disabled: '{!canSetupTOTP}',
},
layout: {
type: 'vbox',
align: 'stretch'
align: 'stretch',
},
items: [
{
@ -372,7 +372,7 @@ Ext.define('PVE.window.TFAEdit', {
reference: 'totp_form',
fieldDefaults: {
anchor: '100%',
padding: '0 5'
padding: '0 5',
},
items: [
{
@ -380,8 +380,8 @@ Ext.define('PVE.window.TFAEdit', {
fieldLabel: gettext('User name'),
renderer: Ext.String.htmlEncode,
cbind: {
value: '{userid}'
}
value: '{userid}',
},
},
{
layout: 'hbox',
@ -400,15 +400,15 @@ Ext.define('PVE.window.TFAEdit', {
bind: {
value: "{secret}",
},
flex: 4
flex: 4,
},
{
xtype: 'button',
text: gettext('Randomize'),
reference: 'randomize_button',
handler: 'randomizeSecret',
flex: 1
}]
flex: 1,
}],
},
{
xtype: 'numberfield',
@ -418,7 +418,7 @@ Ext.define('PVE.window.TFAEdit', {
hidden: true,
value: 30,
minValue: 10,
qrupdate: true
qrupdate: true,
},
{
xtype: 'numberfield',
@ -429,16 +429,16 @@ Ext.define('PVE.window.TFAEdit', {
hidden: true,
minValue: 6,
maxValue: 8,
qrupdate: true
qrupdate: true,
},
{
xtype: 'textfield',
fieldLabel: gettext('Issuer Name'),
name: 'issuer',
value: 'Proxmox Web UI',
qrupdate: true
}
]
qrupdate: true,
},
],
},
{
xtype: 'box',
@ -451,8 +451,8 @@ Ext.define('PVE.window.TFAEdit', {
'background-color': 'white',
padding: '5px',
width: '266px',
height: '266px'
}
height: '266px',
},
},
{
xtype: 'textfield',
@ -464,9 +464,9 @@ Ext.define('PVE.window.TFAEdit', {
visible: '{showTOTPVerifiction}',
},
padding: '0 5',
emptyText: gettext('Scan QR code and enter TOTP auth. code to verify')
}
]
emptyText: gettext('Scan QR code and enter TOTP auth. code to verify'),
},
],
},
{
title: 'U2F',
@ -477,20 +477,20 @@ Ext.define('PVE.window.TFAEdit', {
padding: '5 5',
layout: {
type: 'vbox',
align: 'middle'
align: 'middle',
},
bind: {
disabled: '{!canSetupU2F}'
disabled: '{!canSetupU2F}',
},
items: [
{
xtype: 'label',
width: 500,
text: gettext('To register a U2F device, connect the device, then click the button and follow the instructions.')
}
]
}
]
text: gettext('To register a U2F device, connect the device, then click the button and follow the instructions.'),
},
],
},
],
},
{
xtype: 'textfield',
@ -501,13 +501,13 @@ Ext.define('PVE.window.TFAEdit', {
allowBlank: false,
validateBlank: true,
padding: '0 0 5 5',
emptyText: gettext('verify current password')
}
emptyText: gettext('verify current password'),
},
],
buttons: [
{
xtype: 'proxmoxHelpButton'
xtype: 'proxmoxHelpButton',
},
'->',
{
@ -515,8 +515,8 @@ Ext.define('PVE.window.TFAEdit', {
handler: 'applySettings',
bind: {
hidden: '{!in_totp_tab}',
disabled: '{!valid}'
}
disabled: '{!valid}',
},
},
{
xtype: 'button',
@ -524,8 +524,8 @@ Ext.define('PVE.window.TFAEdit', {
handler: 'startU2FRegistration',
bind: {
hidden: '{in_totp_tab}',
disabled: '{tfa_type}'
}
disabled: '{tfa_type}',
},
},
{
text: gettext('Delete'),
@ -533,9 +533,9 @@ Ext.define('PVE.window.TFAEdit', {
disabled: true,
handler: 'deleteTFA',
bind: {
disabled: '{!canDeleteTFA}'
}
}
disabled: '{!canDeleteTFA}',
},
},
],
initComponent: function() {
@ -548,5 +548,5 @@ Ext.define('PVE.window.TFAEdit', {
me.callParent();
Ext.GlobalEvents.fireEvent('proxmoxShowHelp', 'pveum_tfa_auth');
}
},
});

View File

@ -15,8 +15,8 @@ Ext.define('PVE.dc.Tasks', {
model: 'proxmox-tasks',
proxy: {
type: 'proxmox',
url: '/api2/json/cluster/tasks'
}
url: '/api2/json/cluster/tasks',
},
});
var store = Ext.create('Proxmox.data.DiffStore', {
@ -26,13 +26,13 @@ Ext.define('PVE.dc.Tasks', {
sorters: [
{
property : 'pid',
direction: 'DESC'
direction: 'DESC',
},
{
property : 'starttime',
direction: 'DESC'
}
]
direction: 'DESC',
},
],
});
@ -64,7 +64,7 @@ Ext.define('PVE.dc.Tasks', {
if (status && status != 'OK') {
return "proxmox-invalid-row";
}
}
},
},
sortableColumns: false,
columns: [
@ -74,7 +74,7 @@ Ext.define('PVE.dc.Tasks', {
width: 150,
renderer: function(value) {
return Ext.Date.format(value, "M d H:i:s");
}
},
},
{
header: gettext("End Time"),
@ -92,24 +92,24 @@ Ext.define('PVE.dc.Tasks', {
return "";
}
return Ext.Date.format(value, "M d H:i:s");
}
},
},
{
header: gettext("Node"),
dataIndex: 'node',
width: 100
width: 100,
},
{
header: gettext("User name"),
dataIndex: 'user',
renderer: Ext.String.htmlEncode,
width: 150
width: 150,
},
{
header: gettext("Description"),
dataIndex: 'upid',
flex: 1,
renderer: Proxmox.Utils.render_upid
renderer: Proxmox.Utils.render_upid,
},
{
header: gettext("Status"),
@ -127,16 +127,16 @@ Ext.define('PVE.dc.Tasks', {
}
// metaData.attr = 'style="color:red;"';
return Proxmox.Utils.errorText + ': ' + value;
}
}
},
},
],
listeners: {
itemdblclick: run_task_viewer,
show: () => taskstore.startUpdate(),
destroy: () => taskstore.stopUpdate(),
}
},
});
me.callParent();
}
},
});

View File

@ -38,7 +38,7 @@ Ext.define('PVE.dc.UserEdit', {
submitValue: false,
disabled: true,
hidden: true,
validator: validate_pw
validator: validate_pw,
});
pwfield = Ext.createWidget('textfield', {
@ -48,7 +48,7 @@ Ext.define('PVE.dc.UserEdit', {
name: 'password',
disabled: true,
hidden: true,
validator: validate_pw
validator: validate_pw,
});
var update_passwd_field = function(realm) {
@ -74,7 +74,7 @@ Ext.define('PVE.dc.UserEdit', {
value: me.userid,
renderer: Ext.String.htmlEncode,
allowBlank: false,
submitValue: me.isCreate ? true : false
submitValue: me.isCreate ? true : false,
},
pwfield, verifypw,
{
@ -82,7 +82,7 @@ Ext.define('PVE.dc.UserEdit', {
name: 'groups',
multiSelect: true,
allowBlank: true,
fieldLabel: gettext('Group')
fieldLabel: gettext('Group'),
},
{
xtype: 'pmxExpireDate',
@ -94,31 +94,31 @@ Ext.define('PVE.dc.UserEdit', {
name: 'enable',
uncheckedValue: 0,
defaultValue: 1,
checked: true
}
checked: true,
},
];
var column2 = [
{
xtype: 'textfield',
name: 'firstname',
fieldLabel: gettext('First Name')
fieldLabel: gettext('First Name'),
},
{
xtype: 'textfield',
name: 'lastname',
fieldLabel: gettext('Last Name')
fieldLabel: gettext('Last Name'),
},
{
xtype: 'textfield',
name: 'email',
fieldLabel: gettext('E-Mail'),
vtype: 'proxmoxMail'
}
vtype: 'proxmoxMail',
},
];
if (me.isCreate) {
column1.splice(1,0,{
column1.splice(1, 0, {
xtype: 'pmxRealmComboBox',
name: 'realm',
fieldLabel: gettext('Realm'),
@ -129,9 +129,9 @@ Ext.define('PVE.dc.UserEdit', {
change: function(combo, newValue){
realm = newValue;
update_passwd_field(realm);
}
},
},
submitValue: false
submitValue: false,
});
}
@ -142,15 +142,15 @@ Ext.define('PVE.dc.UserEdit', {
{
xtype: 'textfield',
name: 'comment',
fieldLabel: gettext('Comment')
}
fieldLabel: gettext('Comment'),
},
],
advancedItems: [
{
xtype: 'textfield',
name: 'keys',
fieldLabel: gettext('Key IDs')
}
fieldLabel: gettext('Key IDs'),
},
],
onGetValues: function(values) {
if (realm) {
@ -162,7 +162,7 @@ Ext.define('PVE.dc.UserEdit', {
}
return values;
}
},
});
Ext.applyIf(me, {
@ -170,9 +170,9 @@ Ext.define('PVE.dc.UserEdit', {
url: url,
method: method,
fieldDefaults: {
labelWidth: 110 // for spanish translation
labelWidth: 110, // for spanish translation
},
items: [ ipanel ]
items: [ ipanel ],
});
me.callParent();
@ -187,8 +187,8 @@ Ext.define('PVE.dc.UserEdit', {
me.down('[name="keys"]').setDisabled(1);
}
}
}
},
});
}
}
},
});

View File

@ -18,8 +18,8 @@ Ext.define('PVE.dc.UserView', {
model: 'pve-users',
sorters: {
property: 'userid',
order: 'DESC'
}
order: 'DESC',
},
});
var reload = function() {
@ -39,7 +39,7 @@ Ext.define('PVE.dc.UserView', {
},
callback: function() {
reload();
}
},
});
var run_editor = function() {
@ -48,8 +48,8 @@ Ext.define('PVE.dc.UserView', {
return;
}
var win = Ext.create('PVE.dc.UserEdit',{
userid: rec.data.userid
var win = Ext.create('PVE.dc.UserEdit', {
userid: rec.data.userid,
});
win.on('destroy', reload);
win.show();
@ -62,7 +62,7 @@ Ext.define('PVE.dc.UserView', {
return !!caps.access['User.Modify'];
},
selModel: sm,
handler: run_editor
handler: run_editor,
});
var pwchange_btn = new Proxmox.button.Button({
@ -71,11 +71,11 @@ Ext.define('PVE.dc.UserView', {
selModel: sm,
handler: function(btn, event, rec) {
var win = Ext.create('Proxmox.window.PasswordEdit', {
userid: rec.data.userid
userid: rec.data.userid,
});
win.on('destroy', reload);
win.show();
}
},
});
var tfachange_btn = new Proxmox.button.Button({
@ -85,13 +85,13 @@ Ext.define('PVE.dc.UserView', {
handler: function(btn, event, rec) {
var d = rec.data;
var tfa_type = PVE.Parser.parseTfaType(d.keys);
var win = Ext.create('PVE.window.TFAEdit',{
var win = Ext.create('PVE.window.TFAEdit', {
tfa_type: tfa_type,
userid: d.userid
userid: d.userid,
});
win.on('destroy', reload);
win.show();
}
},
});
var perm_btn = new Proxmox.button.Button({
@ -100,10 +100,10 @@ Ext.define('PVE.dc.UserView', {
selModel: sm,
handler: function(btn, event, rec) {
var win = Ext.create('PVE.dc.PermissionView', {
userid: rec.data.userid
userid: rec.data.userid,
});
win.show();
}
},
});
var tbar = [
@ -111,13 +111,13 @@ Ext.define('PVE.dc.UserView', {
text: gettext('Add'),
disabled: !caps.access['User.Modify'],
handler: function() {
var win = Ext.create('PVE.dc.UserEdit',{
var win = Ext.create('PVE.dc.UserEdit', {
});
win.on('destroy', reload);
win.show();
}
},
},
edit_btn, remove_btn, pwchange_btn, tfachange_btn, perm_btn
edit_btn, remove_btn, pwchange_btn, tfachange_btn, perm_btn,
];
var render_username = function(userid) {
@ -133,7 +133,7 @@ Ext.define('PVE.dc.UserView', {
selModel: sm,
tbar: tbar,
viewConfig: {
trackOver: false
trackOver: false,
},
columns: [
{
@ -141,35 +141,35 @@ Ext.define('PVE.dc.UserView', {
width: 200,
sortable: true,
renderer: render_username,
dataIndex: 'userid'
dataIndex: 'userid',
},
{
header: gettext('Realm'),
width: 100,
sortable: true,
renderer: render_realm,
dataIndex: 'userid'
dataIndex: 'userid',
},
{
header: gettext('Enabled'),
width: 80,
sortable: true,
renderer: Proxmox.Utils.format_boolean,
dataIndex: 'enable'
dataIndex: 'enable',
},
{
header: gettext('Expire'),
width: 80,
sortable: true,
renderer: Proxmox.Utils.format_expire,
dataIndex: 'expire'
dataIndex: 'expire',
},
{
header: gettext('Name'),
width: 150,
sortable: true,
renderer: PVE.Utils.render_full_name,
dataIndex: 'firstname'
dataIndex: 'firstname',
},
{
header: 'TFA',
@ -185,24 +185,24 @@ Ext.define('PVE.dc.UserView', {
return tfa_type;
}
},
dataIndex: 'keys'
dataIndex: 'keys',
},
{
header: gettext('Comment'),
sortable: false,
renderer: Ext.String.htmlEncode,
dataIndex: 'comment',
flex: 1
}
flex: 1,
},
],
listeners: {
activate: reload,
itemdblclick: run_editor
}
itemdblclick: run_editor,
},
});
me.callParent();
Proxmox.Utils.monStoreErrors(me, store);
}
},
});

View File

@ -18,5 +18,5 @@ Ext.define('PVE.form.ACMEAccountSelector', {
isEmpty: function() {
return this.getStore().getData().length === 0;
}
},
});

View File

@ -19,7 +19,7 @@ Ext.define('PVE.form.AgentFeatureSelector', {
bind: {
disabled: '{!enabled.checked}',
},
disabled: true
disabled: true,
},
{
xtype: 'displayfield',
@ -43,7 +43,7 @@ Ext.define('PVE.form.AgentFeatureSelector', {
['virtio', 'VirtIO'],
['isa', 'ISA'],
],
}
},
],
onGetValues: function(values) {
@ -54,5 +54,5 @@ Ext.define('PVE.form.AgentFeatureSelector', {
setValues: function(values) {
let res = PVE.Parser.parsePropertyString(values.agent, 'enabled');
this.callParent([res]);
}
},
});

View File

@ -4,6 +4,6 @@ Ext.define('PVE.form.BackupModeSelector', {
comboItems: [
['snapshot', gettext('Snapshot')],
['suspend', gettext('Suspend')],
['stop', gettext('Stop')]
]
['stop', gettext('Stop')],
],
});

View File

@ -10,14 +10,14 @@ Ext.define('PVE.form.BandwidthField', {
},
formulas: {
unitlabel: (get) => get('unit') + '/s',
}
},
},
emptyText: '',
layout: 'hbox',
defaults: {
hideLabel: true
hideLabel: true,
},
units: {

View File

@ -5,6 +5,6 @@ Ext.define('PVE.form.Boolean', {
comboItems: [
['__default__', gettext('Default')],
[1, gettext('Yes')],
[0, gettext('No')]
]
[0, gettext('No')],
],
});

View File

@ -10,9 +10,9 @@ Ext.define('PVE.form.BridgeSelector', {
sorters: [
{
property : 'iface',
direction: 'ASC'
}
]
direction: 'ASC',
},
],
},
valueField: 'iface',
displayField: 'iface',
@ -22,21 +22,21 @@ Ext.define('PVE.form.BridgeSelector', {
header: gettext('Bridge'),
dataIndex: 'iface',
hideable: false,
width: 100
width: 100,
},
{
header: gettext('Active'),
width: 60,
dataIndex: 'active',
renderer: Proxmox.Utils.format_boolean
renderer: Proxmox.Utils.format_boolean,
},
{
header: gettext('Comment'),
dataIndex: 'comments',
renderer: Ext.String.htmlEncode,
flex: 1
}
]
flex: 1,
},
],
},
setNodename: function(nodename) {
@ -51,7 +51,7 @@ Ext.define('PVE.form.BridgeSelector', {
me.store.setProxy({
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodename + '/network?type=' +
me.bridgeType
me.bridgeType,
});
me.store.load();
@ -66,6 +66,6 @@ Ext.define('PVE.form.BridgeSelector', {
me.callParent();
me.setNodename(nodename);
}
},
});

View File

@ -16,5 +16,5 @@ Ext.define('PVE.form.BusTypeSelector', {
me.comboItems.push(['scsi', 'SCSI']);
me.callParent();
}
},
});

View File

@ -4,8 +4,8 @@ Ext.define('PVE.data.CPUModel', {
{name: 'name'},
{name: 'vendor'},
{name: 'custom'},
{name: 'displayname'}
]
{name: 'displayname'},
],
});
Ext.define('PVE.form.CPUModelSelector', {
@ -32,17 +32,17 @@ Ext.define('PVE.form.CPUModelSelector', {
dataIndex: 'displayname',
hideable: false,
sortable: true,
flex: 3
flex: 3,
},
{
header: gettext('Vendor'),
dataIndex: 'vendor',
hideable: false,
sortable: true,
flex: 2
}
flex: 2,
},
],
width: 360
width: 360,
},
store: {
@ -50,7 +50,7 @@ Ext.define('PVE.form.CPUModelSelector', {
model: 'PVE.data.CPUModel',
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/localhost/cpu'
url: '/api2/json/nodes/localhost/cpu',
},
sorters: [
{
@ -71,8 +71,8 @@ Ext.define('PVE.form.CPUModelSelector', {
// Within same vendor, sort alphabetically
return a.name.localeCompare(b.name);
},
direction: 'ASC'
}
direction: 'ASC',
},
],
listeners: {
load: function(store, records, success) {
@ -98,7 +98,7 @@ Ext.define('PVE.form.CPUModelSelector', {
store.sort();
}
}
}
}
},
},
},
});

View File

@ -7,6 +7,6 @@ Ext.define('PVE.form.CacheTypeSelector', {
['writethrough', 'Write through'],
['writeback', 'Write back'],
['unsafe', 'Write back (' + gettext('unsafe') + ')'],
['none', gettext('No cache')]
]
['none', gettext('No cache')],
],
});

View File

@ -16,20 +16,20 @@ Ext.define('PVE.form.CalendarEvent', {
{ value: '2,22:30', text: gettext("Every day") + " 02:30, 22:30"},
{ value: 'mon..fri', text: gettext("Monday to Friday") + " 00:00"},
{ value: 'mon..fri */1:00', text: gettext("Monday to Friday") + ': ' + gettext("hourly")},
{ value: 'sun 01:00', text: gettext("Sunday") + " 01:00"}
]
{ value: 'sun 01:00', text: gettext("Sunday") + " 01:00"},
],
},
tpl: [
'<ul class="x-list-plain"><tpl for=".">',
'<li role="option" class="x-boundlist-item">{text}</li>',
'</tpl></ul>'
'</tpl></ul>',
],
displayTpl: [
'<tpl for=".">',
'{value}',
'</tpl>'
]
'</tpl>',
],
});

View File

@ -20,12 +20,12 @@ Ext.define('PVE.form.CephPoolSelector', {
sorters: 'name',
proxy: {
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodename + '/ceph/pools'
}
url: '/api2/json/nodes/' + me.nodename + '/ceph/pools',
},
});
Ext.apply(me, {
store: store
store: store,
});
me.callParent();
@ -35,8 +35,8 @@ Ext.define('PVE.form.CephPoolSelector', {
if (success && rec.length > 0) {
me.select(rec[0]);
}
}
},
});
}
},
});

View File

@ -6,5 +6,5 @@ Ext.define('PVE.form.CompressionSelector', {
['lzo', 'LZO (' + gettext('fast') + ')'],
['gzip', 'GZIP (' + gettext('good') + ')'],
['zstd', 'ZSTD (' + gettext('fast and good') + ')'],
]
],
});

View File

@ -18,5 +18,5 @@ Ext.define('PVE.form.ContentTypeSelector', {
});
me.callParent();
}
},
});

View File

@ -75,7 +75,7 @@ clist_loop:
fieldLabel: gettext('Bus/Device'),
layout: 'hbox',
defaults: {
hideLabel: true
hideLabel: true,
},
items: [
{
@ -93,8 +93,8 @@ clist_loop:
var field = me.down('field[name=deviceid]');
field.setMaxValue(PVE.Utils.diskControllerMaxIDs[value]);
field.validate();
}
}
},
},
},
{
xtype: 'proxmoxintegerfield',
@ -115,11 +115,11 @@ clist_loop:
return "This device is already in use.";
}
return true;
}
}
]
},
},
],
});
me.callParent();
}
},
});

View File

@ -11,8 +11,8 @@ Ext.define('PVE.form.DayOfWeekSelector', {
['thu', Ext.util.Format.htmlDecode(Ext.Date.dayNames[4])],
['fri', Ext.util.Format.htmlDecode(Ext.Date.dayNames[5])],
['sat', Ext.util.Format.htmlDecode(Ext.Date.dayNames[6])],
['sun', Ext.util.Format.htmlDecode(Ext.Date.dayNames[0])]
['sun', Ext.util.Format.htmlDecode(Ext.Date.dayNames[0])],
];
this.callParent();
}
},
});

View File

@ -4,6 +4,6 @@ Ext.define('PVE.form.DiskFormatSelector', {
comboItems: [
['raw', gettext('Raw disk image') + ' (raw)'],
['qcow2', gettext('QEMU image format') + ' (qcow2)'],
['vmdk', gettext('VMware image format') + ' (vmdk)']
]
['vmdk', gettext('VMware image format') + ' (vmdk)'],
],
});

View File

@ -4,7 +4,7 @@ Ext.define('PVE.form.DiskStorageSelector', {
layout: 'fit',
defaults: {
margin: '0 0 5 0'
margin: '0 0 5 0',
},
// the fieldLabel for the storageselector
@ -119,9 +119,9 @@ Ext.define('PVE.form.DiskStorageSelector', {
listeners: {
change: {
fn: me.changeStorage,
scope: me
}
}
scope: me,
},
},
},
{
xtype: 'pveFileSelector',
@ -131,7 +131,7 @@ Ext.define('PVE.form.DiskStorageSelector', {
fieldLabel: gettext('Disk image'),
nodename: me.nodename,
disabled: true,
hidden: true
hidden: true,
},
{
xtype: 'numberfield',
@ -145,7 +145,7 @@ Ext.define('PVE.form.DiskStorageSelector', {
maxValue: 128*1024,
decimalPrecision: 3,
value: me.defaultSize,
allowBlank: false
allowBlank: false,
},
{
xtype: 'pveDiskFormatSelector',
@ -157,13 +157,13 @@ Ext.define('PVE.form.DiskStorageSelector', {
disabled: true,
hidden: me.storageContent === 'rootdir',
value: 'qcow2',
allowBlank: false
}
allowBlank: false,
},
];
// use it to disable the children but not ourself
me.disabled = false;
me.callParent();
}
},
});

View File

@ -3,6 +3,6 @@ Ext.define('PVE.form.EmailNotificationSelector', {
alias: ['widget.pveEmailNotificationSelector'],
comboItems: [
['always', gettext('Always')],
['failure', gettext('On failure only')]
]
['failure', gettext('On failure only')],
],
});

View File

@ -12,7 +12,7 @@ Ext.define('PVE.form.FileSelector', {
if (!me.disabled) {
me.setStorage(me.storage, me.nodename);
}
}
},
},
setStorage: function(storage, nodename) {
@ -40,7 +40,7 @@ Ext.define('PVE.form.FileSelector', {
me.store.setProxy({
type: 'proxmox',
url: url
url: url,
});
me.store.removeAll();
@ -52,7 +52,7 @@ Ext.define('PVE.form.FileSelector', {
},
store: {
model: 'pve-storage-content'
model: 'pve-storage-content',
},
allowBlank: false,
@ -67,19 +67,19 @@ Ext.define('PVE.form.FileSelector', {
header: gettext('Name'),
dataIndex: 'text',
hideable: false,
flex: 1
flex: 1,
},
{
header: gettext('Format'),
width: 60,
dataIndex: 'format'
dataIndex: 'format',
},
{
header: gettext('Size'),
width: 100,
dataIndex: 'size',
renderer: Proxmox.Utils.format_size
}
]
}
renderer: Proxmox.Utils.format_size,
},
],
},
});

View File

@ -4,6 +4,6 @@ Ext.define('PVE.form.FirewallPolicySelector', {
comboItems: [
['ACCEPT', 'ACCEPT'],
['REJECT', 'REJECT'],
[ 'DROP', 'DROP']
]
[ 'DROP', 'DROP'],
],
});

View File

@ -28,19 +28,19 @@ Ext.define('PVE.form.GlobalSearchField', {
scrollable: {
xtype: 'scroller',
y: true,
x:false
x:false,
},
store: {
model: 'PVEResources',
proxy:{
type: 'proxmox',
url: '/api2/extjs/cluster/resources'
}
url: '/api2/extjs/cluster/resources',
},
},
plugins: {
ptype: 'bufferedrenderer',
trailingBufferZone: 20,
leadingBufferZone: 20
leadingBufferZone: 20,
},
hideMe: function() {
@ -70,9 +70,9 @@ Ext.define('PVE.form.GlobalSearchField', {
},
/* because of lint */
focusleave: {
fn: 'hideMe'
fn: 'hideMe',
},
focusenter: 'setFocus'
focusenter: 'setFocus',
},
columns: [
@ -80,29 +80,29 @@ Ext.define('PVE.form.GlobalSearchField', {
text: gettext('Type'),
dataIndex: 'type',
width: 100,
renderer: PVE.Utils.render_resource_type
renderer: PVE.Utils.render_resource_type,
},
{
text: gettext('Description'),
flex: 1,
dataIndex: 'text'
dataIndex: 'text',
},
{
text: gettext('Node'),
dataIndex: 'node'
dataIndex: 'node',
},
{
text: gettext('Pool'),
dataIndex: 'pool'
}
]
dataIndex: 'pool',
},
],
},
customFilter: function(item) {
var me = this;
var match = 0;
var fieldArr = [];
var i,j, fields;
var i, j, fields;
// different types of objects have different fields to search
// for example, a node will never have a pool and vice versa
@ -208,14 +208,14 @@ Ext.define('PVE.form.GlobalSearchField', {
listeners: {
change: {
fn: 'updateFilter',
buffer: 250
buffer: 250,
},
specialkey: 'onKey',
focusenter: 'loadValues',
focusleave: {
fn: 'hideGrid',
delay: 100
}
delay: 100,
},
},
toggleFocus: function() {
@ -248,13 +248,13 @@ Ext.define('PVE.form.GlobalSearchField', {
ctrl: true,
shift: true,
fn: me.toggleFocus,
scope: me
},{
scope: me,
}, {
key:' ',
ctrl: true,
fn: me.toggleFocus,
scope: me
}]
scope: me,
}],
});
// always select first item and
@ -263,9 +263,9 @@ Ext.define('PVE.form.GlobalSearchField', {
me.grid.getSelectionModel().select(0);
me.grid.store.sort({
property: 'relevance',
direction: 'DESC'
direction: 'DESC',
});
});
}
},
});

View File

@ -3,9 +3,9 @@ Ext.define('pve-groups', {
fields: [ 'groupid', 'comment', 'users' ],
proxy: {
type: 'proxmox',
url: "/api2/json/access/groups"
url: "/api2/json/access/groups",
},
idProperty: 'groupid'
idProperty: 'groupid',
});
Ext.define('PVE.form.GroupSelector', {
@ -22,23 +22,23 @@ Ext.define('PVE.form.GroupSelector', {
header: gettext('Group'),
sortable: true,
dataIndex: 'groupid',
flex: 1
flex: 1,
},
{
header: gettext('Comment'),
sortable: false,
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
flex: 1,
},
{
header: gettext('Users'),
sortable: false,
dataIndex: 'users',
renderer: Ext.String.htmlEncode,
flex: 1
}
]
flex: 1,
},
],
},
initComponent: function() {
@ -47,16 +47,16 @@ Ext.define('PVE.form.GroupSelector', {
var store = new Ext.data.Store({
model: 'pve-groups',
sorters: [{
property: 'groupid'
}]
property: 'groupid',
}],
});
Ext.apply(me, {
store: store
store: store,
});
me.callParent();
store.load();
}
},
});

View File

@ -70,10 +70,10 @@ Ext.define('PVE.form.GuestIDSelector', {
failure: function(response, opts) {
me.exists = true;
me.validate();
}
},
});
}
}
},
},
});
me.callParent();
@ -84,8 +84,8 @@ Ext.define('PVE.form.GuestIDSelector', {
method: 'GET',
success: function(response, opts) {
me.setRawValue(response.result.data);
}
},
});
}
}
},
});

View File

@ -7,32 +7,32 @@ Ext.define('PVE.form.HotplugFeatureSelector', {
defaults: {
name: 'hotplugCbGroup',
submitValue: false
submitValue: false,
},
items: [
{
boxLabel: gettext('Disk'),
inputValue: 'disk',
checked: true
checked: true,
},
{
boxLabel: gettext('Network'),
inputValue: 'network',
checked: true
checked: true,
},
{
boxLabel: 'USB',
inputValue: 'usb',
checked: true
checked: true,
},
{
boxLabel: gettext('Memory'),
inputValue: 'memory'
inputValue: 'memory',
},
{
boxLabel: gettext('CPU'),
inputValue: 'cpu'
}
inputValue: 'cpu',
},
],
setValue: function(value) {
@ -64,6 +64,6 @@ Ext.define('PVE.form.HotplugFeatureSelector', {
} else {
return { 'hotplug': data.join(',') };
}
}
},
});

View File

@ -10,23 +10,23 @@ Ext.define('PVE.form.IPProtocolSelector', {
dataIndex: 'p',
hideable: false,
sortable: false,
width: 100
width: 100,
},
{
header: gettext('Number'),
dataIndex: 'n',
hideable: false,
sortable: false,
width: 50
width: 50,
},
{
header: gettext('Description'),
dataIndex: 'd',
hideable: false,
sortable: false,
flex: 1
}
]
flex: 1,
},
],
},
store: {
fields: [ 'p', 'd', 'n'],
@ -81,7 +81,7 @@ Ext.define('PVE.form.IPProtocolSelector', {
{ p: 'hip', n: 139, d: 'Host Identity Protocol' },
{ p: 'shim6', n: 140, d: 'Shim6 Protocol [RFC5533]' },
{ p: 'wesp', n: 141, d: 'Wrapped Encapsulating Security Payload' },
{ p: 'rohc', n: 142, d: 'Robust Header Compression' }
]
}
{ p: 'rohc', n: 142, d: 'Robust Header Compression' },
],
},
});

View File

@ -30,12 +30,12 @@ Ext.define('PVE.form.IPRefSelector', {
idProperty: 'ref',
proxy: {
type: 'proxmox',
url: url
url: url,
},
sorters: {
property: 'ref',
order: 'DESC'
}
order: 'DESC',
},
});
var disable_query_for_ips = function(f, value) {
@ -54,7 +54,7 @@ Ext.define('PVE.form.IPRefSelector', {
header: gettext('Type'),
dataIndex: 'type',
hideable: false,
width: 60
width: 60,
});
}
@ -63,24 +63,24 @@ Ext.define('PVE.form.IPRefSelector', {
header: gettext('Name'),
dataIndex: 'ref',
hideable: false,
width: 140
width: 140,
},
{
header: gettext('Comment'),
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
}
flex: 1,
},
);
Ext.apply(me, {
store: store,
listConfig: { columns: columns }
listConfig: { columns: columns },
});
me.on('change', disable_query_for_ips);
me.callParent();
}
},
});

View File

@ -3,14 +3,14 @@ Ext.define('PVE.form.MDevSelector', {
xtype: 'pveMDevSelector',
store: {
fields: [ 'type','available', 'description' ],
fields: [ 'type', 'available', 'description' ],
filterOnLoad: true,
sorters: [
{
property : 'type',
direction: 'ASC'
}
]
direction: 'ASC',
},
],
},
autoSelect: false,
valueField: 'type',
@ -20,12 +20,12 @@ Ext.define('PVE.form.MDevSelector', {
{
header: gettext('Type'),
dataIndex: 'type',
flex: 1
flex: 1,
},
{
header: gettext('Available'),
dataIndex: 'available',
width: 80
width: 80,
},
{
header: gettext('Description'),
@ -37,9 +37,9 @@ Ext.define('PVE.form.MDevSelector', {
}
return value.split('\n').join('<br>');
}
}
]
},
},
],
},
setPciID: function(pciid, force) {
@ -69,7 +69,7 @@ Ext.define('PVE.form.MDevSelector', {
var me = this;
me.store.setProxy({
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodename + '/hardware/pci/' + me.pciid + '/mdev'
url: '/api2/json/nodes/' + me.nodename + '/hardware/pci/' + me.pciid + '/mdev',
});
me.store.load();
},
@ -86,6 +86,6 @@ Ext.define('PVE.form.MDevSelector', {
if (me.pciid) {
me.setPciID(me.pciid, true);
}
}
},
});

View File

@ -83,5 +83,5 @@ Ext.define('PVE.form.MemoryField', {
}
me.callParent();
}
},
});

View File

@ -5,6 +5,6 @@ Ext.define('PVE.form.NetworkCardSelector', {
['e1000', 'Intel E1000'],
['virtio', 'VirtIO (' + gettext('paravirtualized') + ')'],
['rtl8139', 'Realtek RTL8139'],
['vmxnet3', 'VMware vmxnet3']
]
['vmxnet3', 'VMware vmxnet3'],
],
});

View File

@ -22,18 +22,18 @@ Ext.define('PVE.form.NodeSelector', {
fields: [ 'node', 'cpu', 'maxcpu', 'mem', 'maxmem', 'uptime' ],
proxy: {
type: 'proxmox',
url: '/api2/json/nodes'
url: '/api2/json/nodes',
},
sorters: [
{
property : 'node',
direction: 'ASC'
direction: 'ASC',
},
{
property : 'mem',
direction: 'DESC'
}
]
direction: 'DESC',
},
],
},
listConfig: {
@ -43,23 +43,23 @@ Ext.define('PVE.form.NodeSelector', {
dataIndex: 'node',
sortable: true,
hideable: false,
flex: 1
flex: 1,
},
{
header: gettext('Memory usage') + " %",
renderer: PVE.Utils.render_mem_usage_percent,
sortable: true,
width: 100,
dataIndex: 'mem'
dataIndex: 'mem',
},
{
header: gettext('CPU usage'),
renderer: PVE.Utils.render_cpu,
sortable: true,
width: 100,
dataIndex: 'cpu'
}
]
dataIndex: 'cpu',
},
],
},
validator: function(value) {
@ -108,11 +108,11 @@ Ext.define('PVE.form.NodeSelector', {
} else {
return true;
}
}
},
}));
me.mon(me.getStore(), 'load', function(){
me.isValid();
});
}
},
});

View File

@ -3,14 +3,14 @@ Ext.define('PVE.form.PCISelector', {
xtype: 'pvePCISelector',
store: {
fields: [ 'id','vendor_name', 'device_name', 'vendor', 'device', 'iommugroup', 'mdev' ],
fields: [ 'id', 'vendor_name', 'device_name', 'vendor', 'device', 'iommugroup', 'mdev' ],
filterOnLoad: true,
sorters: [
{
property : 'id',
direction: 'ASC'
}
]
direction: 'ASC',
},
],
},
autoSelect: false,
@ -27,22 +27,22 @@ Ext.define('PVE.form.PCISelector', {
{
header: 'ID',
dataIndex: 'id',
width: 100
width: 100,
},
{
header: gettext('IOMMU Group'),
dataIndex: 'iommugroup',
width: 50
width: 50,
},
{
header: gettext('Vendor'),
dataIndex: 'vendor_name',
flex: 2
flex: 2,
},
{
header: gettext('Device'),
dataIndex: 'device_name',
flex: 6
flex: 6,
},
{
header: gettext('Mediated Devices'),
@ -50,9 +50,9 @@ Ext.define('PVE.form.PCISelector', {
flex: 1,
renderer: function(val) {
return Proxmox.Utils.format_boolean(!!val);
}
}
]
},
},
],
},
setNodename: function(nodename) {
@ -66,7 +66,7 @@ Ext.define('PVE.form.PCISelector', {
me.store.setProxy({
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodename + '/hardware/pci'
url: '/api2/json/nodes/' + me.nodename + '/hardware/pci',
});
me.store.load();
@ -85,6 +85,6 @@ Ext.define('PVE.form.PCISelector', {
}
me.setNodename(nodename);
}
},
});

View File

@ -8,6 +8,6 @@ Ext.define('PVE.form.PermPathSelector', {
queryMode: 'local',
store: {
type: 'pvePermPath'
}
type: 'pvePermPath',
},
});

View File

@ -11,7 +11,7 @@ Ext.define('PVE.form.PoolSelector', {
var store = new Ext.data.Store({
model: 'pve-pools',
sorters: 'poolid'
sorters: 'poolid',
});
Ext.apply(me, {
@ -23,23 +23,23 @@ Ext.define('PVE.form.PoolSelector', {
header: gettext('Pool'),
sortable: true,
dataIndex: 'poolid',
flex: 1
flex: 1,
},
{
header: gettext('Comment'),
sortable: false,
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
}
]
}
flex: 1,
},
],
},
});
me.callParent();
store.load();
}
},
}, function() {
@ -48,9 +48,9 @@ Ext.define('PVE.form.PoolSelector', {
fields: [ 'poolid', 'comment' ],
proxy: {
type: 'proxmox',
url: "/api2/json/pools"
url: "/api2/json/pools",
},
idProperty: 'poolid'
idProperty: 'poolid',
});
});

View File

@ -23,13 +23,13 @@ Ext.define('PVE.form.PrivilegesSelector', {
me.store.sort({
property: 'key',
direction: 'ASC'
direction: 'ASC',
});
},
failure: function (response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
},
});
}
},
});

View File

@ -8,9 +8,9 @@ Ext.define('PVE.form.QemuBiosSelector', {
me.comboItems = [
['__default__', PVE.Utils.render_qemu_bios('')],
['seabios', PVE.Utils.render_qemu_bios('seabios')],
['ovmf', PVE.Utils.render_qemu_bios('ovmf')]
['ovmf', PVE.Utils.render_qemu_bios('ovmf')],
];
me.callParent();
}
},
});

View File

@ -13,7 +13,7 @@ Ext.define('PVE.form.SDNControllerSelector', {
model: 'pve-sdn-controller',
sorters: {
property: 'controller',
order: 'DESC'
order: 'DESC',
},
});
@ -26,16 +26,16 @@ Ext.define('PVE.form.SDNControllerSelector', {
header: gettext('Controller'),
sortable: true,
dataIndex: 'controller',
flex: 1
flex: 1,
},
]
}
],
},
});
me.callParent();
store.load();
}
},
}, function() {
@ -44,9 +44,9 @@ Ext.define('PVE.form.SDNControllerSelector', {
fields: [ 'controller' ],
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/sdn/controllers"
url: "/api2/json/cluster/sdn/controllers",
},
idProperty: 'controller'
idProperty: 'controller',
});
});

View File

@ -13,7 +13,7 @@ Ext.define('PVE.form.SDNZoneSelector', {
model: 'pve-sdn-zone',
sorters: {
property: 'zone',
order: 'DESC'
order: 'DESC',
},
});
@ -26,16 +26,16 @@ Ext.define('PVE.form.SDNZoneSelector', {
header: gettext('Zone'),
sortable: true,
dataIndex: 'zone',
flex: 1
flex: 1,
},
]
}
],
},
});
me.callParent();
store.load();
}
},
}, function() {
@ -44,9 +44,9 @@ Ext.define('PVE.form.SDNZoneSelector', {
fields: [ 'zone' ],
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/sdn/zones"
url: "/api2/json/cluster/sdn/zones",
},
idProperty: 'zone'
idProperty: 'zone',
});
});

View File

@ -8,6 +8,6 @@ Ext.define('PVE.form.ScsiHwSelector', {
['megasas', PVE.Utils.render_scsihw('megasas')],
['virtio-scsi-pci', PVE.Utils.render_scsihw('virtio-scsi-pci')],
['virtio-scsi-single', PVE.Utils.render_scsihw('virtio-scsi-single')],
['pvscsi', PVE.Utils.render_scsihw('pvscsi')]
]
['pvscsi', PVE.Utils.render_scsihw('pvscsi')],
],
});

View File

@ -13,12 +13,12 @@ Ext.define('PVE.form.SecurityGroupsSelector', {
idProperty: 'group',
proxy: {
type: 'proxmox',
url: "/api2/json/cluster/firewall/groups"
url: "/api2/json/cluster/firewall/groups",
},
sorters: {
property: 'group',
order: 'DESC'
}
order: 'DESC',
},
});
Ext.apply(me, {
@ -29,19 +29,19 @@ Ext.define('PVE.form.SecurityGroupsSelector', {
header: gettext('Security Group'),
dataIndex: 'group',
hideable: false,
width: 100
width: 100,
},
{
header: gettext('Comment'),
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
}
]
}
flex: 1,
},
],
},
});
me.callParent();
}
},
});

View File

@ -22,7 +22,7 @@ Ext.define('PVE.form.SnapshotSelector', {
me.store.setProxy({
type: 'proxmox',
url: '/api2/json/nodes/' + me.nodename + '/' + me.guestType + '/' + me.vmid +'/snapshot'
url: '/api2/json/nodes/' + me.nodename + '/' + me.guestType + '/' + me.vmid +'/snapshot',
});
me.store.load();
@ -45,7 +45,7 @@ Ext.define('PVE.form.SnapshotSelector', {
var store = Ext.create('Ext.data.Store', {
fields: [ 'name'],
filterOnLoad: true
filterOnLoad: true,
});
Ext.apply(me, {
@ -56,14 +56,14 @@ Ext.define('PVE.form.SnapshotSelector', {
header: gettext('Snapshot'),
dataIndex: 'name',
hideable: false,
flex: 1
}
]
}
flex: 1,
},
],
},
});
me.callParent();
me.loadStore(me.nodename, me.vmid);
}
},
});

View File

@ -39,8 +39,8 @@ Ext.define('PVE.form.SpiceEnhancementSelector', {
value: gettext('Make sure the SPICE WebDav daemon is installed in the VM.'),
bind: {
hidden: '{!foldersharing.checked}',
}
}
},
},
],
onGetValues: function(values) {

View File

@ -12,26 +12,26 @@ Ext.define('PVE.form.StorageSelector', {
header: gettext('Name'),
dataIndex: 'storage',
hideable: false,
flex: 1
flex: 1,
},
{
header: gettext('Type'),
width: 75,
dataIndex: 'type'
dataIndex: 'type',
},
{
header: gettext('Avail'),
width: 90,
dataIndex: 'avail',
renderer: Proxmox.Utils.format_size
renderer: Proxmox.Utils.format_size,
},
{
header: gettext('Capacity'),
width: 90,
dataIndex: 'total',
renderer: Proxmox.Utils.format_size
}
]
renderer: Proxmox.Utils.format_size,
},
],
},
reloadStorageList: function() {
@ -41,7 +41,7 @@ Ext.define('PVE.form.StorageSelector', {
}
var params = {
format: 1
format: 1,
};
var url = '/api2/json/nodes/' + me.nodename + '/storage';
if (me.storageContent) {
@ -54,7 +54,7 @@ Ext.define('PVE.form.StorageSelector', {
me.store.setProxy({
type: 'proxmox',
url: url,
extraParams: params
extraParams: params,
});
me.store.load();
@ -95,12 +95,12 @@ Ext.define('PVE.form.StorageSelector', {
model: 'pve-storage-status',
sorters: {
property: 'storage',
order: 'DESC'
}
order: 'DESC',
},
});
Ext.apply(me, {
store: store
store: store,
});
me.callParent();
@ -108,13 +108,13 @@ Ext.define('PVE.form.StorageSelector', {
if (nodename) {
me.setNodename(nodename);
}
}
},
}, function() {
Ext.define('pve-storage-status', {
extend: 'Ext.data.Model',
fields: [ 'storage', 'active', 'type', 'avail', 'total' ],
idProperty: 'storage'
idProperty: 'storage',
});
});

View File

@ -45,16 +45,16 @@ Ext.define('PVE.form.TokenSelector', {
sortable: true,
dataIndex: 'id',
renderer: Ext.String.htmlEncode,
flex: 1
flex: 1,
},
{
header: gettext('Comment'),
sortable: false,
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
}
]
flex: 1,
},
],
},
}, function() {
Ext.define('pve-tokens', {
@ -62,8 +62,8 @@ Ext.define('PVE.form.TokenSelector', {
fields: [
'id', 'userid', 'tokenid', 'comment',
{ type: 'boolean', name: 'privsep' },
{ type: 'date', dateFormat: 'timestamp', name: 'expire' }
{ type: 'date', dateFormat: 'timestamp', name: 'expire' },
],
idProperty: 'id'
idProperty: 'id',
});
});

View File

@ -45,8 +45,8 @@ Ext.define('PVE.form.USBSelector', {
filters: [
function (item) {
return !!item.data.usbpath && !!item.data.prodid && item.data['class'] != 9;
}
]
},
],
});
let emptyText = '';
if (me.type === 'device') {
@ -65,19 +65,19 @@ Ext.define('PVE.form.USBSelector', {
header: (me.type === 'device')?gettext('Device'):gettext('Port'),
sortable: true,
dataIndex: 'usbid',
width: 80
width: 80,
},
{
header: gettext('Manufacturer'),
sortable: true,
dataIndex: 'manufacturer',
width: 150
width: 150,
},
{
header: gettext('Product'),
sortable: true,
dataIndex: 'product',
flex: 1
flex: 1,
},
{
header: gettext('Speed'),
@ -93,16 +93,16 @@ Ext.define('PVE.form.USBSelector', {
"1.5": "USB 1.x",
};
return speed_map[value] || value + " Mbps";
}
}
]
},
},
],
},
});
me.callParent();
store.load();
}
},
}, function() {
@ -116,14 +116,14 @@ Ext.define('PVE.form.USBSelector', {
return val;
}
return data.get('vendid') + ':' + data.get('prodid');
}
},
},
'speed', 'product', 'manufacturer', 'vendid', 'prodid', 'usbpath',
{ name: 'port' , type: 'number' },
{ name: 'level' , type: 'number' },
{ name: 'class' , type: 'number' },
{ name: 'devnum' , type: 'number' },
{ name: 'busnum' , type: 'number' },
{ name: 'port', type: 'number' },
{ name: 'level', type: 'number' },
{ name: 'class', type: 'number' },
{ name: 'devnum', type: 'number' },
{ name: 'busnum', type: 'number' },
{
name: 'product_and_id',
type: 'string',
@ -133,7 +133,7 @@ Ext.define('PVE.form.USBSelector', {
return res;
},
},
]
],
});
Ext.define('pve-usb-port', {
@ -141,19 +141,19 @@ Ext.define('PVE.form.USBSelector', {
fields: [
{
name: 'usbid',
convert: function(val,data) {
convert: function(val, data) {
if (val) {
return val;
}
return data.get('busnum') + '-' + data.get('usbpath');
}
},
},
'speed', 'product', 'manufacturer', 'vendid', 'prodid', 'usbpath',
{ name: 'port' , type: 'number' },
{ name: 'level' , type: 'number' },
{ name: 'class' , type: 'number' },
{ name: 'devnum' , type: 'number' },
{ name: 'busnum' , type: 'number' },
{ name: 'port', type: 'number' },
{ name: 'level', type: 'number' },
{ name: 'class', type: 'number' },
{ name: 'devnum', type: 'number' },
{ name: 'busnum', type: 'number' },
{
name: 'product_and_id',
type: 'string',
@ -163,6 +163,6 @@ Ext.define('PVE.form.USBSelector', {
return res;
},
},
]
],
});
});

View File

@ -17,8 +17,8 @@ Ext.define('PVE.form.UserSelector', {
var store = new Ext.data.Store({
model: 'pve-users',
sorters: [{
property: 'userid'
}]
property: 'userid',
}],
});
Ext.apply(me, {
@ -30,45 +30,45 @@ Ext.define('PVE.form.UserSelector', {
sortable: true,
dataIndex: 'userid',
renderer: Ext.String.htmlEncode,
flex: 1
flex: 1,
},
{
header: gettext('Name'),
sortable: true,
renderer: PVE.Utils.render_full_name,
dataIndex: 'firstname',
flex: 1
flex: 1,
},
{
header: gettext('Comment'),
sortable: false,
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
}
]
}
flex: 1,
},
],
},
});
me.callParent();
store.load({ params: { enabled: 1 }});
}
},
}, function() {
Ext.define('pve-users', {
extend: 'Ext.data.Model',
fields: [
'userid', 'firstname', 'lastname' , 'email', 'comment',
'userid', 'firstname', 'lastname', 'email', 'comment',
{ type: 'boolean', name: 'enable' },
{ type: 'date', dateFormat: 'timestamp', name: 'expire' }
{ type: 'date', dateFormat: 'timestamp', name: 'expire' },
],
proxy: {
type: 'proxmox',
url: "/api2/json/access/users"
url: "/api2/json/access/users",
},
idProperty: 'userid'
idProperty: 'userid',
});
});

View File

@ -32,9 +32,9 @@ Ext.define('PVE.form.VlanField', {
Ext.apply(me, {
minValue: 1,
maxValue: 4094
maxValue: 4094,
});
me.callParent();
}
},
});

View File

@ -3,7 +3,7 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
alias: 'widget.vmcpuflagselector',
mixins: {
field: 'Ext.form.field.Field'
field: 'Ext.form.field.Field',
},
disableSelection: true,
@ -32,13 +32,13 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
{ flag: 'pdpe1gb', desc: 'Allow guest OS to use 1GB size pages, if host HW supports it' },
{ flag: 'hv-tlbflush', desc: 'Improve performance in overcommitted Windows guests. May lead to guest bluescreens on old CPUs.' },
{ flag: 'hv-evmcs', desc: 'Improve performance for nested virtualization. Only supported on Intel CPUs.' },
{ flag: 'aes', desc: 'Activate AES instruction set for HW acceleration.' }
{ flag: 'aes', desc: 'Activate AES instruction set for HW acceleration.' },
],
listeners: {
update: function() {
this.commitChanges();
}
}
},
},
},
getValue: function() {
@ -105,7 +105,7 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
default: return 'Unknown';
}
},
width: 65
width: 65,
},
{
xtype: 'widgetcolumn',
@ -131,34 +131,34 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
view.dirty = view.getValue() !== view.originalValue;
view.checkDirty();
//view.checkChange();
}
},
},
items: [
{
boxLabel: '-',
boxLabelAlign: 'before',
inputValue: '-'
inputValue: '-',
},
{
checked: true,
inputValue: '='
inputValue: '=',
},
{
boxLabel: '+',
inputValue: '+'
}
]
}
inputValue: '+',
},
],
},
},
{
dataIndex: 'flag',
width: 100
width: 100,
},
{
dataIndex: 'desc',
cellWrap: true,
flex: 1
}
flex: 1,
},
],
initComponent: function() {
@ -172,5 +172,5 @@ Ext.define('PVE.form.VMCPUFlagSelector', {
me.value = me.originalValue = '';
me.callParent(arguments);
}
},
});

View File

@ -4,7 +4,7 @@ Ext.define('PVE.form.VMSelector', {
alias: 'widget.vmselector',
mixins: {
field: 'Ext.form.field.Field'
field: 'Ext.form.field.Field',
},
allowBlank: true,
@ -19,8 +19,8 @@ Ext.define('PVE.form.VMSelector', {
sorters: 'vmid',
filters: [{
property: 'type',
value: /lxc|qemu/
}]
value: /lxc|qemu/,
}],
},
columns: [
{
@ -28,34 +28,34 @@ Ext.define('PVE.form.VMSelector', {
dataIndex: 'vmid',
width: 80,
filter: {
type: 'number'
}
type: 'number',
},
},
{
header: gettext('Node'),
dataIndex: 'node'
dataIndex: 'node',
},
{
header: gettext('Status'),
dataIndex: 'status',
filter: {
type: 'list'
}
type: 'list',
},
},
{
header: gettext('Name'),
dataIndex: 'name',
flex: 1,
filter: {
type: 'string'
}
type: 'string',
},
},
{
header: gettext('Pool'),
dataIndex: 'pool',
filter: {
type: 'list'
}
type: 'list',
},
},
{
header: gettext('Type'),
@ -75,41 +75,41 @@ Ext.define('PVE.form.VMSelector', {
store: {
data: [
{id: 'qemu', text: gettext('Virtual Machine')},
{id: 'lxc', text: gettext('LXC Container')}
{id: 'lxc', text: gettext('LXC Container')},
],
// due to EXTJS-18711
// we have to do a static list via a store
// but to avoid creating an object,
// we have to have a pseudo un function
un: function(){}
}
}
un: function(){},
},
},
},
{
header: 'HA ' + gettext('Status'),
dataIndex: 'hastate',
flex: 1,
filter: {
type: 'list'
}
}
type: 'list',
},
},
],
selModel: {
selType: 'checkboxmodel',
mode: 'SIMPLE'
mode: 'SIMPLE',
},
checkChangeEvents: [
'selectionchange',
'change'
'change',
],
listeners: {
selectionchange: function() {
// to trigger validity and error checks
this.checkChange();
}
},
},
getValue: function() {
@ -138,7 +138,7 @@ Ext.define('PVE.form.VMSelector', {
var store = me.getStore();
value.forEach(function(item) {
var rec = store.findRecord('vmid',item, 0, false, true, true);
var rec = store.findRecord('vmid', item, 0, false, true, true);
console.log(store);
if (rec) {
@ -156,11 +156,11 @@ Ext.define('PVE.form.VMSelector', {
var me = this;
if (me.allowBlank === false &&
me.getSelectionModel().getCount() === 0) {
me.addBodyCls(['x-form-trigger-wrap-default','x-form-trigger-wrap-invalid']);
me.addBodyCls(['x-form-trigger-wrap-default', 'x-form-trigger-wrap-invalid']);
return [gettext('No VM selected')];
}
me.removeBodyCls(['x-form-trigger-wrap-default','x-form-trigger-wrap-invalid']);
me.removeBodyCls(['x-form-trigger-wrap-default', 'x-form-trigger-wrap-invalid']);
return [];
},
@ -173,7 +173,7 @@ Ext.define('PVE.form.VMSelector', {
me.store.filters.add({
property: 'node',
exactMatch: true,
value: me.nodename
value: me.nodename,
});
}
@ -191,12 +191,12 @@ Ext.define('PVE.form.VMSelector', {
if (statusfilter !== '') {
me.store.filters.add({
property: 'template',
value: 0
},{
value: 0,
}, {
id: 'x-gridfilter-status',
operator: 'in',
property: 'status',
value: [statusfilter]
value: [statusfilter],
});
}
}
@ -205,11 +205,11 @@ Ext.define('PVE.form.VMSelector', {
var sm = me.getSelectionModel();
if (me.selectAll) {
me.mon(store,'load', function(){
me.mon(store, 'load', function(){
me.getSelectionModel().selectAll(false);
});
}
}
},
});
@ -231,8 +231,8 @@ Ext.define('PVE.form.VMComboSelector', {
sorters: 'vmid',
filters: [{
property: 'type',
value: /lxc|qemu/
}]
value: /lxc|qemu/,
}],
},
listConfig: {
@ -244,35 +244,35 @@ Ext.define('PVE.form.VMComboSelector', {
dataIndex: 'vmid',
width: 80,
filter: {
type: 'number'
}
type: 'number',
},
},
{
header: gettext('Name'),
dataIndex: 'name',
flex: 1,
filter: {
type: 'string'
}
type: 'string',
},
},
{
header: gettext('Node'),
dataIndex: 'node'
dataIndex: 'node',
},
{
header: gettext('Status'),
dataIndex: 'status',
filter: {
type: 'list'
}
type: 'list',
},
},
{
header: gettext('Pool'),
dataIndex: 'pool',
hidden: true,
filter: {
type: 'list'
}
type: 'list',
},
},
{
header: gettext('Type'),
@ -292,11 +292,11 @@ Ext.define('PVE.form.VMComboSelector', {
store: {
data: [
{id: 'qemu', text: gettext('Virtual Machine')},
{id: 'lxc', text: gettext('LXC Container')}
{id: 'lxc', text: gettext('LXC Container')},
],
un: function(){} // due to EXTJS-18711
}
}
un: function(){}, // due to EXTJS-18711
},
},
},
{
header: 'HA ' + gettext('Status'),
@ -304,9 +304,9 @@ Ext.define('PVE.form.VMComboSelector', {
hidden: true,
flex: 1,
filter: {
type: 'list'
}
}
]
}
type: 'list',
},
},
],
},
});

View File

@ -1,5 +1,5 @@
Ext.define('PVE.form.VNCKeyboardSelector', {
extend: 'Proxmox.form.KVComboBox',
alias: ['widget.VNCKeyboardSelector'],
comboItems: PVE.Utils.kvm_keymap_array()
comboItems: PVE.Utils.kvm_keymap_array(),
});

View File

@ -20,18 +20,18 @@ Ext.define('PVE.form.ViewSelector', {
var default_views = {
server: {
text: gettext('Server View'),
groups: ['node']
groups: ['node'],
},
folder: {
text: gettext('Folder View'),
groups: ['type']
groups: ['type'],
},
storage: {
text: gettext('Storage View'),
groups: ['node'],
filterfn: function(node) {
return node.data.type === 'storage' || node.data.type === 'node';
}
},
},
pool: {
text: gettext('Pool View'),
@ -40,8 +40,8 @@ Ext.define('PVE.form.ViewSelector', {
filterfn: function(node) {
return node.data.type === 'qemu' || node.data.type === 'lxc' || node.data.type === 'openvz' ||
node.data.type === 'pool';
}
}
},
},
};
var groupdef = [];
@ -53,10 +53,10 @@ Ext.define('PVE.form.ViewSelector', {
model: 'KeyValue',
proxy: {
type: 'memory',
reader: 'array'
reader: 'array',
},
data: groupdef,
autoload: true
autoload: true,
});
Ext.apply(me, {
@ -86,7 +86,7 @@ Ext.define('PVE.form.ViewSelector', {
stateEvents: [ 'select' ],
stateful: true,
stateId: 'pveview',
id: 'view'
id: 'view',
});
me.callParent();
@ -99,5 +99,5 @@ Ext.define('PVE.form.ViewSelector', {
var sp = Ext.state.Manager.getProvider();
me.mon(sp, 'statechange', statechange, me);
}
},
});

View File

@ -5,6 +5,6 @@ Ext.define('PVE.form.iScsiProviderSelector', {
['comstar', 'Comstar'],
[ 'istgt', 'istgt'],
[ 'iet', 'IET'],
[ 'LIO', 'LIO']
]
[ 'LIO', 'LIO'],
],
});

View File

@ -43,7 +43,7 @@ Ext.define('PVE.grid.BackupView', {
property: 'volid',
value: '',
anyMatch: true,
caseSensitive: false
caseSensitive: false,
};
var vmidFilter = {
@ -56,13 +56,13 @@ Ext.define('PVE.grid.BackupView', {
model: 'pve-storage-content',
sorters: {
property: 'volid',
order: 'DESC'
order: 'DESC',
},
filters: [
vmtypeFilter,
searchFilter,
vmidFilter,
]
],
});
let updateFilter = function() {
@ -85,7 +85,7 @@ Ext.define('PVE.grid.BackupView', {
me.store.setProxy({
type: 'proxmox',
url: url
url: url,
});
reload();
@ -110,8 +110,8 @@ Ext.define('PVE.grid.BackupView', {
});
}
setStorage(value);
}
}
},
},
});
var storagefilter = Ext.create('Ext.form.field.Text', {
@ -126,8 +126,8 @@ Ext.define('PVE.grid.BackupView', {
me.store.clearFilter(true);
searchFilter.value = field.getValue();
updateFilter();
}
}
},
},
});
var vmidfilterCB = Ext.create('Ext.form.field.Checkbox', {
@ -155,11 +155,11 @@ Ext.define('PVE.grid.BackupView', {
listeners : {
close: function() {
reload();
}
}
},
},
});
win.show();
}
},
});
var restore_btn = Ext.create('Proxmox.button.Button', {
@ -175,11 +175,11 @@ Ext.define('PVE.grid.BackupView', {
vmid: vmid,
volid: rec.data.volid,
volidText: PVE.Utils.render_storage_content(rec.data.volid, {}, rec),
vmtype: vmtype
vmtype: vmtype,
});
win.show();
win.on('destroy', reload);
}
},
});
var delete_btn = Ext.create('Proxmox.button.StdRemoveButton', {
@ -199,7 +199,7 @@ Ext.define('PVE.grid.BackupView', {
},
callback: function() {
reload();
}
},
});
var config_btn = Ext.create('Proxmox.button.Button', {
@ -217,11 +217,11 @@ Ext.define('PVE.grid.BackupView', {
var win = Ext.create('PVE.window.BackupConfig', {
volume: rec.data.volid,
pveSelNode: me.pveSelNode
pveSelNode: me.pveSelNode,
});
win.show();
}
},
});
Ext.apply(me, {
@ -278,7 +278,7 @@ Ext.define('PVE.grid.BackupView', {
storagesel,
'-',
vmidfilterCB,
storagefilter
storagefilter,
],
},
columns: [
@ -287,7 +287,7 @@ Ext.define('PVE.grid.BackupView', {
flex: 2,
sortable: true,
renderer: PVE.Utils.render_storage_content,
dataIndex: 'volid'
dataIndex: 'volid',
},
{
header: gettext('Notes'),
@ -298,18 +298,18 @@ Ext.define('PVE.grid.BackupView', {
{
header: gettext('Date'),
width: 150,
dataIndex: 'vdate'
dataIndex: 'vdate',
},
{
header: gettext('Format'),
width: 100,
dataIndex: 'format'
dataIndex: 'format',
},
{
header: gettext('Size'),
width: 100,
renderer: Proxmox.Utils.format_size,
dataIndex: 'size'
dataIndex: 'size',
},
{
header: gettext('VMID'),
@ -325,10 +325,10 @@ Ext.define('PVE.grid.BackupView', {
header: gettext('Verify State'),
dataIndex: 'verification',
renderer: PVE.Utils.render_backup_verification,
}
]
},
],
});
me.callParent();
}
},
});

Some files were not shown because too many files have changed in this diff Show More