From 8460acbc69ab19f35fd5079ab615ea11a6a09675 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 3 Oct 2015 12:04:24 +1300 Subject: Move device panel class --- web/app/controller/Root.js | 11 ++- web/app/view/Device.js | 93 +++++++++++++++++++++ web/app/view/DeviceController.js | 138 ++++++++++++++++++++++++++++++++ web/app/view/Main.js | 3 +- web/app/view/MainMobile.js | 3 +- web/app/view/device/Device.js | 93 --------------------- web/app/view/device/DeviceController.js | 137 ------------------------------- web/app/view/login/Login.js | 1 + 8 files changed, 243 insertions(+), 236 deletions(-) create mode 100644 web/app/view/Device.js create mode 100644 web/app/view/DeviceController.js delete mode 100644 web/app/view/device/Device.js delete mode 100644 web/app/view/device/DeviceController.js (limited to 'web') diff --git a/web/app/controller/Root.js b/web/app/controller/Root.js index 9ae7fa761..d4b3e794d 100644 --- a/web/app/controller/Root.js +++ b/web/app/controller/Root.js @@ -18,7 +18,10 @@ Ext.define('Traccar.controller.Root', { extend: 'Ext.app.Controller', requires: [ - 'Traccar.LoginManager' + 'Traccar.LoginManager', + 'Traccar.view.login.Login', + 'Traccar.view.Main', + 'Traccar.view.MainMobile' ], init: function() { @@ -46,7 +49,7 @@ Ext.define('Traccar.controller.Root', { if (success) { this.loadApp(); } else { - this.login = Ext.create('Traccar.view.login.Login', { + this.login = Ext.create('widget.login', { listeners: { scope: this, login: 'onLogin' @@ -65,9 +68,9 @@ Ext.define('Traccar.controller.Root', { Ext.getStore('Devices').load(); Ext.getBody().empty(); if (this.isPhone) { - Ext.create('Traccar.view.MainMobile'); + Ext.create('widget.mainMobile'); } else { - Ext.create('Traccar.view.Main'); + Ext.create('widget.main'); } } }); diff --git a/web/app/view/Device.js b/web/app/view/Device.js new file mode 100644 index 000000000..de2c7ed4c --- /dev/null +++ b/web/app/view/Device.js @@ -0,0 +1,93 @@ +/* + * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.define('Traccar.view.Device', { + extend: 'Ext.grid.Panel', + xtype: 'deviceView', + + requires: [ + 'Traccar.view.DeviceController' + ], + + controller: 'device', + store: 'Devices', + + title: strings.deviceTitle, + selType: 'rowmodel', + + tbar: [{ + handler: 'onAddClick', + reference: 'deviceAddButton', + glyph: 'xf067@FontAwesome', + tooltip: strings.sharedAdd, + tooltipType: 'title' + }, { + disabled: true, + handler: 'onEditClick', + reference: 'deviceEditButton', + glyph: 'xf040@FontAwesome', + tooltip: strings.sharedEdit, + tooltipType: 'title' + }, { + disabled: true, + handler: 'onRemoveClick', + reference: 'deviceRemoveButton', + glyph: 'xf00d@FontAwesome', + tooltip: strings.sharedRemove, + tooltipType: 'title' + }, { + disabled: true, + handler: 'onCommandClick', + reference: 'deviceCommandButton', + glyph: 'xf093@FontAwesome', + tooltip: strings.deviceCommand, + tooltipType: 'title' + }, { + xtype: 'tbfill' + }, { + text: strings.settingsTitle, + menu: [{ + text: strings.settingsUser, + handler: 'onUserClick' + }, { + text: strings.settingsServer, + hidden: true, + handler: 'onServerClick', + reference: 'settingsServerButton' + }, { + text: strings.settingsUsers, + hidden: true, + handler: 'onUsersClick', + reference: 'settingsUsersButton' + }] + }, { + text: strings.loginLogout, + handler: 'onLogoutClick' + }], + + listeners: { + selectionchange: 'onSelectionChange' + }, + + columns: [{ + text: strings.deviceName, + dataIndex: 'name', flex: 1 + }, { + text: strings.deviceIdentifier, + dataIndex: 'uniqueId', flex: 1 + }] + +}); diff --git a/web/app/view/DeviceController.js b/web/app/view/DeviceController.js new file mode 100644 index 000000000..e315d6f8d --- /dev/null +++ b/web/app/view/DeviceController.js @@ -0,0 +1,138 @@ +/* + * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +Ext.define('Traccar.view.DeviceController', { + extend: 'Ext.app.ViewController', + alias: 'controller.device', + + requires: [ + 'Traccar.view.CommandDialog', + 'Traccar.view.DeviceDialog', + 'Traccar.view.user.UserDialog', + 'Traccar.view.user.User', + 'Traccar.view.login.LoginController' + ], + + config: { + listen: { + controller: { + '*': { + selectReport: 'selectReport' + } + } + } + }, + + init: function() { + if (Traccar.app.getUser().get('admin')) { + this.lookupReference('settingsServerButton').setHidden(false); + this.lookupReference('settingsUsersButton').setHidden(false); + } + }, + + onLogoutClick: function() { + Ext.create('Traccar.view.login.LoginController').logout(); + }, + + onAddClick: function() { + var device, dialog; + device = Ext.create('Traccar.model.Device'); + device.store = this.getView().getStore(); + dialog = Ext.create('Traccar.view.DeviceDialog'); + dialog.down('form').loadRecord(device); + dialog.show(); + }, + + onEditClick: function() { + var device, dialog; + device = this.getView().getSelectionModel().getSelection()[0]; + dialog = Ext.create('Traccar.view.DeviceDialog'); + dialog.down('form').loadRecord(device); + dialog.show(); + }, + + onRemoveClick: function() { + var device = this.getView().getSelectionModel().getSelection()[0]; + Ext.Msg.show({ + title: strings.deviceDialog, + message: strings.sharedRemoveConfirm, + buttons: Ext.Msg.YESNO, + buttonText: { + yes: strings.sharedRemove, + no: strings.sharedCancel + }, + fn: function(btn) { + var store; + if (btn === 'yes') { + store = Ext.getStore('Devices'); + store.remove(device); + store.sync(); + } + } + }); + }, + + onCommandClick: function() { + var device, command, dialog; + device = this.getView().getSelectionModel().getSelection()[0]; + command = Ext.create('Traccar.model.Command'); + command.set('deviceId', device.get('id')); + dialog = Ext.create('Traccar.view.CommandDialog'); + dialog.down('form').loadRecord(command); + dialog.show(); + }, + + onSelectionChange: function(selected) { + var empty = selected.getCount() === 0; + this.lookupReference('deviceEditButton').setDisabled(empty); + this.lookupReference('deviceRemoveButton').setDisabled(empty); + this.lookupReference('deviceCommandButton').setDisabled(empty); + if (!empty) { + this.fireEvent("selectDevice", selected.getLastSelected()); + } + }, + + onUserClick: function() { + var dialog = Ext.create('Traccar.view.user.UserDialog'); + dialog.down('form').loadRecord(Traccar.app.getUser()); + dialog.show(); + }, + + onServerClick: function() { + var dialog = Ext.create('Traccar.view.ServerDialog'); + dialog.down('form').loadRecord(Traccar.app.getServer()); + dialog.show(); + }, + + onUsersClick: function() { + Ext.create('Ext.window.Window', { + title: strings.settingsUsers, + width: styles.windowWidth, + height: styles.windowHeight, + layout: 'fit', + modal: true, + items: { + xtype: 'userView' + } + }).show(); + }, + + selectReport: function(position) { + if (position !== undefined) { + this.getView().getSelectionModel().deselectAll(); + } + } +}); diff --git a/web/app/view/Main.js b/web/app/view/Main.js index 814e5c1d5..958042542 100644 --- a/web/app/view/Main.js +++ b/web/app/view/Main.js @@ -16,9 +16,10 @@ Ext.define('Traccar.view.Main', { extend: 'Ext.container.Viewport', + alias: 'widget.main', requires: [ - 'Traccar.view.device.Device', + 'Traccar.view.Device', 'Traccar.view.state.State', 'Traccar.view.report.Report', 'Traccar.view.map.Map' diff --git a/web/app/view/MainMobile.js b/web/app/view/MainMobile.js index dc39a037c..310f3a872 100644 --- a/web/app/view/MainMobile.js +++ b/web/app/view/MainMobile.js @@ -16,9 +16,10 @@ Ext.define('Traccar.view.MainMobile', { extend: 'Ext.container.Viewport', + alias: 'widget.mainMobile', requires: [ - 'Traccar.view.device.Device', + 'Traccar.view.Device', 'Traccar.view.state.State', 'Traccar.view.map.Map' ], diff --git a/web/app/view/device/Device.js b/web/app/view/device/Device.js deleted file mode 100644 index d77f405bd..000000000 --- a/web/app/view/device/Device.js +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -Ext.define('Traccar.view.device.Device', { - extend: 'Ext.grid.Panel', - xtype: 'deviceView', - - requires: [ - 'Traccar.view.device.DeviceController' - ], - - controller: 'device', - store: 'Devices', - - title: strings.deviceTitle, - selType: 'rowmodel', - - tbar: [{ - handler: 'onAddClick', - reference: 'deviceAddButton', - glyph: 'xf067@FontAwesome', - tooltip: strings.sharedAdd, - tooltipType: 'title' - }, { - disabled: true, - handler: 'onEditClick', - reference: 'deviceEditButton', - glyph: 'xf040@FontAwesome', - tooltip: strings.sharedEdit, - tooltipType: 'title' - }, { - disabled: true, - handler: 'onRemoveClick', - reference: 'deviceRemoveButton', - glyph: 'xf00d@FontAwesome', - tooltip: strings.sharedRemove, - tooltipType: 'title' - }, { - disabled: true, - handler: 'onCommandClick', - reference: 'deviceCommandButton', - glyph: 'xf093@FontAwesome', - tooltip: strings.deviceCommand, - tooltipType: 'title' - }, { - xtype: 'tbfill' - }, { - text: strings.settingsTitle, - menu: [{ - text: strings.settingsUser, - handler: 'onUserClick' - }, { - text: strings.settingsServer, - hidden: true, - handler: 'onServerClick', - reference: 'settingsServerButton' - }, { - text: strings.settingsUsers, - hidden: true, - handler: 'onUsersClick', - reference: 'settingsUsersButton' - }] - }, { - text: strings.loginLogout, - handler: 'onLogoutClick' - }], - - listeners: { - selectionchange: 'onSelectionChange' - }, - - columns: [{ - text: strings.deviceName, - dataIndex: 'name', flex: 1 - }, { - text: strings.deviceIdentifier, - dataIndex: 'uniqueId', flex: 1 - }] - -}); diff --git a/web/app/view/device/DeviceController.js b/web/app/view/device/DeviceController.js deleted file mode 100644 index e2e82448d..000000000 --- a/web/app/view/device/DeviceController.js +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2015 Anton Tananaev (anton.tananaev@gmail.com) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -Ext.define('Traccar.view.device.DeviceController', { - extend: 'Ext.app.ViewController', - alias: 'controller.device', - - requires: [ - 'Traccar.view.CommandDialog', - 'Traccar.view.user.UserDialog', - 'Traccar.view.user.User', - 'Traccar.view.login.LoginController' - ], - - config: { - listen: { - controller: { - '*': { - selectReport: 'selectReport' - } - } - } - }, - - init: function() { - if (Traccar.app.getUser().get('admin')) { - this.lookupReference('settingsServerButton').setHidden(false); - this.lookupReference('settingsUsersButton').setHidden(false); - } - }, - - onLogoutClick: function() { - Ext.create('Traccar.view.login.LoginController').logout(); - }, - - onAddClick: function() { - var device, dialog; - device = Ext.create('Traccar.model.Device'); - device.store = this.getView().getStore(); - dialog = Ext.create('Traccar.view.DeviceDialog'); - dialog.down('form').loadRecord(device); - dialog.show(); - }, - - onEditClick: function() { - var device, dialog; - device = this.getView().getSelectionModel().getSelection()[0]; - dialog = Ext.create('Traccar.view.DeviceDialog'); - dialog.down('form').loadRecord(device); - dialog.show(); - }, - - onRemoveClick: function() { - var device = this.getView().getSelectionModel().getSelection()[0]; - Ext.Msg.show({ - title: strings.deviceDialog, - message: strings.sharedRemoveConfirm, - buttons: Ext.Msg.YESNO, - buttonText: { - yes: strings.sharedRemove, - no: strings.sharedCancel - }, - fn: function(btn) { - var store; - if (btn === 'yes') { - store = Ext.getStore('Devices'); - store.remove(device); - store.sync(); - } - } - }); - }, - - onCommandClick: function() { - var device, command, dialog; - device = this.getView().getSelectionModel().getSelection()[0]; - command = Ext.create('Traccar.model.Command'); - command.set('deviceId', device.get('id')); - dialog = Ext.create('Traccar.view.CommandDialog'); - dialog.down('form').loadRecord(command); - dialog.show(); - }, - - onSelectionChange: function(selected) { - var empty = selected.getCount() === 0; - this.lookupReference('deviceEditButton').setDisabled(empty); - this.lookupReference('deviceRemoveButton').setDisabled(empty); - this.lookupReference('deviceCommandButton').setDisabled(empty); - if (!empty) { - this.fireEvent("selectDevice", selected.getLastSelected()); - } - }, - - onUserClick: function() { - var dialog = Ext.create('Traccar.view.user.UserDialog'); - dialog.down('form').loadRecord(Traccar.app.getUser()); - dialog.show(); - }, - - onServerClick: function() { - var dialog = Ext.create('Traccar.view.ServerDialog'); - dialog.down('form').loadRecord(Traccar.app.getServer()); - dialog.show(); - }, - - onUsersClick: function() { - Ext.create('Ext.window.Window', { - title: strings.settingsUsers, - width: styles.windowWidth, - height: styles.windowHeight, - layout: 'fit', - modal: true, - items: { - xtype: 'userView' - } - }).show(); - }, - - selectReport: function(position) { - if (position !== undefined) { - this.getView().getSelectionModel().deselectAll(); - } - } -}); diff --git a/web/app/view/login/Login.js b/web/app/view/login/Login.js index fc1e749d1..a2d53fdf1 100644 --- a/web/app/view/login/Login.js +++ b/web/app/view/login/Login.js @@ -16,6 +16,7 @@ Ext.define('Traccar.view.login.Login', { extend: 'Ext.window.Window', + alias: 'widget.login', requires: [ 'Traccar.view.login.LoginController' -- cgit v1.2.3