]> git.proxmox.com Git - pve-manager.git/blob - www/manager/node/ServiceView.js
Added translations
[pve-manager.git] / www / manager / 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',
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', { rstore: rstore });
25
26 var service_cmd = function(cmd) {
27 var sm = me.getSelectionModel();
28 var rec = sm.getSelection()[0];
29 PVE.Utils.API2Request({
30 url: "/nodes/" + nodename + "/services/" + rec.data.service + "/" + cmd,
31 method: 'POST',
32 failure: function(response, opts) {
33 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
34 me.loading = true;
35 },
36 success: function(response, opts) {
37 rstore.startUpdate();
38 var upid = response.result.data;
39
40 var win = Ext.create('PVE.window.TaskViewer', {
41 upid: upid
42 });
43 win.show();
44 }
45 });
46 };
47
48 var start_btn = new Ext.Button({
49 text: gettext('Start'),
50 disabled: true,
51 handler: function(){
52 service_cmd("start");
53 }
54 });
55
56 var stop_btn = new Ext.Button({
57 text: gettext('Stop'),
58 disabled: true,
59 handler: function(){
60 service_cmd("stop");
61 }
62 });
63
64 var restart_btn = new Ext.Button({
65 text: gettext('Restart'),
66 disabled: true,
67 handler: function(){
68 service_cmd("restart");
69 }
70 });
71
72 var set_button_status = function() {
73 var sm = me.getSelectionModel();
74 var rec = sm.getSelection()[0];
75
76 if (!rec) {
77 start_btn.disable();
78 stop_btn.disable();
79 restart_btn.disable();
80 return;
81 }
82 var service = rec.data.service;
83 var state = rec.data.state;
84 if (service == 'pveproxy' ||
85 service == 'pvecluster' ||
86 service == 'pvedaemon') {
87 if (state == 'running') {
88 start_btn.disable();
89 restart_btn.enable();
90 } else {
91 start_btn.enable();
92 restart_btn.disable();
93 }
94 stop_btn.disable();
95 } else {
96 if (state == 'running') {
97 start_btn.disable();
98 restart_btn.enable();
99 stop_btn.enable();
100 } else {
101 start_btn.enable();
102 restart_btn.disable();
103 stop_btn.disable();
104 }
105 }
106 };
107
108 me.mon(store, 'datachanged', set_button_status);
109
110 PVE.Utils.monStoreErrors(me, rstore);
111
112 Ext.apply(me, {
113 store: store,
114 stateful: false,
115 tbar: [ start_btn, stop_btn, restart_btn ],
116 columns: [
117 {
118 header: gettext('Name'),
119 width: 100,
120 sortable: true,
121 dataIndex: 'name'
122 },
123 {
124 header: gettext('Status'),
125 width: 100,
126 sortable: true,
127 dataIndex: 'state'
128 },
129 {
130 header: gettext('Description'),
131 dataIndex: 'desc',
132 flex: 1
133 }
134 ],
135 listeners: {
136 selectionchange: set_button_status,
137 show: rstore.startUpdate,
138 hide: rstore.stopUpdate,
139 destroy: rstore.stopUpdate
140 }
141 });
142
143 me.callParent();
144 }
145 }, function() {
146
147 Ext.define('pve-services', {
148 extend: 'Ext.data.Model',
149 fields: [ 'service', 'name', 'desc', 'state' ],
150 idProperty: 'service'
151 });
152
153 });