Commit a3d08cf77bb87fc729f49a6a32cffc494b7d9020

  • avatar
  • Sergey 'Jin' Bostandzhyan <jin @deve…per.digitalstrom.org>
  • Thu Jun 17 11:23:13 CEST 2010
Added locking of devices

This also fixes a bug where turning devices on and off only worked in
the first column of the grid, which was not so nice when you did reorder
the columns.
dss-setup-interface/dSS/data/DeviceStore.js
(2 / 1)
  
1212 {name:"zoneId"},
1313 {name:"isPresent"},
1414 {name:"firstSeen"},
15 {name:"lastDiscovered"}
15 {name:"lastDiscovered"},
16 {name:"locked"}
1617 ]);
1718
1819 // a json reader to read the device data
dss-setup-interface/dSS/grid/DevicePanel.js
(45 / 7)
  
2626 return String.format('<img class="padding-img" src="{0}"/>',Ext.BLANK_IMAGE_URL);
2727 };
2828
29 var lockRenderer = function(value, metaData, record, rowIndex, colIndex, store) {
30 if(record.get('isPresent') === false) {
31 metaData.css = 'lockDisabled';
32 }
33 else {
34 if(record.get('locked')) {
35 metaData.css = 'isLocked';
36 } else {
37 metaData.css = 'isUnlocked';
38 }
39 }
40 return String.format('<img class="padding-img" src="{0}"/>',Ext.BLANK_IMAGE_URL);
41 };
42
43
2944 var deviceCols = [
3045 {header: _("on"), width: 30, resizable: false, sortable: true, dataIndex: 'on', renderer: stateRenderer, id: 'on'},
3146 {header: "dsid", width: 150, sortable: true, dataIndex: 'dsid', id: 'dsid'},
4949 {header: _("meter dsid"), width: 150, sortable: true, dataIndex: 'modulatorDsid', id: 'modulatorDsid'},
5050 {header: _("zone id"), width: 50, sortable: true, dataIndex: 'zoneId', id: 'zoneId'},
5151 {header: _("first seen"), width: 150, sortable: true, dataIndex: 'firstSeen', xtype: 'datecolumn', format: 'Y-m-d\\&\\n\\b\\s\\p\\;H:m:i', id: 'firstSeen'},
52 {header: _("last discovered"), width: 150, sortable: true, dataIndex: 'lastDiscovered', xtype: 'datecolumn', format: 'Y-m-d\\&\\n\\b\\s\\p\\;H:m:i', id: 'lastDiscovered'}
52 {header: _("last discovered"), width: 150, sortable: true, dataIndex: 'lastDiscovered', xtype: 'datecolumn', format: 'Y-m-d\\&\\n\\b\\s\\p\\;H:m:i', id: 'lastDiscovered'},
53 {header: _("locked"),width: 20, sortable: true, dataIndex: 'locked', renderer: lockRenderer}
5354 ];
5455
5556 Ext.apply(this, {
226226 this.on(
227227 'cellclick',
228228 function (grid, rowIndex, columnIndex, event) {
229 if(columnIndex === 0) {
230 var record = this.getStore().getAt(rowIndex);
231 if (record.get('isPresent') === false) {
232 return;
233 }
229
230 var dataIndex = grid.getColumnModel().getDataIndex(columnIndex);
231
232 var record = this.getStore().getAt(rowIndex);
233 if (record.get('isPresent') === false) {
234 return;
235 }
236
237 if (dataIndex === 'on') {
234238 Ext.Ajax.request({
235239 url: record.get('on') ? '/json/device/turnOff' : '/json/device/turnOn',
236240 disableCaching: true,
252252 }
253253 }
254254 });
255 }
255 } else if (dataIndex === 'locked') {
256 Ext.Ajax.request({
257 url: record.get('locked') ? '/json/device/unlock' : '/json/device/lock',
258 disableCaching: true,
259 method: "GET",
260 params: { dsid: record.get('dsid') },
261 success: function(result, request) {
262 try {
263 var jsonData = Ext.util.JSON.decode(result.responseText);
264 if(jsonData.ok) {
265 record.set('locked', record.get('locked') ? false : true );
266 record.commit();
267 }
268 } catch(err) {
269 Ext.MessageBox.alert('Error', err);
270 }
271 }
272 });
273 }
256274 },
257275 this
258276 );