diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/app/AttributeFormatter.js | 15 | ||||
-rw-r--r-- | web/app/model/ReportSummary.js | 3 | ||||
-rw-r--r-- | web/app/view/ReportController.js | 5 | ||||
-rw-r--r-- | web/l10n/en.json | 7 |
4 files changed, 29 insertions, 1 deletions
diff --git a/web/app/AttributeFormatter.js b/web/app/AttributeFormatter.js index 3432ca1e0..7d008dc64 100644 --- a/web/app/AttributeFormatter.js +++ b/web/app/AttributeFormatter.js @@ -34,6 +34,19 @@ Ext.define('Traccar.AttributeFormatter', { return Ext.getStore('DistanceUnits').formatValue(value, Traccar.app.getPreference('distanceUnit')); }, + intervalFormatter: function (value) { + var days, hours, minutes, seconds; + seconds = Math.floor(value / 1000); + days = Math.floor(seconds / 86400); + hours = ('0' + Math.floor(seconds / 3600) % 24).slice(-2); + minutes = ('0' + Math.floor(seconds / 60) % 60).slice(-2); + seconds = ('0' + seconds % 60).slice(-2); + return (days > 0 ? days + Strings.sharedDayAbbreviation + ' ' : '') + + (hours > 0 ? hours + Strings.sharedHourAbbreviation + ' ' : '') + + (minutes > 0 ? minutes + Strings.sharedMinuteAbbreviation + ' ' : '') + + (seconds > 60 ? seconds : seconds + Strings.sharedSecondAbbreviation); + }, + defaultFormatter: function (value) { if (typeof value === 'number') { return Number(value.toFixed(Traccar.Style.numberPrecision)); @@ -58,6 +71,8 @@ Ext.define('Traccar.AttributeFormatter', { return this.courseFormatter; } else if (key === 'distance' || key === 'odometer') { return this.distanceFormatter; + } else if (key === 'interval') { + return this.intervalFormatter; } else { return this.defaultFormatter; } diff --git a/web/app/model/ReportSummary.js b/web/app/model/ReportSummary.js index 7821e1c00..2017d164a 100644 --- a/web/app/model/ReportSummary.js +++ b/web/app/model/ReportSummary.js @@ -33,5 +33,8 @@ Ext.define('Traccar.model.ReportSummary', { }, { name: 'distance', type: 'float' + }, { + name: 'motorHours', + type: 'int' }] }); diff --git a/web/app/view/ReportController.js b/web/app/view/ReportController.js index ecc7b0f91..5ac84e8e2 100644 --- a/web/app/view/ReportController.js +++ b/web/app/view/ReportController.js @@ -227,6 +227,11 @@ Ext.define('Traccar.view.ReportController', { dataIndex: 'maxSpeed', flex: 1, renderer: Traccar.AttributeFormatter.getFormatter('speed') + }, { + text: Strings.reportMotorHours, + dataIndex: 'motorHours', + flex: 1, + renderer: Traccar.AttributeFormatter.getFormatter('interval') }]; if (newValue === 'route') { diff --git a/web/l10n/en.json b/web/l10n/en.json index ef318bd74..11088e9bf 100644 --- a/web/l10n/en.json +++ b/web/l10n/en.json @@ -26,6 +26,10 @@ "sharedMute": "Mute", "sharedType": "Type", "sharedDistance": "Distance", + "sharedDayAbbreviation": "d", + "sharedHourAbbreviation": "h", + "sharedMinuteAbbreviation": "m", + "sharedSecondAbbreviation": "s", "errorTitle": "Error", "errorUnknown": "Unknown error", "errorConnection": "Connection error", @@ -141,5 +145,6 @@ "reportCsv": "CSV", "reportDeviceName": "Device Name", "reportAverageSpeed": "Average Speed", - "reportMaximumSpeed": "Maximum Speed" + "reportMaximumSpeed": "Maximum Speed", + "reportMotorHours": "Motor Hours" }
\ No newline at end of file |