aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
Diffstat (limited to 'web')
-rw-r--r--web/app/model/Notification.js8
-rw-r--r--web/app/view/Notifications.js10
-rw-r--r--web/app/view/NotificationsController.js36
3 files changed, 19 insertions, 35 deletions
diff --git a/web/app/model/Notification.js b/web/app/model/Notification.js
index 1e6c36c5..04dca9bf 100644
--- a/web/app/model/Notification.js
+++ b/web/app/model/Notification.js
@@ -30,5 +30,13 @@ Ext.define('Traccar.model.Notification', {
type: 'int'
}, {
name: 'attributes'
+ }, {
+ name: 'attributes.web',
+ type: 'bool',
+ mapping: 'attributes.web'
+ }, {
+ name: 'attributes.mail',
+ type: 'bool',
+ mapping: 'attributes.mail'
}]
});
diff --git a/web/app/view/Notifications.js b/web/app/view/Notifications.js
index 250a6b5f..795cf326 100644
--- a/web/app/view/Notifications.js
+++ b/web/app/view/Notifications.js
@@ -51,24 +51,14 @@ Ext.define('Traccar.view.Notifications', {
dataIndex: 'attributes.web',
xtype: 'checkcolumn',
listeners: {
- beforeCheckChange: 'onBeforeCheckChange',
checkChange: 'onCheckChange'
- },
- renderer: function (value, metaData, record) {
- var fields = this.dataIndex.split('\.', 2);
- return (new Ext.ux.CheckColumn()).renderer(record.get(fields[0])[fields[1]], metaData);
}
}, {
text: Strings.notificationMail,
dataIndex: 'attributes.mail',
xtype: 'checkcolumn',
listeners: {
- beforeCheckChange: 'onBeforeCheckChange',
checkChange: 'onCheckChange'
- },
- renderer: function (value, metaData, record) {
- var fields = this.dataIndex.split('\.', 2);
- return (new Ext.ux.CheckColumn()).renderer(record.get(fields[0])[fields[1]], metaData);
}
}]
}
diff --git a/web/app/view/NotificationsController.js b/web/app/view/NotificationsController.js
index 70b99f1b..ec9be56f 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) {