aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authorAbyss777 <abyss@fox5.ru>2017-08-18 11:52:06 +0500
committerAbyss777 <abyss@fox5.ru>2017-08-18 11:52:06 +0500
commit65116928b2b7a8e5e2b70bf490b3225896cf2c71 (patch)
treeaf24b231822fb045a7ae4d03e533775285d41e47 /web
parent01af5f520e24a33d7e22523d8ed11e9f14a19516 (diff)
parentb3d3c720f34e12e7af83e6be3bd87e304931bbe1 (diff)
downloadetbsa-traccar-web-65116928b2b7a8e5e2b70bf490b3225896cf2c71.tar.gz
etbsa-traccar-web-65116928b2b7a8e5e2b70bf490b3225896cf2c71.tar.bz2
etbsa-traccar-web-65116928b2b7a8e5e2b70bf490b3225896cf2c71.zip
Merge branch 'master' into disable_vehicle_features
Diffstat (limited to 'web')
-rw-r--r--web/.jscsrc6
-rw-r--r--web/.jshintignore2
-rw-r--r--web/.jshintrc76
-rw-r--r--web/app/AttributeFormatter.js62
-rw-r--r--web/app/DeviceImages.js4
-rw-r--r--web/app/GeofenceConverter.js14
-rw-r--r--web/app/controller/Root.js8
-rw-r--r--web/app/model/Event.js6
-rw-r--r--web/app/store/AllNotifications.js5
-rw-r--r--web/app/store/AllTimezones.js2
-rw-r--r--web/app/store/CommandTypes.js2
-rw-r--r--web/app/store/Notifications.js5
-rw-r--r--web/app/store/PositionAttributes.js12
-rw-r--r--web/app/view/ArrayListFilter.js6
-rw-r--r--web/app/view/CustomNumberField.js2
-rw-r--r--web/app/view/EventsController.js6
-rw-r--r--web/app/view/NotificationsController.js2
-rw-r--r--web/app/view/ReportController.js10
-rw-r--r--web/app/view/SettingsMenuController.js2
-rw-r--r--web/app/view/StateController.js17
-rw-r--r--web/app/view/dialog/CalendarController.js4
-rw-r--r--web/app/view/dialog/CommandController.js116
-rw-r--r--web/app/view/dialog/LoginController.js10
-rw-r--r--web/app/view/dialog/MapPickerController.js2
-rw-r--r--web/app/view/dialog/ReportConfigController.js24
-rw-r--r--web/app/view/edit/AttributeAliasesController.js8
-rw-r--r--web/app/view/edit/Attributes.js2
-rw-r--r--web/app/view/edit/Devices.js4
-rw-r--r--web/app/view/edit/DevicesController.js4
-rw-r--r--web/app/view/map/BaseMap.js10
-rw-r--r--web/app/view/map/MapController.js8
-rw-r--r--web/app/view/map/MapMarkerController.js28
-rw-r--r--web/app/view/permissions/BaseController.js8
33 files changed, 194 insertions, 283 deletions
diff --git a/web/.jscsrc b/web/.jscsrc
deleted file mode 100644
index 546e6a5..0000000
--- a/web/.jscsrc
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "preset": "crockford",
- "maxErrors": 100,
- "excludeFiles": ["simple/app.js"],
- "requireDotNotation": false
-}
diff --git a/web/.jshintignore b/web/.jshintignore
deleted file mode 100644
index 0a20d51..0000000
--- a/web/.jshintignore
+++ /dev/null
@@ -1,2 +0,0 @@
-locale.js
-simple/app.js
diff --git a/web/.jshintrc b/web/.jshintrc
deleted file mode 100644
index 67329cd..0000000
--- a/web/.jshintrc
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- // Enforcing
- "bitwise" : false, // true: Prohibit bitwise operators (&, |, ^, etc.)
- "camelcase" : true, // true: Identifiers must be in camelCase
- "curly" : true, // true: Require {} for every new block or scope
- "eqeqeq" : true, // true: Require triple equals (===) for comparison
- "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty()
- "freeze" : true, // true: prohibits overwriting prototypes of native objects such as Array, Date etc.
- "immed" : true, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
- "indent" : 4, // {int} Number of spaces to use for indentation
- "latedef" : true, // true: Require variables/functions to be defined before being used
- "newcap" : true, // true: Require capitalization of all constructor functions e.g. `new F()`
- "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee`
- "noempty" : true, // true: Prohibit use of empty blocks
- "nonbsp" : true, // true: Prohibit "non-breaking whitespace" characters.
- "nonew" : true, // true: Prohibit use of constructors for side-effects (without assignment)
- "plusplus" : false, // true: Prohibit use of `++` and `--`
- "quotmark" : "single", // Quotation mark consistency:
- // false : do nothing (default)
- // true : ensure whatever is used is consistent
- // "single" : require single quotes
- // "double" : require double quotes
- "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks)
- "unused" : "vars", // Unused variables:
- // true : all variables, last function parameter
- // "vars" : all variables only
- // "strict" : all variables, all function parameters
- "strict" : false, // true: Requires all functions run in ES5 Strict Mode
- "maxparams" : false, // {int} Max number of formal params allowed per function
- "maxdepth" : false, // {int} Max depth of nested blocks (within functions)
- "maxstatements" : false, // {int} Max number statements per function
- "maxcomplexity" : false, // {int} Max cyclomatic complexity per function
- "maxlen" : false, // {int} Max number of characters per line
- "varstmt" : false, // true: Disallow any var statements. Only `let` and `const` are allowed.
-
- // Relaxing
- "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
- "boss" : false, // true: Tolerate assignments where comparisons would be expected
- "debug" : false, // true: Allow debugger statements e.g. browser breakpoints.
- "eqnull" : false, // true: Tolerate use of `== null`
- "esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`)
- "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features)
- "evil" : false, // true: Tolerate use of `eval` and `new Function()`
- "expr" : false, // true: Tolerate `ExpressionStatement` as Programs
- "funcscope" : false, // true: Tolerate defining variables inside control statements
- "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict')
- "iterator" : false, // true: Tolerate using the `__iterator__` property
- "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block
- "laxbreak" : false, // true: Tolerate possibly unsafe line breakings
- "laxcomma" : false, // true: Tolerate comma-first style coding
- "loopfunc" : false, // true: Tolerate functions being defined in loops
- "multistr" : false, // true: Tolerate multi-line strings
- "noyield" : false, // true: Tolerate generator functions with no yield statement in them.
- "notypeof" : false, // true: Tolerate invalid typeof operator values
- "proto" : false, // true: Tolerate using the `__proto__` property
- "scripturl" : false, // true: Tolerate script-targeted URLs
- "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
- "sub" : true, // true: Tolerate using `[]` notation when it can still be expressed in dot notation
- "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;`
- "validthis" : false, // true: Tolerate using this in a non-constructor function
-
- // Environments
- "browser" : true, // Web Browser (window, document, etc)
- "devel" : true, // Development/debugging (alert, confirm, etc)
- "node" : true, // Node.js
-
- // Custom Globals
- "globals" : {
- "Ext" : false,
- "ol" : false,
- "Traccar" : false,
- "Strings" : false,
- "Locale" : false,
- "proj4" : false
- }
-}
diff --git a/web/app/AttributeFormatter.js b/web/app/AttributeFormatter.js
index 2d394f5..87689a2 100644
--- a/web/app/AttributeFormatter.js
+++ b/web/app/AttributeFormatter.js
@@ -23,6 +23,7 @@ Ext.define('Traccar.AttributeFormatter', {
if (value !== undefined) {
return Number(value.toFixed(precision)) + ' ' + suffix;
}
+ return null;
};
},
@@ -54,8 +55,8 @@ Ext.define('Traccar.AttributeFormatter', {
durationFormatter: function (value) {
var hours, minutes;
hours = Math.floor(value / 3600000);
- minutes = Math.round((value % 3600000) / 60000);
- return (hours + ' ' + Strings.sharedHourAbbreviation + ' ' + minutes + ' ' + Strings.sharedMinuteAbbreviation);
+ minutes = Math.round(value % 3600000 / 60000);
+ return hours + ' ' + Strings.sharedHourAbbreviation + ' ' + minutes + ' ' + Strings.sharedMinuteAbbreviation;
},
deviceIdFormatter: function (value) {
@@ -72,6 +73,7 @@ Ext.define('Traccar.AttributeFormatter', {
group = store.getById(value);
return group ? group.get('name') : value;
}
+ return null;
},
geofenceIdFormatter: function (value) {
@@ -84,6 +86,7 @@ Ext.define('Traccar.AttributeFormatter', {
geofence = store.getById(value);
return geofence ? geofence.get('name') : '';
}
+ return null;
},
driverUniqueIdFormatter: function (value) {
@@ -96,11 +99,11 @@ Ext.define('Traccar.AttributeFormatter', {
driver = store.findRecord('uniqueId', value, 0, false, true, true);
return driver ? value + ' (' + driver.get('name') + ')' : value;
}
+ return null;
},
lastUpdateFormatter: function (value) {
var seconds, interval;
-
if (value) {
seconds = Math.floor((new Date() - value) / 1000);
if (seconds < 0) {
@@ -116,6 +119,7 @@ Ext.define('Traccar.AttributeFormatter', {
}
return Math.floor(seconds / 60) + ' ' + Strings.sharedMinutes;
}
+ return null;
},
defaultFormatter: function (value) {
@@ -180,26 +184,24 @@ Ext.define('Traccar.AttributeFormatter', {
var dataType = Ext.getStore('PositionAttributes').getAttributeDataType(key);
if (!dataType) {
return this.defaultFormatter;
+ } else if (dataType === 'distance') {
+ return this.distanceFormatter;
+ } else if (dataType === 'speed') {
+ return this.speedFormatter;
+ } else if (dataType === 'driverUniqueId') {
+ return this.driverUniqueIdFormatter;
+ } else if (dataType === 'voltage') {
+ return this.numberFormatterFactory(Traccar.Style.numberPrecision, Strings.sharedVoltAbbreviation);
+ } else if (dataType === 'percentage') {
+ return this.numberFormatterFactory(Traccar.Style.numberPrecision, '&#37;');
+ } else if (dataType === 'temperature') {
+ return this.numberFormatterFactory(Traccar.Style.numberPrecision, '&deg;C');
+ } else if (dataType === 'volume') {
+ return this.numberFormatterFactory(Traccar.Style.numberPrecision, Strings.sharedLiterAbbreviation);
+ } else if (dataType === 'consumption') {
+ return this.numberFormatterFactory(Traccar.Style.numberPrecision, Strings.sharedLiterPerHourAbbreviation);
} else {
- if (dataType === 'distance') {
- return this.distanceFormatter;
- } else if (dataType === 'speed') {
- return this.speedFormatter;
- } else if (dataType === 'driverUniqueId') {
- return this.driverUniqueIdFormatter;
- } else if (dataType === 'voltage') {
- return this.numberFormatterFactory(Traccar.Style.numberPrecision, Strings.sharedVoltAbbreviation);
- } else if (dataType === 'percentage') {
- return this.numberFormatterFactory(Traccar.Style.numberPrecision, '&#37;');
- } else if (dataType === 'temperature') {
- return this.numberFormatterFactory(Traccar.Style.numberPrecision, '&deg;C');
- } else if (dataType === 'volume') {
- return this.numberFormatterFactory(Traccar.Style.numberPrecision, Strings.sharedLiterAbbreviation);
- } else if (dataType === 'consumption') {
- return this.numberFormatterFactory(Traccar.Style.numberPrecision, Strings.sharedLiterPerHourAbbreviation);
- } else {
- return this.defaultFormatter;
- }
+ return this.defaultFormatter;
}
},
@@ -209,16 +211,14 @@ Ext.define('Traccar.AttributeFormatter', {
return function (value) {
return value;
};
+ } else if (dataType === 'distance') {
+ return this.distanceConverter;
+ } else if (dataType === 'speed') {
+ return this.speedConverter;
} else {
- if (dataType === 'distance') {
- return this.distanceConverter;
- } else if (dataType === 'speed') {
- return this.speedConverter;
- } else {
- return function (value) {
- return value;
- };
- }
+ return function (value) {
+ return value;
+ };
}
}
});
diff --git a/web/app/DeviceImages.js b/web/app/DeviceImages.js
index e58c4f6..af45ce9 100644
--- a/web/app/DeviceImages.js
+++ b/web/app/DeviceImages.js
@@ -39,7 +39,7 @@ Ext.define('Traccar.DeviceImages', {
svg.getElementById(fill[i]).style.fill = color;
}
- rotateTransform = 'rotate(' + angle + ' ' + (width / 2) + ' ' + (height / 2) + ')';
+ rotateTransform = 'rotate(' + angle + ' ' + width / 2 + ' ' + height / 2 + ')';
svg.getElementById(info.get('rotateId')).setAttribute('transform', rotateTransform);
if (zoom) {
@@ -85,7 +85,7 @@ Ext.define('Traccar.DeviceImages', {
width = parseFloat(svg.documentElement.getAttribute('width'));
height = parseFloat(svg.documentElement.getAttribute('height'));
- image = new ol.style.Icon({
+ image = new ol.style.Icon({
imgSize: [width, height],
src: this.formatSrc(svg)
});
diff --git a/web/app/GeofenceConverter.js b/web/app/GeofenceConverter.js
index 0abefbc..4891e7b 100644
--- a/web/app/GeofenceConverter.js
+++ b/web/app/GeofenceConverter.js
@@ -19,10 +19,10 @@ Ext.define('Traccar.GeofenceConverter', {
singleton: true,
wktToGeometry: function (mapView, wkt) {
- var geometry, projection, resolutionAtEquator, pointResolution, resolutionFactor, points = [], center, radius,
- content, i, lat, lon, coordinates;
+ var geometry, projection, resolutionAtEquator, pointResolution, resolutionFactor,
+ points = [], center, radius, content, i, lat, lon, coordinates;
if (wkt.lastIndexOf('POLYGON', 0) === 0) {
- content = wkt.match(/\([^\(\)]+\)/);
+ content = wkt.match(/\([^()]+\)/);
if (content !== null) {
coordinates = content[0].match(/-?\d+\.?\d*/g);
if (coordinates !== null) {
@@ -36,7 +36,7 @@ Ext.define('Traccar.GeofenceConverter', {
}
}
} else if (wkt.lastIndexOf('CIRCLE', 0) === 0) {
- content = wkt.match(/\([^\(\)]+\)/);
+ content = wkt.match(/\([^()]+\)/);
if (content !== null) {
coordinates = content[0].match(/-?\d+\.?\d*/g);
if (coordinates !== null) {
@@ -45,12 +45,12 @@ Ext.define('Traccar.GeofenceConverter', {
resolutionAtEquator = mapView.getResolution();
pointResolution = ol.proj.getPointResolution(projection, resolutionAtEquator, center);
resolutionFactor = resolutionAtEquator / pointResolution;
- radius = (Number(coordinates[2]) / ol.proj.METERS_PER_UNIT.m) * resolutionFactor;
+ radius = Number(coordinates[2]) / ol.proj.METERS_PER_UNIT.m * resolutionFactor;
geometry = new ol.geom.Circle(center, radius);
}
}
} else if (wkt.lastIndexOf('LINESTRING', 0) === 0) {
- content = wkt.match(/\([^\(\)]+\)/);
+ content = wkt.match(/\([^()]+\)/);
if (content !== null) {
coordinates = content[0].match(/-?\d+\.?\d*/g);
if (coordinates !== null) {
@@ -79,7 +79,7 @@ Ext.define('Traccar.GeofenceConverter', {
ol.proj.transform(edgeCoordinate, projection, 'EPSG:4326'));
result = 'CIRCLE (';
result += center[1] + ' ' + center[0] + ', ';
- result += Number((groundRadius).toFixed(1)) + ')';
+ result += groundRadius.toFixed(1) + ')';
} else if (geometry instanceof ol.geom.Polygon) {
geometry.transform(projection, 'EPSG:4326');
points = geometry.getCoordinates();
diff --git a/web/app/controller/Root.js b/web/app/controller/Root.js
index baba68a..9262011 100644
--- a/web/app/controller/Root.js
+++ b/web/app/controller/Root.js
@@ -52,6 +52,7 @@ Ext.define('Traccar.controller.Root', {
if (value !== undefined) {
return Traccar.AttributeFormatter.getAttributeConverter(this.attributeKey)(value);
}
+ return null;
},
onLaunch: function () {
@@ -162,7 +163,7 @@ Ext.define('Traccar.controller.Root', {
pathname = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);
socket = new WebSocket(protocol + '//' + window.location.host + pathname + 'api/socket');
- socket.onclose = function (event) {
+ socket.onclose = function () {
Traccar.app.showToast(Strings.errorSocket, Strings.errorTitle);
Ext.Ajax.request({
@@ -291,7 +292,10 @@ Ext.define('Traccar.controller.Root', {
if (success) {
for (i = 0; i < records.length; i++) {
value = records[i].get('type');
- store.add({type: value, name: Traccar.app.getEventString(value)});
+ store.add({
+ type: value,
+ name: Traccar.app.getEventString(value)
+ });
}
}
}
diff --git a/web/app/model/Event.js b/web/app/model/Event.js
index 9455b0d..966cd60 100644
--- a/web/app/model/Event.js
+++ b/web/app/model/Event.js
@@ -52,15 +52,15 @@ Ext.define('Traccar.model.Event', {
} else if (rec.get('type') === 'textMessage') {
text = Strings.eventTextMessage + ': ' + rec.get('attributes')['message'];
} else if (rec.get('type') === 'driverChanged') {
- text = Strings.eventDriverChanged + ': ' + Traccar.AttributeFormatter.driverUniqueIdFormatter(
- rec.get('attributes')['driverUniqueId']);
+ text = Strings.eventDriverChanged + ': ' +
+ Traccar.AttributeFormatter.driverUniqueIdFormatter(rec.get('attributes')['driverUniqueId']);
} else {
text = Traccar.app.getEventString(rec.get('type'));
}
if (rec.get('geofenceId')) {
geofence = Ext.getStore('Geofences').getById(rec.get('geofenceId'));
if (geofence) {
- text += ' \"' + geofence.get('name') + '"';
+ text += ' "' + geofence.get('name') + '"';
}
}
return text;
diff --git a/web/app/store/AllNotifications.js b/web/app/store/AllNotifications.js
index f25aebc..61aa75a 100644
--- a/web/app/store/AllNotifications.js
+++ b/web/app/store/AllNotifications.js
@@ -27,5 +27,8 @@ Ext.define('Traccar.store.AllNotifications', {
}
},
sortOnLoad: true,
- sorters: { property: 'type', direction : 'ASC' }
+ sorters: {
+ property: 'type',
+ direction: 'ASC'
+ }
});
diff --git a/web/app/store/AllTimezones.js b/web/app/store/AllTimezones.js
index e5a861b..2a7fa37 100644
--- a/web/app/store/AllTimezones.js
+++ b/web/app/store/AllTimezones.js
@@ -21,7 +21,7 @@ Ext.define('Traccar.store.AllTimezones', {
sorters: {
property: 'key',
- direction : 'ASC'
+ direction: 'ASC'
},
data: [{
diff --git a/web/app/store/CommandTypes.js b/web/app/store/CommandTypes.js
index 445f937..a14dd58 100644
--- a/web/app/store/CommandTypes.js
+++ b/web/app/store/CommandTypes.js
@@ -41,7 +41,7 @@ Ext.define('Traccar.store.CommandTypes', {
}
},
listeners: {
- 'exception' : function (proxy, response) {
+ 'exception': function (proxy, response) {
Traccar.app.showError(response);
}
}
diff --git a/web/app/store/Notifications.js b/web/app/store/Notifications.js
index d79702f..a672fd4 100644
--- a/web/app/store/Notifications.js
+++ b/web/app/store/Notifications.js
@@ -24,5 +24,8 @@ Ext.define('Traccar.store.Notifications', {
url: 'api/users/notifications'
},
sortOnLoad: true,
- sorters: { property: 'type', direction : 'ASC' }
+ sorters: {
+ property: 'type',
+ direction: 'ASC'
+ }
});
diff --git a/web/app/store/PositionAttributes.js b/web/app/store/PositionAttributes.js
index c3d6d18..e457daf 100644
--- a/web/app/store/PositionAttributes.js
+++ b/web/app/store/PositionAttributes.js
@@ -240,14 +240,12 @@ Ext.define('Traccar.store.PositionAttributes', {
var model = this.getById(key);
if (model) {
return model.get('name');
+ } else if (capitalize) {
+ return key.replace(/^./, function (match) {
+ return match.toUpperCase();
+ });
} else {
- if (capitalize) {
- return key.replace(/^./, function (match) {
- return match.toUpperCase();
- });
- } else {
- return key;
- }
+ return key;
}
},
diff --git a/web/app/view/ArrayListFilter.js b/web/app/view/ArrayListFilter.js
index cea748a..b6c1512 100644
--- a/web/app/view/ArrayListFilter.js
+++ b/web/app/view/ArrayListFilter.js
@@ -34,10 +34,8 @@ Ext.define('Traccar.view.ArrayListFilter', {
return true;
}
}
- } else {
- if (value.indexOf(property) !== -1) {
- return true;
- }
+ } else if (value.indexOf(property) !== -1) {
+ return true;
}
return false;
});
diff --git a/web/app/view/CustomNumberField.js b/web/app/view/CustomNumberField.js
index e116e93..887e5c9 100644
--- a/web/app/view/CustomNumberField.js
+++ b/web/app/view/CustomNumberField.js
@@ -37,7 +37,7 @@ Ext.define('Traccar.view.CustomNumberField', {
} else if (config.dataType === 'distance') {
config.beforeSubTpl = this.beforeEl;
unit = Traccar.app.getPreference('distanceUnit', 'km');
- config.afterSubTpl = this.unitEl + Ext.getStore('DistanceUnits').findRecord('key', unit).get('name') + '</div></div>';
+ config.afterSubTpl = this.unitEl + Ext.getStore('DistanceUnits').findRecord('key', unit).get('name') + '</div></div>';
config.rawToValue = function (rawValue) {
return Ext.getStore('DistanceUnits').convertValue(rawValue, Traccar.app.getPreference('distanceUnit', 'km'), true);
};
diff --git a/web/app/view/EventsController.js b/web/app/view/EventsController.js
index 62af967..8eb4363 100644
--- a/web/app/view/EventsController.js
+++ b/web/app/view/EventsController.js
@@ -46,7 +46,7 @@ Ext.define('Traccar.view.EventsController', {
}
},
- onRemoveClick: function (button) {
+ onRemoveClick: function () {
var event, positionId;
event = this.getView().getSelectionModel().getSelection()[0];
if (event) {
@@ -58,12 +58,12 @@ Ext.define('Traccar.view.EventsController', {
}
},
- onClearClick: function (button) {
+ onClearClick: function () {
Ext.getStore('Events').removeAll();
Ext.getStore('EventPositions').removeAll();
},
- onAddEvent: function (store, data) {
+ onAddEvent: function () {
if (this.lookupReference('scrollToLastButton').pressed) {
this.getView().scrollBy(0, Number.POSITIVE_INFINITY, true);
}
diff --git a/web/app/view/NotificationsController.js b/web/app/view/NotificationsController.js
index f50e8d8..651f57f 100644
--- a/web/app/view/NotificationsController.js
+++ b/web/app/view/NotificationsController.js
@@ -27,7 +27,7 @@ Ext.define('Traccar.view.NotificationsController', {
});
},
- onCheckChange: function (column, rowIndex, checked, eOpts) {
+ onCheckChange: function (column, rowIndex) {
var record = this.getView().getStore().getAt(rowIndex);
Ext.Ajax.request({
scope: this,
diff --git a/web/app/view/ReportController.js b/web/app/view/ReportController.js
index 85af559..5c052b5 100644
--- a/web/app/view/ReportController.js
+++ b/web/app/view/ReportController.js
@@ -134,7 +134,7 @@ Ext.define('Traccar.view.ReportController', {
updateButtons: function () {
var reportType, disabled, devices, time;
reportType = this.lookupReference('reportTypeField').getValue();
- devices = (this.deviceId && this.deviceId.length !== 0) || (this.groupId && this.groupId.length !== 0);
+ devices = this.deviceId && this.deviceId.length !== 0 || this.groupId && this.groupId.length !== 0;
time = this.fromDate && this.fromTime && this.toDate && this.toTime;
disabled = !reportType || !devices || !time;
this.lookupReference('showButton').setDisabled(disabled);
@@ -221,7 +221,7 @@ Ext.define('Traccar.view.ReportController', {
}
},
- selectReport: function (object, center) {
+ selectReport: function (object) {
var positionRelated, reportType = this.lookupReference('reportTypeField').getValue();
if (object instanceof Traccar.model.Position) {
if (reportType === 'route') {
@@ -298,15 +298,15 @@ Ext.define('Traccar.view.ReportController', {
var i, deviceIds, chartSeries, deviceStore;
if (this.lookupReference('reportTypeField').getValue() === 'chart') {
this.getChart().getAxes()[0].setTitle(
- Ext.getStore('ReportChartTypes').findRecord('key', this.chartType).get('name'));
+ Ext.getStore('ReportChartTypes').findRecord('key', this.chartType).get('name'));
chartSeries = [];
deviceIds = store.collect('deviceId');
for (i = 0; i < deviceIds.length; i++) {
- deviceStore = new Ext.create('Ext.data.ChainedStore', {
+ deviceStore = Ext.create('Ext.data.ChainedStore', {
source: 'ReportRoute',
filters: [{
property: 'deviceId',
- value : deviceIds[i]
+ value: deviceIds[i]
}]
});
chartSeries.push({
diff --git a/web/app/view/SettingsMenuController.js b/web/app/view/SettingsMenuController.js
index f459da7..5454335 100644
--- a/web/app/view/SettingsMenuController.js
+++ b/web/app/view/SettingsMenuController.js
@@ -60,7 +60,7 @@ Ext.define('Traccar.view.SettingsMenuController', {
this.lookupReference('settingsDriversButton').setHidden(Traccar.app.isVehicleFeaturesDisabled() ||
Traccar.app.getBooleanAttributePreference('ui.disableDrivers'));
}
- if (admin || (!deviceReadonly && !readonly)) {
+ if (admin || !deviceReadonly && !readonly) {
this.lookupReference('settingsAttributeAliasesButton').setHidden(false);
this.lookupReference('settingsComputedAttributesButton').setHidden(
Traccar.app.getBooleanAttributePreference('ui.disableComputedAttributes'));
diff --git a/web/app/view/StateController.js b/web/app/view/StateController.js
index 23369b8..95f5f55 100644
--- a/web/app/view/StateController.js
+++ b/web/app/view/StateController.js
@@ -20,12 +20,11 @@ Ext.define('Traccar.view.StateController', {
alias: 'controller.state',
requires: [
- 'Traccar.AttributeFormatter',
- 'Traccar.model.Attribute',
- 'Traccar.model.AttributeAlias',
- 'Traccar.model.Position',
- 'Traccar.view.dialog.AttributeAlias'
-
+ 'Traccar.AttributeFormatter',
+ 'Traccar.model.Attribute',
+ 'Traccar.model.AttributeAlias',
+ 'Traccar.model.Position',
+ 'Traccar.view.dialog.AttributeAlias'
],
config: {
@@ -73,7 +72,7 @@ Ext.define('Traccar.view.StateController', {
};
}
return result;
- }()),
+ })(),
updateLatest: function (store, data) {
var i;
@@ -89,7 +88,7 @@ Ext.define('Traccar.view.StateController', {
},
formatValue: function (value) {
- if (typeof (id) === 'number') {
+ if (typeof id === 'number') {
return Number(value.toFixed(2));
} else {
return value;
@@ -169,7 +168,7 @@ Ext.define('Traccar.view.StateController', {
Ext.getStore('Attributes').removeAll();
},
- clearReport: function (store) {
+ clearReport: function () {
if (!this.deviceId) {
this.position = null;
Ext.getStore('Attributes').removeAll();
diff --git a/web/app/view/dialog/CalendarController.js b/web/app/view/dialog/CalendarController.js
index 14d8294..fb8cbff 100644
--- a/web/app/view/dialog/CalendarController.js
+++ b/web/app/view/dialog/CalendarController.js
@@ -26,12 +26,12 @@ Ext.define('Traccar.view.dialog.CalendarController', {
reader = new FileReader();
reader.onload = function (event) {
fileField.up('window').lookupReference('dataField').setValue(
- btoa(String.fromCharCode.apply(null, new Uint8Array(event.target.result))));
+ event.target.result.substr(event.target.result.indexOf(',') + 1));
};
reader.onerror = function (event) {
Traccar.app.showError(event.target.error);
};
- reader.readAsArrayBuffer(fileField.fileInputEl.dom.files[0]);
+ reader.readAsDataURL(fileField.fileInputEl.dom.files[0]);
}
}
});
diff --git a/web/app/view/dialog/CommandController.js b/web/app/view/dialog/CommandController.js
index 8c566da..3fdc7b0 100644
--- a/web/app/view/dialog/CommandController.js
+++ b/web/app/view/dialog/CommandController.js
@@ -43,66 +43,62 @@ Ext.define('Traccar.view.dialog.CommandController', {
form.updateRecord();
record = form.getRecord();
- if (record.get('type') === 'positionPeriodic') {
- attributes = this.lookupReference('paramPositionPeriodic');
- value = attributes.down('numberfield[name="frequency"]').getValue();
- value *= attributes.down('combobox[name="unit"]').getValue();
-
- record.set('attributes', {
- frequency: value
- });
- }
-
- if (record.get('type') === 'outputControl') {
- attributes = this.lookupReference('paramOutputControl');
- index = attributes.down('numberfield[name="index"]').getValue();
- value = attributes.down('textfield[name="data"]').getValue();
-
- record.set('attributes', {
- index: index,
- data: value
- });
- }
-
- if (record.get('type') === 'sendUssd') {
- attributes = this.lookupReference('paramSendSmsUssd');
- phone = attributes.down('textfield[name="phone"]').getValue();
- record.set('attributes', {
- phone: phone
- });
- }
-
- if (record.get('type') === 'sendSms') {
- attributes = this.lookupReference('paramSendSmsUssd');
- phone = attributes.down('textfield[name="phone"]').getValue();
- value = attributes.down('textfield[name="message"]').getValue();
- record.set('attributes', {
- phone: phone,
- message: value
- });
- }
-
- if (record.get('type') === 'setTimezone') {
- attributes = this.lookupReference('paramSetTimezone');
- value = attributes.down('numberfield[name="timezone"]').getValue();
- record.set('attributes', {
- timezone: value * 3600
- });
- }
-
- if (record.get('type') === 'setIndicator') {
- attributes = this.lookupReference('paramSetIndicator');
- value = attributes.down('numberfield[name="data"]').getValue();
- record.set('attributes', {
- data: value
- });
- }
-
- if (record.get('type') === 'custom') {
- value = this.lookupReference('paramCustom').getValue();
- record.set('attributes', {
- data: value
- });
+ switch (record.get('type')) {
+ case 'positionPeriodic':
+ attributes = this.lookupReference('paramPositionPeriodic');
+ value = attributes.down('numberfield[name="frequency"]').getValue();
+ value *= attributes.down('combobox[name="unit"]').getValue();
+ record.set('attributes', {
+ frequency: value
+ });
+ break;
+ case 'outputControl':
+ attributes = this.lookupReference('paramOutputControl');
+ index = attributes.down('numberfield[name="index"]').getValue();
+ value = attributes.down('textfield[name="data"]').getValue();
+ record.set('attributes', {
+ index: index,
+ data: value
+ });
+ break;
+ case 'sendUssd':
+ attributes = this.lookupReference('paramSendSmsUssd');
+ phone = attributes.down('textfield[name="phone"]').getValue();
+ record.set('attributes', {
+ phone: phone
+ });
+ break;
+ case 'sendSms':
+ attributes = this.lookupReference('paramSendSmsUssd');
+ phone = attributes.down('textfield[name="phone"]').getValue();
+ value = attributes.down('textfield[name="message"]').getValue();
+ record.set('attributes', {
+ phone: phone,
+ message: value
+ });
+ break;
+ case 'setTimezone':
+ attributes = this.lookupReference('paramSetTimezone');
+ value = attributes.down('numberfield[name="timezone"]').getValue();
+ record.set('attributes', {
+ timezone: value * 3600
+ });
+ break;
+ case 'setIndicator':
+ attributes = this.lookupReference('paramSetIndicator');
+ value = attributes.down('numberfield[name="data"]').getValue();
+ record.set('attributes', {
+ data: value
+ });
+ break;
+ case 'custom':
+ value = this.lookupReference('paramCustom').getValue();
+ record.set('attributes', {
+ data: value
+ });
+ break;
+ default:
+ break;
}
Ext.Ajax.request({
diff --git a/web/app/view/dialog/LoginController.js b/web/app/view/dialog/LoginController.js
index 1b5cd07..c25d9a8 100644
--- a/web/app/view/dialog/LoginController.js
+++ b/web/app/view/dialog/LoginController.js
@@ -86,14 +86,12 @@ Ext.define('Traccar.view.dialog.LoginController', {
prefix = url.substring(0, url.indexOf(paramName));
suffix = url.substring(url.indexOf(paramName));
suffix = suffix.substring(suffix.indexOf('=') + 1);
- suffix = (suffix.indexOf('&') >= 0) ? suffix.substring(suffix.indexOf('&')) : '';
+ suffix = suffix.indexOf('&') >= 0 ? suffix.substring(suffix.indexOf('&')) : '';
url = prefix + paramName + '=' + paramValue + suffix;
+ } else if (url.indexOf('?') < 0) {
+ url += '?' + paramName + '=' + paramValue;
} else {
- if (url.indexOf('?') < 0) {
- url += '?' + paramName + '=' + paramValue;
- } else {
- url += '&' + paramName + '=' + paramValue;
- }
+ url += '&' + paramName + '=' + paramValue;
}
window.location.href = url;
},
diff --git a/web/app/view/dialog/MapPickerController.js b/web/app/view/dialog/MapPickerController.js
index 23f60ec..8641e37 100644
--- a/web/app/view/dialog/MapPickerController.js
+++ b/web/app/view/dialog/MapPickerController.js
@@ -30,7 +30,7 @@ Ext.define('Traccar.view.dialog.MapPickerController', {
}
},
- getMapState: function (button) {
+ getMapState: function () {
this.fireEvent('mapstaterequest');
},
diff --git a/web/app/view/dialog/ReportConfigController.js b/web/app/view/dialog/ReportConfigController.js
index 7233562..ce66371 100644
--- a/web/app/view/dialog/ReportConfigController.js
+++ b/web/app/view/dialog/ReportConfigController.js
@@ -26,23 +26,25 @@ Ext.define('Traccar.view.dialog.ReportConfigController', {
],
onSaveClick: function (button) {
- var eventType;
- this.getView().callingPanel.deviceId = this.lookupReference('deviceField').getValue();
- this.getView().callingPanel.groupId = this.lookupReference('groupField').getValue();
+ var eventType, callingPanel;
+ callingPanel = this.getView().callingPanel;
+
+ callingPanel.deviceId = this.lookupReference('deviceField').getValue();
+ callingPanel.groupId = this.lookupReference('groupField').getValue();
eventType = this.lookupReference('eventTypeField').getValue();
if (eventType.indexOf(Traccar.store.ReportEventTypes.allEvents) > -1) {
eventType = [Traccar.store.ReportEventTypes.allEvents];
} else if (eventType.length === this.lookupReference('eventTypeField').getStore().getCount() - 1) {
eventType = [Traccar.store.ReportEventTypes.allEvents];
}
- this.getView().callingPanel.eventType = eventType;
- this.getView().callingPanel.chartType = this.lookupReference('chartTypeField').getValue();
- this.getView().callingPanel.showMarkers = this.lookupReference('showMarkersField').getValue();
- this.getView().callingPanel.fromDate = this.lookupReference('fromDateField').getValue();
- this.getView().callingPanel.fromTime = this.lookupReference('fromTimeField').getValue();
- this.getView().callingPanel.toDate = this.lookupReference('toDateField').getValue();
- this.getView().callingPanel.toTime = this.lookupReference('toTimeField').getValue();
- this.getView().callingPanel.updateButtons();
+ callingPanel.eventType = eventType;
+ callingPanel.chartType = this.lookupReference('chartTypeField').getValue();
+ callingPanel.showMarkers = this.lookupReference('showMarkersField').getValue();
+ callingPanel.fromDate = this.lookupReference('fromDateField').getValue();
+ callingPanel.fromTime = this.lookupReference('fromTimeField').getValue();
+ callingPanel.toDate = this.lookupReference('toDateField').getValue();
+ callingPanel.toTime = this.lookupReference('toTimeField').getValue();
+ callingPanel.updateButtons();
button.up('window').close();
}
});
diff --git a/web/app/view/edit/AttributeAliasesController.js b/web/app/view/edit/AttributeAliasesController.js
index d1beb13..8ac68bc 100644
--- a/web/app/view/edit/AttributeAliasesController.js
+++ b/web/app/view/edit/AttributeAliasesController.js
@@ -61,13 +61,13 @@ Ext.define('Traccar.view.edit.AttributeAliasesController', {
this.lookupReference('toolbarRemoveButton').setDisabled(disabled);
},
- onDeviceChange: function (combobox, newValue, oldValue) {
+ onDeviceChange: function (combobox, value) {
var manager = Traccar.app.getUser().get('admin') || Traccar.app.getUser().get('userLimit') > 0;
this.onSelectionChange();
- if (newValue !== null) {
- this.getView().getStore().filter('deviceId', newValue);
+ if (value !== null) {
+ this.getView().getStore().filter('deviceId', value);
if (manager && this.getView().getStore().getCount() === 0) {
- Ext.getStore('AttributeAliases').getProxy().setExtraParam('deviceId', newValue);
+ Ext.getStore('AttributeAliases').getProxy().setExtraParam('deviceId', value);
Ext.getStore('AttributeAliases').load({
addRecords: true
});
diff --git a/web/app/view/edit/Attributes.js b/web/app/view/edit/Attributes.js
index 84cadea..a76223b 100644
--- a/web/app/view/edit/Attributes.js
+++ b/web/app/view/edit/Attributes.js
@@ -46,7 +46,7 @@ Ext.define('Traccar.view.edit.Attributes', {
text: Strings.sharedName,
dataIndex: 'name',
filter: 'string',
- renderer: function (value, metaData) {
+ renderer: function (value) {
var attribute;
if (this.attributesStore) {
attribute = Ext.getStore(this.attributesStore).getById(value);
diff --git a/web/app/view/edit/Devices.js b/web/app/view/edit/Devices.js
index c9538c8..4fdcab0 100644
--- a/web/app/view/edit/Devices.js
+++ b/web/app/view/edit/Devices.js
@@ -111,6 +111,7 @@ Ext.define('Traccar.view.edit.Devices', {
if (status) {
return Ext.getStore('DeviceStatuses').getById(status).get('color');
}
+ return null;
}
},
@@ -165,7 +166,7 @@ Ext.define('Traccar.view.edit.Devices', {
for (i = 0; i < value.length; i++) {
name = Traccar.AttributeFormatter.geofenceIdFormatter(value[i]);
if (name) {
- result += name + ((i < value.length - 1) ? ', ' : '');
+ result += name + (i < value.length - 1 ? ', ' : '');
}
}
}
@@ -187,6 +188,7 @@ Ext.define('Traccar.view.edit.Devices', {
return status.get('name');
}
}
+ return null;
}
}, {
text: Strings.deviceLastUpdate,
diff --git a/web/app/view/edit/DevicesController.js b/web/app/view/edit/DevicesController.js
index 59a10bb..ffe9c9a 100644
--- a/web/app/view/edit/DevicesController.js
+++ b/web/app/view/edit/DevicesController.js
@@ -155,7 +155,7 @@ Ext.define('Traccar.view.edit.DevicesController', {
}
},
- selectDevice: function (device, center) {
+ selectDevice: function (device) {
this.getView().getSelectionModel().select([device], false, true);
this.updateButtons(this.getView().getSelectionModel());
this.getView().getView().focusRow(device);
@@ -167,7 +167,7 @@ Ext.define('Traccar.view.edit.DevicesController', {
}
},
- onUpdateDevice: function (store, data) {
+ onUpdateDevice: function () {
this.updateButtons(this.getView().getSelectionModel());
},
diff --git a/web/app/view/map/BaseMap.js b/web/app/view/map/BaseMap.js
index c4297f6..5829cac 100644
--- a/web/app/view/map/BaseMap.js
+++ b/web/app/view/map/BaseMap.js
@@ -95,10 +95,10 @@ Ext.define('Traccar.view.map.BaseMap', {
index = index < 0 ? index + urlsLength : index;
if (x < 0) {
- x = 'M' + (-x);
+ x = 'M' + -x;
}
if (y < 0) {
- y = 'M' + (-y);
+ y = 'M' + -y;
}
return 'http://online{}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl'
.replace('{}', index).replace('{x}', x).replace('{y}', y).replace('{z}', z);
@@ -171,7 +171,7 @@ Ext.define('Traccar.view.map.BaseMap', {
}
this.map.on('pointermove', function (e) {
- var hit = this.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
+ var hit = this.forEachFeatureAtPixel(e.pixel, function () {
return true;
});
if (hit) {
@@ -187,7 +187,7 @@ Ext.define('Traccar.view.map.BaseMap', {
return !layer.get('name');
}
})) {
- this.map.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
+ this.map.forEachFeatureAtPixel(e.pixel, function (feature) {
this.fireEvent('selectfeature', feature);
}.bind(this));
} else {
@@ -206,9 +206,7 @@ Ext.define('Traccar.view.map.BaseMap', {
}
}
}, function () {
-
proj4.defs('BD-MC', '+proj=merc +lon_0=0 +units=m +ellps=clrk66 +no_defs');
proj4.defs('EPSG:3395', '+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs');
ol.proj.get('EPSG:3395').setExtent([-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244]);
-
});
diff --git a/web/app/view/map/MapController.js b/web/app/view/map/MapController.js
index 651bd9f..d8d2249 100644
--- a/web/app/view/map/MapController.js
+++ b/web/app/view/map/MapController.js
@@ -79,10 +79,10 @@ Ext.define('Traccar.view.map.MapController', {
this.getView().getGeofencesSource().clear();
if (this.lookupReference('showGeofencesButton').pressed) {
Ext.getStore('Geofences').each(function (geofence) {
- var feature = new ol.Feature(Traccar.GeofenceConverter
- .wktToGeometry(this.getView().getMapView(), geofence.get('area')));
- feature.setStyle(this.getAreaStyle(geofence.get('name'),
- geofence.get('attributes') ? geofence.get('attributes').color : null));
+ var feature = new ol.Feature(
+ Traccar.GeofenceConverter.wktToGeometry(this.getView().getMapView(), geofence.get('area')));
+ feature.setStyle(this.getAreaStyle(
+ geofence.get('name'), geofence.get('attributes') ? geofence.get('attributes').color : null));
this.getView().getGeofencesSource().addFeature(feature);
return true;
}, this);
diff --git a/web/app/view/map/MapMarkerController.js b/web/app/view/map/MapMarkerController.js
index 24742ff..d3b813b 100644
--- a/web/app/view/map/MapMarkerController.js
+++ b/web/app/view/map/MapMarkerController.js
@@ -211,7 +211,7 @@ Ext.define('Traccar.view.map.MapMarkerController', {
projection = mapView.getProjection();
center = ol.proj.fromLonLat([position.get('longitude'), position.get('latitude')]);
pointResolution = ol.proj.getPointResolution(projection, mapView.getResolution(), center);
- radius = (position.get('accuracy') / ol.proj.METERS_PER_UNIT.m) * mapView.getResolution() / pointResolution;
+ radius = position.get('accuracy') / ol.proj.METERS_PER_UNIT.m * mapView.getResolution() / pointResolution;
if (feature) {
feature.getGeometry().setCenter(center);
@@ -252,8 +252,8 @@ Ext.define('Traccar.view.map.MapMarkerController', {
marker.set('record', device);
style = this.getLatestMarker(this.getDeviceColor(device),
- position.get('course'),
- device.get('category'));
+ position.get('course'),
+ device.get('category'));
style.getText().setText(device.get('name'));
marker.setStyle(style);
marker.setId(device.get('id'));
@@ -405,7 +405,7 @@ Ext.define('Traccar.view.map.MapMarkerController', {
width: Traccar.Style.mapTextStrokeWidth
}),
offsetY: -image.getSize()[1] / 2 - Traccar.Style.mapTextOffset,
- font : Traccar.Style.mapTextFont
+ font: Traccar.Style.mapTextFont
})
});
},
@@ -420,10 +420,8 @@ Ext.define('Traccar.view.map.MapMarkerController', {
resizeMarker: function (style, zoom) {
var image, text;
- image = Traccar.DeviceImages.getImageIcon(style.getImage().fill,
- zoom,
- style.getImage().angle,
- style.getImage().category);
+ image = Traccar.DeviceImages.getImageIcon(
+ style.getImage().fill, zoom, style.getImage().angle, style.getImage().category);
text = style.getText();
text.setOffsetY(-image.getSize()[1] / 2 - Traccar.Style.mapTextOffset);
style.setText(text);
@@ -431,18 +429,14 @@ Ext.define('Traccar.view.map.MapMarkerController', {
},
rotateMarker: function (style, angle) {
- style.setImage(Traccar.DeviceImages.getImageIcon(style.getImage().fill,
- style.getImage().zoom,
- angle,
- style.getImage().category));
+ style.setImage(Traccar.DeviceImages.getImageIcon(
+ style.getImage().fill, style.getImage().zoom, angle, style.getImage().category));
},
updateDeviceMarker: function (style, color, category) {
var image, text;
- image = Traccar.DeviceImages.getImageIcon(color,
- style.getImage().zoom,
- style.getImage().angle,
- category);
+ image = Traccar.DeviceImages.getImageIcon(
+ color, style.getImage().zoom, style.getImage().angle, category);
text = style.getText();
text.setOffsetY(-image.getSize()[1] / 2 - Traccar.Style.mapTextOffset);
style.setText(text);
@@ -599,7 +593,7 @@ Ext.define('Traccar.view.map.MapMarkerController', {
}
},
- filterDevices: function (store) {
+ filterDevices: function () {
Ext.getStore('Devices').each(this.updateDeviceVisibility, this, false);
}
});
diff --git a/web/app/view/permissions/BaseController.js b/web/app/view/permissions/BaseController.js
index 860a29b..5cb9c30 100644
--- a/web/app/view/permissions/BaseController.js
+++ b/web/app/view/permissions/BaseController.js
@@ -24,11 +24,11 @@ Ext.define('Traccar.view.permissions.BaseController', {
params[this.getView().baseObjectName] = this.getView().baseObject;
linkStoreName = this.getView().linkStoreName;
storeName = this.getView().storeName;
- linkStoreName = (typeof linkStoreName === 'undefined') ? storeName : linkStoreName;
+ linkStoreName = typeof linkStoreName === 'undefined' ? storeName : linkStoreName;
this.getView().setStore(Ext.getStore(storeName));
this.getView().getStore().load({
scope: this,
- callback: function (records, operation, success) {
+ callback: function () {
var linkStore = Ext.create('Traccar.store.' + linkStoreName);
linkStore.load({
params: params,
@@ -47,7 +47,7 @@ Ext.define('Traccar.view.permissions.BaseController', {
});
},
- onBeforeSelect: function (selection, record, index) {
+ onBeforeSelect: function (selection, record) {
var data = {};
data[this.getView().baseObjectName] = this.getView().baseObject;
data[this.getView().linkObjectName] = record.getId();
@@ -64,7 +64,7 @@ Ext.define('Traccar.view.permissions.BaseController', {
});
},
- onBeforeDeselect: function (selection, record, index) {
+ onBeforeDeselect: function (selection, record) {
var data = {};
data[this.getView().baseObjectName] = this.getView().baseObject;
data[this.getView().linkObjectName] = record.getId();