]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/ha/Resources.js
copy ha/StatusView.js from manager to manager6
[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
49 if (res[1] !== 'vm' && res[1] !== 'ct') { return; };
50
51 var vmid = res[2];
52
53 var win = Ext.create('PVE.ha.VMResourceEdit',{
54 vmid: vmid
55 });
56 win.on('destroy', reload);
57 win.show();
58 };
59
60 var remove_btn = new PVE.button.Button({
61 text: gettext('Remove'),
62 disabled: true,
63 selModel: sm,
64 handler: function(btn, event, rec) {
65 var sid = rec.data.sid;
66
67 PVE.Utils.API2Request({
68 url: '/cluster/ha/resources/' + sid,
69 method: 'DELETE',
70 waitMsgTarget: me,
71 callback: function() {
72 reload();
73 },
74 failure: function (response, opts) {
75 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
76 }
77 });
78 }
79 });
80
81 var edit_btn = new PVE.button.Button({
82 text: gettext('Edit'),
83 disabled: true,
84 selModel: sm,
85 handler: run_editor
86 });
87
88 Ext.apply(me, {
89 store: store,
90 selModel: sm,
91 stateful: false,
92 viewConfig: {
93 trackOver: false
94 },
95 tbar: [
96 {
97 text: gettext('Add'),
98 disabled: !caps.nodes['Sys.Console'],
99 handler: function() {
100 var win = Ext.create('PVE.ha.VMResourceEdit',{});
101 win.on('destroy', reload);
102 win.show();
103 }
104 },
105 edit_btn, remove_btn
106 ],
107
108 columns: [
109 {
110 header: 'ID',
111 width: 100,
112 sortable: true,
113 dataIndex: 'sid'
114 },
115 {
116 header: gettext('State'),
117 width: 100,
118 sortable: true,
119 renderer: function(v) {
120 return v ? v : 'enabled';
121 },
122 dataIndex: 'state'
123 },
124 {
125 header: gettext('Group'),
126 width: 200,
127 sortable: true,
128 renderer: function(value, metaData, record) {
129 return render_error('group', value, metaData, record);
130 },
131 dataIndex: 'group'
132 },
133 {
134 header: gettext('Description'),
135 flex: 1,
136 dataIndex: 'comment'
137 }
138 ],
139 listeners: {
140 show: reload,
141 beforeselect: function(grid, record, index, eOpts) {
142 if (!caps.nodes['Sys.Console']) {
143 return false;
144 }
145 },
146 itemdblclick: run_editor
147 }
148 });
149
150 me.callParent();
151 }
152}, function() {
153
154 Ext.define('pve-ha-resources', {
155 extend: 'Ext.data.Model',
156 fields: [
157 'sid', 'state', 'digest', 'errors', 'group', 'comment'
158 ],
159 idProperty: 'sid'
160 });
161
162});