diff options
Diffstat (limited to 'web/app/view/login')
-rw-r--r-- | web/app/view/login/Login.js | 66 | ||||
-rw-r--r-- | web/app/view/login/LoginController.js | 61 | ||||
-rw-r--r-- | web/app/view/login/Register.js | 64 | ||||
-rw-r--r-- | web/app/view/login/RegisterController.js | 40 |
4 files changed, 231 insertions, 0 deletions
diff --git a/web/app/view/login/Login.js b/web/app/view/login/Login.js new file mode 100644 index 000000000..3e23c4838 --- /dev/null +++ b/web/app/view/login/Login.js @@ -0,0 +1,66 @@ +/* + * 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.login.Login', { + extend: 'Ext.window.Window', + + requires: [ + 'Traccar.view.login.LoginController' + ], + + controller: 'login', + + bodyPadding: styles.panel_padding, + title: strings.login_title, + closable: false, + resizable: false, + modal: true, + + items: { + xtype: 'form', + reference: 'form', + + items: [{ + xtype: 'textfield', + name: 'email', + fieldLabel: strings.login_email, + allowBlank: false, + enableKeyEvents: true, + listeners: { + specialKey: 'onSpecialKey' + } + }, { + xtype: 'textfield', + name: 'password', + fieldLabel: strings.login_password, + inputType: 'password', + allowBlank: false, + enableKeyEvents: true, + listeners: { + specialKey: 'onSpecialKey' + } + }] + }, + + buttons: [{ + text: strings.login_register, + handler: 'onRegisterClick' + }, { + text: strings.login_login, + handler: 'onLoginClick' + }] + +}); diff --git a/web/app/view/login/LoginController.js b/web/app/view/login/LoginController.js new file mode 100644 index 000000000..a88fffc09 --- /dev/null +++ b/web/app/view/login/LoginController.js @@ -0,0 +1,61 @@ +/* + * 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.login.LoginController', { + extend: 'Ext.app.ViewController', + alias: 'controller.login', + + requires: [ + 'Traccar.view.login.Register' + ], + + onSpecialKey: function(field, e) { + if (e.getKey() === e.ENTER) { + this.doLogin(); + } + }, + + onLoginClick: function() { + this.doLogin(); + }, + + doLogin: function() { + var form = this.lookupReference('form'); + if (form.isValid()) { + Ext.getBody().mask(strings.shared_loading); + + Traccar.LoginManager.login({ + data: form.getValues(), + scope: this, + callback: 'onLoginReturn' + }); + } + }, + + onLoginReturn: function(success) { + Ext.getBody().unmask(); + if (success) { + this.fireViewEvent('login'); + } else { + Traccar.ErrorManager.error(strings.login_failed); + } + }, + + onRegisterClick: function() { + Ext.create('Traccar.view.login.Register').show(); + } + +}); diff --git a/web/app/view/login/Register.js b/web/app/view/login/Register.js new file mode 100644 index 000000000..b6b570efe --- /dev/null +++ b/web/app/view/login/Register.js @@ -0,0 +1,64 @@ +/* + * 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.login.Register', { + extend: 'Ext.window.Window', + + requires: [ + 'Traccar.view.login.RegisterController' + ], + + controller: 'register', + + bodyPadding: styles.panel_padding, + title: strings.login_register, + resizable: false, + modal: true, + + items: { + xtype: 'form', + reference: 'form', + jsonSubmit: true, + + items: [{ + xtype: 'textfield', + name: 'name', + fieldLabel: strings.login_name, + allowBlank: false + }, { + xtype: 'textfield', + name: 'email', + fieldLabel: strings.login_email, + vtype: 'email', + allowBlank: false + }, { + xtype: 'textfield', + name: 'password', + fieldLabel: strings.login_password, + inputType: 'password', + allowBlank: false + }] + }, + + buttons: [{ + text: strings.dialog_save, + handler: 'onCreateClick' + }, { + text: strings.dialog_cancel, + handler: 'closeView' + }] + +}); diff --git a/web/app/view/login/RegisterController.js b/web/app/view/login/RegisterController.js new file mode 100644 index 000000000..e690b56e8 --- /dev/null +++ b/web/app/view/login/RegisterController.js @@ -0,0 +1,40 @@ +/* + * 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.login.RegisterController', { + extend: 'Ext.app.ViewController', + alias: 'controller.register', + + onCreateClick: function() { + var form = this.lookupReference('form'); + if (form.isValid()) { + Ext.Ajax.request({ + scope: this, + url: '/api/register', + jsonData: form.getValues(), + callback: this.onCreateReturn + }); + } + }, + + onCreateReturn: function(options, success, response) { + if (Traccar.ErrorManager.check(success, response)) { + this.closeView(); + Ext.toast(strings.login_created); + } + } + +}); |