pmg-gui/js/ObjectGroupList.js
Dominik Csapak 18b5b6adce rename create to isCreate
following the changes in the edit window, we have to use
isCreate instead of create, which gets rid of many jslint
type confusion errors

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2017-11-14 11:40:42 +01:00

165 lines
3.0 KiB
JavaScript

/*global Proxmox*/
Ext.define('pmg-object-group', {
extend: 'Ext.data.Model',
fields: [ 'id', 'name', 'info' ],
idProperty: 'id'
});
Ext.define('pmg-object-list', {
extend: 'Ext.data.Model',
fields: [
'id', 'descr',
{ name: 'otype', type: 'integer' },
{ name: 'receivertest', type: 'boolean' }
],
idProperty: 'id'
});
Ext.define('PMG.ObjectGroupList', {
extend: 'Ext.grid.GridPanel',
alias: ['widget.pmgObjectGroupList'],
ogclass: undefined, // 'who', 'when', 'what'
subject: 'Object Group List', // please overwrite
baseurl: undefined,
enableButtons: true,
inputItems: [
{
xtype: 'textfield',
name: 'name',
allowBlank: false,
fieldLabel: gettext('Name')
},
{
xtype: 'textareafield',
name: 'info',
fieldLabel: gettext("Description")
}
],
reload: function() {
var me = this;
me.store.load();
},
run_editor: function() {
var me = this;
var rec = me.selModel.getSelection()[0];
if (!rec) {
return;
}
var config = {
url: "/api2/extjs" + me.baseurl +'/' + rec.data.id + '/config',
method: 'PUT',
subject: me.subject,
width: 400,
items: me.inputItems
};
var win = Ext.createWidget('proxmoxWindowEdit', config);
win.load();
win.on('destroy', me.reload, me);
win.show();
},
initComponent : function() {
var me = this;
if (!me.ogclass) {
throw "ogclass not initialized";
}
me.baseurl = "/config/ruledb/" + me.ogclass;
me.store = new Ext.data.Store({
model: 'pmg-object-group',
proxy: {
type: 'proxmox',
url: "/api2/json" + me.baseurl
},
sorters: {
property: 'name',
order: 'DESC'
}
});
me.selModel = Ext.create('Ext.selection.RowModel', {});
var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
selModel: me.selModel,
baseurl: me.baseurl,
callback: function() { me.reload(); },
getRecordName: function(rec) { return rec.data.name; },
waitMsgTarget: me
});
var tbar = [
{
xtype: 'proxmoxButton',
text: gettext('Edit'),
disabled: true,
selModel: me.selModel,
handler: function() { me.run_editor(); }
},
{
text: gettext('Create'),
handler: function() {
var config = {
method: 'POST',
url: "/api2/extjs" + me.baseurl,
isCreate: true,
width: 400,
subject: me.subject,
items: me.inputItems
};
var win = Ext.createWidget('proxmoxWindowEdit', config);
win.on('destroy', me.reload, me);
win.show();
}
},
remove_btn
];
Proxmox.Utils.monStoreErrors(me, me.store, true);
if (me.enableButtons) {
me.tbar = tbar;
}
Ext.apply(me, {
columns: [
{
header: gettext('Name'),
sortable: true,
flex: 1,
dataIndex: 'name',
renderer: Ext.String.htmlEncode
}
],
listeners: {
itemdblclick: function() {
if (me.enableButtons) {
me.run_editor();
}
},
activate: function() { me.reload(); }
}
});
me.callParent();
me.reload(); // initial load
}
});