aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2016-07-18 23:26:48 +1200
committerGitHub <noreply@github.com>2016-07-18 23:26:48 +1200
commit464711d63dafb44e89f3d4112f13250f268c11cd (patch)
treee4342fb8dd0f743fad8060ca1029504410ce4c21
parentd3e063cf9de8a45bed4dfe87b73aadfd8d2edeab (diff)
parentbbfe8e8c328a660b8bdcdf089a8cd798cbbc5f2d (diff)
downloadtrackermap-server-464711d63dafb44e89f3d4112f13250f268c11cd.tar.gz
trackermap-server-464711d63dafb44e89f3d4112f13250f268c11cd.tar.bz2
trackermap-server-464711d63dafb44e89f3d4112f13250f268c11cd.zip
Merge pull request #2123 from Abyss777/device_attributes
Add attributes for devices
-rw-r--r--debug.xml4
-rw-r--r--schema/changelog-3.7.xml4
-rw-r--r--setup/unix/traccar.xml4
-rw-r--r--setup/windows/traccar.xml4
-rw-r--r--src/org/traccar/database/DeviceManager.java15
-rw-r--r--src/org/traccar/model/Device.java12
-rw-r--r--web/app/model/Device.js2
-rw-r--r--web/app/view/AttributesController.js3
-rw-r--r--web/app/view/DeviceDialog.js19
-rw-r--r--web/app/view/DeviceDialogController.js38
10 files changed, 85 insertions, 20 deletions
diff --git a/debug.xml b/debug.xml
index a55d1a6a6..2bd96021f 100644
--- a/debug.xml
+++ b/debug.xml
@@ -159,11 +159,11 @@
</entry>
<entry key='database.insertDevice'>
- INSERT INTO devices (name, uniqueId, groupId) VALUES (:name, :uniqueId, :groupId);
+ INSERT INTO devices (name, uniqueId, groupId, attributes) VALUES (:name, :uniqueId, :groupId, :attributes);
</entry>
<entry key='database.updateDevice'>
- UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId WHERE id = :id;
+ UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId, attributes = :attributes WHERE id = :id;
</entry>
<entry key='database.updateDeviceStatus'>
diff --git a/schema/changelog-3.7.xml b/schema/changelog-3.7.xml
index 5e836a99c..e23e44b04 100644
--- a/schema/changelog-3.7.xml
+++ b/schema/changelog-3.7.xml
@@ -20,6 +20,10 @@
<where>groupid NOT IN (SELECT id FROM (SELECT id FROM groups) AS groups_ids)</where>
</update>
+ <addColumn tableName="devices">
+ <column name="attributes" type="VARCHAR(4096)" />
+ </addColumn>
+
</changeSet>
<changeSet author="author" id="changelog-3.7-notmssql">
diff --git a/setup/unix/traccar.xml b/setup/unix/traccar.xml
index 8a119f35a..e8b29a296 100644
--- a/setup/unix/traccar.xml
+++ b/setup/unix/traccar.xml
@@ -111,11 +111,11 @@
</entry>
<entry key='database.insertDevice'>
- INSERT INTO devices (name, uniqueId, groupId) VALUES (:name, :uniqueId, :groupId);
+ INSERT INTO devices (name, uniqueId, groupId, attributes) VALUES (:name, :uniqueId, :groupId, :attributes);
</entry>
<entry key='database.updateDevice'>
- UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId WHERE id = :id;
+ UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId, attributes = :attributes WHERE id = :id;
</entry>
<entry key='database.updateDeviceStatus'>
diff --git a/setup/windows/traccar.xml b/setup/windows/traccar.xml
index 049034b01..6220263ef 100644
--- a/setup/windows/traccar.xml
+++ b/setup/windows/traccar.xml
@@ -111,11 +111,11 @@
</entry>
<entry key='database.insertDevice'>
- INSERT INTO devices (name, uniqueId, groupId) VALUES (:name, :uniqueId, :groupId);
+ INSERT INTO devices (name, uniqueId, groupId, attributes) VALUES (:name, :uniqueId, :groupId, :attributes);
</entry>
<entry key='database.updateDevice'>
- UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId WHERE id = :id;
+ UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId, attributes = :attributes WHERE id = :id;
</entry>
<entry key='database.updateDeviceStatus'>
diff --git a/src/org/traccar/database/DeviceManager.java b/src/org/traccar/database/DeviceManager.java
index 70df1cc1a..173e68062 100644
--- a/src/org/traccar/database/DeviceManager.java
+++ b/src/org/traccar/database/DeviceManager.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2016 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.
+ */
package org.traccar.database;
import java.sql.SQLException;
diff --git a/src/org/traccar/model/Device.java b/src/org/traccar/model/Device.java
index c42eb3718..1669aee31 100644
--- a/src/org/traccar/model/Device.java
+++ b/src/org/traccar/model/Device.java
@@ -18,17 +18,7 @@ package org.traccar.model;
import java.util.Date;
import java.util.List;
-public class Device {
-
- private long id;
-
- public long getId() {
- return id;
- }
-
- public void setId(long id) {
- this.id = id;
- }
+public class Device extends Extensible {
private String name;
diff --git a/web/app/model/Device.js b/web/app/model/Device.js
index 247f72ba9..100f50f5b 100644
--- a/web/app/model/Device.js
+++ b/web/app/model/Device.js
@@ -39,5 +39,7 @@ Ext.define('Traccar.model.Device', {
type: 'int'
}, {
name: 'geofenceIds'
+ }, {
+ name: 'attributes'
}]
});
diff --git a/web/app/view/AttributesController.js b/web/app/view/AttributesController.js
index 8e6ab82a4..5be94dec3 100644
--- a/web/app/view/AttributesController.js
+++ b/web/app/view/AttributesController.js
@@ -27,6 +27,9 @@ Ext.define('Traccar.view.AttributesController', {
var store, propertyName, i = 0, attributes;
store = Ext.create('Traccar.store.Attributes');
store.setProxy(Ext.create('Ext.data.proxy.Memory'));
+ if (typeof this.getView().record.get('attributes') === 'undefined') {
+ this.getView().record.set('attributes', {});
+ }
attributes = this.getView().record.get('attributes');
for (propertyName in attributes) {
if (attributes.hasOwnProperty(propertyName)) {
diff --git a/web/app/view/DeviceDialog.js b/web/app/view/DeviceDialog.js
index 37462ef88..2938d5dc3 100644
--- a/web/app/view/DeviceDialog.js
+++ b/web/app/view/DeviceDialog.js
@@ -18,10 +18,10 @@ Ext.define('Traccar.view.DeviceDialog', {
extend: 'Traccar.view.BaseEditDialog',
requires: [
- 'Traccar.view.BaseEditDialogController'
+ 'Traccar.view.DeviceDialogController'
],
- controller: 'baseEditDialog',
+ controller: 'deviceDialog',
title: Strings.deviceDialog,
items: {
@@ -45,5 +45,18 @@ Ext.define('Traccar.view.DeviceDialog', {
displayField: 'name',
valueField: 'id'
}]
- }
+ },
+
+ buttons: [{
+ text : Strings.sharedAttributes,
+ handler: 'showAttributesView'
+ }, {
+ xtype: 'tbfill'
+ }, {
+ text: Strings.sharedSave,
+ handler: 'onSaveClick'
+ }, {
+ text: Strings.sharedCancel,
+ handler: 'closeView'
+ }]
});
diff --git a/web/app/view/DeviceDialogController.js b/web/app/view/DeviceDialogController.js
new file mode 100644
index 000000000..0a0f86883
--- /dev/null
+++ b/web/app/view/DeviceDialogController.js
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2016 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.DeviceDialogController', {
+ extend: 'Traccar.view.BaseEditDialogController',
+ alias: 'controller.deviceDialog',
+
+ requires: [
+ 'Traccar.view.Attributes'
+ ],
+
+ showAttributesView: function (button) {
+ var dialog, record;
+ dialog = button.up('window').down('form');
+ record = dialog.getRecord();
+ Ext.create('Traccar.view.BaseWindow', {
+ title: Strings.sharedAttributes,
+ modal: false,
+ items: {
+ xtype: 'attributesView',
+ record: record
+ }
+ }).show();
+ }
+});