]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/ha/Resources.js
fix jslint errors in ha resources
[pve-manager.git] / www / manager6 / ha / Resources.js
CommitLineData
b7ba8353
DM
1Ext.define('PVE.ha.ResourcesView', {
2 extend: 'Ext.grid.GridPanel',
3 alias: ['widget.pveHAResourcesView'],
4
5 initComponent : function() {
6 var me = this;
7
8 var caps = Ext.state.Manager.get('GuiCap');
9
10 var store = new Ext.data.Store({
11 model: 'pve-ha-resources',
12 proxy: {
13 type: 'pve',
14 url: "/api2/json/cluster/ha/resources"
15 },
16 sorters: {
17 property: 'sid',
18 order: 'DESC'
19 }
20 });
21
22 var reload = function() {
23 store.load();
24 };
25
26 var render_error = function(dataIndex, value, metaData, record) {
27 var errors = record.data.errors;
28 if (errors) {
29 var msg = errors[dataIndex];
30 if (msg) {
31 metaData.tdCls = 'x-form-invalid-field';
32 var html = '<p>' + Ext.htmlEncode(msg) + '</p>';
33 metaData.tdAttr = 'data-qwidth=600 data-qtitle="ERROR" data-qtip="' +
34 html.replace(/\"/g,'&quot;') + '"';
35 }
36 }
37 return value;
38 };
39
40 var sm = Ext.create('Ext.selection.RowModel', {});
41
42 var run_editor = function() {
43 var rec = sm.getSelection()[0];
44 var sid = rec.data.sid;
45
46 var regex = /^(\S+):(\S+)$/;
47 var res = regex.exec(sid);
48
a764c5f7
DC
49 if (res[1] !== 'vm' && res[1] !== 'ct') {
50 return;
51 }
b7ba8353
DM
52
53 var vmid = res[2];
54
55 var win = Ext.create('PVE.ha.VMResourceEdit',{
56 vmid: vmid
57 });
58 win.on('destroy', reload);
59 win.show();
60 };
61
62 var remove_btn = new PVE.button.Button({
63 text: gettext('Remove'),
64 disabled: true,
65 selModel: sm,
66 handler: function(btn, event, rec) {
67 var sid = rec.data.sid;
68
69 PVE.Utils.API2Request({
70 url: '/cluster/ha/resources/' + sid,
71 method: 'DELETE',
72 waitMsgTarget: me,
73 callback: function() {
74 reload();
75 },
76 failure: function (response, opts) {
77 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
78 }
79 });
80 }
81 });
82
83 var edit_btn = new PVE.button.Button({
84 text: gettext('Edit'),
85 disabled: true,
86 selModel: sm,
87 handler: run_editor
88 });
89
90 Ext.apply(me, {
91 store: store,
92 selModel: sm,
93 stateful: false,
94 viewConfig: {
95 trackOver: false
96 },
97 tbar: [
98 {
99 text: gettext('Add'),
100 disabled: !caps.nodes['Sys.Console'],
101 handler: function() {
102 var win = Ext.create('PVE.ha.VMResourceEdit',{});
103 win.on('destroy', reload);
104 win.show();
105 }
106 },
107 edit_btn, remove_btn
108 ],
109
110 columns: [
111 {
112 header: 'ID',
113 width: 100,
114 sortable: true,
115 dataIndex: 'sid'
116 },
117 {
118 header: gettext('State'),
119 width: 100,
120 sortable: true,
121 renderer: function(v) {
f25d7c4a 122 return v || 'enabled';
b7ba8353
DM
123 },
124 dataIndex: 'state'
125 },
b2f9a9e4
TL
126 {
127 header: gettext('Max. Restart'),
128 width: 100,
129 sortable: true,
130 renderer: function(v) {
131 return v || '1';
132 },
133 dataIndex: 'max_restart'
134 },
135 {
136 header: gettext('Max. Relocate'),
137 width: 100,
138 sortable: true,
139 renderer: function(v) {
140 return v || '1';
141 },
142 dataIndex: 'max_relocate'
143 },
b7ba8353
DM
144 {
145 header: gettext('Group'),
146 width: 200,
147 sortable: true,
148 renderer: function(value, metaData, record) {
149 return render_error('group', value, metaData, record);
150 },
151 dataIndex: 'group'
152 },
153 {
154 header: gettext('Description'),
155 flex: 1,
2eb0767b 156 renderer: Ext.String.htmlEncode,
b7ba8353
DM
157 dataIndex: 'comment'
158 }
159 ],
160 listeners: {
55bc7923 161 activate: reload,
b7ba8353
DM
162 beforeselect: function(grid, record, index, eOpts) {
163 if (!caps.nodes['Sys.Console']) {
164 return false;
165 }
166 },
167 itemdblclick: run_editor
168 }
169 });
170
171 me.callParent();
172 }
173}, function() {
174
175 Ext.define('pve-ha-resources', {
176 extend: 'Ext.data.Model',
177 fields: [
b2f9a9e4 178 'sid', 'state', 'digest', 'errors', 'group', 'comment',
290a3751 179 'max_restart', 'max_relocate'
b7ba8353
DM
180 ],
181 idProperty: 'sid'
182 });
183
184});