taxtank-core 0.32.2 → 0.32.4

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.
@@ -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,18 +14,13 @@ 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, isSole = false) {
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 = this) {
23
+ static isBestPeriodExist(logbooks) {
30
24
  if (logbooks.length < 2) {
31
25
  return false;
32
26
  }
@@ -35,9 +29,32 @@ export class BestVehicleLogbookCollection extends VehicleLogbookCollection {
35
29
  }
36
30
  return BestVehicleLogbookCollection.periodDuration < (logbooks.last.date.getTime() - logbooks.first.date.getTime());
37
31
  }
38
- getWorkUsageByClaim(claim) {
39
- const claimKilometers = this.getByVehicleClaim(claim).getClaimableLogbooks(this.isSole).kilometers;
40
- return round(this.getWorkUsageByTank(this.isSole) * (claimKilometers / this.kilometers), 2);
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) => BestVehicleLogbookCollection.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
39
+ .map((logbook) => BestVehicleLogbookCollection.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(BestVehicleLogbookCollection.getPeriodByLogbook(claimable.last, true));
45
+ // }
46
+ return periods;
47
+ }
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() - BestVehicleLogbookCollection.periodDuration), logbook.date]);
56
+ }
57
+ return new DateRange([logbook.date, new Date(logbook.date.getTime() + BestVehicleLogbookCollection.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 = this.getPeriods(logbooks);
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.getWorkUsageByTank(this.isSole) < logbooksInPeriod.getWorkUsageByTank(this.isSole))) {
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
- // get list of date ranges for each of passed logbook
66
- getPeriods(logbooks) {
67
- const claimable = logbooks.getClaimableLogbooks(this.isSole);
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 (!BestVehicleLogbookCollection.isBestPeriodExist(logbooks)) {
84
+ return null;
88
85
  }
89
- return new DateRange([logbook.date, new Date(logbook.date.getTime() + BestVehicleLogbookCollection.periodDuration)]);
90
- }
91
- static fromLogbooks(logbooks, isSole = false) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVzdC12ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy92ZWhpY2xlL2Jlc3QtdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFHakM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDRCQUE2QixTQUFRLHdCQUF3QjtJQUN4RTs7O09BR0c7YUFDSSxtQkFBYyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7SUFPbEQ7OztPQUdHO0lBQ0gsWUFBb0IsUUFBa0MsRUFBVSxTQUFrQixLQUFLO1FBQ3JGLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQURvRCxXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUdyRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsQ0FBQyxXQUFxQyxJQUFJO1FBQ3pELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsWUFBWSx3QkFBd0IsQ0FBQyxFQUFFO1lBQ25ELFFBQVEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyw0QkFBNEIsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFtQjtRQUNyQyxNQUFNLGVBQWUsR0FBVyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUUzRyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSyxtQkFBbUIsQ0FBQyxRQUFrQztRQUM1RCwrREFBK0Q7UUFDL0QsTUFBTSxPQUFPLEdBQWdCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdkQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLGdCQUFnQixHQUE2QixRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUU5SCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7Z0JBQzdHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3pDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscURBQXFEO0lBQzdDLFVBQVUsQ0FBQyxRQUFrQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELCtEQUErRDtRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsU0FBUztZQUNwQyx3REFBd0Q7YUFDdkQsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUN2RyxHQUFHLENBQUMsQ0FBQyxPQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUd0RSw0RUFBNEU7UUFDNUUseURBQXlEO1FBQ3ZELHNEQUFzRDtRQUN0RCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSTtRQUVKLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssa0JBQWtCLENBQUMsT0FBdUIsRUFBRSxhQUFzQixLQUFLO1FBQzdFLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxJQUFJLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsNEJBQTRCLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDdEg7UUFFRCxPQUFPLElBQUksU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLDRCQUE0QixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2SCxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFrQyxFQUFFLFNBQWtCLEtBQUs7UUFDN0UsTUFBTSxVQUFVLEdBQUcsSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFdEUsT0FBTyxVQUFVLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWhpY2xlQ2xhaW0sIFZlaGljbGVMb2dib29rIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB9IGZyb20gJy4vdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnbW9tZW50LXJhbmdlJztcbmltcG9ydCByb3VuZCBmcm9tICdsb2Rhc2gvcm91bmQnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuXG4vKipcbiAqIFNwZWNpYWwgbG9nYm9vayBjb2xsZWN0aW9uIHRoYXQgY29udGFpbnMgbG9nYm9va3MgZnJvbSBkYXRlIHBlcmlvZCB3aXRoIHRoZSBoaWdoZXN0IHdvcmsgdXNhZ2UgcGVyY2VudFxuICogRG9jczogaHR0cHM6Ly90YXh0YW5rLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvVEFYVEFOSy9wYWdlcy8yMTE1MTc0NDEvTG9nYm9vaytWZWhpY2xlXG4gKi9cbmV4cG9ydCBjbGFzcyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIGV4dGVuZHMgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIHtcbiAgLyoqXG4gICAqIExvZ2Jvb2sgY2xhaW1hYmxlIHBlcmlvZCBkdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMuXG4gICAqIGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjExNTE3NDQxL0xvZ2Jvb2srVmVoaWNsZVxuICAgKi9cbiAgc3RhdGljIHBlcmlvZER1cmF0aW9uID0gMTIgKiA3ICogMjQgKiAzNjAwICogMTAwMDtcblxuICAvKipcbiAgICogRGF0ZSByYW5nZSB3aXRoIHRoZSBiaWdnZXN0IHdvcmsgdXNhZ2UgcGVyY2VudFxuICAgKi9cbiAgcGVyaW9kOiBEYXRlUmFuZ2U7XG5cbiAgLyoqXG4gICAqIGNvbnN0cnVjdG9yIGlzIHByaXZhdGUgYmVjYXVzZSB3ZSB3YW50IHRvIHByZXZlbnQgY29sbGVjdGlvbiBpbml0aWFsaXphdGlvbiB2aWEgJ25ldycgb3BlcmF0b3IuXG4gICAqIFdlIHNob3VsZCBjcmVhdGUgaW5zdGFuY2VzIG9ubHkgd2l0aCBmcm9tTG9nYm9va3MgbWV0aG9kXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24sIHByaXZhdGUgaXNTb2xlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBzdXBlcihbXSk7XG5cbiAgICBpZiAoIXRoaXMuaXNCZXN0UGVyaW9kRXhpc3QobG9nYm9va3MpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jYWxjdWxhdGVCZXN0UGVyaW9kKGxvZ2Jvb2tzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZXN0IHBlcmlvZCBtYXkgYmUgY2FsY3VsYXRlZCBvbmx5IHdoZW4gdXNlciBoYXMgbG9nYm9va3MgbWluaW11bSBmb3IgVmVoaWNsZUxvZ2Jvb2suYmVzdFBlcmlvZFdlZWtzXG4gICAqL1xuICBpc0Jlc3RQZXJpb2RFeGlzdChsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uID0gdGhpcyk6IGJvb2xlYW4ge1xuICAgIGlmIChsb2dib29rcy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEobG9nYm9va3MgaW5zdGFuY2VvZiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pKSB7XG4gICAgICBsb2dib29rcyA9IG5ldyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24obG9nYm9va3MpO1xuICAgIH1cblxuICAgIHJldHVybiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uIDwgKGxvZ2Jvb2tzLmxhc3QuZGF0ZS5nZXRUaW1lKCkgLSBsb2dib29rcy5maXJzdC5kYXRlLmdldFRpbWUoKSk7XG4gIH1cblxuICBnZXRXb3JrVXNhZ2VCeUNsYWltKGNsYWltOiBWZWhpY2xlQ2xhaW0pOiBudW1iZXIge1xuICAgIGNvbnN0IGNsYWltS2lsb21ldGVyczogbnVtYmVyID0gdGhpcy5nZXRCeVZlaGljbGVDbGFpbShjbGFpbSkuZ2V0Q2xhaW1hYmxlTG9nYm9va3ModGhpcy5pc1NvbGUpLmtpbG9tZXRlcnM7XG5cbiAgICByZXR1cm4gcm91bmQodGhpcy5nZXRXb3JrVXNhZ2VCeVRhbmsodGhpcy5pc1NvbGUpICogKGNsYWltS2lsb21ldGVycyAvIHRoaXMua2lsb21ldGVycyksIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBEYXRlIFJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBwZXJjZW50XG4gICAqIFJhbmdlIGR1cmF0aW9uIGlzIGRlZmluZWQgYXMgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5wZXJpb2REdXJhdGlvbiBieSB0aGUgQVRPXG4gICAqIFxuICAgKiBBbGdvcml0aG06XG4gICAqIENsYWltYWJsZSBsb2dib29rcyBvciBjbGFpbWFibGUgdHJpcHMgLSB3b3JrL2J1c2luZXNzIGxvZ2Jvb2sgaXRlbXMuXG4gICAqIFdlIHNob3VsZCB3b3JrIHdpdGggZGF0ZXMgZnJvbSB0aGUgZmlyc3QgdG8gdGhlIGxhc3QgdHJpcCAoaW5jbHVkZSBwZXJzb25hbCB0cmlwcykuXG4gICAqIEdldCBkYXRlIHJhbmdlcyBzdGFydHMgb24gZWFjaCBjbGFpbWFibGUgdHJpcCwgYWxsIG90aGVyIHJhbmdlcyBhcmUgZGVmaW5ldGlseSB3b3JzdC5cbiAgICogQWxzbyBnZXQgZXh0cmEgZGF0ZSByYW5nZSB3aGljaCBlbmRzIHdpdGggdGhlIGxhc3QgY2xhaW1hYmxlIHRyaXAuXG4gICAqIEdldCBhbGwgdHJpcHMgaW5jbHVkZWQgdG8gZWFjaCBkYXRlIHJhbmdlLlxuICAgKiBGaW5kIGFuZCByZXR1cm4gcmFuZ2Ugd2l0aCB0aGUgYmlnZ2VzdCB3b3JrVXNhZ2UgcGVyY2VudC5cbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlQmVzdFBlcmlvZChsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogdm9pZCB7XG4gICAgLy8gZ2V0IGEgbGlzdCBvZiBkYXRlIHJhbmdlcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIHRoZSBiZXN0XG4gICAgY29uc3QgcGVyaW9kczogRGF0ZVJhbmdlW10gPSB0aGlzLmdldFBlcmlvZHMobG9nYm9va3MpO1xuXG4gICAgcGVyaW9kcy5mb3JFYWNoKChwZXJpb2Q6IERhdGVSYW5nZSkgPT4ge1xuICAgICAgY29uc3QgbG9nYm9va3NJblBlcmlvZDogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uID0gbG9nYm9va3MuZmlsdGVyQnlSYW5nZSgnZGF0ZScsIHBlcmlvZC5zdGFydC50b0RhdGUoKSwgcGVyaW9kLmVuZC50b0RhdGUoKSk7XG5cbiAgICAgIGlmICghdGhpcy5wZXJpb2QgfHwgKHRoaXMuZ2V0V29ya1VzYWdlQnlUYW5rKHRoaXMuaXNTb2xlKSA8IGxvZ2Jvb2tzSW5QZXJpb2QuZ2V0V29ya1VzYWdlQnlUYW5rKHRoaXMuaXNTb2xlKSkpIHtcbiAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBsb2dib29rc0luUGVyaW9kLnRvQXJyYXkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGdldCBsaXN0IG9mIGRhdGUgcmFuZ2VzIGZvciBlYWNoIG9mIHBhc3NlZCBsb2dib29rXG4gIHByaXZhdGUgZ2V0UGVyaW9kcyhsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogRGF0ZVJhbmdlW10ge1xuICAgIGNvbnN0IGNsYWltYWJsZSA9IGxvZ2Jvb2tzLmdldENsYWltYWJsZUxvZ2Jvb2tzKHRoaXMuaXNTb2xlKTtcbiAgICAvLyBnZXQgYSBsaXN0IG9mIGRhdGUgcmFuZ2VzIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgdGhlIGJlc3RcbiAgICBjb25zdCBwZXJpb2RzOiBEYXRlUmFuZ2VbXSA9IGNsYWltYWJsZVxuICAgICAgLy8gc2tpcCBsb2dib29rcyB3aG9zZSByYW5nZSBlbmRzIGFmdGVyIHRoZSBsYXN0IGxvZ2Jvb2tcbiAgICAgIC5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiB0aGlzLmdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rKS5lbmQudG9EYXRlKCkgPCBsb2dib29rcy5sYXN0LmRhdGUpXG4gICAgICAubWFwKChsb2dib29rOiBWZWhpY2xlTG9nYm9vaykgPT4gdGhpcy5nZXRQZXJpb2RCeUxvZ2Jvb2sobG9nYm9vaykpO1xuXG5cbiAgICAvLyBza2lwIGlmIHRoZSBsYXN0IGxvZ2Jvb2sgYWxyZWFkeSBpbmNsdWRlZCB0byB0aGUgbGFzdCBleGlzdGluZyBkYXRlIHJhbmdlXG4gICAgLy8gaWYgKGxhc3QocGVyaW9kcykuZW5kLnRvRGF0ZSgpIDwgbG9nYm9va3MubGFzdC5kYXRlKSB7XG4gICAgICAvLyBhZGQgZXh0cmEgZGF0ZSByYW5nZSBmb3IgdGhlIGxhc3QgY2xhaW1hYmxlIGxvZ2Jvb2tcbiAgICAgIHBlcmlvZHMucHVzaCh0aGlzLmdldFBlcmlvZEJ5TG9nYm9vayhjbGFpbWFibGUubGFzdCwgdHJ1ZSkpO1xuICAgIC8vIH1cblxuICAgIHJldHVybiBwZXJpb2RzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjbGFpbWFibGUgZGF0ZSByYW5nZSBmb3IgcGFzc2VkIGxvZ2Jvb2tcbiAgICogQHBhcmFtIGxvZ2Jvb2sgbG9nYm9vayBpbnN0YW5jZSBmb3IgcmFuZ2UgY2FsY3VsYXRpb25cbiAgICogQHBhcmFtIGlzQmFja3dhcmQgRmxhZyBmYWxzZSAtIHJhbmdlIGZvciBsb2dib29rICsgZHVyYXRpb247IGZsYWcgdHJ1ZSAtIHJhbmdlIGZvciBsb2dib29rIC0gZHVyYXRpb24uIFVzZWQgZm9yIGV4dHJhIGNhc2UsIHdoZW4gd2Ugc2hvdWxkIGFkZCBhbiBleHRyYSBkYXRlIHJhbmdlIGZvciB0aGUgbGFzdCBsb2dib29rXG4gICAqL1xuICBwcml2YXRlIGdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgaXNCYWNrd2FyZDogYm9vbGVhbiA9IGZhbHNlKTogRGF0ZVJhbmdlIHtcbiAgICBpZiAoaXNCYWNrd2FyZCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2UoW25ldyBEYXRlKGxvZ2Jvb2suZGF0ZS5nZXRUaW1lKCkgLSBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uKSwgbG9nYm9vay5kYXRlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2UoW2xvZ2Jvb2suZGF0ZSwgbmV3IERhdGUobG9nYm9vay5kYXRlLmdldFRpbWUoKSArIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24ucGVyaW9kRHVyYXRpb24pXSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxvZ2Jvb2tzKGxvZ2Jvb2tzOiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24sIGlzU29sZTogYm9vbGVhbiA9IGZhbHNlKTogQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB8IG51bGwge1xuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbihsb2dib29rcywgaXNTb2xlKTtcblxuICAgIHJldHVybiBjb2xsZWN0aW9uLmlzQmVzdFBlcmlvZEV4aXN0KGxvZ2Jvb2tzKSA/IGNvbGxlY3Rpb24gOiBudWxsO1xuICB9XG59XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVzdC12ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9jb2xsZWN0aW9ucy92ZWhpY2xlL2Jlc3QtdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6Qzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsd0JBQXdCO0lBQ3hFOzs7T0FHRzthQUNJLG1CQUFjLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztJQU9sRDs7O09BR0c7SUFDSCxZQUFvQixRQUEwQjtRQUM1QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFFBQWtDO1FBQ3pELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxDQUFDLFFBQVEsWUFBWSx3QkFBd0IsQ0FBQyxFQUFFO1lBQ25ELFFBQVEsR0FBRyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsT0FBTyw0QkFBNEIsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3RILENBQUM7SUFFRCxxREFBcUQ7SUFDckQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFrQztRQUNsRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUMsK0RBQStEO1FBQy9ELE1BQU0sT0FBTyxHQUFnQixTQUFTO1lBQ3BDLHdEQUF3RDthQUN2RCxNQUFNLENBQUMsQ0FBQyxPQUF1QixFQUFFLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDL0gsR0FBRyxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsNEJBQTRCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUc5Riw0RUFBNEU7UUFDNUUseURBQXlEO1FBQ3pELHNEQUFzRDtRQUN0RCxZQUFZO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSTtRQUVKLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE9BQXVCLEVBQUUsVUFBVSxHQUFHLEtBQUs7UUFDbkUsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLElBQUksU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyw0QkFBNEIsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN0SDtRQUVELE9BQU8sSUFBSSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsNEJBQTRCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNLLG1CQUFtQixDQUFDLFFBQWtDO1FBQzVELCtEQUErRDtRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsNEJBQTRCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9FLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFpQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxnQkFBZ0IsR0FBNkIsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFOUgsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtnQkFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDekM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWtDO1FBQ3BELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4RSxVQUFVLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlaGljbGVMb2dib29rIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB9IGZyb20gJy4vdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnbW9tZW50LXJhbmdlJztcblxuLyoqXG4gKiBTcGVjaWFsIGxvZ2Jvb2sgY29sbGVjdGlvbiB0aGF0IGNvbnRhaW5zIGxvZ2Jvb2tzIGZyb20gZGF0ZSBwZXJpb2Qgd2l0aCB0aGUgaGlnaGVzdCB3b3JrIHVzYWdlIHBlcmNlbnRcbiAqIERvY3M6IGh0dHBzOi8vdGF4dGFuay5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1RBWFRBTksvcGFnZXMvMjExNTE3NDQxL0xvZ2Jvb2srVmVoaWNsZVxuICovXG5leHBvcnQgY2xhc3MgQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiBleHRlbmRzIFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB7XG4gIC8qKlxuICAgKiBMb2dib29rIGNsYWltYWJsZSBwZXJpb2QgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBodHRwczovL3RheHRhbmsuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9UQVhUQU5LL3BhZ2VzLzIxMTUxNzQ0MS9Mb2dib29rK1ZlaGljbGVcbiAgICovXG4gIHN0YXRpYyBwZXJpb2REdXJhdGlvbiA9IDEyICogNyAqIDI0ICogMzYwMCAqIDEwMDA7XG5cbiAgLyoqXG4gICAqIERhdGUgcmFuZ2Ugd2l0aCB0aGUgYmlnZ2VzdCB3b3JrIHVzYWdlIHBlcmNlbnRcbiAgICovXG4gIHBlcmlvZDogRGF0ZVJhbmdlO1xuXG4gIC8qKlxuICAgKiBjb25zdHJ1Y3RvciBpcyBwcml2YXRlIGJlY2F1c2Ugd2Ugd2FudCB0byBwcmV2ZW50IGNvbGxlY3Rpb24gaW5pdGlhbGl6YXRpb24gdmlhICduZXcnIG9wZXJhdG9yLlxuICAgKiBXZSBzaG91bGQgY3JlYXRlIGluc3RhbmNlcyBvbmx5IHdpdGggZnJvbUxvZ2Jvb2tzIG1ldGhvZFxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tbXSkge1xuICAgIHN1cGVyKGxvZ2Jvb2tzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZXN0IHBlcmlvZCBtYXkgYmUgY2FsY3VsYXRlZCBvbmx5IHdoZW4gdXNlciBoYXMgbG9nYm9va3MgbWluaW11bSBmb3IgVmVoaWNsZUxvZ2Jvb2suYmVzdFBlcmlvZFdlZWtzXG4gICAqL1xuICBzdGF0aWMgaXNCZXN0UGVyaW9kRXhpc3QobG9nYm9va3M6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChsb2dib29rcy5sZW5ndGggPCAyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCEobG9nYm9va3MgaW5zdGFuY2VvZiBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pKSB7XG4gICAgICBsb2dib29rcyA9IG5ldyBWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24obG9nYm9va3MpO1xuICAgIH1cblxuICAgIHJldHVybiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uIDwgKGxvZ2Jvb2tzLmxhc3QuZGF0ZS5nZXRUaW1lKCkgLSBsb2dib29rcy5maXJzdC5kYXRlLmdldFRpbWUoKSk7XG4gIH1cblxuICAvLyBnZXQgbGlzdCBvZiBkYXRlIHJhbmdlcyBmb3IgZWFjaCBvZiBwYXNzZWQgbG9nYm9va1xuICBzdGF0aWMgZ2V0UGVyaW9kcyhsb2dib29rczogVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uKTogRGF0ZVJhbmdlW10ge1xuICAgIGNvbnN0IGNsYWltYWJsZSA9IGxvZ2Jvb2tzLmdldENsYWltYWJsZSgpO1xuICAgIC8vIGdldCBhIGxpc3Qgb2YgZGF0ZSByYW5nZXMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBiZSB0aGUgYmVzdFxuICAgIGNvbnN0IHBlcmlvZHM6IERhdGVSYW5nZVtdID0gY2xhaW1hYmxlXG4gICAgICAvLyBza2lwIGxvZ2Jvb2tzIHdob3NlIHJhbmdlIGVuZHMgYWZ0ZXIgdGhlIGxhc3QgbG9nYm9va1xuICAgICAgLmZpbHRlcigobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2spID0+IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24uZ2V0UGVyaW9kQnlMb2dib29rKGxvZ2Jvb2spLmVuZC50b0RhdGUoKSA8IGxvZ2Jvb2tzLmxhc3QuZGF0ZSlcbiAgICAgIC5tYXAoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLmdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rKSk7XG5cblxuICAgIC8vIHNraXAgaWYgdGhlIGxhc3QgbG9nYm9vayBhbHJlYWR5IGluY2x1ZGVkIHRvIHRoZSBsYXN0IGV4aXN0aW5nIGRhdGUgcmFuZ2VcbiAgICAvLyBpZiAobGFzdChwZXJpb2RzKS5lbmQudG9EYXRlKCkgPCBsb2dib29rcy5sYXN0LmRhdGUpIHtcbiAgICAvLyBhZGQgZXh0cmEgZGF0ZSByYW5nZSBmb3IgdGhlIGxhc3QgY2xhaW1hYmxlIGxvZ2Jvb2tcbiAgICAvLyBAVE9ETyB2aWtcbiAgICBwZXJpb2RzLnB1c2goQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5nZXRQZXJpb2RCeUxvZ2Jvb2soY2xhaW1hYmxlLmxhc3QsIHRydWUpKTtcbiAgICAvLyB9XG5cbiAgICByZXR1cm4gcGVyaW9kcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2xhaW1hYmxlIGRhdGUgcmFuZ2UgZm9yIHBhc3NlZCBsb2dib29rXG4gICAqIEBwYXJhbSBsb2dib29rIGxvZ2Jvb2sgaW5zdGFuY2UgZm9yIHJhbmdlIGNhbGN1bGF0aW9uXG4gICAqIEBwYXJhbSBpc0JhY2t3YXJkIEZsYWcgZmFsc2UgLSByYW5nZSBmb3IgbG9nYm9vayArIGR1cmF0aW9uOyBmbGFnIHRydWUgLSByYW5nZSBmb3IgbG9nYm9vayAtIGR1cmF0aW9uLiBVc2VkIGZvciBleHRyYSBjYXNlLCB3aGVuIHdlIHNob3VsZCBhZGQgYW4gZXh0cmEgZGF0ZSByYW5nZSBmb3IgdGhlIGxhc3QgbG9nYm9va1xuICAgKi9cbiAgc3RhdGljIGdldFBlcmlvZEJ5TG9nYm9vayhsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgaXNCYWNrd2FyZCA9IGZhbHNlKTogRGF0ZVJhbmdlIHtcbiAgICBpZiAoaXNCYWNrd2FyZCkge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2UoW25ldyBEYXRlKGxvZ2Jvb2suZGF0ZS5nZXRUaW1lKCkgLSBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uKSwgbG9nYm9vay5kYXRlXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBEYXRlUmFuZ2UoW2xvZ2Jvb2suZGF0ZSwgbmV3IERhdGUobG9nYm9vay5kYXRlLmdldFRpbWUoKSArIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24ucGVyaW9kRHVyYXRpb24pXSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IERhdGUgUmFuZ2Ugd2l0aCB0aGUgYmlnZ2VzdCB3b3JrIHVzYWdlIHBlcmNlbnRcbiAgICogUmFuZ2UgZHVyYXRpb24gaXMgZGVmaW5lZCBhcyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9uIGJ5IHRoZSBBVE9cbiAgICpcbiAgICogQWxnb3JpdGhtOlxuICAgKiBDbGFpbWFibGUgbG9nYm9va3Mgb3IgY2xhaW1hYmxlIHRyaXBzIC0gd29yay9idXNpbmVzcyBsb2dib29rIGl0ZW1zLlxuICAgKiBXZSBzaG91bGQgd29yayB3aXRoIGRhdGVzIGZyb20gdGhlIGZpcnN0IHRvIHRoZSBsYXN0IHRyaXAgKGluY2x1ZGUgcGVyc29uYWwgdHJpcHMpLlxuICAgKiBHZXQgZGF0ZSByYW5nZXMgc3RhcnRzIG9uIGVhY2ggY2xhaW1hYmxlIHRyaXAsIGFsbCBvdGhlciByYW5nZXMgYXJlIGRlZmluZXRpbHkgd29yc3QuXG4gICAqIEFsc28gZ2V0IGV4dHJhIGRhdGUgcmFuZ2Ugd2hpY2ggZW5kcyB3aXRoIHRoZSBsYXN0IGNsYWltYWJsZSB0cmlwLlxuICAgKiBHZXQgYWxsIHRyaXBzIGluY2x1ZGVkIHRvIGVhY2ggZGF0ZSByYW5nZS5cbiAgICogRmluZCBhbmQgcmV0dXJuIHJhbmdlIHdpdGggdGhlIGJpZ2dlc3Qgd29ya1VzYWdlIHBlcmNlbnQuXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZUJlc3RQZXJpb2QobG9nYm9va3M6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbik6IHZvaWQge1xuICAgIC8vIGdldCBhIGxpc3Qgb2YgZGF0ZSByYW5nZXMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBiZSB0aGUgYmVzdFxuICAgIGNvbnN0IHBlcmlvZHM6IERhdGVSYW5nZVtdID0gQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbi5nZXRQZXJpb2RzKGxvZ2Jvb2tzKTtcblxuICAgIHBlcmlvZHMuZm9yRWFjaCgocGVyaW9kOiBEYXRlUmFuZ2UpID0+IHtcbiAgICAgIGNvbnN0IGxvZ2Jvb2tzSW5QZXJpb2Q6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiA9IGxvZ2Jvb2tzLmZpbHRlckJ5UmFuZ2UoJ2RhdGUnLCBwZXJpb2Quc3RhcnQudG9EYXRlKCksIHBlcmlvZC5lbmQudG9EYXRlKCkpO1xuXG4gICAgICBpZiAoIXRoaXMucGVyaW9kIHx8ICh0aGlzLmdldFdvcmtVc2FnZSgpIDwgbG9nYm9va3NJblBlcmlvZC5nZXRXb3JrVXNhZ2UoKSkpIHtcbiAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBsb2dib29rc0luUGVyaW9kLnRvQXJyYXkoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTG9nYm9va3MobG9nYm9va3M6IFZlaGljbGVMb2dib29rQ29sbGVjdGlvbik6IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gfCBudWxsIHtcbiAgICBpZiAoIUJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24uaXNCZXN0UGVyaW9kRXhpc3QobG9nYm9va3MpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24obG9nYm9va3MudG9BcnJheSgpKTtcbiAgICBjb2xsZWN0aW9uLmNhbGN1bGF0ZUJlc3RQZXJpb2QobG9nYm9va3MpO1xuXG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH1cbn1cbiJdfQ==
@@ -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
- * Calculate work usage (percent of business-related kilometers from total kilometers)
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;
36
13
  }
37
- /**
38
- * Get list of logbooks related to passed vehicle claim
39
- */
40
- getByVehicleClaim(vehicleClaim) {
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(isSole = false) {
51
- return BestVehicleLogbookCollection.fromLogbooks(this, isSole);
27
+ getBest() {
28
+ return BestVehicleLogbookCollection.fromLogbooks(this);
52
29
  }
53
30
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvdmVoaWNsZS92ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssTUFBTSxjQUFjLENBQUM7QUFDakMsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFakYsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFVBQTBCO0lBQ3RFOzs7T0FHRztJQUNILG9CQUFvQixDQUFDLFNBQWtCLEtBQUs7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakksQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDOUIsTUFBTSxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2FBQ3hELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXpELE9BQU8sS0FBSyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBZTtRQUNoQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSzthQUMzRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV6RCxPQUFPLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsWUFBMEI7UUFDMUMsT0FBTyxZQUFZLENBQUMsVUFBVSxFQUFFO1lBQzlCLGtGQUFrRjtZQUNsRixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDeEQsK0VBQStFO1lBQy9FLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLFNBQWtCLEtBQUs7UUFDN0IsT0FBTyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tICcuLi9jb2xsZWN0aW9uJztcbmltcG9ydCB7IFZlaGljbGVDbGFpbSwgVmVoaWNsZUxvZ2Jvb2sgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFua1R5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvdGFuay10eXBlLmVudW0nO1xuaW1wb3J0IHJvdW5kIGZyb20gJ2xvZGFzaC9yb3VuZCc7XG5pbXBvcnQgeyBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIH0gZnJvbSAnLi9iZXN0LXZlaGljbGUtbG9nYm9vay5jb2xsZWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiBleHRlbmRzIENvbGxlY3Rpb248VmVoaWNsZUxvZ2Jvb2s+IHtcbiAgLyoqXG4gICAqIEdldCBjb2xsZWN0aW9uIG9mIG5vbi1wZXJzb25hbCBsb2dib29rcyAod29yay1yZWxhdGVkLCBzb2xlLXJlbGF0ZWQpLlxuICAgKiBAVE9ETyBWaWs6IEJlc3QgcGVyaW9kOiBtb3ZlIHRoaXMgYW5kIHJlbGF0ZWQgbG9naWMgdG8gYmFja2VuZFxuICAgKi9cbiAgZ2V0Q2xhaW1hYmxlTG9nYm9va3MoaXNTb2xlOiBib29sZWFuID0gZmFsc2UpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiAhbG9nYm9vay5pc1BlcnNvbmFsICYmIChpc1NvbGUgPyBsb2dib29rLmlzU29sZVRhbmsoKSA6IGxvZ2Jvb2suaXNXb3JrVGFuaygpKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIHRvdGFsIGtpbG9tZXRlcnMgdHJhdmVsZWRcbiAgICovXG4gIGdldCBraWxvbWV0ZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3VtQnkoJ2tpbG9tZXRlcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgd29yayB1c2FnZSAocGVyY2VudCBvZiBidXNpbmVzcy1yZWxhdGVkIGtpbG9tZXRlcnMgZnJvbSB0b3RhbCBraWxvbWV0ZXJzKVxuICAgKiBAVE9ETyBBbGV4OiBUVC0yMDg5IHJlcGxhY2Ugd2l0aCBnZXR0ZXJcbiAgICovXG4gIGdldCB3b3JrVXNhZ2UoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrS2lsb21ldGVycyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rKSA9PiAhbG9nYm9vay5pc1BlcnNvbmFsKVxuICAgICAgLnJlZHVjZSgoc3VtLCBsb2dib29rKSA9PiBzdW0gKyBsb2dib29rLmtpbG9tZXRlcnMsIDApO1xuXG4gICAgcmV0dXJuIHJvdW5kKHdvcmtLaWxvbWV0ZXJzIC8gdGhpcy5raWxvbWV0ZXJzICogMTAwLCAyKTtcbiAgfVxuXG4gIGdldFdvcmtVc2FnZUJ5VGFuayhpc1NvbGU6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGNvbnN0IHdvcmtLaWxvbWV0ZXJzID0gdGhpcy5nZXRDbGFpbWFibGVMb2dib29rcyhpc1NvbGUpLml0ZW1zXG4gICAgICAucmVkdWNlKChzdW0sIGxvZ2Jvb2spID0+IHN1bSArIGxvZ2Jvb2sua2lsb21ldGVycywgMCk7XG5cbiAgICByZXR1cm4gcm91bmQod29ya0tpbG9tZXRlcnMgLyB0aGlzLmtpbG9tZXRlcnMgKiAxMDAsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsaXN0IG9mIGxvZ2Jvb2tzIHJlbGF0ZWQgdG8gcGFzc2VkIHZlaGljbGUgY2xhaW1cbiAgICovXG4gIGdldEJ5VmVoaWNsZUNsYWltKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKTogdGhpcyB7XG4gICAgcmV0dXJuIHZlaGljbGVDbGFpbS5pc1NvbGVUYW5rKClcbiAgICAgIC8vIHNvbGUgdGFuayBtYXkgaGF2ZSBtdWx0aXBsZSB2ZWhpY2xlIGNsYWltcywgc28gd2UgbmVlZCB0byBmaWx0ZXIgYnkgYnVzaW5lc3MuaWRcbiAgICAgID8gdGhpcy5maWx0ZXJCeSgnYnVzaW5lc3MuaWQnLCB2ZWhpY2xlQ2xhaW0uYnVzaW5lc3MuaWQpXG4gICAgICAvLyB3b3JrIHRhbmsgbWF5IGhhdmUgb25seSBvbmUgdmVoaWNsZSBjbGFpbSwgc28gd2UgbmVlZCB0byBmaWx0ZXIgYnkgdGFuayB0eXBlXG4gICAgICA6IHRoaXMuZmlsdGVyQnkoJ3RhbmtUeXBlJywgVGFua1R5cGVFbnVtLldPUkspO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBjb2xsZWN0aW9uIG9mIGxvZ2Jvb2tzIHdpdGggdGhlIGJpZ2dlc3Qgd29yayB1c2FnZSBmb3Ige0BsaW5rIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24ucGVyaW9kRHVyYXRpb259XG4gICAqL1xuICBnZXRCZXN0KGlzU29sZTogYm9vbGVhbiA9IGZhbHNlKTogQmVzdFZlaGljbGVMb2dib29rQ29sbGVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLmZyb21Mb2dib29rcyh0aGlzLCBpc1NvbGUpO1xuICB9XG59XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvY29sbGVjdGlvbnMvdmVoaWNsZS92ZWhpY2xlLWxvZ2Jvb2suY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsVUFBMEI7SUFDdEU7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUEyQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzVFLENBQUM7SUFFRCxZQUFZLENBQUMsWUFBMkI7UUFDdEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sWUFBWSxDQUFDLFVBQVUsRUFBRTtZQUM5QixrRkFBa0Y7WUFDbEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hELCtFQUErRTtZQUMvRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBWZWhpY2xlQ2xhaW0sIFZlaGljbGVMb2dib29rIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhbmtUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RhbmstdHlwZS5lbnVtJztcbmltcG9ydCB7IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gfSBmcm9tICcuL2Jlc3QtdmVoaWNsZS1sb2dib29rLmNvbGxlY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIGV4dGVuZHMgQ29sbGVjdGlvbjxWZWhpY2xlTG9nYm9vaz4ge1xuICAvKipcbiAgICogQ2FsY3VsYXRlIHRvdGFsIGtpbG9tZXRlcnMgdHJhdmVsZWRcbiAgICovXG4gIGdldCBraWxvbWV0ZXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3VtQnkoJ2tpbG9tZXRlcnMnKTtcbiAgfVxuXG4gIGdldFdvcmtVc2FnZSh2ZWhpY2xlQ2xhaW0/OiBWZWhpY2xlQ2xhaW0pOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldENsYWltYWJsZSh2ZWhpY2xlQ2xhaW0pLmtpbG9tZXRlcnMgLyB0aGlzLmtpbG9tZXRlcnMgKiAxMDA7XG4gIH1cblxuICBnZXRDbGFpbWFibGUodmVoaWNsZUNsYWltPzogVmVoaWNsZUNsYWltKTogdGhpcyB7XG4gICAgaWYgKCF2ZWhpY2xlQ2xhaW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcigobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2spID0+ICFsb2dib29rLmlzUGVyc29uYWwpO1xuICAgIH1cblxuICAgIHJldHVybiB2ZWhpY2xlQ2xhaW0uaXNTb2xlVGFuaygpXG4gICAgICAvLyBzb2xlIHRhbmsgbWF5IGhhdmUgbXVsdGlwbGUgdmVoaWNsZSBjbGFpbXMsIHNvIHdlIG5lZWQgdG8gZmlsdGVyIGJ5IGJ1c2luZXNzLmlkXG4gICAgICA/IHRoaXMuZmlsdGVyQnkoJ2J1c2luZXNzLmlkJywgdmVoaWNsZUNsYWltLmJ1c2luZXNzLmlkKVxuICAgICAgLy8gd29yayB0YW5rIG1heSBoYXZlIG9ubHkgb25lIHZlaGljbGUgY2xhaW0sIHNvIHdlIG5lZWQgdG8gZmlsdGVyIGJ5IHRhbmsgdHlwZVxuICAgICAgOiB0aGlzLmZpbHRlckJ5KCd0YW5rVHlwZScsIFRhbmtUeXBlRW51bS5XT1JLKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgY29sbGVjdGlvbiBvZiBsb2dib29rcyB3aXRoIHRoZSBiaWdnZXN0IHdvcmsgdXNhZ2UgZm9yIHtAbGluayBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uLnBlcmlvZER1cmF0aW9ufVxuICAgKi9cbiAgZ2V0QmVzdCgpOiBCZXN0VmVoaWNsZUxvZ2Jvb2tDb2xsZWN0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24uZnJvbUxvZ2Jvb2tzKHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -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 { this.year = +localStorage.getItem('financialYear'); }
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluYW5jaWFsLXllYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL2ZpbmFuY2lhbC15ZWFyL2ZpbmFuY2lhbC15ZWFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxhQUFhO2FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO2FBQ2pCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO2FBQ2xCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCLFNBQUksR0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFRN0QsWUFBWSxJQUFrQjtRQUh0QixrQkFBYSxHQUFHLFFBQVEsQ0FBQztRQUN6QixnQkFBVyxHQUFHLFFBQVEsQ0FBQztRQUc3QixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3pFO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7U0FDdkU7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFlLGFBQWEsQ0FBQyxJQUFJO1FBQ2hELE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCxRQUFRLENBQUMsSUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVU7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLFVBQWtCO1FBQzdCLElBQUksVUFBVSxJQUFJLGFBQWEsQ0FBQyxlQUFlLEVBQUU7WUFDL0MsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBWTtRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0IsTUFBTSxPQUFPLEdBQVMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM5RCxLQUFLLE1BQU0sQ0FBQyxHQUFTLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMvRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBGaW5hbmNpYWxZZWFyIHtcclxuICBzdGF0aWMgd2Vla3NJblllYXIgPSA1MjtcclxuICBzdGF0aWMgbW9udGhzSW5ZZWFyID0gMTI7XHJcbiAgc3RhdGljIHN0YXJ0TW9udGhJbmRleCA9IDY7XHJcbiAgc3RhdGljIHllYXI6IG51bWJlciA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZmluYW5jaWFsWWVhcicpO1xyXG4gIHllYXI6IG51bWJlcjtcclxuICBzdGFydERhdGU6IERhdGU7XHJcbiAgZW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgcHJpdmF0ZSB5ZWFyU3RhcnREYXRlID0gJy0wNy0wMSc7XHJcbiAgcHJpdmF0ZSB5ZWFyRW5kRGF0ZSA9ICctMDYtMzAnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihkYXRlPzogRGF0ZXxudW1iZXIpIHtcclxuICAgIGlmIChkYXRlKSB7XHJcbiAgICAgIHRoaXMueWVhciA9IGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gRmluYW5jaWFsWWVhci50b0ZpblllYXIoZGF0ZSkgOiBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy55ZWFyID0gRmluYW5jaWFsWWVhci55ZWFyIHx8IEZpbmFuY2lhbFllYXIudG9GaW5ZZWFyKG5ldyBEYXRlKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0U3RhcnREYXRlKHRoaXMueWVhcik7XHJcbiAgICB0aGlzLnNldEVuZERhdGUodGhpcy55ZWFyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc0N1cnJlbnQoeWVhcjogbnVtYmVyID0gRmluYW5jaWFsWWVhci55ZWFyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gRmluYW5jaWFsWWVhci50b0ZpblllYXIobmV3IERhdGUoKSkgPT09IHllYXI7XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlcyhkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy55ZWFyID09PSBuZXcgRmluYW5jaWFsWWVhcihkYXRlKS55ZWFyO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRvRmluWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgKyAoZGF0ZS5nZXRNb250aCgpID49IHRoaXMuc3RhcnRNb250aEluZGV4ID8gMSA6IDApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHByZXZGaW5ZZWFyKCk6IEZpbmFuY2lhbFllYXIge1xyXG4gICAgcmV0dXJuIG5ldyBGaW5hbmNpYWxZZWFyKG5ldyBEYXRlKGAke25ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDF9JHt0aGlzLnllYXJTdGFydERhdGV9YCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRhdGUgYnkgZGVzaXJlZCBtb250aFxyXG4gICAqL1xyXG4gIGdldE1vbnRoRGF0ZShtb250aEluZGV4OiBudW1iZXIpOiBEYXRlIHtcclxuICAgIGlmIChtb250aEluZGV4ID49IEZpbmFuY2lhbFllYXIuc3RhcnRNb250aEluZGV4KSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShgJHt0aGlzLnllYXIgLSAxfS0ke21vbnRoSW5kZXggKyAxfS0wMWApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGAke3RoaXMueWVhcn0tJHttb250aEluZGV4ICsgMX0tMDFgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0U3RhcnREYXRlKHllYXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zdGFydERhdGUgPSBuZXcgRGF0ZShgJHt5ZWFyIC0gMX0ke3RoaXMueWVhclN0YXJ0RGF0ZX1gKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RW5kRGF0ZSh5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKGAke3llYXJ9JHt0aGlzLnllYXJFbmREYXRlfWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFzdE1vbnRocygpOiBudW1iZXJbXSB7XHJcbiAgICBjb25zdCBtb250aHM6IG51bWJlcltdID0gW107XHJcbiAgICBjb25zdCBub3c6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgY29uc3QgZW5kRGF0ZTogRGF0ZSA9IHRoaXMuZW5kRGF0ZSA8IG5vdyA/IHRoaXMuZW5kRGF0ZSA6IG5vdztcclxuICAgIGZvciAoY29uc3QgZDogRGF0ZSA9IHRoaXMuc3RhcnREYXRlOyBkIDw9IGVuZERhdGU7IGQuc2V0TW9udGgoZC5nZXRNb250aCgpICsgMSkpIHtcclxuICAgICAgbW9udGhzLnB1c2goZC5nZXRNb250aCgpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbW9udGhzO1xyXG4gIH1cclxufVxyXG4iXX0=
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
- return this.isSoleTank() ? TankTypeEnum.SOLE : TankTypeEnum.WORK;
12
- }
13
- isWorkTank() {
14
- return !this.business;
15
- }
16
- isSoleTank() {
17
- return !!this.business;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy92ZWhpY2xlL3ZlaGljbGUtbG9nYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQU9wRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDbkUsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBcEJHO0lBREQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQzs0Q0FDSjtBQUdYO0lBREQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztnREFDQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZlaGljbGVMb2dib29rIGFzIFZlaGljbGVMb2dib29rQmFzZSB9IGZyb20gJy4uLy4uL2RiL01vZGVscy92ZWhpY2xlL3ZlaGljbGUtbG9nYm9vayc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU29sZUJ1c2luZXNzIH0gZnJvbSAnLi4vc29sZSc7XG5pbXBvcnQgeyBUYW5rVHlwZUVudW0gfSBmcm9tICcuLi8uLi9kYi9FbnVtcy90YW5rLXR5cGUuZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBWZWhpY2xlTG9nYm9vayBleHRlbmRzIFZlaGljbGVMb2dib29rQmFzZSB7XG4gIEBUeXBlKCgpID0+IERhdGUpXG4gICAgZGF0ZTogRGF0ZTtcblxuICBAVHlwZSgoKSA9PiBTb2xlQnVzaW5lc3MpXG4gICAgYnVzaW5lc3M6IFNvbGVCdXNpbmVzcztcblxuICBnZXQga2lsb21ldGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9kb21ldGVyRW5kIC0gdGhpcy5vZG9tZXRlclN0YXJ0O1xuICB9XG5cbiAgZ2V0IHRhbmtUeXBlKCk6IFRhbmtUeXBlRW51bSB7XG4gICAgcmV0dXJuIHRoaXMuaXNTb2xlVGFuaygpID8gVGFua1R5cGVFbnVtLlNPTEUgOiBUYW5rVHlwZUVudW0uV09SSztcbiAgfVxuXG4gIGlzV29ya1RhbmsoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmJ1c2luZXNzO1xuICB9XG5cbiAgaXNTb2xlVGFuaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmJ1c2luZXNzO1xuICB9XG59XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1sb2dib29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL21vZGVscy92ZWhpY2xlL3ZlaGljbGUtbG9nYm9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsSUFBSSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9GLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU3RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGtCQUFrQjtJQU9wRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDbEIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQzNCLEtBQUssSUFBSSxDQUFDLFVBQVU7Z0JBQ2xCLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUMvQjtnQkFDRSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7U0FDNUI7SUFDSCxDQUFDO0NBQ0Y7QUFuQkM7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDOzRDQUNOO0FBR1g7SUFEQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDO2dEQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVoaWNsZUxvZ2Jvb2sgYXMgVmVoaWNsZUxvZ2Jvb2tCYXNlIH0gZnJvbSAnLi4vLi4vZGIvTW9kZWxzL3ZlaGljbGUvdmVoaWNsZS1sb2dib29rJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTb2xlQnVzaW5lc3MgfSBmcm9tICcuLi9zb2xlJztcbmltcG9ydCB7IFRhbmtUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL3RhbmstdHlwZS5lbnVtJztcblxuZXhwb3J0IGNsYXNzIFZlaGljbGVMb2dib29rIGV4dGVuZHMgVmVoaWNsZUxvZ2Jvb2tCYXNlIHtcbiAgQFR5cGUoKCkgPT4gRGF0ZSlcbiAgZGF0ZTogRGF0ZTtcblxuICBAVHlwZSgoKSA9PiBTb2xlQnVzaW5lc3MpXG4gIGJ1c2luZXNzOiBTb2xlQnVzaW5lc3M7XG5cbiAgZ2V0IGtpbG9tZXRlcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vZG9tZXRlckVuZCAtIHRoaXMub2RvbWV0ZXJTdGFydDtcbiAgfVxuXG4gIGdldCB0YW5rVHlwZSgpOiBUYW5rVHlwZUVudW0ge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSAhIXRoaXMuYnVzaW5lc3M6XG4gICAgICAgIHJldHVybiBUYW5rVHlwZUVudW0uU09MRTtcbiAgICAgIGNhc2UgdGhpcy5pc1BlcnNvbmFsOlxuICAgICAgICByZXR1cm4gVGFua1R5cGVFbnVtLlBFUlNPTkFMO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFRhbmtUeXBlRW51bS5XT1JLO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -2,10 +2,8 @@ import { Injectable } from '@angular/core';
2
2
  import { VehicleClaim } from '../../../models';
3
3
  import { RestService } from '../rest/rest-old.service';
4
4
  import { AppEventTypeEnum } from '../../../models';
5
- import { combineLatest } from 'rxjs';
6
5
  import { map } from 'rxjs/operators';
7
6
  import { AppEvent } from '../../../models';
8
- import { plainToClass } from 'class-transformer';
9
7
  import { UserRolesEnum } from '../../../db/Enums/user-roles.enum';
10
8
  import * as i0 from "@angular/core";
11
9
  export class VehicleClaimService extends RestService {
@@ -40,23 +38,6 @@ export class VehicleClaimService extends RestService {
40
38
  this.refreshCache();
41
39
  });
42
40
  }
43
- /**
44
- * Update workUsage for all vehicle claims if logbook best period changed
45
- * @TODO Vik: Best period move this and related logic to backend
46
- */
47
- updateWorkUsage(bestLogbooks) {
48
- // no need to update if cache not exist
49
- if (!this.cache) {
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) }));
56
- return this.update(claimToUpdate);
57
- });
58
- combineLatest(batch$).subscribe();
59
- }
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' }); }
62
43
  }
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1jbGFpbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdmVoaWNsZS92ZWhpY2xlLWNsYWltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRW5ELE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQU1sRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsV0FBMkM7SUFIcEY7O1FBSUUsZUFBVSxHQUF3QixZQUFZLENBQUM7UUFDL0MsUUFBRyxHQUFHLGdCQUFnQixDQUFDO1FBQ3ZCLFVBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBNEQ1RDtJQTFEQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFtQjtRQUNyQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBRXpHLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQW1CLEVBQUUsY0FBc0IsRUFBRTtRQUNsRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUV6RyxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdDQUFnQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLDZCQUE2QixDQUFDO2FBQzNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZUFBZSxDQUFDLFlBQTBDO1FBQ2hFLHVDQUF1QztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELDJEQUEyRDtRQUMzRCx5REFBeUQ7UUFDekQsTUFBTSxNQUFNLEdBQStCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBbUIsRUFBRSxFQUFFO1lBQ2hGLE1BQU0sYUFBYSxHQUFpQixZQUFZLENBQzlDLFlBQVksRUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FDL0UsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQTtRQUVGLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwQyxDQUFDOytHQTlEVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltIGFzIFZlaGljbGVDbGFpbUJhc2UgfSBmcm9tICcuLi8uLi8uLi9kYi9Nb2RlbHMvdmVoaWNsZS92ZWhpY2xlLWNsYWltJztcbmltcG9ydCB7IFZlaGljbGVDbGFpbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uL3Jlc3QvcmVzdC1vbGQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBVc2VyUm9sZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMvdXNlci1yb2xlcy5lbnVtJztcbmltcG9ydCB7IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb2xsZWN0aW9ucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFZlaGljbGVDbGFpbVNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxWZWhpY2xlQ2xhaW1CYXNlLCBWZWhpY2xlQ2xhaW0+IGltcGxlbWVudHMgSUV2ZW50TGlzdGVuZXIge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgVmVoaWNsZUNsYWltID0gVmVoaWNsZUNsYWltO1xuICB1cmwgPSAndmVoaWNsZS1jbGFpbXMnO1xuICByb2xlcyA9IFtVc2VyUm9sZXNFbnVtLldPUktfVEFOSywgVXNlclJvbGVzRW51bS5TT0xFX1RBTktdO1xuXG4gIGxpc3RlbkV2ZW50cygpIHtcbiAgICB0aGlzLmxpc3RlblZlaGljbGVDbGFpbURldGFpbHNDaGFuZ2VzKCk7XG4gIH1cblxuICBhZGQobW9kZWw6IFZlaGljbGVDbGFpbSk6IE9ic2VydmFibGU8VmVoaWNsZUNsYWltPiB7XG4gICAgcmV0dXJuIHN1cGVyLmFkZChtb2RlbCkucGlwZShcbiAgICAgIG1hcCgodmVoaWNsZUNsYWltOiBWZWhpY2xlQ2xhaW0pID0+IHtcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fQ1JFQVRFRCwgdmVoaWNsZUNsYWltKSk7XG5cbiAgICAgICAgcmV0dXJuIHZlaGljbGVDbGFpbTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHVwZGF0ZShtb2RlbDogVmVoaWNsZUNsYWltLCBxdWVyeVBhcmFtczogb2JqZWN0ID0ge30pOiBPYnNlcnZhYmxlPFZlaGljbGVDbGFpbT4ge1xuICAgIHJldHVybiBzdXBlci51cGRhdGUobW9kZWwsIHF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgbWFwKCh2ZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9VUERBVEVELCB2ZWhpY2xlQ2xhaW0pKTtcblxuICAgICAgICByZXR1cm4gdmVoaWNsZUNsYWltO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGFpbHMgY2hhbmdlcyBtYXkgYWZmZWN0IHZlaGljbGUgY2xhaW1zOlxuICAgKiB3aGVuIGRldGFpbHMgbWV0aG9kIGNoYW5nZWQsIGFsbCBjbGFpbXMgY3VycmVudCB2YWx1ZXMgYmVjb21lIDBcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVmVoaWNsZUNsYWltRGV0YWlsc0NoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9ERVRBSUxTX1VQREFURUQpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQ2FjaGUoKTtcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHdvcmtVc2FnZSBmb3IgYWxsIHZlaGljbGUgY2xhaW1zIGlmIGxvZ2Jvb2sgYmVzdCBwZXJpb2QgY2hhbmdlZFxuICAgKiBAVE9ETyBWaWs6IEJlc3QgcGVyaW9kIG1vdmUgdGhpcyBhbmQgcmVsYXRlZCBsb2dpYyB0byBiYWNrZW5kXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVdvcmtVc2FnZShiZXN0TG9nYm9va3M6IEJlc3RWZWhpY2xlTG9nYm9va0NvbGxlY3Rpb24pOiB2b2lkIHtcbiAgICAvLyBubyBuZWVkIHRvIHVwZGF0ZSBpZiBjYWNoZSBub3QgZXhpc3RcbiAgICBpZiAoIXRoaXMuY2FjaGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBAVE9ETyBWaWsgKFRULTIyMTApOiBuZWVkIGJhdGNoIGVuZHBvaW50IGZvciB0aGlzIHVwZGF0ZVxuICAgIC8vIEBUT0RPIEFsZXggKFRULTIyMTApOiBmaXggZnJvbnRlbmQgd2hlbiBlbmRwb2ludCByZWFkeVxuICAgIGNvbnN0IGJhdGNoJDogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+W10gPSB0aGlzLmNhY2hlLm1hcCgoY2xhaW06IFZlaGljbGVDbGFpbSkgPT4ge1xuICAgICAgY29uc3QgY2xhaW1Ub1VwZGF0ZTogVmVoaWNsZUNsYWltID0gcGxhaW5Ub0NsYXNzKFxuICAgICAgICBWZWhpY2xlQ2xhaW0sXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIGNsYWltLCB7d29ya1VzYWdlOiBiZXN0TG9nYm9va3MuZ2V0V29ya1VzYWdlQnlDbGFpbShjbGFpbSl9KVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKGNsYWltVG9VcGRhdGUpO1xuICAgIH0pXG5cbiAgICBjb21iaW5lTGF0ZXN0KGJhdGNoJCkuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVoaWNsZS1jbGFpbS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdmVoaWNsZS92ZWhpY2xlLWNsYWltLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQUtsRSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsV0FBMkM7SUFIcEY7O1FBSUUsZUFBVSxHQUF3QixZQUFZLENBQUM7UUFDL0MsUUFBRyxHQUFHLGdCQUFnQixDQUFDO1FBQ3ZCLFVBQUssR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBb0M1RDtJQWxDQyxZQUFZO1FBQ1YsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFtQjtRQUNyQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBRXpHLE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQW1CLEVBQUUsY0FBc0IsRUFBRTtRQUNsRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUV6RyxPQUFPLFlBQVksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdDQUFnQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLDZCQUE2QixDQUFDO2FBQzNFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOytHQXRDVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltIGFzIFZlaGljbGVDbGFpbUJhc2UgfSBmcm9tICcuLi8uLi8uLi9kYi9Nb2RlbHMvdmVoaWNsZS92ZWhpY2xlLWNsYWltJztcbmltcG9ydCB7IFZlaGljbGVDbGFpbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uL3Jlc3QvcmVzdC1vbGQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IElFdmVudExpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBVc2VyUm9sZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMvdXNlci1yb2xlcy5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVmVoaWNsZUNsYWltU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFZlaGljbGVDbGFpbUJhc2UsIFZlaGljbGVDbGFpbT4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIG1vZGVsQ2xhc3M6IHR5cGVvZiBWZWhpY2xlQ2xhaW0gPSBWZWhpY2xlQ2xhaW07XG4gIHVybCA9ICd2ZWhpY2xlLWNsYWltcyc7XG4gIHJvbGVzID0gW1VzZXJSb2xlc0VudW0uV09SS19UQU5LLCBVc2VyUm9sZXNFbnVtLlNPTEVfVEFOS107XG5cbiAgbGlzdGVuRXZlbnRzKCkge1xuICAgIHRoaXMubGlzdGVuVmVoaWNsZUNsYWltRGV0YWlsc0NoYW5nZXMoKTtcbiAgfVxuXG4gIGFkZChtb2RlbDogVmVoaWNsZUNsYWltKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+IHtcbiAgICByZXR1cm4gc3VwZXIuYWRkKG1vZGVsKS5waXBlKFxuICAgICAgbWFwKCh2ZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCB2ZWhpY2xlQ2xhaW0pKTtcblxuICAgICAgICByZXR1cm4gdmVoaWNsZUNsYWltO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdXBkYXRlKG1vZGVsOiBWZWhpY2xlQ2xhaW0sIHF1ZXJ5UGFyYW1zOiBvYmplY3QgPSB7fSk6IE9ic2VydmFibGU8VmVoaWNsZUNsYWltPiB7XG4gICAgcmV0dXJuIHN1cGVyLnVwZGF0ZShtb2RlbCwgcXVlcnlQYXJhbXMpLnBpcGUoXG4gICAgICBtYXAoKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX1VQREFURUQsIHZlaGljbGVDbGFpbSkpO1xuXG4gICAgICAgIHJldHVybiB2ZWhpY2xlQ2xhaW07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGV0YWlscyBjaGFuZ2VzIG1heSBhZmZlY3QgdmVoaWNsZSBjbGFpbXM6XG4gICAqIHdoZW4gZGV0YWlscyBtZXRob2QgY2hhbmdlZCwgYWxsIGNsYWltcyBjdXJyZW50IHZhbHVlcyBiZWNvbWUgMFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5WZWhpY2xlQ2xhaW1EZXRhaWxzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX0RFVEFJTFNfVVBEQVRFRClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hDYWNoZSgpO1xuICAgICAgfSlcbiAgfVxufVxuIl19
@@ -1554,7 +1554,9 @@ class FinancialYear {
1554
1554
  static { this.weeksInYear = 52; }
1555
1555
  static { this.monthsInYear = 12; }
1556
1556
  static { this.startMonthIndex = 6; }
1557
- static { this.year = +localStorage.getItem('financialYear'); }
1557
+ static get year() {
1558
+ return +localStorage.getItem('financialYear');
1559
+ }
1558
1560
  constructor(date) {
1559
1561
  this.yearStartDate = '-07-01';
1560
1562
  this.yearEndDate = '-06-30';
@@ -4930,13 +4932,14 @@ class VehicleLogbook extends VehicleLogbook$1 {
4930
4932
  return this.odometerEnd - this.odometerStart;
4931
4933
  }
4932
4934
  get tankType() {
4933
- return this.isSoleTank() ? TankTypeEnum.SOLE : TankTypeEnum.WORK;
4934
- }
4935
- isWorkTank() {
4936
- return !this.business;
4937
- }
4938
- isSoleTank() {
4939
- return !!this.business;
4935
+ switch (true) {
4936
+ case !!this.business:
4937
+ return TankTypeEnum.SOLE;
4938
+ case this.isPersonal:
4939
+ return TankTypeEnum.PERSONAL;
4940
+ default:
4941
+ return TankTypeEnum.WORK;
4942
+ }
4940
4943
  }
4941
4944
  }
4942
4945
  __decorate([
@@ -8492,41 +8495,19 @@ class ReportItemCollection extends Collection {
8492
8495
  }
8493
8496
 
8494
8497
  class VehicleLogbookCollection extends Collection {
8495
- /**
8496
- * Get collection of non-personal logbooks (work-related, sole-related).
8497
- * @TODO Vik: Best period: move this and related logic to backend
8498
- */
8499
- getClaimableLogbooks(isSole = false) {
8500
- return this.filter((logbook) => !logbook.isPersonal && (isSole ? logbook.isSoleTank() : logbook.isWorkTank()));
8501
- }
8502
8498
  /**
8503
8499
  * Calculate total kilometers traveled
8504
8500
  */
8505
8501
  get kilometers() {
8506
8502
  return this.sumBy('kilometers');
8507
8503
  }
8508
- /**
8509
- * Calculate work usage (percent of business-related kilometers from total kilometers)
8510
- * @TODO Alex: TT-2089 replace with getter
8511
- */
8512
- get workUsage() {
8513
- if (!this.length) {
8514
- return 0;
8515
- }
8516
- const workKilometers = this.items
8517
- .filter((logbook) => !logbook.isPersonal)
8518
- .reduce((sum, logbook) => sum + logbook.kilometers, 0);
8519
- return round(workKilometers / this.kilometers * 100, 2);
8520
- }
8521
- getWorkUsageByTank(isSole) {
8522
- const workKilometers = this.getClaimableLogbooks(isSole).items
8523
- .reduce((sum, logbook) => sum + logbook.kilometers, 0);
8524
- return round(workKilometers / this.kilometers * 100, 2);
8504
+ getWorkUsage(vehicleClaim) {
8505
+ return this.getClaimable(vehicleClaim).kilometers / this.kilometers * 100;
8525
8506
  }
8526
- /**
8527
- * Get list of logbooks related to passed vehicle claim
8528
- */
8529
- getByVehicleClaim(vehicleClaim) {
8507
+ getClaimable(vehicleClaim) {
8508
+ if (!vehicleClaim) {
8509
+ return this.filter((logbook) => !logbook.isPersonal);
8510
+ }
8530
8511
  return vehicleClaim.isSoleTank()
8531
8512
  // sole tank may have multiple vehicle claims, so we need to filter by business.id
8532
8513
  ? this.filterBy('business.id', vehicleClaim.business.id)
@@ -8536,8 +8517,8 @@ class VehicleLogbookCollection extends Collection {
8536
8517
  /**
8537
8518
  * get collection of logbooks with the biggest work usage for {@link BestVehicleLogbookCollection.periodDuration}
8538
8519
  */
8539
- getBest(isSole = false) {
8540
- return BestVehicleLogbookCollection.fromLogbooks(this, isSole);
8520
+ getBest() {
8521
+ return BestVehicleLogbookCollection.fromLogbooks(this);
8541
8522
  }
8542
8523
  }
8543
8524
 
@@ -8555,18 +8536,13 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
8555
8536
  * constructor is private because we want to prevent collection initialization via 'new' operator.
8556
8537
  * We should create instances only with fromLogbooks method
8557
8538
  */
8558
- constructor(logbooks, isSole = false) {
8559
- super([]);
8560
- this.isSole = isSole;
8561
- if (!this.isBestPeriodExist(logbooks)) {
8562
- return;
8563
- }
8564
- this.calculateBestPeriod(logbooks);
8539
+ constructor(logbooks) {
8540
+ super(logbooks);
8565
8541
  }
8566
8542
  /**
8567
8543
  * Best period may be calculated only when user has logbooks minimum for VehicleLogbook.bestPeriodWeeks
8568
8544
  */
8569
- isBestPeriodExist(logbooks = this) {
8545
+ static isBestPeriodExist(logbooks) {
8570
8546
  if (logbooks.length < 2) {
8571
8547
  return false;
8572
8548
  }
@@ -8575,9 +8551,32 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
8575
8551
  }
8576
8552
  return BestVehicleLogbookCollection.periodDuration < (logbooks.last.date.getTime() - logbooks.first.date.getTime());
8577
8553
  }
8578
- getWorkUsageByClaim(claim) {
8579
- const claimKilometers = this.getByVehicleClaim(claim).getClaimableLogbooks(this.isSole).kilometers;
8580
- return round(this.getWorkUsageByTank(this.isSole) * (claimKilometers / this.kilometers), 2);
8554
+ // get list of date ranges for each of passed logbook
8555
+ static getPeriods(logbooks) {
8556
+ const claimable = logbooks.getClaimable();
8557
+ // get a list of date ranges that could potentially be the best
8558
+ const periods = claimable
8559
+ // skip logbooks whose range ends after the last logbook
8560
+ .filter((logbook) => BestVehicleLogbookCollection.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
8561
+ .map((logbook) => BestVehicleLogbookCollection.getPeriodByLogbook(logbook));
8562
+ // skip if the last logbook already included to the last existing date range
8563
+ // if (last(periods).end.toDate() < logbooks.last.date) {
8564
+ // add extra date range for the last claimable logbook
8565
+ // @TODO vik
8566
+ periods.push(BestVehicleLogbookCollection.getPeriodByLogbook(claimable.last, true));
8567
+ // }
8568
+ return periods;
8569
+ }
8570
+ /**
8571
+ * Get claimable date range for passed logbook
8572
+ * @param logbook logbook instance for range calculation
8573
+ * @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
8574
+ */
8575
+ static getPeriodByLogbook(logbook, isBackward = false) {
8576
+ if (isBackward) {
8577
+ return new DateRange([new Date(logbook.date.getTime() - BestVehicleLogbookCollection.periodDuration), logbook.date]);
8578
+ }
8579
+ return new DateRange([logbook.date, new Date(logbook.date.getTime() + BestVehicleLogbookCollection.periodDuration)]);
8581
8580
  }
8582
8581
  /**
8583
8582
  * Set Date Range with the biggest work usage percent
@@ -8593,44 +8592,22 @@ class BestVehicleLogbookCollection extends VehicleLogbookCollection {
8593
8592
  */
8594
8593
  calculateBestPeriod(logbooks) {
8595
8594
  // get a list of date ranges that could potentially be the best
8596
- const periods = this.getPeriods(logbooks);
8595
+ const periods = BestVehicleLogbookCollection.getPeriods(logbooks);
8597
8596
  periods.forEach((period) => {
8598
8597
  const logbooksInPeriod = logbooks.filterByRange('date', period.start.toDate(), period.end.toDate());
8599
- if (!this.period || (this.getWorkUsageByTank(this.isSole) < logbooksInPeriod.getWorkUsageByTank(this.isSole))) {
8598
+ if (!this.period || (this.getWorkUsage() < logbooksInPeriod.getWorkUsage())) {
8600
8599
  this.period = period;
8601
8600
  this.items = logbooksInPeriod.toArray();
8602
8601
  }
8603
8602
  });
8604
8603
  }
8605
- // get list of date ranges for each of passed logbook
8606
- getPeriods(logbooks) {
8607
- const claimable = logbooks.getClaimableLogbooks(this.isSole);
8608
- // get a list of date ranges that could potentially be the best
8609
- const periods = claimable
8610
- // skip logbooks whose range ends after the last logbook
8611
- .filter((logbook) => this.getPeriodByLogbook(logbook).end.toDate() < logbooks.last.date)
8612
- .map((logbook) => this.getPeriodByLogbook(logbook));
8613
- // skip if the last logbook already included to the last existing date range
8614
- // if (last(periods).end.toDate() < logbooks.last.date) {
8615
- // add extra date range for the last claimable logbook
8616
- periods.push(this.getPeriodByLogbook(claimable.last, true));
8617
- // }
8618
- return periods;
8619
- }
8620
- /**
8621
- * Get claimable date range for passed logbook
8622
- * @param logbook logbook instance for range calculation
8623
- * @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
8624
- */
8625
- getPeriodByLogbook(logbook, isBackward = false) {
8626
- if (isBackward) {
8627
- return new DateRange([new Date(logbook.date.getTime() - BestVehicleLogbookCollection.periodDuration), logbook.date]);
8604
+ static fromLogbooks(logbooks) {
8605
+ if (!BestVehicleLogbookCollection.isBestPeriodExist(logbooks)) {
8606
+ return null;
8628
8607
  }
8629
- return new DateRange([logbook.date, new Date(logbook.date.getTime() + BestVehicleLogbookCollection.periodDuration)]);
8630
- }
8631
- static fromLogbooks(logbooks, isSole = false) {
8632
- const collection = new BestVehicleLogbookCollection(logbooks, isSole);
8633
- return collection.isBestPeriodExist(logbooks) ? collection : null;
8608
+ const collection = new BestVehicleLogbookCollection(logbooks.toArray());
8609
+ collection.calculateBestPeriod(logbooks);
8610
+ return collection;
8634
8611
  }
8635
8612
  }
8636
8613
 
@@ -15284,23 +15261,6 @@ class VehicleClaimService extends RestService {
15284
15261
  this.refreshCache();
15285
15262
  });
15286
15263
  }
15287
- /**
15288
- * Update workUsage for all vehicle claims if logbook best period changed
15289
- * @TODO Vik: Best period move this and related logic to backend
15290
- */
15291
- updateWorkUsage(bestLogbooks) {
15292
- // no need to update if cache not exist
15293
- if (!this.cache) {
15294
- return;
15295
- }
15296
- // @TODO Vik (TT-2210): need batch endpoint for this update
15297
- // @TODO Alex (TT-2210): fix frontend when endpoint ready
15298
- const batch$ = this.cache.map((claim) => {
15299
- const claimToUpdate = plainToClass(VehicleClaim, Object.assign({}, claim, { workUsage: bestLogbooks.getWorkUsageByClaim(claim) }));
15300
- return this.update(claimToUpdate);
15301
- });
15302
- combineLatest(batch$).subscribe();
15303
- }
15304
15264
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
15305
15265
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: VehicleClaimService, providedIn: 'root' }); }
15306
15266
  }