diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-06-06 23:18:49 +1200 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-06-06 23:18:49 +1200 |
commit | eaa0044002aeaff0b5df11f8463a068a6ff2284d (patch) | |
tree | fb9cec4ad52ac09f0b75061a41947dbc89b2cf81 /web/app/view/user | |
parent | 40107a7886412c4582ea9a9ee946f454e28a1178 (diff) | |
download | trackermap-server-eaa0044002aeaff0b5df11f8463a068a6ff2284d.tar.gz trackermap-server-eaa0044002aeaff0b5df11f8463a068a6ff2284d.tar.bz2 trackermap-server-eaa0044002aeaff0b5df11f8463a068a6ff2284d.zip |
Add user management window
Diffstat (limited to 'web/app/view/user')
-rw-r--r-- | web/app/view/user/User.js | 56 | ||||
-rw-r--r-- | web/app/view/user/UserController.js | 73 | ||||
-rw-r--r-- | web/app/view/user/UserDialogController.js | 16 |
3 files changed, 144 insertions, 1 deletions
diff --git a/web/app/view/user/User.js b/web/app/view/user/User.js new file mode 100644 index 000000000..fa9c9201a --- /dev/null +++ b/web/app/view/user/User.js @@ -0,0 +1,56 @@ +/* + * 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.user.User', { + extend: 'Ext.grid.Panel', + xtype: 'user-view', + + requires: [ + 'Traccar.view.user.UserController' + ], + + controller: 'user', + store: 'Users', + + selType: 'rowmodel', + + tbar: [{ + text: strings.device_add, + handler: 'onAddClick', + reference: 'deviceAddButton' + }, { + text: strings.device_edit, + disabled: true, + handler: 'onEditClick', + reference: 'userEditButton' + }, { + text: strings.device_remove, + disabled: true, + handler: 'onRemoveClick', + reference: 'userRemoveButton' + }], + + listeners: { + selectionchange: 'onSelectionChange' + }, + + columns: [ + { text: strings.login_name, dataIndex: 'name', flex: 1 }, + { text: strings.login_email, dataIndex: 'email', flex: 1 }, + { text: strings.login_admin, dataIndex: 'admin', flex: 1 } + ] + +}); diff --git a/web/app/view/user/UserController.js b/web/app/view/user/UserController.js new file mode 100644 index 000000000..2b587b3d3 --- /dev/null +++ b/web/app/view/user/UserController.js @@ -0,0 +1,73 @@ +/* + * 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.user.UserController', { + extend: 'Ext.app.ViewController', + alias: 'controller.user', + + requires: [ + 'Traccar.view.user.UserDialog' + ], + + init: function() { + Ext.getStore('Users').load(); + }, + + onLogoutClick: function() { + Traccar.LoginManager.logout(); + }, + + onAddClick: function() { + var user = Ext.create('Traccar.model.User'); + var dialog = Ext.create('Traccar.view.user.UserDialog'); + dialog.down('form').loadRecord(user); + dialog.show(); + }, + + onEditClick: function() { + var user = this.getView().getSelectionModel().getSelection()[0]; + var dialog = Ext.create('Traccar.view.user.UserDialog'); + dialog.down('form').loadRecord(user); + dialog.show(); + }, + + onRemoveClick: function() { + var user = this.getView().getSelectionModel().getSelection()[0]; + Ext.Msg.show({ + title: strings.login_user_title, + message: strings.user_remove_confirm, + buttons: Ext.Msg.YESNO, + buttonText: { + yes: strings.dialog_delete, + no: strings.dialog_cancel + }, + fn: function(btn) { + if (btn === 'yes') { + var store = Ext.getStore('Users'); + store.remove(user); + store.sync(); + } + } + }); + }, + + onSelectionChange: function(selected) { + var disabled = selected.length > 0; + this.lookupReference('userEditButton').setDisabled(disabled); + this.lookupReference('userRemoveButton').setDisabled(disabled); + } + +}); diff --git a/web/app/view/user/UserDialogController.js b/web/app/view/user/UserDialogController.js index 4c6b6c42f..1ec14c5e8 100644 --- a/web/app/view/user/UserDialogController.js +++ b/web/app/view/user/UserDialogController.js @@ -21,7 +21,21 @@ Ext.define('Traccar.view.user.UserDialogController', { onSaveClick: function(button) { var dialog = button.up('window').down('form'); dialog.updateRecord(); - dialog.getRecord().save(); + var record = dialog.getRecord(); + if (record === Traccar.getApplication().getUser()) { + record.save(); + } else { + var store = Ext.getStore('Users'); + if (record.phantom) { + store.add(record); + } + store.sync({ + failure: function(batch) { + store.rejectChanges(); // TODO + Traccar.ErrorManager.check(true, batch.exceptions[0].getResponse()); + } + }); + } button.up('window').close(); }, |