taxtank-core 0.32.2 → 0.32.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/collections/vehicle/best-vehicle-logbook.collection.mjs +39 -44
- package/esm2022/lib/collections/vehicle/vehicle-logbook.collection.mjs +9 -32
- package/esm2022/lib/models/financial-year/financial-year.mjs +4 -2
- package/esm2022/lib/models/vehicle/vehicle-logbook.mjs +9 -8
- package/esm2022/lib/services/http/vehicle/vehicle-claim.service.mjs +4 -23
- package/fesm2022/taxtank-core.mjs +60 -102
- package/fesm2022/taxtank-core.mjs.map +1 -1
- package/lib/collections/vehicle/best-vehicle-logbook.collection.d.ts +10 -12
- package/lib/collections/vehicle/vehicle-logbook.collection.d.ts +3 -16
- package/lib/models/financial-year/financial-year.d.ts +1 -1
- package/lib/models/vehicle/vehicle-logbook.d.ts +0 -2
- package/lib/services/http/vehicle/vehicle-claim.service.d.ts +3 -9
- package/package.json +1 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { VehicleLogbookCollection } from './vehicle-logbook.collection';
|
|
2
2
|
import { DateRange } from 'moment-range';
|
|
3
|
-
import round from 'lodash/round';
|
|
4
3
|
/**
|
|
5
4
|
* Special logbook collection that contains logbooks from date period with the highest work usage percent
|
|
6
5
|
* Docs: https://taxtank.atlassian.net/wiki/spaces/TAXTANK/pages/211517441/Logbook+Vehicle
|
|
@@ -15,29 +14,47 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
15
14
|
* constructor is private because we want to prevent collection initialization via 'new' operator.
|
|
16
15
|
* We should create instances only with fromLogbooks method
|
|
17
16
|
*/
|
|
18
|
-
constructor(logbooks
|
|
19
|
-
super(
|
|
20
|
-
this.isSole = isSole;
|
|
21
|
-
if (!this.isBestPeriodExist(logbooks)) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
this.calculateBestPeriod(logbooks);
|
|
17
|
+
constructor(logbooks) {
|
|
18
|
+
super(logbooks);
|
|
25
19
|
}
|
|
26
20
|
/**
|
|
27
21
|
* Best period may be calculated only when user has logbooks minimum for VehicleLogbook.bestPeriodWeeks
|
|
28
22
|
*/
|
|
29
|
-
isBestPeriodExist(logbooks
|
|
23
|
+
static isBestPeriodExist(logbooks) {
|
|
30
24
|
if (logbooks.length < 2) {
|
|
31
25
|
return false;
|
|
32
26
|
}
|
|
33
27
|
if (!(logbooks instanceof VehicleLogbookCollection)) {
|
|
34
28
|
logbooks = new VehicleLogbookCollection(logbooks);
|
|
35
29
|
}
|
|
36
|
-
return
|
|
30
|
+
return this.periodDuration < (logbooks.last.date.getTime() - logbooks.first.date.getTime());
|
|
31
|
+
}
|
|
32
|
+
// get list of date ranges for each of passed logbook
|
|
33
|
+
static getPeriods(logbooks) {
|
|
34
|
+
const claimable = logbooks.getClaimable();
|
|
35
|
+
// get a list of date ranges that could potentially be the best
|
|
36
|
+
const periods = claimable
|
|
37
|
+
// skip logbooks whose range ends after the last logbook
|
|
38
|
+
.filter((logbook) => this.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
|
|
39
|
+
.map((logbook) => this.getPeriodByLogbook(logbook));
|
|
40
|
+
// skip if the last logbook already included to the last existing date range
|
|
41
|
+
// if (last(periods).end.toDate() < logbooks.last.date) {
|
|
42
|
+
// add extra date range for the last claimable logbook
|
|
43
|
+
// @TODO vik
|
|
44
|
+
periods.push(this.getPeriodByLogbook(claimable.last, true));
|
|
45
|
+
// }
|
|
46
|
+
return periods;
|
|
37
47
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Get claimable date range for passed logbook
|
|
50
|
+
* @param logbook logbook instance for range calculation
|
|
51
|
+
* @param isBackward Flag false - range for logbook + duration; flag true - range for logbook - duration. Used for extra case, when we should add an extra date range for the last logbook
|
|
52
|
+
*/
|
|
53
|
+
static getPeriodByLogbook(logbook, isBackward = false) {
|
|
54
|
+
if (isBackward) {
|
|
55
|
+
return new DateRange([new Date(logbook.date.getTime() - this.periodDuration), logbook.date]);
|
|
56
|
+
}
|
|
57
|
+
return new DateRange([logbook.date, new Date(logbook.date.getTime() + this.periodDuration)]);
|
|
41
58
|
}
|
|
42
59
|
/**
|
|
43
60
|
* Set Date Range with the biggest work usage percent
|
|
@@ -53,44 +70,22 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
|
|
|
53
70
|
*/
|
|
54
71
|
calculateBestPeriod(logbooks) {
|
|
55
72
|
// get a list of date ranges that could potentially be the best
|
|
56
|
-
const periods =
|
|
73
|
+
const periods = BestVehicleLogbookCollection.getPeriods(logbooks);
|
|
57
74
|
periods.forEach((period) => {
|
|
58
75
|
const logbooksInPeriod = logbooks.filterByRange('date', period.start.toDate(), period.end.toDate());
|
|
59
|
-
if (!this.period || (this.
|
|
76
|
+
if (!this.period || (this.getWorkUsage() < logbooksInPeriod.getWorkUsage())) {
|
|
60
77
|
this.period = period;
|
|
61
78
|
this.items = logbooksInPeriod.toArray();
|
|
62
79
|
}
|
|
63
80
|
});
|
|
64
81
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
// get a list of date ranges that could potentially be the best
|
|
69
|
-
const periods = claimable
|
|
70
|
-
// skip logbooks whose range ends after the last logbook
|
|
71
|
-
.filter((logbook) => this.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
|
|
72
|
-
.map((logbook) => this.getPeriodByLogbook(logbook));
|
|
73
|
-
// skip if the last logbook already included to the last existing date range
|
|
74
|
-
// if (last(periods).end.toDate() < logbooks.last.date) {
|
|
75
|
-
// add extra date range for the last claimable logbook
|
|
76
|
-
periods.push(this.getPeriodByLogbook(claimable.last, true));
|
|
77
|
-
// }
|
|
78
|
-
return periods;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get claimable date range for passed logbook
|
|
82
|
-
* @param logbook logbook instance for range calculation
|
|
83
|
-
* @param isBackward Flag false - range for logbook + duration; flag true - range for logbook - duration. Used for extra case, when we should add an extra date range for the last logbook
|
|
84
|
-
*/
|
|
85
|
-
getPeriodByLogbook(logbook, isBackward = false) {
|
|
86
|
-
if (isBackward) {
|
|
87
|
-
return new DateRange([new Date(logbook.date.getTime() - BestVehicleLogbookCollection.periodDuration), logbook.date]);
|
|
82
|
+
static fromLogbooks(logbooks) {
|
|
83
|
+
if (!this.isBestPeriodExist(logbooks)) {
|
|
84
|
+
return null;
|
|
88
85
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
const collection = new BestVehicleLogbookCollection(logbooks, isSole);
|
|
93
|
-
return collection.isBestPeriodExist(logbooks) ? collection : null;
|
|
86
|
+
const collection = new BestVehicleLogbookCollection(logbooks.toArray());
|
|
87
|
+
collection.calculateBestPeriod(logbooks);
|
|
88
|
+
return collection;
|
|
94
89
|
}
|
|
95
90
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVzdC12ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy92ZWhpY2xlL2Jlc3QtdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFHakM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDRCQUE2QixTQUFRLHdCQUF3QjtJQUN4RTs7O09BR0c7YUFDSSxtQkFBYyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7SUFPbEQ7OztPQUdHO0lBQ0gsWUFBb0IsUUFBa0MsRUFBVSxTQUFrQixLQUFLO1FBQ3JGLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQURvRCxXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUdyRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsQ0FBQyxXQUFxQyxJQUFJO1FBQ3pELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsWUFBWSx3QkFBd0IsQ0FBQyxFQUFFO1lBQ25ELFFBQVEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyw0QkFBNEIs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QUFHLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFrQyxFQUFFLFNBQWtCLEtBQUs7UUFDN0UsTUFBTSxVQUFVLEdBQUcsSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEUsT0FBTyxVQUFVLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWhpY2xlQ2xhaW0sIFZlaGljbGVMb2dib29rIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB9IGZyb20gJy4vdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnbW9tZW50LXJhbmdlJztcbmltcG9ydCByb3VuZCBmcm9tICdsb2Rhc2gvcm91bmQnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuXG4vKipcbiAqIFNwZWNpYWwgbG9nYm9vayBjb2xsZWN0aW9uIHRoYXQgY29udGFpbnMgbG9nYm9va3MgZnJvbSBkYXRlIHBlcmlvZCB3aXRoIHRoZSBoaWdoZXN0IHdvcmsgdXNhZ2UgcGVyY2VudFxuICogRG9jczogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTE1MTc0NDEvTG9nYm9vaytWZWhpY2xlXG4gKi9cbmV4cG9ydCBjbGFzcyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIGV4dGVuZHMgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIHtcbiAgLyoqXG4gICAqIExvZ2Jvb2sgY2xhaW1hYmxlIHBlcmlvZCBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjExNTE3NDQxL0xvZ2Jvb2srVmVoaWNsZVxuICAgKi9cbiAgc3RhdGljIHBlcmlvZER1cmF0aW9uID0gMTIgKiA3ICogMjQgKiAzNjAwICogMTAwMDtcblxuICAvKipcbiAgICogRGF0ZSByYW5nZSB3aXRoIHRoZSBiaWdnZXN0IHdvcmsgdXNhZ2UgcGVyY2VudFxuICAgKi9cbiAgcGVyaW9kOiBEYXRlUmFuZ2U7XG5cbiAgLyoqXG4gICAqIGNvbnN0cnVjdG9yIGlzIHByaXZhdGUgYmVjYXVzZSB3ZSB3YW50IHRvIHByZXZlbnQgY29sbGVjdGlvbiBpbml0aWFsaXphdGlvbiB2aWEgJ25ldycgb3BlcmF0b3IuXG4gICAqIFdlIHNob3VsZCBjcmVhdGUgaW5zdGFuY2VzIG9ubHkgd2l0aCBmcm9tTG9nYm9va3MgbWV0aG9kXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24sIHByaXZhdGUgaXNTb2xlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzdXBlcihbXSk7XG5cbiAgICBpZiAoIXRoaXMuaXNCZXN0UGVyaW9kRXhpc3QobG9nYm9va3MpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYWxjdWxhdGVCZXN0UGVyaW9kKGxvZ2Jvb2tzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZXN0IHBlcmlvZCBtYXkgYmUgY2FsY3VsYXRlZCBvbmx5IHdoZW4gdXNlciBoYXMgbG9nYm9va3MgbWluaW11bSBmb3IgVmVoaWNsZUxvZ2Jvb2suYmVzdFBlcmlvZFdlZWtzXG4gICAqL1xuICBpc0Jlc3RQZXJpb2RFeGlzdChsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uID0gdGhpcyk6IGJvb2xlYW4ge1xuICAgIGlmIChsb2dib29rcy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEobG9nYm9va3MgaW5zdGFuY2VvZiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pKSB7XG4gICAgICBsb2dib29rcyA9IG5ldyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24obG9nYm9va3MpO1xuICAgIH1cblxuICAgIHJldHVybiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uIDwgKGxvZ2Jvb2tzLmxhc3QuZGF0ZS5nZXRUaW1lKCkgLSBsb2dib29rcy5maXJzdC5kYXRlLmdldFRpbWUoKSk7XG4gIH1cblxuICBnZXRXb3JrVXNhZ2VCeUNsYWltKGNsYWltOiBWZWhpY2xlQ2xhaW0pOiBudW1iZXIge1xuICAgIGNvbnN0IGNsYWltS2lsb21ldGVyczogbnVtYmVyID0gdGhpcy5nZXRCeVZlaGljbGVDbGFpbShjbGFpbSkuZ2V0Q2xhaW1hYmxlTG9nYm9va3ModGhpcy5pc1NvbGUpLmtpbG9tZXRlcnM7XG5cbiAgICByZXR1cm4gcm91bmQodGhpcy5nZXRXb3JrVXNhZ2VCeVRhbmsodGhpcy5pc1NvbGUpICogKGNsYWltS2lsb21ldGVycyAvIHRoaXMua2lsb21ldGVycyksIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBEYXRlIFJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gICAqIFJhbmdlIGR1cmF0aW9uIGlzIGRlZmluZWQgYXMgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5wZXJpb2REdXJhdGlvbiBieSB0aGUgQVRPXG4gICAqIFxuICAgKiBBbGdvcml0aG06XG4gICAqIENsYWltYWJsZSBsb2dib29rcyBvciBjbGFpbWFibGUgdHJpcHMgLSB3b3JrL2J1c2luZXNzIGxvZ2Jvb2sgaXRlbXMuXG4gICAqIFdlIHNob3VsZCB3b3JrIHdpdGggZGF0ZXMgZnJvbSB0aGUgZmlyc3QgdG8gdGhlIGxhc3QgdHJpcCAoaW5jbHVkZSBwZXJzb25hbCB0cmlwcykuXG4gICAqIEdldCBkYXRlIHJhbmdlcyBzdGFydHMgb24gZWFjaCBjbGFpbWFibGUgdHJpcCwgYWxsIG90aGVyIHJhbmdlcyBhcmUgZGVmaW5ldGlseSB3b3JzdC5cbiAgICogQWxzbyBnZXQgZXh0cmEgZGF0ZSByYW5nZSB3aGljaCBlbmRzIHdpdGggdGhlIGxhc3QgY2xhaW1hYmxlIHRyaXAuXG4gICAqIEdldCBhbGwgdHJpcHMgaW5jbHVkZWQgdG8gZWFjaCBkYXRlIHJhbmdlLlxuICAgKiBGaW5kIGFuZCByZXR1cm4gcmFuZ2Ugd2l0aCB0aGUgYmlnZ2VzdCB3b3JrVXNhZ2UgcGVyY2VudC5cbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlQmVzdFBlcmlvZChsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgLy8gZ2V0IGEgbGlzdCBvZiBkYXRlIHJhbmdlcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHRoZSBiZXN0XG4gICAgY29uc3QgcGVyaW9kczogRGF0ZVJhbmdlW10gPSB0aGlzLmdldFBlcmlvZHMobG9nYm9va3MpO1xuXG4gICAgcGVyaW9kcy5mb3JFYWNoKChwZXJpb2Q6IERhdGVSYW5nZSkgPT4ge1xuICAgICAgY29uc3QgbG9nYm9va3NJblBlcmlvZDogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uID0gbG9nYm9va3MuZmlsdGVyQnlSYW5nZSgnZGF0ZScsIHBlcmlvZC5zdGFydC50b0RhdGUoKSwgcGVyaW9kLmVuZC50b0RhdGUoKSk7XG5cbiAgICAgIGlmICghdGhpcy5wZXJpb2QgfHwgKHRoaXMuZ2V0V29ya1VzYWdlQnlUYW5rKHRoaXMuaXNTb2xlKSA8IGxvZ2Jvb2tzSW5QZXJpb2QuZ2V0V29ya1VzYWdlQnlUYW5rKHRoaXMuaXNTb2xlKSkpIHtcbiAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBsb2dib29rc0luUGVyaW9kLnRvQXJyYXkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGdldCBsaXN0IG9mIGRhdGUgcmFuZ2VzIGZvciBlYWNoIG9mIHBhc3NlZCBsb2dib29rXG4gIHByaXZhdGUgZ2V0UGVyaW9kcyhsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogRGF0ZVJhbmdlW10ge1xuICAgIGNvbnN0IGNsYWltYWJsZSA9IGxvZ2Jvb2tzLmdldENsYWltYWJsZUxvZ2Jvb2tzKHRoaXMuaXNTb2xlKTtcbiAgICAvLyBnZXQgYSBsaXN0IG9mIGRhdGUgcmFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgdGhlIGJlc3RcbiAgICBjb25zdCBwZXJpb2RzOiBEYXRlUmFuZ2VbXSA9IGNsYWltYWJsZVxuICAgICAgLy8gc2tpcCBsb2dib29rcyB3aG9zZSByYW5nZSBlbmRzIGFmdGVyIHRoZSBsYXN0IGxvZ2Jvb2tcbiAgICAgIC5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiB0aGlzLmdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rKS5lbmQudG9EYXRlKCkgPCBsb2dib29rcy5sYXN0LmRhdGUpXG4gICAgICAubWFwKChsb2dib29rOiBWZWhpY2xlTG9nYm9vaykgPT4gdGhpcy5nZXRQZXJpb2RCeUxvZ2Jvb2sobG9nYm9vaykpO1xuXG5cbiAgICAvLyBza2lwIGlmIHRoZSBsYXN0IGxvZ2Jvb2sgYWxyZWFkeSBpbmNsdWRlZCB0byB0aGUgbGFzdCBleGlzdGluZyBkYXRlIHJhbmdlXG4gICAgLy8gaWYgKGxhc3QocGVyaW9kcykuZW5kLnRvRGF0ZSgpIDwgbG9nYm9va3MubGFzdC5kYXRlKSB7XG4gICAgICAvLyBhZGQgZXh0cmEgZGF0ZSByYW5nZSBmb3IgdGhlIGxhc3QgY2xhaW1hYmxlIGxvZ2Jvb2tcbiAgICAgIHBlcmlvZHMucHVzaCh0aGlzLmdldFBlcmlvZEJ5TG9nYm9vayhjbGFpbWFibGUubGFzdCwgdHJ1ZSkpO1xuICAgIC8vIH1cblxuICAgIHJldHVybiBwZXJpb2RzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjbGFpbWFibGUgZGF0ZSByYW5nZSBmb3IgcGFzc2VkIGxvZ2Jvb2tcbiAgICogQHBhcmFtIGxvZ2Jvb2sgbG9nYm9vayBpbnN0YW5jZSBmb3IgcmFuZ2UgY2FsY3VsYXRpb25cbiAgICogQHBhcmFtIGlzQmFja3dhcmQgRmxhZyBmYWxzZSAtIHJhbmdlIGZvciBsb2dib29rICsgZHVyYXRpb247IGZsYWcgdHJ1ZSAtIHJhbmdlIGZvciBsb2dib29rIC0gZHVyYXRpb24uIFVzZWQgZm9yIGV4dHJhIGNhc2UsIHdoZW4gd2Ugc2hvdWxkIGFkZCBhbiBleHRyYSBkYXRlIHJhbmdlIGZvciB0aGUgbGFzdCBsb2dib29rXG4gICAqL1xuICBwcml2YXRlIGdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgaXNCYWNrd2FyZDogYm9vbGVhbiA9IGZhbHNlKTogRGF0ZVJhbmdlIHtcbiAgICBpZiAoaXNCYWNrd2FyZCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2UoW25ldyBEYXRlKGxvZ2Jvb2suZGF0ZS5nZXRUaW1lKCkgLSBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uKSwgbG9nYm9vay5kYXRlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2UoW2xvZ2Jvb2suZGF0ZSwgbmV3IERhdGUobG9nYm9vay5kYXRlLmdldFRpbWUoKSArIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24ucGVyaW9kRHVyYXRpb24pXSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxvZ2Jvb2tzKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24sIGlzU29sZTogYm9vbGVhbiA9IGZhbHNlKTogQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB8IG51bGwge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbihsb2dib29rcywgaXNTb2xlKTtcblxuICAgIHJldHVybiBjb2xsZWN0aW9uLmlzQmVzdFBlcmlvZEV4aXN0KGxvZ2Jvb2tzKSA/IGNvbGxlY3Rpb24gOiBudWxsO1xuICB9XG59XG4iXX0=
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVzdC12ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy92ZWhpY2xlL2Jlc3QtdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsd0JBQXdCO0lBQ3hFOzs7T0FHRzthQUNJLG1CQUFjLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztJQU9sRDs7O09BR0c7SUFDSCxZQUFvQixRQUEwQjtRQUM1QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWtDO1FBQ3pELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsWUFBWSx3QkFBd0IsQ0FBQyxFQUFFO1lBQ25ELFFBQVEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQscURBQXFEO0lBQ3JELE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBa0M7UUFDbEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFDLCtEQUErRDtRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsU0FBUztZQUNwQyx3REFBd0Q7YUFDdkQsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUN2RyxHQUFHLENBQUMsQ0FBQyxPQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUd0RSw0RUFBNEU7UUFDNUUseURBQXlEO1FBQ3pELHNEQUFzRDtRQUN0RCxZQUFZO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUk7UUFFSixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxPQUF1QixFQUFFLFVBQVUsR0FBRyxLQUFLO1FBQ25FLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlGO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNLLG1CQUFtQixDQUFDLFFBQWtDO1FBQzVELCtEQUErRDtRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsNEJBQTRCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFpQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxnQkFBZ0IsR0FBNkIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFOUgsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtnQkFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDekM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWtDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksNEJBQTRCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEUsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXpDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gfSBmcm9tICcuL3ZlaGljbGUtbG9nYm9vay5jb2xsZWN0aW9uJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJ21vbWVudC1yYW5nZSc7XG5cbi8qKlxuICogU3BlY2lhbCBsb2dib29rIGNvbGxlY3Rpb24gdGhhdCBjb250YWlucyBsb2dib29rcyBmcm9tIGRhdGUgcGVyaW9kIHdpdGggdGhlIGhpZ2hlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gKiBEb2NzOiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxMTUxNzQ0MS9Mb2dib29rK1ZlaGljbGVcbiAqL1xuZXhwb3J0IGNsYXNzIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gZXh0ZW5kcyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24ge1xuICAvKipcbiAgICogTG9nYm9vayBjbGFpbWFibGUgcGVyaW9kIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy5cbiAgICogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTE1MTc0NDEvTG9nYm9vaytWZWhpY2xlXG4gICAqL1xuICBzdGF0aWMgcGVyaW9kRHVyYXRpb24gPSAxMiAqIDcgKiAyNCAqIDM2MDAgKiAxMDAwO1xuXG4gIC8qKlxuICAgKiBEYXRlIHJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gICAqL1xuICBwZXJpb2Q6IERhdGVSYW5nZTtcblxuICAvKipcbiAgICogY29uc3RydWN0b3IgaXMgcHJpdmF0ZSBiZWNhdXNlIHdlIHdhbnQgdG8gcHJldmVudCBjb2xsZWN0aW9uIGluaXRpYWxpemF0aW9uIHZpYSAnbmV3JyBvcGVyYXRvci5cbiAgICogV2Ugc2hvdWxkIGNyZWF0ZSBpbnN0YW5jZXMgb25seSB3aXRoIGZyb21Mb2dib29rcyBtZXRob2RcbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3IobG9nYm9va3M6IFZlaGljbGVMb2dib29rW10pIHtcbiAgICBzdXBlcihsb2dib29rcyk7XG4gIH1cblxuICAvKipcbiAgICogQmVzdCBwZXJpb2QgbWF5IGJlIGNhbGN1bGF0ZWQgb25seSB3aGVuIHVzZXIgaGFzIGxvZ2Jvb2tzIG1pbmltdW0gZm9yIFZlaGljbGVMb2dib29rLmJlc3RQZXJpb2RXZWVrc1xuICAgKi9cbiAgc3RhdGljIGlzQmVzdFBlcmlvZEV4aXN0KGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiBib29sZWFuIHtcbiAgICBpZiAobG9nYm9va3MubGVuZ3RoIDwgMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghKGxvZ2Jvb2tzIGluc3RhbmNlb2YgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKSkge1xuICAgICAgbG9nYm9va3MgPSBuZXcgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKGxvZ2Jvb2tzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wZXJpb2REdXJhdGlvbiA8IChsb2dib29rcy5sYXN0LmRhdGUuZ2V0VGltZSgpIC0gbG9nYm9va3MuZmlyc3QuZGF0ZS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgLy8gZ2V0IGxpc3Qgb2YgZGF0ZSByYW5nZXMgZm9yIGVhY2ggb2YgcGFzc2VkIGxvZ2Jvb2tcbiAgc3RhdGljIGdldFBlcmlvZHMobG9nYm9va3M6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbik6IERhdGVSYW5nZVtdIHtcbiAgICBjb25zdCBjbGFpbWFibGUgPSBsb2dib29rcy5nZXRDbGFpbWFibGUoKTtcbiAgICAvLyBnZXQgYSBsaXN0IG9mIGRhdGUgcmFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgdGhlIGJlc3RcbiAgICBjb25zdCBwZXJpb2RzOiBEYXRlUmFuZ2VbXSA9IGNsYWltYWJsZVxuICAgICAgLy8gc2tpcCBsb2dib29rcyB3aG9zZSByYW5nZSBlbmRzIGFmdGVyIHRoZSBsYXN0IGxvZ2Jvb2tcbiAgICAgIC5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiB0aGlzLmdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rKS5lbmQudG9EYXRlKCkgPCBsb2dib29rcy5sYXN0LmRhdGUpXG4gICAgICAubWFwKChsb2dib29rOiBWZWhpY2xlTG9nYm9vaykgPT4gdGhpcy5nZXRQZXJpb2RCeUxvZ2Jvb2sobG9nYm9vaykpO1xuXG5cbiAgICAvLyBza2lwIGlmIHRoZSBsYXN0IGxvZ2Jvb2sgYWxyZWFkeSBpbmNsdWRlZCB0byB0aGUgbGFzdCBleGlzdGluZyBkYXRlIHJhbmdlXG4gICAgLy8gaWYgKGxhc3QocGVyaW9kcykuZW5kLnRvRGF0ZSgpIDwgbG9nYm9va3MubGFzdC5kYXRlKSB7XG4gICAgLy8gYWRkIGV4dHJhIGRhdGUgcmFuZ2UgZm9yIHRoZSBsYXN0IGNsYWltYWJsZSBsb2dib29rXG4gICAgLy8gQFRPRE8gdmlrXG4gICAgcGVyaW9kcy5wdXNoKHRoaXMuZ2V0UGVyaW9kQnlMb2dib29rKGNsYWltYWJsZS5sYXN0LCB0cnVlKSk7XG4gICAgLy8gfVxuXG4gICAgcmV0dXJuIHBlcmlvZHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNsYWltYWJsZSBkYXRlIHJhbmdlIGZvciBwYXNzZWQgbG9nYm9va1xuICAgKiBAcGFyYW0gbG9nYm9vayBsb2dib29rIGluc3RhbmNlIGZvciByYW5nZSBjYWxjdWxhdGlvblxuICAgKiBAcGFyYW0gaXNCYWNrd2FyZCBGbGFnIGZhbHNlIC0gcmFuZ2UgZm9yIGxvZ2Jvb2sgKyBkdXJhdGlvbjsgZmxhZyB0cnVlIC0gcmFuZ2UgZm9yIGxvZ2Jvb2sgLSBkdXJhdGlvbi4gVXNlZCBmb3IgZXh0cmEgY2FzZSwgd2hlbiB3ZSBzaG91bGQgYWRkIGFuIGV4dHJhIGRhdGUgcmFuZ2UgZm9yIHRoZSBsYXN0IGxvZ2Jvb2tcbiAgICovXG4gIHN0YXRpYyBnZXRQZXJpb2RCeUxvZ2Jvb2sobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIGlzQmFja3dhcmQgPSBmYWxzZSk6IERhdGVSYW5nZSB7XG4gICAgaWYgKGlzQmFja3dhcmQpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlKFtuZXcgRGF0ZShsb2dib29rLmRhdGUuZ2V0VGltZSgpIC0gdGhpcy5wZXJpb2REdXJhdGlvbiksIGxvZ2Jvb2suZGF0ZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZVJhbmdlKFtsb2dib29rLmRhdGUsIG5ldyBEYXRlKGxvZ2Jvb2suZGF0ZS5nZXRUaW1lKCkgKyB0aGlzLnBlcmlvZER1cmF0aW9uKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBEYXRlIFJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gICAqIFJhbmdlIGR1cmF0aW9uIGlzIGRlZmluZWQgYXMgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5wZXJpb2REdXJhdGlvbiBieSB0aGUgQVRPXG4gICAqXG4gICAqIEFsZ29yaXRobTpcbiAgICogQ2xhaW1hYmxlIGxvZ2Jvb2tzIG9yIGNsYWltYWJsZSB0cmlwcyAtIHdvcmsvYnVzaW5lc3MgbG9nYm9vayBpdGVtcy5cbiAgICogV2Ugc2hvdWxkIHdvcmsgd2l0aCBkYXRlcyBmcm9tIHRoZSBmaXJzdCB0byB0aGUgbGFzdCB0cmlwIChpbmNsdWRlIHBlcnNvbmFsIHRyaXBzKS5cbiAgICogR2V0IGRhdGUgcmFuZ2VzIHN0YXJ0cyBvbiBlYWNoIGNsYWltYWJsZSB0cmlwLCBhbGwgb3RoZXIgcmFuZ2VzIGFyZSBkZWZpbmV0aWx5IHdvcnN0LlxuICAgKiBBbHNvIGdldCBleHRyYSBkYXRlIHJhbmdlIHdoaWNoIGVuZHMgd2l0aCB0aGUgbGFzdCBjbGFpbWFibGUgdHJpcC5cbiAgICogR2V0IGFsbCB0cmlwcyBpbmNsdWRlZCB0byBlYWNoIGRhdGUgcmFuZ2UuXG4gICAqIEZpbmQgYW5kIHJldHVybiByYW5nZSB3aXRoIHRoZSBiaWdnZXN0IHdvcmtVc2FnZSBwZXJjZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjYWxjdWxhdGVCZXN0UGVyaW9kKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiB2b2lkIHtcbiAgICAvLyBnZXQgYSBsaXN0IG9mIGRhdGUgcmFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgdGhlIGJlc3RcbiAgICBjb25zdCBwZXJpb2RzOiBEYXRlUmFuZ2VbXSA9IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24uZ2V0UGVyaW9kcyhsb2dib29rcyk7XG5cbiAgICBwZXJpb2RzLmZvckVhY2goKHBlcmlvZDogRGF0ZVJhbmdlKSA9PiB7XG4gICAgICBjb25zdCBsb2dib29rc0luUGVyaW9kOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gPSBsb2dib29rcy5maWx0ZXJCeVJhbmdlKCdkYXRlJywgcGVyaW9kLnN0YXJ0LnRvRGF0ZSgpLCBwZXJpb2QuZW5kLnRvRGF0ZSgpKTtcblxuICAgICAgaWYgKCF0aGlzLnBlcmlvZCB8fCAodGhpcy5nZXRXb3JrVXNhZ2UoKSA8IGxvZ2Jvb2tzSW5QZXJpb2QuZ2V0V29ya1VzYWdlKCkpKSB7XG4gICAgICAgIHRoaXMucGVyaW9kID0gcGVyaW9kO1xuICAgICAgICB0aGlzLml0ZW1zID0gbG9nYm9va3NJblBlcmlvZC50b0FycmF5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxvZ2Jvb2tzKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmlzQmVzdFBlcmlvZEV4aXN0KGxvZ2Jvb2tzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKGxvZ2Jvb2tzLnRvQXJyYXkoKSk7XG4gICAgY29sbGVjdGlvbi5jYWxjdWxhdGVCZXN0UGVyaW9kKGxvZ2Jvb2tzKTtcblxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9XG59XG4iXX0=
|
|
@@ -1,43 +1,20 @@
|
|
|
1
1
|
import { Collection } from '../collection';
|
|
2
2
|
import { TankTypeEnum } from '../../db/Enums/tank-type.enum';
|
|
3
|
-
import round from 'lodash/round';
|
|
4
3
|
import { BestVehicleLogbookCollection } from './best-vehicle-logbook.collection';
|
|
5
4
|
export class VehicleLogbookCollection extends Collection {
|
|
6
|
-
/**
|
|
7
|
-
* Get collection of non-personal logbooks (work-related, sole-related).
|
|
8
|
-
* @TODO Vik: Best period: move this and related logic to backend
|
|
9
|
-
*/
|
|
10
|
-
getClaimableLogbooks(isSole = false) {
|
|
11
|
-
return this.filter((logbook) => !logbook.isPersonal && (isSole ? logbook.isSoleTank() : logbook.isWorkTank()));
|
|
12
|
-
}
|
|
13
5
|
/**
|
|
14
6
|
* Calculate total kilometers traveled
|
|
15
7
|
*/
|
|
16
8
|
get kilometers() {
|
|
17
9
|
return this.sumBy('kilometers');
|
|
18
10
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* @TODO Alex: TT-2089 replace with getter
|
|
22
|
-
*/
|
|
23
|
-
get workUsage() {
|
|
24
|
-
if (!this.length) {
|
|
25
|
-
return 0;
|
|
26
|
-
}
|
|
27
|
-
const workKilometers = this.items
|
|
28
|
-
.filter((logbook) => !logbook.isPersonal)
|
|
29
|
-
.reduce((sum, logbook) => sum + logbook.kilometers, 0);
|
|
30
|
-
return round(workKilometers / this.kilometers * 100, 2);
|
|
31
|
-
}
|
|
32
|
-
getWorkUsageByTank(isSole) {
|
|
33
|
-
const workKilometers = this.getClaimableLogbooks(isSole).items
|
|
34
|
-
.reduce((sum, logbook) => sum + logbook.kilometers, 0);
|
|
35
|
-
return round(workKilometers / this.kilometers * 100, 2);
|
|
11
|
+
getWorkUsage(vehicleClaim) {
|
|
12
|
+
return +(this.getClaimable(vehicleClaim).kilometers / this.kilometers * 100).toFixed(10);
|
|
36
13
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
getClaimable(vehicleClaim) {
|
|
15
|
+
if (!vehicleClaim) {
|
|
16
|
+
return this.filter((logbook) => !logbook.isPersonal);
|
|
17
|
+
}
|
|
41
18
|
return vehicleClaim.isSoleTank()
|
|
42
19
|
// sole tank may have multiple vehicle claims, so we need to filter by business.id
|
|
43
20
|
? this.filterBy('business.id', vehicleClaim.business.id)
|
|
@@ -47,8 +24,8 @@ export class VehicleLogbookCollection extends Collection {
|
|
|
47
24
|
/**
|
|
48
25
|
* get collection of logbooks with the biggest work usage for {@link BestVehicleLogbookCollection.periodDuration}
|
|
49
26
|
*/
|
|
50
|
-
getBest(
|
|
51
|
-
return BestVehicleLogbookCollection.fromLogbooks(this
|
|
27
|
+
getBest() {
|
|
28
|
+
return BestVehicleLogbookCollection.fromLogbooks(this);
|
|
52
29
|
}
|
|
53
30
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvdmVoaWNsZS92ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsVUFBMEI7SUFDdEU7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUEyQjtRQUN0QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQTJCO1FBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdEU7UUFFRCxPQUFPLFlBQVksQ0FBQyxVQUFVLEVBQUU7WUFDOUIsa0ZBQWtGO1lBQ2xGLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4RCwrRUFBK0U7WUFDL0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0wsT0FBTyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltLCBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIH0gZnJvbSAnLi9iZXN0LXZlaGljbGUtbG9nYm9vay5jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248VmVoaWNsZUxvZ2Jvb2s+IHtcbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0b3RhbCBraWxvbWV0ZXJzIHRyYXZlbGVkXG4gICAqL1xuICBnZXQga2lsb21ldGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN1bUJ5KCdraWxvbWV0ZXJzJyk7XG4gIH1cblxuICBnZXRXb3JrVXNhZ2UodmVoaWNsZUNsYWltPzogVmVoaWNsZUNsYWltKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKyh0aGlzLmdldENsYWltYWJsZSh2ZWhpY2xlQ2xhaW0pLmtpbG9tZXRlcnMgLyB0aGlzLmtpbG9tZXRlcnMgKiAxMDApLnRvRml4ZWQoMTApO1xuICB9XG5cbiAgZ2V0Q2xhaW1hYmxlKHZlaGljbGVDbGFpbT86IFZlaGljbGVDbGFpbSk6IHRoaXMge1xuICAgIGlmICghdmVoaWNsZUNsYWltKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiAhbG9nYm9vay5pc1BlcnNvbmFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVoaWNsZUNsYWltLmlzU29sZVRhbmsoKVxuICAgICAgLy8gc29sZSB0YW5rIG1heSBoYXZlIG11bHRpcGxlIHZlaGljbGUgY2xhaW1zLCBzbyB3ZSBuZWVkIHRvIGZpbHRlciBieSBidXNpbmVzcy5pZFxuICAgICAgPyB0aGlzLmZpbHRlckJ5KCdidXNpbmVzcy5pZCcsIHZlaGljbGVDbGFpbS5idXNpbmVzcy5pZClcbiAgICAgIC8vIHdvcmsgdGFuayBtYXkgaGF2ZSBvbmx5IG9uZSB2ZWhpY2xlIGNsYWltLCBzbyB3ZSBuZWVkIHRvIGZpbHRlciBieSB0YW5rIHR5cGVcbiAgICAgIDogdGhpcy5maWx0ZXJCeSgndGFua1R5cGUnLCBUYW5rVHlwZUVudW0uV09SSyk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGNvbGxlY3Rpb24gb2YgbG9nYm9va3Mgd2l0aCB0aGUgYmlnZ2VzdCB3b3JrIHVzYWdlIGZvciB7QGxpbmsgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5wZXJpb2REdXJhdGlvbn1cbiAgICovXG4gIGdldEJlc3QoKTogQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLmZyb21Mb2dib29rcyh0aGlzKTtcbiAgfVxufVxuIl19
|
|
@@ -2,7 +2,9 @@ export class FinancialYear {
|
|
|
2
2
|
static { this.weeksInYear = 52; }
|
|
3
3
|
static { this.monthsInYear = 12; }
|
|
4
4
|
static { this.startMonthIndex = 6; }
|
|
5
|
-
static
|
|
5
|
+
static get year() {
|
|
6
|
+
return +localStorage.getItem('financialYear');
|
|
7
|
+
}
|
|
6
8
|
constructor(date) {
|
|
7
9
|
this.yearStartDate = '-07-01';
|
|
8
10
|
this.yearEndDate = '-06-30';
|
|
@@ -52,4 +54,4 @@ export class FinancialYear {
|
|
|
52
54
|
return months;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXllYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL2ZpbmFuY2lhbC15ZWFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxhQUFhO2FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO2FBQ2pCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO2FBQ2xCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sS0FBSyxJQUFJO1FBQ2IsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQVFELFlBQVksSUFBa0I7UUFIdEIsa0JBQWEsR0FBRyxRQUFRLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxRQUFRLENBQUM7UUFHN0IsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUN6RTthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBZSxhQUFhLENBQUMsSUFBSTtRQUNoRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFVO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxVQUFrQjtRQUM3QixJQUFJLFVBQVUsSUFBSSxhQUFhLENBQUMsZUFBZSxFQUFFO1lBQy9DLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMxRDtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFVBQVUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVk7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixNQUFNLEdBQUcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFTLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDOUQsS0FBSyxNQUFNLENBQUMsR0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDL0UsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUMzQjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmluYW5jaWFsWWVhciB7XHJcbiAgc3RhdGljIHdlZWtzSW5ZZWFyID0gNTI7XHJcbiAgc3RhdGljIG1vbnRoc0luWWVhciA9IDEyO1xyXG4gIHN0YXRpYyBzdGFydE1vbnRoSW5kZXggPSA2O1xyXG4gIHN0YXRpYyBnZXQgeWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmluYW5jaWFsWWVhcicpO1xyXG4gIH1cclxuICB5ZWFyOiBudW1iZXI7XHJcbiAgc3RhcnREYXRlOiBEYXRlO1xyXG4gIGVuZERhdGU6IERhdGU7XHJcblxyXG4gIHByaXZhdGUgeWVhclN0YXJ0RGF0ZSA9ICctMDctMDEnO1xyXG4gIHByaXZhdGUgeWVhckVuZERhdGUgPSAnLTA2LTMwJztcclxuXHJcbiAgY29uc3RydWN0b3IoZGF0ZT86IERhdGV8bnVtYmVyKSB7XHJcbiAgICBpZiAoZGF0ZSkge1xyXG4gICAgICB0aGlzLnllYXIgPSBkYXRlIGluc3RhbmNlb2YgRGF0ZSA/IEZpbmFuY2lhbFllYXIudG9GaW5ZZWFyKGRhdGUpIDogZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMueWVhciA9IEZpbmFuY2lhbFllYXIueWVhciB8fCBGaW5hbmNpYWxZZWFyLnRvRmluWWVhcihuZXcgRGF0ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFN0YXJ0RGF0ZSh0aGlzLnllYXIpO1xyXG4gICAgdGhpcy5zZXRFbmREYXRlKHRoaXMueWVhcik7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNDdXJyZW50KHllYXI6IG51bWJlciA9IEZpbmFuY2lhbFllYXIueWVhcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEZpbmFuY2lhbFllYXIudG9GaW5ZZWFyKG5ldyBEYXRlKCkpID09PSB5ZWFyO1xyXG4gIH1cclxuXHJcbiAgaW5jbHVkZXMoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMueWVhciA9PT0gbmV3IEZpbmFuY2lhbFllYXIoZGF0ZSkueWVhcjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyB0b0ZpblllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgKGRhdGUuZ2V0TW9udGgoKSA+PSB0aGlzLnN0YXJ0TW9udGhJbmRleCA/IDEgOiAwKTtcclxuICB9XHJcblxyXG4gIGdldCBwcmV2RmluWWVhcigpOiBGaW5hbmNpYWxZZWFyIHtcclxuICAgIHJldHVybiBuZXcgRmluYW5jaWFsWWVhcihuZXcgRGF0ZShgJHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgLSAxfSR7dGhpcy55ZWFyU3RhcnREYXRlfWApKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBkYXRlIGJ5IGRlc2lyZWQgbW9udGhcclxuICAgKi9cclxuICBnZXRNb250aERhdGUobW9udGhJbmRleDogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICBpZiAobW9udGhJbmRleCA+PSBGaW5hbmNpYWxZZWFyLnN0YXJ0TW9udGhJbmRleCkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUoYCR7dGhpcy55ZWFyIC0gMX0tJHttb250aEluZGV4ICsgMX0tMDFgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShgJHt0aGlzLnllYXJ9LSR7bW9udGhJbmRleCArIDF9LTAxYCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXJ0RGF0ZSh5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc3RhcnREYXRlID0gbmV3IERhdGUoYCR7eWVhciAtIDF9JHt0aGlzLnllYXJTdGFydERhdGV9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEVuZERhdGUoeWVhcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmVuZERhdGUgPSBuZXcgRGF0ZShgJHt5ZWFyfSR7dGhpcy55ZWFyRW5kRGF0ZX1gKTtcclxuICB9XHJcblxyXG4gIGdldFBhc3RNb250aHMoKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgbW9udGhzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3Qgbm93OiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGNvbnN0IGVuZERhdGU6IERhdGUgPSB0aGlzLmVuZERhdGUgPCBub3cgPyB0aGlzLmVuZERhdGUgOiBub3c7XHJcbiAgICBmb3IgKGNvbnN0IGQ6IERhdGUgPSB0aGlzLnN0YXJ0RGF0ZTsgZCA8PSBlbmREYXRlOyBkLnNldE1vbnRoKGQuZ2V0TW9udGgoKSArIDEpKSB7XHJcbiAgICAgIG1vbnRocy5wdXNoKGQuZ2V0TW9udGgoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1vbnRocztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -8,13 +8,14 @@ export class VehicleLogbook extends VehicleLogbookBase {
|
|
|
8
8
|
return this.odometerEnd - this.odometerStart;
|
|
9
9
|
}
|
|
10
10
|
get tankType() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
switch (true) {
|
|
12
|
+
case !!this.business:
|
|
13
|
+
return TankTypeEnum.SOLE;
|
|
14
|
+
case this.isPersonal:
|
|
15
|
+
return TankTypeEnum.PERSONAL;
|
|
16
|
+
default:
|
|
17
|
+
return TankTypeEnum.WORK;
|
|
18
|
+
}
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
__decorate([
|
|
@@ -23,4 +24,4 @@ __decorate([
|
|
|
23
24
|
__decorate([
|
|
24
25
|
Type(() => SoleBusiness)
|
|
25
26
|
], VehicleLogbook.prototype, "business", void 0);
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy92ZWhpY2xlL3ZlaGljbGUtbG9nYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQU9wRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDbEIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssSUFBSSxDQUFDLFVBQVU7Z0JBQ2xCLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUMvQjtnQkFDRSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0NBQ0Y7QUFuQkM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDOzRDQUNOO0FBR1g7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO2dEQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVoaWNsZUxvZ2Jvb2sgYXMgVmVoaWNsZUxvZ2Jvb2tCYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3ZlaGljbGUvdmVoaWNsZS1sb2dib29rJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTb2xlQnVzaW5lc3MgfSBmcm9tICcuLi9zb2xlJztcbmltcG9ydCB7IFRhbmtUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RhbmstdHlwZS5lbnVtJztcblxuZXhwb3J0IGNsYXNzIFZlaGljbGVMb2dib29rIGV4dGVuZHMgVmVoaWNsZUxvZ2Jvb2tCYXNlIHtcbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgZGF0ZTogRGF0ZTtcblxuICBAVHlwZSgoKSA9PiBTb2xlQnVzaW5lc3MpXG4gIGJ1c2luZXNzOiBTb2xlQnVzaW5lc3M7XG5cbiAgZ2V0IGtpbG9tZXRlcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZG9tZXRlckVuZCAtIHRoaXMub2RvbWV0ZXJTdGFydDtcbiAgfVxuXG4gIGdldCB0YW5rVHlwZSgpOiBUYW5rVHlwZUVudW0ge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSAhIXRoaXMuYnVzaW5lc3M6XG4gICAgICAgIHJldHVybiBUYW5rVHlwZUVudW0uU09MRTtcbiAgICAgIGNhc2UgdGhpcy5pc1BlcnNvbmFsOlxuICAgICAgICByZXR1cm4gVGFua1R5cGVFbnVtLlBFUlNPTkFMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFRhbmtUeXBlRW51bS5XT1JLO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -15,9 +15,6 @@ export class VehicleClaimService extends RestService {
|
|
|
15
15
|
this.url = 'vehicle-claims';
|
|
16
16
|
this.roles = [UserRolesEnum.WORK_TANK, UserRolesEnum.SOLE_TANK];
|
|
17
17
|
}
|
|
18
|
-
listenEvents() {
|
|
19
|
-
this.listenVehicleClaimDetailsChanges();
|
|
20
|
-
}
|
|
21
18
|
add(model) {
|
|
22
19
|
return super.add(model).pipe(map((vehicleClaim) => {
|
|
23
20
|
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, vehicleClaim));
|
|
@@ -30,32 +27,16 @@ export class VehicleClaimService extends RestService {
|
|
|
30
27
|
return vehicleClaim;
|
|
31
28
|
}));
|
|
32
29
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Details changes may affect vehicle claims:
|
|
35
|
-
* when details method changed, all claims current values become 0
|
|
36
|
-
*/
|
|
37
|
-
listenVehicleClaimDetailsChanges() {
|
|
38
|
-
this.eventDispatcherService.on(AppEventTypeEnum.VEHICLE_CLAIM_DETAILS_UPDATED)
|
|
39
|
-
.subscribe(() => {
|
|
40
|
-
this.refreshCache();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
30
|
/**
|
|
44
31
|
* Update workUsage for all vehicle claims if logbook best period changed
|
|
45
32
|
* @TODO Vik: Best period move this and related logic to backend
|
|
46
33
|
*/
|
|
47
34
|
updateWorkUsage(bestLogbooks) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
// @TODO Vik (TT-2210): need batch endpoint for this update
|
|
53
|
-
// @TODO Alex (TT-2210): fix frontend when endpoint ready
|
|
54
|
-
const batch$ = this.cache.map((claim) => {
|
|
55
|
-
const claimToUpdate = plainToClass(VehicleClaim, Object.assign({}, claim, { workUsage: bestLogbooks.getWorkUsageByClaim(claim) }));
|
|
35
|
+
const batch$ = (this.cache ?? []).map((claim) => {
|
|
36
|
+
const claimToUpdate = plainToClass(VehicleClaim, Object.assign({}, claim, { workUsage: bestLogbooks.getWorkUsage(claim) }));
|
|
56
37
|
return this.update(claimToUpdate);
|
|
57
38
|
});
|
|
58
|
-
combineLatest(batch$)
|
|
39
|
+
return combineLatest(batch$);
|
|
59
40
|
}
|
|
60
41
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
61
42
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, providedIn: 'root' }); }
|
|
@@ -66,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
66
47
|
providedIn: 'root'
|
|
67
48
|
}]
|
|
68
49
|
}] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1jbGFpbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdmVoaWNsZS92ZWhpY2xlLWNsYWltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQU1sRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsV0FBMkM7SUFIcEY7O1FBSUUsZUFBVSxHQUF3QixZQUFZLENBQUM7UUFDL0MsUUFBRyxHQUFHLGdCQUFnQixDQUFDO1FBQ3ZCLFVBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBc0M1RDtJQXBDQyxHQUFHLENBQUMsS0FBbUI7UUFDckIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDMUIsR0FBRyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUV6RyxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFtQixFQUFFLGNBQXNCLEVBQUU7UUFDbEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFFekcsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsWUFBMEM7UUFDeEQsTUFBTSxNQUFNLEdBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFtQixFQUFFLEVBQUU7WUFDeEYsTUFBTSxhQUFhLEdBQWlCLFlBQVksQ0FDOUMsWUFBWSxFQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDMUUsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7K0dBeENVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWZWhpY2xlQ2xhaW0gYXMgVmVoaWNsZUNsYWltQmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy92ZWhpY2xlL3ZlaGljbGUtY2xhaW0nO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzdC9yZXN0LW9sZC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFVzZXJSb2xlc0VudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy91c2VyLXJvbGVzLmVudW0nO1xuaW1wb3J0IHsgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbGxlY3Rpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVmVoaWNsZUNsYWltU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFZlaGljbGVDbGFpbUJhc2UsIFZlaGljbGVDbGFpbT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgVmVoaWNsZUNsYWltID0gVmVoaWNsZUNsYWltO1xuICB1cmwgPSAndmVoaWNsZS1jbGFpbXMnO1xuICByb2xlcyA9IFtVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5TT0xFX1RBTktdO1xuXG4gIGFkZChtb2RlbDogVmVoaWNsZUNsYWltKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKG1vZGVsKS5waXBlKFxuICAgICAgbWFwKCh2ZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCB2ZWhpY2xlQ2xhaW0pKTtcblxuICAgICAgICByZXR1cm4gdmVoaWNsZUNsYWltO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlKG1vZGVsOiBWZWhpY2xlQ2xhaW0sIHF1ZXJ5UGFyYW1zOiBvYmplY3QgPSB7fSk6IE9ic2VydmFibGU8VmVoaWNsZUNsYWltPiB7XG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZShtb2RlbCwgcXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICBtYXAoKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX1VQREFURUQsIHZlaGljbGVDbGFpbSkpO1xuXG4gICAgICAgIHJldHVybiB2ZWhpY2xlQ2xhaW07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHdvcmtVc2FnZSBmb3IgYWxsIHZlaGljbGUgY2xhaW1zIGlmIGxvZ2Jvb2sgYmVzdCBwZXJpb2QgY2hhbmdlZFxuICAgKiBAVE9ETyBWaWs6IEJlc3QgcGVyaW9kIG1vdmUgdGhpcyBhbmQgcmVsYXRlZCBsb2dpYyB0byBiYWNrZW5kXG4gICAqL1xuICB1cGRhdGVXb3JrVXNhZ2UoYmVzdExvZ2Jvb2tzOiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW1bXT4ge1xuICAgIGNvbnN0IGJhdGNoJDogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+W10gPSAodGhpcy5jYWNoZSA/PyBbXSkubWFwKChjbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICBjb25zdCBjbGFpbVRvVXBkYXRlOiBWZWhpY2xlQ2xhaW0gPSBwbGFpblRvQ2xhc3MoXG4gICAgICAgIFZlaGljbGVDbGFpbSxcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgY2xhaW0sIHsgd29ya1VzYWdlOiBiZXN0TG9nYm9va3MuZ2V0V29ya1VzYWdlKGNsYWltKSB9KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKGNsYWltVG9VcGRhdGUpO1xuICAgIH0pXG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChiYXRjaCQpO1xuICB9XG59XG4iXX0=
|