proxmox-widget-toolkit/panel/InputPanel.js
2017-02-28 16:31:57 +01:00

161 lines
3.2 KiB
JavaScript

Ext.define('Proxmox.panel.InputPanel', {
extend: 'Ext.panel.Panel',
alias: ['widget.inputpanel'],
listeners: {
activate: function() {
// notify owning container that it should display a help button
if (this.onlineHelp) {
Ext.GlobalEvents.fireEvent('pveShowHelp', this.onlineHelp);
}
},
deactivate: function() {
if (this.onlineHelp) {
Ext.GlobalEvents.fireEvent('pveHideHelp', this.onlineHelp);
}
}
},
border: false,
// override this with an URL to a relevant chapter of the pve manual
// setting this will display a help button in our parent panel
onlineHelp: undefined,
// overwrite this to modify submit data
onGetValues: function(values) {
return values;
},
getValues: function(dirtyOnly) {
var me = this;
if (Ext.isFunction(me.onGetValues)) {
dirtyOnly = false;
}
var values = {};
Ext.Array.each(me.query('[isFormField]'), function(field) {
if (!dirtyOnly || field.isDirty()) {
Proxmox.Utils.assemble_field_data(values, field.getSubmitData());
}
});
return me.onGetValues(values);
},
setValues: function(values) {
var me = this;
var form = me.up('form');
Ext.iterate(values, function(fieldId, val) {
var field = me.query('[isFormField][name=' + fieldId + ']')[0];
if (field) {
field.setValue(val);
if (form.trackResetOnLoad) {
field.resetOriginalValue();
}
}
});
},
initComponent: function() {
var me = this;
var items;
if (me.items) {
me.columns = 1;
items = [
{
columnWidth: 1,
layout: 'anchor',
items: me.items
}
];
me.items = undefined;
} else if (me.column4) {
me.columns = 4;
items = [
{
columnWidth: 0.25,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column1
},
{
columnWidth: 0.25,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column2
},
{
columnWidth: 0.25,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column3
},
{
columnWidth: 0.25,
padding: '0 0 0 10',
layout: 'anchor',
items: me.column4
}
];
if (me.columnB) {
items.push({
columnWidth: 1,
padding: '10 0 0 0',
layout: 'anchor',
items: me.columnB
});
}
} else if (me.column1) {
me.columns = 2;
items = [
{
columnWidth: 0.5,
padding: '0 10 0 0',
layout: 'anchor',
items: me.column1
},
{
columnWidth: 0.5,
padding: '0 0 0 10',
layout: 'anchor',
items: me.column2 || [] // allow empty column
}
];
if (me.columnB) {
items.push({
columnWidth: 1,
padding: '10 0 0 0',
layout: 'anchor',
items: me.columnB
});
}
} else {
throw "unsupported config";
}
if (me.useFieldContainer) {
Ext.apply(me, {
layout: 'fit',
items: Ext.apply(me.useFieldContainer, {
layout: 'column',
defaultType: 'container',
items: items
})
});
} else {
Ext.apply(me, {
layout: 'column',
defaultType: 'container',
items: items
});
}
me.callParent();
}
});