@alauda-fe/common
Version:
Alauda frontend team common codes.
63 lines • 8.38 kB
JavaScript
import { Pipe, isDevMode } from '@angular/core';
import parser from 'cron-parser';
import dayjs from 'dayjs';
import { TimeService } from '../services/time.service';
import { isErrorMessage } from '../types/helpers';
import { isCronWeekDayCorrect, isCronFieldCountCorrect, } from '../utils/cron-util';
import * as i0 from "@angular/core";
import * as i1 from "../services/time.service";
export class CrontabNextPipe {
constructor(time) {
this.time = time;
}
transform(rule, step = 1, { utc, showUtc = true, format, tz = this.time.currTz, formatTz = this.time.currTz, showLocalTz = true, parseInCurrentTz = false, } = {}) {
let dateString = 'N/A';
if (!rule ||
!isCronFieldCountCorrect(rule) ||
!isCronWeekDayCorrect(rule)) {
return dateString;
}
try {
// 后端解析 crontab 表达式一定是 UTC 时间
// const interval = parser.parseExpression(rule, { utc: false, tz });
// underlord 的网络检测目前后端未按 UTC 时间解析,增加对本地时区的处理
// 预计 3.13 去除对网络检测的兼容
// Usage: apps\underlord\src\app\manage-platform\features\network-manage\trace
const interval = parser.parseExpression(rule, {
utc: !parseInCurrentTz,
tz,
});
let timestamp;
for (let i = 0; i < step; i++) {
timestamp = interval.next().getTime();
}
const nextDate = dayjs.utc(timestamp);
const tzDisplay = utc
? showUtc
? ` (UTC)`
: ''
: showLocalTz
? ` (${tz})`
: '';
dateString =
this.time.format(utc ? nextDate : nextDate.tz(formatTz), format) +
tzDisplay;
}
catch (err) {
if (isDevMode() && isErrorMessage(err) && !/invalid/i.test(err.message)) {
console.error(err);
}
}
return dateString;
}
static { this.ɵfac = function CrontabNextPipe_Factory(t) { return new (t || CrontabNextPipe)(i0.ɵɵdirectiveInject(i1.TimeService, 16)); }; }
static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "aclCrontabNext", type: CrontabNextPipe, pure: true, standalone: true }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CrontabNextPipe, [{
type: Pipe,
args: [{
standalone: true,
name: 'aclCrontabNext',
}]
}], () => [{ type: i1.TimeService }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JvbnRhYi1uZXh0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvY29yZS9waXBlcy9jcm9udGFiLW5leHQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7OztBQU01QixNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUE2QixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQUcsQ0FBQztJQUVsRCxTQUFTLENBQ1AsSUFBWSxFQUNaLElBQUksR0FBRyxDQUFDLEVBQ1IsRUFDRSxHQUFHLEVBQ0gsT0FBTyxHQUFHLElBQUksRUFDZCxNQUFNLEVBQ04sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUNyQixRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQzNCLFdBQVcsR0FBRyxJQUFJLEVBQ2xCLGdCQUFnQixHQUFHLEtBQUssTUFTdEIsRUFBRTtRQUVOLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUNFLENBQUMsSUFBSTtZQUNMLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQzNCLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsNkJBQTZCO1lBQzdCLHFFQUFxRTtZQUVyRSw0Q0FBNEM7WUFDNUMscUJBQXFCO1lBQ3JCLDhFQUE4RTtZQUM5RSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRTtnQkFDNUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCO2dCQUN0QixFQUFFO2FBQ0gsQ0FBQyxDQUFDO1lBRUgsSUFBSSxTQUFpQixDQUFDO1lBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUIsU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUV0QyxNQUFNLFNBQVMsR0FBRyxHQUFHO2dCQUNuQixDQUFDLENBQUMsT0FBTztvQkFDUCxDQUFDLENBQUMsUUFBUTtvQkFDVixDQUFDLENBQUMsRUFBRTtnQkFDTixDQUFDLENBQUMsV0FBVztvQkFDWCxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUc7b0JBQ1osQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNULFVBQVU7Z0JBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO29CQUNoRSxTQUFTLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksU0FBUyxFQUFFLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDeEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Z0ZBbEVVLGVBQWU7d0ZBQWYsZUFBZTs7aUZBQWYsZUFBZTtjQUozQixJQUFJO2VBQUM7Z0JBQ0osVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLElBQUksRUFBRSxnQkFBZ0I7YUFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBwYXJzZXIgZnJvbSAnY3Jvbi1wYXJzZXInO1xuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcblxuaW1wb3J0IHsgVGltZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90aW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcy9oZWxwZXJzJztcbmltcG9ydCB7XG4gIGlzQ3JvbldlZWtEYXlDb3JyZWN0LFxuICBpc0Nyb25GaWVsZENvdW50Q29ycmVjdCxcbn0gZnJvbSAnLi4vdXRpbHMvY3Jvbi11dGlsJztcblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAnYWNsQ3JvbnRhYk5leHQnLFxufSlcbmV4cG9ydCBjbGFzcyBDcm9udGFiTmV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0aW1lOiBUaW1lU2VydmljZSkge31cblxuICB0cmFuc2Zvcm0oXG4gICAgcnVsZTogc3RyaW5nLFxuICAgIHN0ZXAgPSAxLFxuICAgIHtcbiAgICAgIHV0YyxcbiAgICAgIHNob3dVdGMgPSB0cnVlLFxuICAgICAgZm9ybWF0LFxuICAgICAgdHogPSB0aGlzLnRpbWUuY3VyclR6LFxuICAgICAgZm9ybWF0VHogPSB0aGlzLnRpbWUuY3VyclR6LFxuICAgICAgc2hvd0xvY2FsVHogPSB0cnVlLFxuICAgICAgcGFyc2VJbkN1cnJlbnRUeiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIHV0Yz86IGJvb2xlYW47XG4gICAgICBzaG93VXRjPzogYm9vbGVhbjtcbiAgICAgIGZvcm1hdD86IHN0cmluZztcbiAgICAgIHR6Pzogc3RyaW5nO1xuICAgICAgZm9ybWF0VHo/OiBzdHJpbmc7XG4gICAgICBzaG93TG9jYWxUej86IGJvb2xlYW47XG4gICAgICBwYXJzZUluQ3VycmVudFR6PzogYm9vbGVhbjtcbiAgICB9ID0ge30sXG4gICkge1xuICAgIGxldCBkYXRlU3RyaW5nID0gJ04vQSc7XG4gICAgaWYgKFxuICAgICAgIXJ1bGUgfHxcbiAgICAgICFpc0Nyb25GaWVsZENvdW50Q29ycmVjdChydWxlKSB8fFxuICAgICAgIWlzQ3JvbldlZWtEYXlDb3JyZWN0KHJ1bGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZGF0ZVN0cmluZztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIOWQjuerr+ino+aekCBjcm9udGFiIOihqOi+vuW8j+S4gOWumuaYryBVVEMg5pe26Ze0XG4gICAgICAvLyBjb25zdCBpbnRlcnZhbCA9IHBhcnNlci5wYXJzZUV4cHJlc3Npb24ocnVsZSwgeyB1dGM6IGZhbHNlLCB0eiB9KTtcblxuICAgICAgLy8gdW5kZXJsb3JkIOeahOe9kee7nOajgOa1i+ebruWJjeWQjuerr+acquaMiSBVVEMg5pe26Ze06Kej5p6Q77yM5aKe5Yqg5a+55pys5Zyw5pe25Yy655qE5aSE55CGXG4gICAgICAvLyDpooTorqEgMy4xMyDljrvpmaTlr7nnvZHnu5zmo4DmtYvnmoTlhbzlrrlcbiAgICAgIC8vIFVzYWdlOiBhcHBzXFx1bmRlcmxvcmRcXHNyY1xcYXBwXFxtYW5hZ2UtcGxhdGZvcm1cXGZlYXR1cmVzXFxuZXR3b3JrLW1hbmFnZVxcdHJhY2VcbiAgICAgIGNvbnN0IGludGVydmFsID0gcGFyc2VyLnBhcnNlRXhwcmVzc2lvbihydWxlLCB7XG4gICAgICAgIHV0YzogIXBhcnNlSW5DdXJyZW50VHosXG4gICAgICAgIHR6LFxuICAgICAgfSk7XG5cbiAgICAgIGxldCB0aW1lc3RhbXA6IG51bWJlcjtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RlcDsgaSsrKSB7XG4gICAgICAgIHRpbWVzdGFtcCA9IGludGVydmFsLm5leHQoKS5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXh0RGF0ZSA9IGRheWpzLnV0Yyh0aW1lc3RhbXApO1xuXG4gICAgICBjb25zdCB0ekRpc3BsYXkgPSB1dGNcbiAgICAgICAgPyBzaG93VXRjXG4gICAgICAgICAgPyBgIChVVEMpYFxuICAgICAgICAgIDogJydcbiAgICAgICAgOiBzaG93TG9jYWxUelxuICAgICAgICAgID8gYCAoJHt0en0pYFxuICAgICAgICAgIDogJyc7XG4gICAgICBkYXRlU3RyaW5nID1cbiAgICAgICAgdGhpcy50aW1lLmZvcm1hdCh1dGMgPyBuZXh0RGF0ZSA6IG5leHREYXRlLnR6KGZvcm1hdFR6KSwgZm9ybWF0KSArXG4gICAgICAgIHR6RGlzcGxheTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChpc0Rldk1vZGUoKSAmJiBpc0Vycm9yTWVzc2FnZShlcnIpICYmICEvaW52YWxpZC9pLnRlc3QoZXJyLm1lc3NhZ2UpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGVTdHJpbmc7XG4gIH1cbn1cbiJdfQ==