]> git.proxmox.com Git - pmg-gui.git/blob - js/ActionList.js
fix bug #1707: use correct units for deferred mail queue (minutes)
[pmg-gui.git] / js / ActionList.js
1 /*global Proxmox*/
2 Ext.define('pmg-action-list', {
3 extend: 'Ext.data.Model',
4 fields: [
5 'id', 'name', 'info', 'descr',
6 { name: 'otype', type: 'integer' }
7 ],
8 idProperty: 'id'
9 });
10
11 Ext.define('PMG.ActionList', {
12 extend: 'Ext.grid.GridPanel',
13 alias: ['widget.pmgActionList'],
14
15 title: PMG.Utils.oclass_text.action,
16 border: false,
17
18 baseurl: '/config/ruledb/action',
19
20 otype_list: [4002, 4003, 4005, 4007, 4009],
21
22 enableButtons: true,
23
24 initComponent : function() {
25 var me = this;
26
27 me.store = new Ext.data.Store({
28 model: 'pmg-action-list',
29 proxy: {
30 type: 'proxmox',
31 url: "/api2/json" + me.baseurl + '/objects'
32 },
33 sorters: {
34 property: 'name',
35 order: 'DESC'
36 }
37 });
38
39 me.selModel = Ext.create('Ext.selection.RowModel', {});
40
41 var reload = function() {
42 me.store.load();
43 };
44
45 var run_editor = function() {
46 var rec = me.selModel.getSelection()[0];
47 if (!rec) {
48 return;
49 }
50
51 var editor = PMG.Utils.object_editors[rec.data.otype];
52 if (!editor) {
53 return;
54 }
55
56 var config = Ext.apply({ method: 'PUT' }, editor);
57
58 config.url = me.baseurl + '/' + editor.subdir + '/' + rec.data.id;
59
60 var win = Ext.createWidget('proxmoxWindowEdit', config);
61
62 win.load();
63 win.on('destroy', reload);
64 win.show();
65 };
66
67 var remove_btn = Ext.createWidget('proxmoxStdRemoveButton', {
68 selModel: me.selModel,
69 getUrl: function(rec) {
70 return me.baseurl + '/objects/' + rec.data.id;
71 },
72 callback: reload,
73 getRecordName: function(rec) { return rec.data.descr; },
74 waitMsgTarget: me
75 });
76
77 var menu_items = [];
78
79 Ext.Array.each(me.otype_list, function(otype) {
80
81 var editor = PMG.Utils.object_editors[otype];
82
83 var config = Ext.apply({ method: 'POST' }, editor);
84
85 config.isCreate = true;
86 menu_items.push({
87 text: config.subject,
88 handler: function() {
89 if (me.baseurl == undefined) {
90 return;
91 }
92 config.url = me.baseurl + '/' + editor.subdir;
93 var win = Ext.createWidget('proxmoxWindowEdit', config);
94 win.on('destroy', reload);
95 win.show();
96 }
97 });
98 });
99
100 var tbar = [
101 {
102 text: gettext('Add'),
103 menu: new Ext.menu.Menu({
104 items: menu_items
105 })
106 },
107 {
108 xtype: 'proxmoxButton',
109 text: gettext('Edit'),
110 disabled: true,
111 selModel: me.selModel,
112 handler: run_editor
113 },
114 remove_btn
115 ];
116
117 Proxmox.Utils.monStoreErrors(me, me.store, true);
118
119 if (me.enableButtons) {
120 me.tbar = tbar;
121 }
122
123 Ext.apply(me, {
124 run_editor: run_editor,
125 columns: [
126 {
127 header: gettext('Name'),
128 sortable: true,
129 width: 200,
130 dataIndex: 'name',
131 renderer: Ext.String.htmlEncode
132 },
133 {
134 header: gettext('Description'),
135 sortable: true,
136 width: 300,
137 dataIndex: 'descr',
138 renderer: Ext.String.htmlEncode
139 },
140 {
141 header: gettext('Comment'),
142 sortable: false,
143 flex: 1,
144 dataIndex: 'info',
145 renderer: Ext.String.htmlEncode
146 }
147 ],
148 listeners: {
149 itemdblclick: function() {
150 if (me.enableButtons) {
151 run_editor();
152 }
153 },
154 activate: reload
155 }
156 });
157
158 me.callParent();
159
160 reload(); // initial load
161 }
162 });