]> git.proxmox.com Git - pmg-gui.git/blame - js/ObjectGroupList.js
quarantine action: use shadow for toast "window"
[pmg-gui.git] / js / ObjectGroupList.js
CommitLineData
2c1d504e 1/*global Proxmox*/
56b0691b
DM
2Ext.define('pmg-object-group', {
3 extend: 'Ext.data.Model',
4 fields: [ 'id', 'name', 'info' ],
ad834b6f 5 idProperty: 'id'
56b0691b
DM
6});
7
8Ext.define('pmg-object-list', {
9 extend: 'Ext.data.Model',
10 fields: [
11 'id', 'descr',
12 { name: 'otype', type: 'integer' },
13 { name: 'receivertest', type: 'boolean' }
14 ],
15 idProperty: 'id'
16});
17
18
a43acf2e 19Ext.define('PMG.ObjectGroupList', {
56b0691b 20 extend: 'Ext.grid.GridPanel',
a43acf2e 21 alias: ['widget.pmgObjectGroupList'],
56b0691b 22
a43acf2e
DM
23 ogclass: undefined, // 'who', 'when', 'what'
24
25 subject: 'Object Group List', // please overwrite
56b0691b 26
4475914f
DM
27 baseurl: undefined,
28
ad834b6f
DM
29 enableButtons: true,
30
4475914f
DM
31 inputItems: [
32 {
33 xtype: 'textfield',
34 name: 'name',
f5de8682 35 allowBlank: false,
4475914f
DM
36 fieldLabel: gettext('Name')
37 },
38 {
39 xtype: 'textareafield',
40 name: 'info',
41 fieldLabel: gettext("Description")
42 }
43 ],
44
45 reload: function() {
46 var me = this;
47
ad834b6f 48 me.store.load();
4475914f
DM
49 },
50
51 run_editor: function() {
52 var me = this;
53
54 var rec = me.selModel.getSelection()[0];
55 if (!rec) {
56 return;
57 }
58
59 var config = {
60 url: "/api2/extjs" + me.baseurl +'/' + rec.data.id + '/config',
573a6e8b 61 onlineHelp: 'chapter_mailfilter',
4475914f
DM
62 method: 'PUT',
63 subject: me.subject,
64 width: 400,
65 items: me.inputItems
66 };
67
68 var win = Ext.createWidget('proxmoxWindowEdit', config);
69
70 win.load();
71 win.on('destroy', me.reload, me);
72 win.show();
73 },
74
56b0691b
DM
75 initComponent : function() {
76 var me = this;
77
a43acf2e
DM
78 if (!me.ogclass) {
79 throw "ogclass not initialized";
80 }
81
4475914f
DM
82 me.baseurl = "/config/ruledb/" + me.ogclass;
83
84 me.store = new Ext.data.Store({
56b0691b
DM
85 model: 'pmg-object-group',
86 proxy: {
87 type: 'proxmox',
749af060 88 url: "/api2/json" + me.baseurl
56b0691b
DM
89 },
90 sorters: {
91 property: 'name',
92 order: 'DESC'
93 }
94 });
95
56b0691b
DM
96 me.selModel = Ext.create('Ext.selection.RowModel', {});
97
b357057e 98 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
56b0691b 99 selModel: me.selModel,
b357057e
DM
100 baseurl: me.baseurl,
101 callback: function() { me.reload(); },
102 getRecordName: function(rec) { return rec.data.name; },
103 waitMsgTarget: me
56b0691b
DM
104 });
105
56b0691b
DM
106 var tbar = [
107 {
108 xtype: 'proxmoxButton',
109 text: gettext('Edit'),
110 disabled: true,
111 selModel: me.selModel,
4475914f 112 handler: function() { me.run_editor(); }
56b0691b
DM
113 },
114 {
115 text: gettext('Create'),
116 handler: function() {
117 var config = {
118 method: 'POST',
4475914f 119 url: "/api2/extjs" + me.baseurl,
573a6e8b 120 onlineHelp: 'chapter_mailfilter',
18b5b6ad 121 isCreate: true,
a43acf2e 122 width: 400,
56b0691b 123 subject: me.subject,
4475914f 124 items: me.inputItems
56b0691b
DM
125 };
126
127 var win = Ext.createWidget('proxmoxWindowEdit', config);
128
4475914f 129 win.on('destroy', me.reload, me);
56b0691b
DM
130 win.show();
131 }
132 },
133 remove_btn
134 ];
135
2f8fe1a3 136 Proxmox.Utils.monStoreErrors(me, me.store, true);
56b0691b 137
ad834b6f
DM
138 if (me.enableButtons) {
139 me.tbar = tbar;
140 }
141
56b0691b 142 Ext.apply(me, {
56b0691b
DM
143 columns: [
144 {
145 header: gettext('Name'),
146 sortable: true,
147 flex: 1,
148 dataIndex: 'name',
149 renderer: Ext.String.htmlEncode
150 }
151 ],
152 listeners: {
ad834b6f
DM
153 itemdblclick: function() {
154 if (me.enableButtons) {
155 me.run_editor();
156 }
157 },
4475914f 158 activate: function() { me.reload(); }
56b0691b
DM
159 }
160 });
161
162 me.callParent();
163
4475914f 164 me.reload(); // initial load
56b0691b
DM
165 }
166});