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