34 lines
4.8 KiB
JavaScript
34 lines
4.8 KiB
JavaScript
import * as moment from 'moment';
|
|
import { Inject, Optional, Pipe } from '@angular/core';
|
|
import { NGX_MOMENT_OPTIONS } from './moment-options';
|
|
export class DurationPipe {
|
|
constructor(momentOptions) {
|
|
this.allowedUnits = ['ss', 's', 'm', 'h', 'd', 'M'];
|
|
this._applyOptions(momentOptions);
|
|
}
|
|
transform(value, ...args) {
|
|
if (typeof args === 'undefined' || args.length !== 1) {
|
|
throw new Error('DurationPipe: missing required time unit argument');
|
|
}
|
|
return moment.duration(value, args[0]).humanize();
|
|
}
|
|
_applyOptions(momentOptions) {
|
|
if (!momentOptions) {
|
|
return;
|
|
}
|
|
if (!!momentOptions.relativeTimeThresholdOptions) {
|
|
const units = Object.keys(momentOptions.relativeTimeThresholdOptions);
|
|
const filteredUnits = units.filter((unit) => this.allowedUnits.indexOf(unit) !== -1);
|
|
filteredUnits.forEach((unit) => {
|
|
moment.relativeTimeThreshold(unit, momentOptions.relativeTimeThresholdOptions[unit]);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
DurationPipe.decorators = [
|
|
{ type: Pipe, args: [{ name: 'amDuration' },] }
|
|
];
|
|
DurationPipe.ctorParameters = () => [
|
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGX_MOMENT_OPTIONS,] }] }
|
|
];
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kdXJhdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLGtCQUFrQixDQUFDO0FBR3hFLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQW9ELGFBQWdDO1FBRnBGLGlCQUFZLEdBQWtCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUc1RCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBK0IsRUFBRSxHQUFHLElBQWM7UUFDMUQsSUFBSSxPQUFPLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1NBQ3RFO1FBQ0QsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUEwQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0YsQ0FBQztJQUVPLGFBQWEsQ0FBQyxhQUErQjtRQUNuRCxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsRUFBRTtZQUNoRCxNQUFNLEtBQUssR0FBa0IsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUNyRixNQUFNLGFBQWEsR0FBa0IsS0FBSyxDQUFDLE1BQU0sQ0FDL0MsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRCxDQUFDO1lBQ0YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUM3QixNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7WUE3QkYsSUFBSSxTQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRTs7OzRDQUliLFFBQVEsWUFBSSxNQUFNLFNBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmltcG9ydCB7IEluamVjdCwgT3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HWF9NT01FTlRfT1BUSU9OUywgTmd4TW9tZW50T3B0aW9ucyB9IGZyb20gJy4vbW9tZW50LW9wdGlvbnMnO1xuXG5AUGlwZSh7IG5hbWU6ICdhbUR1cmF0aW9uJyB9KVxuZXhwb3J0IGNsYXNzIER1cmF0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBhbGxvd2VkVW5pdHM6IEFycmF5PHN0cmluZz4gPSBbJ3NzJywgJ3MnLCAnbScsICdoJywgJ2QnLCAnTSddO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoTkdYX01PTUVOVF9PUFRJT05TKSBtb21lbnRPcHRpb25zPzogTmd4TW9tZW50T3B0aW9ucykge1xuICAgIHRoaXMuX2FwcGx5T3B0aW9ucyhtb21lbnRPcHRpb25zKTtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2YWx1ZTogbW9tZW50LkR1cmF0aW9uSW5wdXRBcmcxLCAuLi5hcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBhcmdzID09PSAndW5kZWZpbmVkJyB8fCBhcmdzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEdXJhdGlvblBpcGU6IG1pc3NpbmcgcmVxdWlyZWQgdGltZSB1bml0IGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBtb21lbnQuZHVyYXRpb24odmFsdWUsIGFyZ3NbMF0gYXMgbW9tZW50LnVuaXRPZlRpbWUuRHVyYXRpb25Db25zdHJ1Y3RvcikuaHVtYW5pemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5T3B0aW9ucyhtb21lbnRPcHRpb25zOiBOZ3hNb21lbnRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCFtb21lbnRPcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEhbW9tZW50T3B0aW9ucy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGRPcHRpb25zKSB7XG4gICAgICBjb25zdCB1bml0czogQXJyYXk8c3RyaW5nPiA9IE9iamVjdC5rZXlzKG1vbWVudE9wdGlvbnMucmVsYXRpdmVUaW1lVGhyZXNob2xkT3B0aW9ucyk7XG4gICAgICBjb25zdCBmaWx0ZXJlZFVuaXRzOiBBcnJheTxzdHJpbmc+ID0gdW5pdHMuZmlsdGVyKFxuICAgICAgICAodW5pdCkgPT4gdGhpcy5hbGxvd2VkVW5pdHMuaW5kZXhPZih1bml0KSAhPT0gLTEsXG4gICAgICApO1xuICAgICAgZmlsdGVyZWRVbml0cy5mb3JFYWNoKCh1bml0KSA9PiB7XG4gICAgICAgIG1vbWVudC5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQodW5pdCwgbW9tZW50T3B0aW9ucy5yZWxhdGl2ZVRpbWVUaHJlc2hvbGRPcHRpb25zW3VuaXRdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|