+/*global Proxmox*/
Ext.define('PMG.ObjectGroup', {
extend: 'Ext.grid.GridPanel',
alias: 'widget.pmgObjectGroup',
me.baseurl = baseurl;
if (me.baseurl === undefined) {
- me.store.setProxy(undefined);
+ me.store.proxy.setUrl(undefined);
me.store.setData([]);
- me.down('#addMenuButton').setDisabled(true);
+ me.setButtonState(me.store, [], false);
} else {
- me.store.setProxy({
- type: 'proxmox',
- url: '/api2/json' + me.baseurl + '/objects'
- });
-
- me.store.load(function() {
- me.down('#addMenuButton').setDisabled(false);
- });
+ var url = '/api2/json' + me.baseurl + '/objects';
+ me.store.proxy.setUrl(url);
+ me.store.load();
}
},
}
},
+ setButtonState: function(store, records, success) {
+ var me = this;
+ if (!success || !me.baseurl) {
+ me.down('#addMenuButton').setDisabled(true);
+ return;
+ }
+ me.down('#addMenuButton').setDisabled(false);
+ },
+
initComponent : function() {
var me = this;
me.store = new Ext.data.Store({
model: 'pmg-object-list',
+ proxy: {
+ type: 'proxmox'
+ },
sorters: [
{
property : 'receivertest'
dataIndex: 'descr',
renderer: Ext.String.htmlEncode,
flex: 1
- })
+ });
var reload = function() {
me.store.load();
}
var editor = PMG.Utils.object_editors[rec.data.otype];
- if (!editor) {
+ if (!editor || editor.uneditable) {
return;
}
menu_items.push({
text: config.subject,
+ iconCls: config.iconCls || 'fa fa-question-circle',
handler: function() {
if (me.baseurl == undefined) {
return;
text: gettext('Add'),
disabled: true,
itemId: 'addMenuButton',
- menu: new Ext.menu.Menu({
+ menu: {
items: menu_items
- })
+ }
},
{
xtype: 'proxmoxButton',
text: gettext('Edit'),
disabled: true,
selModel: me.selModel,
+ enableFn: function(rec) {
+ var editor = PMG.Utils.object_editors[rec.data.otype];
+ return (editor && !editor.uneditable);
+ },
handler: run_editor
},
- remove_btn
+ remove_btn
]
});
]
});
+ Proxmox.Utils.monStoreErrors(me, me.store, true);
+
Ext.apply(me, {
listeners: {
itemdblclick: run_editor,
me.callParent();
+ me.mon(me.store, 'load', me.setButtonState, me);
+
if (me.baseurl) {
me.setBaseUrl(me.baseurl); // configure store, load()
}