@sumaris-net/ngx-components 18.3.8 → 18.3.9
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/doc/changelog.md +6 -0
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +9 -8
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +16 -9
- package/fesm2022/sumaris-net.ngx-components.mjs +22 -14
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +5 -3
- package/src/app/shared/pipes/duration.pipe.d.ts +13 -3
- package/src/assets/manifest.json +1 -1
package/doc/changelog.md
CHANGED
|
@@ -1038,3 +1038,9 @@ enh: Environment: add useHash property to configure Angular router to use hash U
|
|
|
1038
1038
|
|
|
1039
1039
|
# 12.3.0
|
|
1040
1040
|
- fix(entity-editor) Fix page reload, when changing tab after the first save
|
|
1041
|
+
|
|
1042
|
+
# 12.3.9
|
|
1043
|
+
- fix(image-gallery) add a padding at bottom, for ios
|
|
1044
|
+
- enh(android) Upgrade compileSdkVersion to API 34 (required by the Google Play Store)
|
|
1045
|
+
- enh(theme) Add css class 'visible-xxs'
|
|
1046
|
+
- enh(dateDiffDuration) Add an option `opts.unit` to convert into a particular unit. If not defined, result will be like `x days HH:MM`
|
|
@@ -6,26 +6,27 @@ import * as i1 from "@angular/material/core";
|
|
|
6
6
|
import * as i2 from "@ngx-translate/core";
|
|
7
7
|
export class DateDiffDurationPipe {
|
|
8
8
|
dateAdapter;
|
|
9
|
-
translate;
|
|
10
9
|
dayUnit;
|
|
11
10
|
constructor(dateAdapter, translate) {
|
|
12
11
|
this.dateAdapter = dateAdapter;
|
|
13
|
-
this.translate = translate;
|
|
14
12
|
this.dayUnit = translate.instant('COMMON.DAY_UNIT');
|
|
15
13
|
translate.get('COMMON.DAY_UNIT').subscribe((dayUnit) => (this.dayUnit = dayUnit));
|
|
16
14
|
}
|
|
17
|
-
transform(value,
|
|
15
|
+
transform(value, opts) {
|
|
18
16
|
if (!value.startValue || !value.endValue)
|
|
19
17
|
return '';
|
|
20
18
|
const startDate = this.dateAdapter.parse(value.startValue, DATE_ISO_PATTERN);
|
|
21
19
|
const endDate = this.dateAdapter.parse(value.endValue, DATE_ISO_PATTERN);
|
|
22
|
-
return this.format(startDate, endDate,
|
|
20
|
+
return this.format(startDate, endDate, opts);
|
|
23
21
|
}
|
|
24
|
-
format(startDate, endDate,
|
|
22
|
+
format(startDate, endDate, opts) {
|
|
25
23
|
const duration = DateUtils.moment.duration(endDate.diff(startDate));
|
|
26
|
-
|
|
24
|
+
// Convert to the expected unit, if any
|
|
25
|
+
if (opts?.unit)
|
|
26
|
+
return '' + duration.as(opts.unit);
|
|
27
|
+
const withSeconds = opts?.seconds;
|
|
28
|
+
if (!withSeconds && duration.asMinutes() < 0)
|
|
27
29
|
return '';
|
|
28
|
-
const withSeconds = args?.seconds;
|
|
29
30
|
const timeDuration = DateUtils.moment(0).hour(duration.hours()).minute(duration.minutes());
|
|
30
31
|
if (withSeconds) {
|
|
31
32
|
timeDuration.second(duration.seconds());
|
|
@@ -46,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
46
47
|
type: Injectable,
|
|
47
48
|
args: [{ providedIn: 'root' }]
|
|
48
49
|
}], ctorParameters: () => [{ type: i1.DateAdapter }, { type: i2.TranslateService }] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kaWZmLWR1cmF0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9waXBlcy9kYXRlLWRpZmYtZHVyYXRpb24ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7QUFPckMsTUFBTSxPQUFPLG9CQUFvQjtJQUlyQjtJQUhBLE9BQU8sQ0FBUztJQUUxQixZQUNVLFdBQWdDLEVBQ3hDLFNBQTJCO1FBRG5CLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUd4QyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsU0FBUyxDQUNQLEtBQWlFLEVBQ2pFLElBQW1EO1FBRW5ELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDN0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXpFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBaUIsRUFBRSxPQUFlLEVBQUUsSUFBa0Q7UUFDM0YsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBRXBFLHVDQUF1QztRQUN2QyxJQUFJLElBQUksRUFBRSxJQUFJO1lBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsTUFBTSxXQUFXLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFeEQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUgsQ0FBQzt3R0F2Q1Usb0JBQW9CO3NHQUFwQixvQkFBb0I7NEdBQXBCLG9CQUFvQixjQURQLE1BQU07OzRGQUNuQixvQkFBb0I7a0JBSmhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGtCQUFrQjtpQkFDekI7O2tCQUNBLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBEQVRFX0lTT19QQVRURVJOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IERhdGVVdGlscyB9IGZyb20gJy4uL2RhdGVzJztcbmltcG9ydCB7IHVuaXRPZlRpbWUgfSBmcm9tICdtb21lbnQvbW9tZW50JztcblxuQFBpcGUoe1xuICBuYW1lOiAnZGF0ZURpZmZEdXJhdGlvbicsXG59KVxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEYXRlRGlmZkR1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgZGF5VW5pdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZUFkYXB0ZXI6IERhdGVBZGFwdGVyPE1vbWVudD4sXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZGF5VW5pdCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFZX1VOSVQnKTtcbiAgICB0cmFuc2xhdGUuZ2V0KCdDT01NT04uREFZX1VOSVQnKS5zdWJzY3JpYmUoKGRheVVuaXQpID0+ICh0aGlzLmRheVVuaXQgPSBkYXlVbml0KSk7XG4gIH1cblxuICB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IHsgc3RhcnRWYWx1ZTogc3RyaW5nIHwgTW9tZW50OyBlbmRWYWx1ZTogc3RyaW5nIHwgTW9tZW50IH0sXG4gICAgb3B0cz86IHsgc2Vjb25kcz86IGJvb2xlYW47IHVuaXQ6IHVuaXRPZlRpbWUuQmFzZSB9XG4gICk6IHN0cmluZyB8IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCF2YWx1ZS5zdGFydFZhbHVlIHx8ICF2YWx1ZS5lbmRWYWx1ZSkgcmV0dXJuICcnO1xuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZS5zdGFydFZhbHVlLCBEQVRFX0lTT19QQVRURVJOKTtcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5kYXRlQWRhcHRlci5wYXJzZSh2YWx1ZS5lbmRWYWx1ZSwgREFURV9JU09fUEFUVEVSTik7XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXQoc3RhcnREYXRlLCBlbmREYXRlLCBvcHRzKTtcbiAgfVxuXG4gIGZvcm1hdChzdGFydERhdGU6IE1vbWVudCwgZW5kRGF0ZTogTW9tZW50LCBvcHRzOiB7IHNlY29uZHM/OiBib29sZWFuOyB1bml0OiB1bml0T2ZUaW1lLkJhc2UgfSk6IHN0cmluZyB7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50LmR1cmF0aW9uKGVuZERhdGUuZGlmZihzdGFydERhdGUpKTtcblxuICAgIC8vIENvbnZlcnQgdG8gdGhlIGV4cGVjdGVkIHVuaXQsIGlmIGFueVxuICAgIGlmIChvcHRzPy51bml0KSByZXR1cm4gJycgKyBkdXJhdGlvbi5hcyhvcHRzLnVuaXQpO1xuXG4gICAgY29uc3Qgd2l0aFNlY29uZHMgPSBvcHRzPy5zZWNvbmRzO1xuICAgIGlmICghd2l0aFNlY29uZHMgJiYgZHVyYXRpb24uYXNNaW51dGVzKCkgPCAwKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCB0aW1lRHVyYXRpb24gPSBEYXRlVXRpbHMubW9tZW50KDApLmhvdXIoZHVyYXRpb24uaG91cnMoKSkubWludXRlKGR1cmF0aW9uLm1pbnV0ZXMoKSk7XG4gICAgaWYgKHdpdGhTZWNvbmRzKSB7XG4gICAgICB0aW1lRHVyYXRpb24uc2Vjb25kKGR1cmF0aW9uLnNlY29uZHMoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5cyA9IE1hdGguZmxvb3IoZHVyYXRpb24uYXNEYXlzKCkpO1xuICAgIHJldHVybiAoZGF5cyA+IDAgPyBkYXlzLnRvU3RyaW5nKCkgKyAodGhpcy5kYXlVbml0ICsgJyAnKSA6ICcnKSArIHRpbWVEdXJhdGlvbi5mb3JtYXQod2l0aFNlY29uZHMgPyAnSEg6bW06c3MnIDogJ0hIOm1tJyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Injectable, Pipe } from '@angular/core';
|
|
2
2
|
import { toDuration } from '../dates';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@ngx-translate/core";
|
|
5
5
|
export class DurationPipe {
|
|
6
|
-
translate;
|
|
7
6
|
dayUnit;
|
|
8
7
|
constructor(translate) {
|
|
9
|
-
this.translate = translate;
|
|
10
8
|
this.dayUnit = translate.instant('COMMON.DAY_UNIT');
|
|
11
9
|
}
|
|
12
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Format a diff between two dates.
|
|
12
|
+
*
|
|
13
|
+
* @param value
|
|
14
|
+
* @param opts
|
|
15
|
+
* @param opts.unit allow to convert into a particular unit. If not defined, result will be like `x days HH:MM`
|
|
16
|
+
* @param opts.seconds Should display or ignore the seconds ?
|
|
17
|
+
**/
|
|
18
|
+
transform(value, opts) {
|
|
13
19
|
if (!value)
|
|
14
20
|
return '';
|
|
15
|
-
const unit =
|
|
21
|
+
const unit = opts?.unit || opts || 'hours';
|
|
16
22
|
// try with moment
|
|
17
23
|
const duration = toDuration(value, unit);
|
|
18
24
|
const days = duration.days();
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
|
|
25
|
+
const hours = duration.hours().toString().padStart(2, '0');
|
|
26
|
+
const minutes = duration.minutes().toString().padStart(2, '0');
|
|
27
|
+
const seconds = opts?.seconds ? duration.seconds().toString().padStart(2, '0') : null;
|
|
28
|
+
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hours + ':' + minutes + (seconds ? ':' + seconds : '');
|
|
22
29
|
}
|
|
23
30
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
24
31
|
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, name: "duration" });
|
|
@@ -33,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
33
40
|
type: Injectable,
|
|
34
41
|
args: [{ providedIn: 'root' }]
|
|
35
42
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3BpcGVzL2R1cmF0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7OztBQVF0QyxNQUFNLE9BQU8sWUFBWTtJQUNiLE9BQU8sQ0FBUztJQUUxQixZQUFZLFNBQTJCO1FBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7OztRQU9JO0lBQ0osU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUEwRztRQUNqSSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxHQUFtQyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxPQUFPLENBQUM7UUFFM0Usa0JBQWtCO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFdEYsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzSCxDQUFDO3dHQTVCVSxZQUFZO3NHQUFaLFlBQVk7NEdBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxVQUFVO2lCQUNqQjs7a0JBQ0EsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b0R1cmF0aW9uIH0gZnJvbSAnLi4vZGF0ZXMnO1xuaW1wb3J0IHsgdW5pdE9mVGltZSB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2R1cmF0aW9uJyxcbn0pXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIER1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgZGF5VW5pdDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMuZGF5VW5pdCA9IHRyYW5zbGF0ZS5pbnN0YW50KCdDT01NT04uREFZX1VOSVQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgYSBkaWZmIGJldHdlZW4gdHdvIGRhdGVzLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICogQHBhcmFtIG9wdHNcbiAgICogQHBhcmFtIG9wdHMudW5pdCBhbGxvdyB0byBjb252ZXJ0IGludG8gYSBwYXJ0aWN1bGFyIHVuaXQuIElmIG5vdCBkZWZpbmVkLCByZXN1bHQgd2lsbCBiZSBsaWtlIGB4IGRheXMgSEg6TU1gXG4gICAqIEBwYXJhbSBvcHRzLnNlY29uZHMgU2hvdWxkIGRpc3BsYXkgb3IgaWdub3JlIHRoZSBzZWNvbmRzID9cbiAgICoqL1xuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciwgb3B0cz86IHVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3RvciB8IHsgdW5pdD86IHVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3Rvcjsgc2Vjb25kcz86IGJvb2xlYW4gfSB8IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHVuaXQ6IHVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3RvciA9IG9wdHM/LnVuaXQgfHwgb3B0cyB8fCAnaG91cnMnO1xuXG4gICAgLy8gdHJ5IHdpdGggbW9tZW50XG4gICAgY29uc3QgZHVyYXRpb24gPSB0b0R1cmF0aW9uKHZhbHVlLCB1bml0KTtcblxuICAgIGNvbnN0IGRheXMgPSBkdXJhdGlvbi5kYXlzKCk7XG4gICAgY29uc3QgaG91cnMgPSBkdXJhdGlvbi5ob3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtaW51dGVzID0gZHVyYXRpb24ubWludXRlcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBzZWNvbmRzID0gb3B0cz8uc2Vjb25kcyA/IGR1cmF0aW9uLnNlY29uZHMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJykgOiBudWxsO1xuXG4gICAgcmV0dXJuIChkYXlzID4gMCA/IGRheXMudG9TdHJpbmcoKSArICh0aGlzLmRheVVuaXQgKyAnICcpIDogJycpICsgaG91cnMgKyAnOicgKyBtaW51dGVzICsgKHNlY29uZHMgPyAnOicgKyBzZWNvbmRzIDogJycpO1xuICB9XG59XG4iXX0=
|
|
@@ -1197,26 +1197,27 @@ function toDuration(value, unit) {
|
|
|
1197
1197
|
|
|
1198
1198
|
class DateDiffDurationPipe {
|
|
1199
1199
|
dateAdapter;
|
|
1200
|
-
translate;
|
|
1201
1200
|
dayUnit;
|
|
1202
1201
|
constructor(dateAdapter, translate) {
|
|
1203
1202
|
this.dateAdapter = dateAdapter;
|
|
1204
|
-
this.translate = translate;
|
|
1205
1203
|
this.dayUnit = translate.instant('COMMON.DAY_UNIT');
|
|
1206
1204
|
translate.get('COMMON.DAY_UNIT').subscribe((dayUnit) => (this.dayUnit = dayUnit));
|
|
1207
1205
|
}
|
|
1208
|
-
transform(value,
|
|
1206
|
+
transform(value, opts) {
|
|
1209
1207
|
if (!value.startValue || !value.endValue)
|
|
1210
1208
|
return '';
|
|
1211
1209
|
const startDate = this.dateAdapter.parse(value.startValue, DATE_ISO_PATTERN);
|
|
1212
1210
|
const endDate = this.dateAdapter.parse(value.endValue, DATE_ISO_PATTERN);
|
|
1213
|
-
return this.format(startDate, endDate,
|
|
1211
|
+
return this.format(startDate, endDate, opts);
|
|
1214
1212
|
}
|
|
1215
|
-
format(startDate, endDate,
|
|
1213
|
+
format(startDate, endDate, opts) {
|
|
1216
1214
|
const duration = DateUtils.moment.duration(endDate.diff(startDate));
|
|
1217
|
-
|
|
1215
|
+
// Convert to the expected unit, if any
|
|
1216
|
+
if (opts?.unit)
|
|
1217
|
+
return '' + duration.as(opts.unit);
|
|
1218
|
+
const withSeconds = opts?.seconds;
|
|
1219
|
+
if (!withSeconds && duration.asMinutes() < 0)
|
|
1218
1220
|
return '';
|
|
1219
|
-
const withSeconds = args?.seconds;
|
|
1220
1221
|
const timeDuration = DateUtils.moment(0).hour(duration.hours()).minute(duration.minutes());
|
|
1221
1222
|
if (withSeconds) {
|
|
1222
1223
|
timeDuration.second(duration.seconds());
|
|
@@ -2005,22 +2006,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
2005
2006
|
}] });
|
|
2006
2007
|
|
|
2007
2008
|
class DurationPipe {
|
|
2008
|
-
translate;
|
|
2009
2009
|
dayUnit;
|
|
2010
2010
|
constructor(translate) {
|
|
2011
|
-
this.translate = translate;
|
|
2012
2011
|
this.dayUnit = translate.instant('COMMON.DAY_UNIT');
|
|
2013
2012
|
}
|
|
2014
|
-
|
|
2013
|
+
/**
|
|
2014
|
+
* Format a diff between two dates.
|
|
2015
|
+
*
|
|
2016
|
+
* @param value
|
|
2017
|
+
* @param opts
|
|
2018
|
+
* @param opts.unit allow to convert into a particular unit. If not defined, result will be like `x days HH:MM`
|
|
2019
|
+
* @param opts.seconds Should display or ignore the seconds ?
|
|
2020
|
+
**/
|
|
2021
|
+
transform(value, opts) {
|
|
2015
2022
|
if (!value)
|
|
2016
2023
|
return '';
|
|
2017
|
-
const unit =
|
|
2024
|
+
const unit = opts?.unit || opts || 'hours';
|
|
2018
2025
|
// try with moment
|
|
2019
2026
|
const duration = toDuration(value, unit);
|
|
2020
2027
|
const days = duration.days();
|
|
2021
|
-
const
|
|
2022
|
-
const
|
|
2023
|
-
|
|
2028
|
+
const hours = duration.hours().toString().padStart(2, '0');
|
|
2029
|
+
const minutes = duration.minutes().toString().padStart(2, '0');
|
|
2030
|
+
const seconds = opts?.seconds ? duration.seconds().toString().padStart(2, '0') : null;
|
|
2031
|
+
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hours + ':' + minutes + (seconds ? ':' + seconds : '');
|
|
2024
2032
|
}
|
|
2025
2033
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2026
2034
|
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: DurationPipe, name: "duration" });
|