From 9289e40a4e32fc0f9a41dea6674ac8b2a2e4d313 Mon Sep 17 00:00:00 2001 From: Abyss777 Date: Tue, 29 Nov 2016 10:03:51 +0500 Subject: Improve Notifications handling --- web/app/view/NotificationsController.js | 36 ++++++++++----------------------- 1 file changed, 11 insertions(+), 25 deletions(-) (limited to 'web/app/view/NotificationsController.js') diff --git a/web/app/view/NotificationsController.js b/web/app/view/NotificationsController.js index 70b99f1..ec9be56 100644 --- a/web/app/view/NotificationsController.js +++ b/web/app/view/NotificationsController.js @@ -28,22 +28,14 @@ Ext.define('Traccar.view.NotificationsController', { this.getView().getStore().load({ scope: this, callback: function (records, operation, success) { - var notificationsStore = Ext.create('Traccar.store.Notifications'); - notificationsStore.load({ + Ext.create('Traccar.store.Notifications').load({ params: { userId: this.userId }, scope: this, callback: function (records, operation, success) { - var i, index, attributes, storeRecord; if (success) { - for (i = 0; i < records.length; i++) { - index = this.getView().getStore().findExact('type', records[i].get('type')); - attributes = records[i].get('attributes'); - storeRecord = this.getView().getStore().getAt(index); - storeRecord.set('attributes', attributes); - storeRecord.commit(); - } + this.getView().getStore().loadData(records); } } }); @@ -51,29 +43,23 @@ Ext.define('Traccar.view.NotificationsController', { }); }, - onBeforeCheckChange: function (column, rowIndex, checked, eOpts) { - var fields, record, data; - fields = column.dataIndex.split('\.', 2); + onCheckChange: function (column, rowIndex, checked, eOpts) { + var record, attributes; record = this.getView().getStore().getAt(rowIndex); - data = record.get(fields[0]); - if (!data[fields[1]]) { - data[fields[1]] = 'true'; - } else { - delete data[fields[1]]; + attributes = {}; + if (record.get('attributes.web')) { + attributes.web = 'true'; + } + if (record.get('attributes.mail')) { + attributes.mail = 'true'; } - record.set(fields[0], data); - record.commit(); - }, - - onCheckChange: function (column, rowIndex, checked, eOpts) { - var record = this.getView().getStore().getAt(rowIndex); Ext.Ajax.request({ scope: this, url: 'api/users/notifications', jsonData: { userId: this.userId, type: record.get('type'), - attributes: record.get('attributes') + attributes: attributes }, callback: function (options, success, response) { if (!success) { -- cgit v1.2.3