]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/node/ServiceView.js
htmlEncode some comment fields
[pve-manager.git] / www / manager6 / node / ServiceView.js
1 Ext.define('PVE.node.ServiceView', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: ['widget.pveNodeServiceView'],
5
6 initComponent : function() {
7 var me = this;
8
9 var nodename = me.pveSelNode.data.node;
10 if (!nodename) {
11 throw "no node name specified";
12 }
13
14 var rstore = Ext.create('PVE.data.UpdateStore', {
15 interval: 1000,
16 storeid: 'pve-services' + nodename,
17 model: 'pve-services',
18 proxy: {
19 type: 'pve',
20 url: "/api2/json/nodes/" + nodename + "/services"
21 }
22 });
23
24 var store = Ext.create('PVE.data.DiffStore', {
25 rstore: rstore,
26 sortAfterUpdate: true,
27 sorters: [
28 {
29 property : 'name',
30 direction: 'ASC'
31 }
32 ]
33 });
34
35 var service_cmd = function(cmd) {
36 var sm = me.getSelectionModel();
37 var rec = sm.getSelection()[0];
38 PVE.Utils.API2Request({
39 url: "/nodes/" + nodename + "/services/" + rec.data.service + "/" + cmd,
40 method: 'POST',
41 failure: function(response, opts) {
42 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
43 me.loading = true;
44 },
45 success: function(response, opts) {
46 rstore.startUpdate();
47 var upid = response.result.data;
48
49 var win = Ext.create('PVE.window.TaskProgress', {
50 upid: upid
51 });
52 win.show();
53 }
54 });
55 };
56
57 var start_btn = new Ext.Button({
58 text: gettext('Start'),
59 disabled: true,
60 handler: function(){
61 service_cmd("start");
62 }
63 });
64
65 var stop_btn = new Ext.Button({
66 text: gettext('Stop'),
67 disabled: true,
68 handler: function(){
69 service_cmd("stop");
70 }
71 });
72
73 var restart_btn = new Ext.Button({
74 text: gettext('Restart'),
75 disabled: true,
76 handler: function(){
77 service_cmd("restart");
78 }
79 });
80
81 var set_button_status = function() {
82 var sm = me.getSelectionModel();
83 var rec = sm.getSelection()[0];
84
85 if (!rec) {
86 start_btn.disable();
87 stop_btn.disable();
88 restart_btn.disable();
89 return;
90 }
91 var service = rec.data.service;
92 var state = rec.data.state;
93 if (service == 'pveproxy' ||
94 service == 'pvecluster' ||
95 service == 'pvedaemon') {
96 if (state == 'running') {
97 start_btn.disable();
98 restart_btn.enable();
99 } else {
100 start_btn.enable();
101 restart_btn.disable();
102 }
103 stop_btn.disable();
104 } else {
105 if (state == 'running') {
106 start_btn.disable();
107 restart_btn.enable();
108 stop_btn.enable();
109 } else {
110 start_btn.enable();
111 restart_btn.disable();
112 stop_btn.disable();
113 }
114 }
115 };
116
117 me.mon(store, 'refresh', set_button_status);
118
119 PVE.Utils.monStoreErrors(me, rstore);
120
121 Ext.apply(me, {
122 store: store,
123 stateful: false,
124 tbar: [ start_btn, stop_btn, restart_btn ],
125 columns: [
126 {
127 header: gettext('Name'),
128 width: 100,
129 sortable: true,
130 dataIndex: 'name'
131 },
132 {
133 header: gettext('Status'),
134 width: 100,
135 sortable: true,
136 dataIndex: 'state'
137 },
138 {
139 header: gettext('Description'),
140 renderer: Ext.String.htmlEncode,
141 dataIndex: 'desc',
142 flex: 1
143 }
144 ],
145 listeners: {
146 selectionchange: set_button_status,
147 activate: rstore.startUpdate,
148 hide: rstore.stopUpdate,
149 destroy: rstore.stopUpdate
150 }
151 });
152
153 me.callParent();
154 }
155 }, function() {
156
157 Ext.define('pve-services', {
158 extend: 'Ext.data.Model',
159 fields: [ 'service', 'name', 'desc', 'state' ],
160 idProperty: 'service'
161 });
162
163 });