diff options
author | Anton Tananaev <anton@traccar.org> | 2024-04-06 09:17:52 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2024-04-06 09:17:52 -0700 |
commit | b392a4af78e01c8e0f50aad5468e9583675b24be (patch) | |
tree | 0a4fd7c4ee020e0829817853469979d4e998a69a /legacy/web/app/Application.js | |
parent | 94cadecda794358a53995c276697919eaf540466 (diff) | |
download | trackermap-web-b392a4af78e01c8e0f50aad5468e9583675b24be.tar.gz trackermap-web-b392a4af78e01c8e0f50aad5468e9583675b24be.tar.bz2 trackermap-web-b392a4af78e01c8e0f50aad5468e9583675b24be.zip |
Move to the legacy folder
Diffstat (limited to 'legacy/web/app/Application.js')
-rw-r--r-- | legacy/web/app/Application.js | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/legacy/web/app/Application.js b/legacy/web/app/Application.js new file mode 100644 index 00000000..dd9210dc --- /dev/null +++ b/legacy/web/app/Application.js @@ -0,0 +1,246 @@ +/* + * Copyright 2015 Anton Tananaev (anton@traccar.org) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +Ext.define('Traccar.Application', { + extend: 'Ext.app.Application', + name: 'Traccar', + + requires: [ + 'Traccar.Style', + 'Traccar.AttributeFormatter', + 'Traccar.view.TouchFix62' + ], + + models: [ + 'Server', + 'User', + 'Group', + 'Device', + 'Position', + 'Attribute', + 'Command', + 'Event', + 'Geofence', + 'Notification', + 'ReportSummary', + 'ReportTrip', + 'ReportStop', + 'Calendar', + 'KnownAttribute', + 'Driver', + 'KnownCommand', + 'KnownNotification', + 'Maintenance' + ], + + stores: [ + 'Groups', + 'Devices', + 'AllGroups', + 'AllDevices', + 'AlarmTypes', + 'Positions', + 'LatestPositions', + 'EventPositions', + 'Users', + 'Attributes', + 'MapTypes', + 'DistanceUnits', + 'SpeedUnits', + 'CoordinateFormats', + 'CommandTypes', + 'TimeUnits', + 'Languages', + 'Events', + 'Geofences', + 'AllGeofences', + 'Notifications', + 'AllNotifications', + 'GeofenceTypes', + 'ReportRoute', + 'ReportEvents', + 'ReportTrips', + 'ReportStops', + 'ReportSummary', + 'ReportTypes', + 'ReportEventTypes', + 'ReportChartTypes', + 'ReportPeriods', + 'Statistics', + 'DeviceImages', + 'Calendars', + 'AllCalendars', + 'AllTimezones', + 'VisibleDevices', + 'DeviceStatuses', + 'CommonDeviceAttributes', + 'DeviceAttributes', + 'GeofenceAttributes', + 'GroupAttributes', + 'ServerAttributes', + 'CommonUserAttributes', + 'UserAttributes', + 'ComputedAttributes', + 'AllComputedAttributes', + 'PositionAttributes', + 'AttributeValueTypes', + 'Drivers', + 'AllDrivers', + 'KnownCommands', + 'VolumeUnits', + 'AllCommandTypes', + 'Commands', + 'AllCommands', + 'DeviceCommands', + 'AllNotificationTypes', + 'Maintenances', + 'AllMaintenances', + 'MaintenanceTypes', + 'HoursUnits', + 'AllNotificators' + ], + + controllers: [ + 'Root' + ], + + isMobile: function () { + return window.matchMedia && window.matchMedia('(max-width: 768px)').matches; + }, + + getVehicleFeaturesDisabled: function () { + return this.getBooleanAttributePreference('ui.disableVehicleFeatures'); + }, + + getEventString: function (eventType) { + var key = 'event' + eventType.charAt(0).toUpperCase() + eventType.slice(1); + return Strings[key] || key; + }, + + getNotificatorString: function (eventType) { + var key = 'notificator' + eventType.charAt(0).toUpperCase() + eventType.slice(1); + return Strings[key] || key; + }, + + showReports: function (show) { + var rootPanel = Ext.getCmp('rootPanel'); + if (rootPanel) { + rootPanel.setActiveItem(show ? 1 : 0); + } + }, + + showEvents: function (show) { + var rootPanel = Ext.getCmp('rootPanel'); + if (rootPanel) { + rootPanel.setActiveItem(show ? 2 : 0); + } + }, + + updateNotificationToken: function (token) { + var attributes = Ext.clone(this.user.get('attributes')); + if (!attributes.notificationTokens || attributes.notificationTokens.indexOf(token) < 0) { + if (!attributes.notificationTokens) { + attributes.notificationTokens = token; + } else { + attributes.notificationTokens += ',' + token; + } + this.user.set('attributes', attributes); + this.user.save(); + } + }, + + setUser: function (data) { + var reader = Ext.create('Ext.data.reader.Json', { + model: 'Traccar.model.User' + }); + this.user = reader.readRecords(data).getRecords()[0]; + }, + + getUser: function () { + return this.user; + }, + + setServer: function (data) { + var reader = Ext.create('Ext.data.reader.Json', { + model: 'Traccar.model.Server' + }); + this.server = reader.readRecords(data).getRecords()[0]; + }, + + getServer: function () { + return this.server; + }, + + getPreference: function (key, defaultValue) { + if (this.getServer().get('forceSettings')) { + return this.getServer().get(key) || this.getUser().get(key) || defaultValue; + } else { + return this.getUser().get(key) || this.getServer().get(key) || defaultValue; + } + }, + + getAttributePreference: function (key, defaultValue) { + if (this.getServer().get('forceSettings')) { + return this.getServer().get('attributes')[key] || this.getUser().get('attributes')[key] || defaultValue; + } else { + return this.getUser().get('attributes')[key] || this.getServer().get('attributes')[key] || defaultValue; + } + }, + + getBooleanAttributePreference: function (key) { + return this.getAttributePreference(key, false).toString() === 'true'; + }, + + getReportColor: function (deviceId) { + var index, reportColor, device = Ext.getStore('Devices').getById(deviceId); + if (device) { + reportColor = device.get('attributes')['web.reportColor']; + } + if (reportColor) { + return reportColor; + } else { + index = 0; + if (deviceId !== undefined) { + index = deviceId % Traccar.Style.mapRouteColor.length; + } + return Traccar.Style.mapRouteColor[index]; + } + }, + + showError: function (error) { + if (Ext.isString(error)) { + Ext.Msg.alert(Strings.errorTitle, error); + } else if (error.responseText) { + Ext.Msg.alert(Strings.errorTitle, Strings.errorGeneral + + '<br><br><textarea readonly rows="5" style="resize: none; width: 100%;">' + + error.responseText + '</textarea>'); + } else if (error.statusText) { + Ext.Msg.alert(Strings.errorTitle, error.statusText); + } else { + Ext.Msg.alert(Strings.errorTitle, Strings.errorConnection); + } + }, + + showToast: function (message, title) { + Ext.toast({ + html: message, + title: title, + width: Traccar.Style.toastWidth, + align: 'br' + }); + } +}); |