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