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