var store = new Ext.data.Store({
model: 'pve-groups',
- sorters: {
- property: 'groupid',
- order: 'DESC'
+ sorters: {
+ property: 'groupid',
+ order: 'DESC'
}
});
var store = Ext.create('Proxmox.data.DiffStore', {
rstore: logstore,
- appendAtStart: true
+ appendAtStart: true
});
Ext.apply(me, {
viewConfig: {
trackOver: false,
stripeRows: true,
-
+
getRowClass: function(record, index) {
var pri = record.get('pri');
},
sortableColumns: false,
columns: [
- {
- header: gettext("Time"),
+ {
+ header: gettext("Time"),
dataIndex: 'time',
width: 150,
- renderer: function(value) {
- return Ext.Date.format(value, "M d H:i:s");
+ renderer: function(value) {
+ return Ext.Date.format(value, "M d H:i:s");
}
},
- {
- header: gettext("Node"),
+ {
+ header: gettext("Node"),
dataIndex: 'node',
width: 150
},
- {
- header: gettext("Service"),
+ {
+ header: gettext("Service"),
dataIndex: 'tag',
width: 100
},
- {
- header: "PID",
+ {
+ header: "PID",
dataIndex: 'pid',
- width: 100
+ width: 100
},
- {
- header: gettext("User name"),
+ {
+ header: gettext("User name"),
dataIndex: 'user',
renderer: Ext.String.htmlEncode,
width: 150
},
- {
- header: gettext("Severity"),
+ {
+ header: gettext("Severity"),
dataIndex: 'pri',
renderer: PVE.Utils.render_serverity,
- width: 100
+ width: 100
},
- {
- header: gettext("Message"),
+ {
+ header: gettext("Message"),
dataIndex: 'msg',
renderer: Ext.String.htmlEncode,
- flex: 1
+ flex: 1
}
],
listeners: {
var store = new Ext.data.Store({
model: 'pve-pools',
- sorters: {
- property: 'poolid',
- order: 'DESC'
+ sorters: {
+ property: 'poolid',
+ order: 'DESC'
}
});
me.url = '/api2/extjs' + me.base_url;
me.method = 'POST';
-
- var items = [
+
+ var items = [
{
xtype: 'textfield',
name: 'group',
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
});
updateActive: function(data) {
var me = this;
-
- var html = '<h1>' + data.productname + '</h1>' + me.activeHtml;
+
+ var html = '<h1>' + data.productname + '</h1>' + me.activeHtml;
html += '<br><br>' + me.docuHtml();
html += '<br><br>' + me.bugzillaHtml;
updateCommunity: function(data) {
var me = this;
- var html = '<h1>' + data.productname + '</h1>' + me.communityHtml;
+ var html = '<h1>' + data.productname + '</h1>' + me.communityHtml;
html += '<br><br>' + me.docuHtml();
html += '<br><br>' + me.bugzillaHtml;
me.update(html);
},
-
+
updateInactive: function(data) {
var me = this;
me.update(me.invalidHtml);
return true;
};
- verifypw = Ext.createWidget('textfield', {
+ verifypw = Ext.createWidget('textfield', {
inputType: 'password',
- fieldLabel: gettext('Confirm password'),
+ fieldLabel: gettext('Confirm password'),
name: 'verifypassword',
submitValue: false,
disabled: true,
validator: validate_pw
});
- pwfield = Ext.createWidget('textfield', {
+ pwfield = Ext.createWidget('textfield', {
inputType: 'password',
- fieldLabel: gettext('Password'),
+ fieldLabel: gettext('Password'),
minLength: 5,
name: 'password',
disabled: true,
url: url,
method: method,
fieldDefaults: {
- labelWidth: 110 // for spanish translation
+ labelWidth: 110 // for spanish translation
},
items: [ ipanel ]
});
var store = new Ext.data.Store({
id: "users",
model: 'pve-users',
- sorters: {
- property: 'userid',
- order: 'DESC'
+ sorters: {
+ property: 'userid',
+ order: 'DESC'
}
});
reload();
}
});
-
+
var run_editor = function() {
var rec = sm.getSelection()[0];
if (!rec || !caps.access['User.Modify']) {
header: gettext('Expire'),
width: 80,
sortable: true,
- renderer: Proxmox.Utils.format_expire,
+ renderer: Proxmox.Utils.format_expire,
dataIndex: 'expire'
},
{
var me = this;
var nodename = me.nodename;
- me.nodename = undefined;
+ me.nodename = undefined;
me.callParent();
Ext.define('PVE.form.BusTypeSelector', {
extend: 'Proxmox.form.KVComboBox',
alias: 'widget.pveBusSelector',
-
+
noVirtIO: false,
initComponent: function() {
});
var disable_query_for_ips = function(f, value) {
- if (value === null ||
+ if (value === null ||
value.match(/^\d/)) { // IP address starts with \d
f.queryDelay = 9999999999; // hack: disable with long delay
} else {
width: 140
},
{
- header: gettext('Comment'),
+ header: gettext('Comment'),
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
if (!me.hotplug) {
return { up: value + me.step, down: value - me.step };
}
-
+
var dimm_size = 512;
var prev_dimm_size = 0;
var min_size = 1024;
value_up = current_size + dimm_size;
value_down = current_size - ((i === 0) ? prev_dimm_size : dimm_size);
}
- current_size += dimm_size;
+ current_size += dimm_size;
}
prev_dimm_size = dimm_size;
dimm_size = dimm_size*2;
width: 100
},
{
- header: gettext('Comment'),
+ header: gettext('Comment'),
dataIndex: 'comment',
renderer: Ext.String.htmlEncode,
flex: 1
});
me.store.load();
-
+
},
setTargetNode: function(targetNode) {
var me = this;
var nodename = me.nodename;
- me.nodename = undefined;
+ me.nodename = undefined;
var store = Ext.create('Ext.data.Store', {
model: 'pve-storage-status',
sorters: {
- property: 'storage',
- order: 'DESC'
+ property: 'storage',
+ order: 'DESC'
}
});
deleteEmpty: false,
emptyText: 'no VLAN',
-
+
fieldLabel: gettext('VLAN Tag'),
allowBlank: true,
-
+
getSubmitData: function() {
var me = this,
data = null,
return node.data.type === 'storage' || node.data.type === 'node';
}
},
- pool: {
- text: gettext('Pool View'),
+ pool: {
+ text: gettext('Pool View'),
groups: ['pool'],
// Pool View only lists VMs and Containers
filterfn: function(node) {
- return node.data.type === 'qemu' || node.data.type === 'lxc' || node.data.type === 'openvz' ||
+ return node.data.type === 'qemu' || node.data.type === 'lxc' || node.data.type === 'openvz' ||
node.data.type === 'pool';
}
}
me.store = Ext.create('Ext.data.Store', {
model: 'pve-storage-content',
- sorters: {
- property: 'volid',
- order: 'DESC'
+ sorters: {
+ property: 'volid',
+ order: 'DESC'
},
filters: [
vmtypeFilter,
var backup_btn = Ext.create('Ext.button.Button', {
text: gettext('Backup now'),
handler: function() {
- var win = Ext.create('PVE.window.Backup', {
+ var win = Ext.create('PVE.window.Backup', {
nodename: nodename,
vmid: vmid,
vmtype: vmtype,
});
delete values.modified_marker;
-
+
return values;
},
me.column1 = [
{
// hack: we use this field to mark the form 'dirty' when the
- // record has errors- so that the user can safe the unmodified
+ // record has errors- so that the user can safe the unmodified
// form again.
xtype: 'hiddenfield',
name: 'modified_marker',
}
);
-
+
me.column2 = [
{
xtype: 'proxmoxcheckbox',
moveRule: function(from, to) {
var me = this;
- if (!me.base_url) {
+ if (!me.base_url) {
return;
}
updateRule: function(rule) {
var me = this;
- if (!me.base_url) {
+ if (!me.base_url) {
return;
}
if (me.allow_groups) {
me.groupBtn = Ext.create('Ext.Button', {
- text: gettext('Insert') + ': ' +
+ text: gettext('Insert') + ': ' +
gettext('Security Group'),
disabled: true,
handler: function() {
if (errors && errors[name]) {
metaData.tdCls = 'proxmox-invalid-row';
var html = '<p>' + Ext.htmlEncode(errors[name]) + '</p>';
- metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
+ metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
html.replace(/\"/g,'"') + '"';
}
return value;
var updateGrid = function() {
var filterfn = me.viewFilter ? me.viewFilter.filterfn : null;
-
+
//console.log("START GRID UPDATE " + me.viewFilter);
store.suspendEvents();
for (key in nodeidx) {
if (nodeidx.hasOwnProperty(key)) {
var item = nodeidx[key];
-
- // getById() use find(), which is slow (ExtJS4 DP5)
+
+ // getById() use find(), which is slow (ExtJS4 DP5)
//var olditem = store.getById(item.data.id);
var olditem = store.data.get(item.data.id);
}
if (changes) {
olditem.endEdit(true);
- olditem.commit(true);
+ olditem.commit(true);
}
}
}
updateGrid();
});
- var load_cb = function() {
- updateGrid();
+ var load_cb = function() {
+ updateGrid();
};
Ext.apply(me, {
stateful: true,
stateId: 'grid-resource',
tbar: [
- '->',
+ '->',
gettext('Search') + ':', ' ',
{
xtype: 'textfield',
Ext.define('pve-ha-fencing', {
extend: 'Ext.data.Model',
- fields: [
+ fields: [
'node', 'command', 'digest'
]
});
},
nodegrid
];
-
+
me.callParent();
}
});
initComponent : function() {
var me = this;
-
+
me.isCreate = !me.groupId;
if (me.isCreate) {
subject: gettext('HA Group'),
items: [ ipanel ]
});
-
+
me.callParent();
if (!me.isCreate) {
},
store: {
model: 'pve-ha-groups',
- sorters: {
- property: 'group',
- order: 'DESC'
+ sorters: {
+ property: 'group',
+ order: 'DESC'
}
},
Ext.define('pve-ha-groups', {
extend: 'Ext.data.Model',
- fields: [
+ fields: [
'group', 'type', 'digest', 'nodes', 'comment',
{
name : 'restricted',
var store = new Ext.data.Store({
model: 'pve-ha-groups',
- sorters: {
- property: 'group',
- order: 'DESC'
+ sorters: {
+ property: 'group',
+ order: 'DESC'
}
});
-
+
var reload = function() {
store.load();
};
reload();
}
});
-
+
var edit_btn = new Proxmox.button.Button({
text: gettext('Edit'),
disabled: true,
extend: 'Proxmox.panel.InputPanel',
onlineHelp: 'ha_manager_resource_config',
vmid: undefined,
-
+
onGetValues: function(values) {
var me = this;
},
fewVotesHint
];
-
+
me.callParent();
}
});
initComponent : function() {
var me = this;
-
+
if (me.isCreate === undefined) {
me.isCreate = !me.vmid;
}
isAdd: true,
items: [ ipanel ]
});
-
+
me.callParent();
if (!me.isCreate) {
}
values.vmid = res[2];
-
+
ipanel.setValues(values);
}
});
if (msg) {
metaData.tdCls = 'proxmox-invalid-row';
var html = '<p>' + Ext.htmlEncode(msg) + '</p>';
- metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
+ metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
html.replace(/\"/g,'"') + '"';
}
}
var run_editor = function() {
var rec = sm.getSelection()[0];
var sid = rec.data.sid;
-
+
var regex = /^(\S+):(\S+)$/;
var res = regex.exec(sid);
}
var guestType = res[1];
var vmid = res[2];
-
+
var win = Ext.create('PVE.ha.VMResourceEdit',{
guestType: guestType,
vmid: vmid
reload();
}
});
-
+
var edit_btn = new Proxmox.button.Button({
text: gettext('Edit'),
disabled: true,
lrm: 3,
service: 4
},
-
+
initComponent : function() {
var me = this;
me.callParent();
me.on('activate', me.rstore.startUpdate);
- me.on('destroy', me.rstore.stopUpdate);
+ me.on('destroy', me.rstore.stopUpdate);
}
}, function() {
Ext.define('pve-ha-status', {
extend: 'Ext.data.Model',
- fields: [
+ fields: [
'id', 'type', 'node', 'status', 'sid',
'state', 'group', 'comment',
'max_restart', 'max_relocate', 'type',
cdata.ip6 = '';
cdata.gw6 = '';
}
-
+
me.column2 = [
{
layout: {
header: gettext('Start/Shutdown order'),
defaultValue: '',
renderer: PVE.Utils.render_kvm_startup,
- editor: caps.vms['VM.Config.Options'] && caps.nodes['Sys.Modify'] ?
+ editor: caps.vms['VM.Config.Options'] && caps.nodes['Sys.Modify'] ?
{
xtype: 'pveWindowStartupEdit',
onlineHelp: 'pct_startup_and_shutdown'
} else {
me.items = items;
}
-
+
me.callParent();
}
});
var i, confid;
var nodename = me.pveSelNode.data.node;
- if (!nodename) {
+ if (!nodename) {
throw "no node name specified";
}
revert_btn.setDisabled(!pending);
};
-
+
var sorterFn = function(rec1, rec2) {
var v1 = rec1.data.key;
var v2 = rec2.data.key;
if (msg) {
metaData.tdCls = 'proxmox-invalid-row';
var html = '<p>' + Ext.htmlEncode(msg) + '</p>';
- metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
+ metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
html.replace(/\"/g,'"') + '"';
}
}
extend: 'Ext.tab.Panel',
alias: 'widget.pveStatusPanel',
-
+
//title: "Logs",
//tabPosition: 'bottom',
sp.on('statechange', statechange);
me.on('destroy', function() {
- sp.un('statechange', statechange);
+ sp.un('statechange', statechange);
});
}
var rows = {
comment: {
- header: gettext('Comment'),
+ header: gettext('Comment'),
renderer: Ext.String.htmlEncode,
required: true
}
});
me.on('activate', rstore.startUpdate);
- me.on('destroy', rstore.stopUpdate);
+ me.on('destroy', rstore.stopUpdate);
me.callParent();
}
var me = this;
var confid = me.confid || (values.controller + values.deviceid);
-
+
me.drive.media = 'cdrom';
if (values.mediaType === 'iso') {
me.drive.file = values.cdimage;
}
var params = {};
-
+
params[confid] = PVE.Parser.printQemuDrive(me.drive);
-
- return params;
+
+ return params;
},
setVMConfig: function(vmconfig) {
labelAlign: 'right',
allowBlank: false
});
-
+
me.cdstoragesel = Ext.create('PVE.form.StorageSelector', {
name: 'cdstorage',
nodename: me.nodename,
});
me.callParent();
-
+
me.load({
success: function(response, options) {
ipanel.setVMConfig(response.result.data);
var i, confid;
var nodename = me.pveSelNode.data.node;
- if (!nodename) {
+ if (!nodename) {
throw "no node name specified";
}
sockets: {
header: gettext('Processors'),
never_delete: true,
- editor: (caps.vms['VM.Config.CPU'] || caps.vms['VM.Config.HWType']) ?
+ editor: (caps.vms['VM.Config.CPU'] || caps.vms['VM.Config.HWType']) ?
'PVE.qemu.ProcessorEdit' : undefined,
tdCls: 'pve-itype-icon-processor',
group: 3,
iconCls: 'desktop',
group:5,
defaultValue: '',
- renderer: PVE.Utils.render_kvm_vga_driver
+ renderer: PVE.Utils.render_kvm_vga_driver
},
machine: {
header: gettext('Machine'),
if ((g1 - g2) !== 0) {
return g1 - g2;
}
-
+
if ((order1 - order2) !== 0) {
return order1 - order2;
}
interval: 5000,
selModel: sm,
run_editor: run_editor,
- tbar: [
+ tbar: [
{
text: gettext('Add'),
menu: new Ext.menu.Menu({
subject: gettext('Memory'),
items: [ ipanel ],
// uncomment the following to use the async configiguration API
- // backgroundDelay: 5,
+ // backgroundDelay: 5,
width: 400
});
method: 'POST',
waitMsgTarget: me,
success: function(response, opts) {
- var res = response.result.data;
+ var res = response.result.data;
Ext.Array.each(res.split('\n'), function(line) {
addLine(Ext.htmlEncode(line));
});
field.focus(false, true);
}
}
- });
+ });
me.callParent();
}
data.networkmode = 'bridge';
}
me.network = data;
-
+
me.setValues(me.network);
},
var me = this;
var nodename = me.pveSelNode.data.node;
- if (!nodename) {
- throw "no node name specified";
+ if (!nodename) {
+ throw "no node name specified";
}
me.isCreate = me.confid ? false : true;
var me = this;
me.smbios1 = data;
-
+
me.setValues(me.smbios1);
},
me.callParent();
me.on('activate', me.rstore.startUpdate);
- me.on('destroy', me.rstore.stopUpdate);
+ me.on('destroy', me.rstore.stopUpdate);
}
}, function() {
me.column1.push(vgnameField);
- // here value is an array,
+ // here value is an array,
// while before it was a string
me.column1.push({
xtype: 'pveContentTypeSelector',
statics: {
typeDefaults: {
- node: {
+ node: {
iconCls: 'fa fa-building',
text: gettext('Nodes')
},
- pool: {
+ pool: {
iconCls: 'fa fa-tags',
text: gettext('Resource Pool')
},
}
}
groupinfo.leaf = false;
- groupinfo.groupbyid = v;
+ groupinfo.groupbyid = v;
group = me.addChildSorted(node, groupinfo);
}
if (info.type === groupby) {
if (index.hasOwnProperty(key)) {
var olditem = index[key];
- // getById() use find(), which is slow (ExtJS4 DP5)
+ // getById() use find(), which is slow (ExtJS4 DP5)
//var item = rstore.getById(olditem.data.id);
var item = rstore.data.get(olditem.data.id);
me.callParent();
var sm = me.getSelectionModel();
- sm.on('select', function(sm, n) {
+ sm.on('select', function(sm, n) {
sp.set(stateid, { value: n.data.id});
});
me.hide();
var upid = response.result.data;
-
+
var win = Ext.create('Proxmox.window.TaskViewer', {
upid: upid,
listeners: {
hidden: false
});
- var title = gettext('Backup') + " " +
+ var title = gettext('Backup') + " " +
((me.vmtype === 'lxc') ? "CT" : "VM") +
" " + me.vmid;
},
success: function(response, options) {
var upid = response.result.data;
-
+
var win = Ext.create('Proxmox.window.TaskViewer', {
upid: upid
});
success: function(response, options) {
var i, confid;
me.vmconfig = response.result.data;
- ipanel.setStartup(me.vmconfig.startup);
+ ipanel.setStartup(me.vmconfig.startup);
}
});
}
var tabs = me.items || [];
delete me.items;
-
- /*
+
+ /*
* Items may have the following functions:
* validator(): per tab custom validation
* onSubmit(): submit handler
var tabchange = function(tp, newcard, oldcard) {
if (newcard.onSubmit) {
me.down('#next').setVisible(false);
- me.down('#submit').setVisible(true);
+ me.down('#submit').setVisible(true);
} else {
me.down('#next').setVisible(true);
- me.down('#submit').setVisible(false);
+ me.down('#submit').setVisible(false);
}
var valid = check_card(newcard);
- me.down('#next').setDisabled(!valid);
- me.down('#submit').setDisabled(!valid);
+ me.down('#next').setDisabled(!valid);
+ me.down('#submit').setDisabled(!valid);
me.down('#back').setDisabled(tp.items.indexOf(newcard) == 0);
var idx = tp.items.indexOf(newcard);