UNPKG

@versatiledatakit/data-pipelines

Version:

Data Pipelines help Data Engineers develop, deploy, run, and manage data processing workloads (called 'Data Job')

79 lines 9.29 kB
/* * Copyright 2023-2025 Broadcom * SPDX-License-Identifier: Apache-2.0 */ import { Pipe } from '@angular/core'; import { CollectionsUtil } from '@versatiledatakit/shared'; import * as i0 from "@angular/core"; /** * Format Delta Pipe formats the delta of the execution start and end Time. * The format is dynamic and contains generaly the last two leading fragment of the duration. * * For example: * * 1: If the duration is less than 1 min, the format is `${seconds}s` * * 2: If the duration is between 1 min and 59 mins, the format is `${minutes}m ${seconds}s` * * 3: If the duration is between 1 hour and 1 day, the format is `${hours}h ${minutes}m` * * 4: If the duration is more than 1 day, the format is `${days}d ${hours}h` */ export class FormatDeltaPipe { static formatDelta(delta) { if (delta < 0) { return 'N/A'; } else if (delta < 60) { return `${Math.ceil(delta)}s`; } else if (delta < 3600) { const minute = Math.floor((delta / 60) % 60); const seconds = Math.floor(delta % 60); return `${minute}m ${seconds}s`; } else if (delta < 86400) { const hours = Math.floor((delta / (60 * 60)) % 24); const minutes = Math.floor((delta / 60) % 60); return `${hours}h ${minutes}m`; } else { const days = Math.floor(delta / (60 * 60 * 24)); const hours = Math.floor((delta / (60 * 60)) % 24); return `${days}d ${hours}h`; } } /** * @inheritDoc */ transform(execution) { if (CollectionsUtil.isNil(execution.startTime)) { return ''; } const delta = (FormatDeltaPipe._getEndTime(execution) - FormatDeltaPipe._getStartTime(execution)) / 1000; return FormatDeltaPipe.formatDelta(delta); } // eslint-disable-next-line @typescript-eslint/member-ordering static _getStartTime(execution) { if (CollectionsUtil.isDefined(execution.startTime)) { return new Date(execution.startTime).getTime(); } return Date.now(); } // eslint-disable-next-line @typescript-eslint/member-ordering static _getEndTime(execution) { if (CollectionsUtil.isDefined(execution.endTime)) { return new Date(execution.endTime).getTime(); } return Date.now(); } } FormatDeltaPipe.ɵfac = function FormatDeltaPipe_Factory(t) { return new (t || FormatDeltaPipe)(); }; FormatDeltaPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "formatDelta", type: FormatDeltaPipe, pure: true }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormatDeltaPipe, [{ type: Pipe, args: [{ name: 'formatDelta' }] }], null, null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWRlbHRhLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLXBpcGVsaW5lcy9zcmMvbGliL3NoYXJlZC9waXBlcy9mb3JtYXQtZGVsdGEucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSTNEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFJSCxNQUFNLE9BQU8sZUFBZTtJQUN4QixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTSxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNqQzthQUFNLElBQUksS0FBSyxHQUFHLElBQUksRUFBRTtZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRXZDLE9BQU8sR0FBRyxNQUFNLEtBQUssT0FBTyxHQUFHLENBQUM7U0FDbkM7YUFBTSxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUU7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFOUMsT0FBTyxHQUFHLEtBQUssS0FBSyxPQUFPLEdBQUcsQ0FBQztTQUNsQzthQUFNO1lBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBRW5ELE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsU0FBMkI7UUFDakMsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM1QyxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFekcsT0FBTyxlQUFlLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCw4REFBOEQ7SUFDdEQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUEyQjtRQUNwRCxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ2hELE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xEO1FBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDhEQUE4RDtJQUN0RCxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQTJCO1FBQ2xELElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDOUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEQ7UUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs4RUFyRFEsZUFBZTttRkFBZixlQUFlO3VGQUFmLGVBQWU7Y0FIM0IsSUFBSTtlQUFDO2dCQUNGLElBQUksRUFBRSxhQUFhO2FBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIzLTIwMjUgQnJvYWRjb21cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb2xsZWN0aW9uc1V0aWwgfSBmcm9tICdAdmVyc2F0aWxlZGF0YWtpdC9zaGFyZWQnO1xuXG5pbXBvcnQgeyBEYXRhSm9iRXhlY3V0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuXG4vKipcbiAqIEZvcm1hdCBEZWx0YSBQaXBlIGZvcm1hdHMgdGhlIGRlbHRhIG9mIHRoZSBleGVjdXRpb24gc3RhcnQgYW5kIGVuZCBUaW1lLlxuICogVGhlIGZvcm1hdCBpcyBkeW5hbWljIGFuZCBjb250YWlucyBnZW5lcmFseSB0aGUgbGFzdCB0d28gbGVhZGluZyBmcmFnbWVudCBvZiB0aGUgZHVyYXRpb24uXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogICAxOiBJZiB0aGUgZHVyYXRpb24gaXMgbGVzcyB0aGFuIDEgbWluLCB0aGUgZm9ybWF0IGlzIGAke3NlY29uZHN9c2BcbiAqXG4gKiAgIDI6IElmIHRoZSBkdXJhdGlvbiBpcyBiZXR3ZWVuIDEgbWluIGFuZCA1OSBtaW5zLCB0aGUgZm9ybWF0IGlzIGAke21pbnV0ZXN9bSAke3NlY29uZHN9c2BcbiAqXG4gKiAgIDM6IElmIHRoZSBkdXJhdGlvbiBpcyBiZXR3ZWVuIDEgaG91ciBhbmQgMSBkYXksIHRoZSBmb3JtYXQgaXMgYCR7aG91cnN9aCAke21pbnV0ZXN9bWBcbiAqXG4gKiAgIDQ6IElmIHRoZSBkdXJhdGlvbiBpcyBtb3JlIHRoYW4gMSBkYXksIHRoZSBmb3JtYXQgaXMgYCR7ZGF5c31kICR7aG91cnN9aGBcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdmb3JtYXREZWx0YSdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWF0RGVsdGFQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgc3RhdGljIGZvcm1hdERlbHRhKGRlbHRhOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoZGVsdGEgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJ04vQSc7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVsdGEgPCA2MCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke01hdGguY2VpbChkZWx0YSl9c2A7XG4gICAgICAgIH0gZWxzZSBpZiAoZGVsdGEgPCAzNjAwKSB7XG4gICAgICAgICAgICBjb25zdCBtaW51dGUgPSBNYXRoLmZsb29yKChkZWx0YSAvIDYwKSAlIDYwKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRlbHRhICUgNjApO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7bWludXRlfW0gJHtzZWNvbmRzfXNgO1xuICAgICAgICB9IGVsc2UgaWYgKGRlbHRhIDwgODY0MDApIHtcbiAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcigoZGVsdGEgLyAoNjAgKiA2MCkpICUgMjQpO1xuICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKGRlbHRhIC8gNjApICUgNjApO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9aCAke21pbnV0ZXN9bWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihkZWx0YSAvICg2MCAqIDYwICogMjQpKTtcbiAgICAgICAgICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcigoZGVsdGEgLyAoNjAgKiA2MCkpICUgMjQpO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7ZGF5c31kICR7aG91cnN9aGA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW5oZXJpdERvY1xuICAgICAqL1xuICAgIHRyYW5zZm9ybShleGVjdXRpb246IERhdGFKb2JFeGVjdXRpb24pOiBzdHJpbmcge1xuICAgICAgICBpZiAoQ29sbGVjdGlvbnNVdGlsLmlzTmlsKGV4ZWN1dGlvbi5zdGFydFRpbWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWx0YSA9IChGb3JtYXREZWx0YVBpcGUuX2dldEVuZFRpbWUoZXhlY3V0aW9uKSAtIEZvcm1hdERlbHRhUGlwZS5fZ2V0U3RhcnRUaW1lKGV4ZWN1dGlvbikpIC8gMTAwMDtcblxuICAgICAgICByZXR1cm4gRm9ybWF0RGVsdGFQaXBlLmZvcm1hdERlbHRhKGRlbHRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIHByaXZhdGUgc3RhdGljIF9nZXRTdGFydFRpbWUoZXhlY3V0aW9uOiBEYXRhSm9iRXhlY3V0aW9uKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKENvbGxlY3Rpb25zVXRpbC5pc0RlZmluZWQoZXhlY3V0aW9uLnN0YXJ0VGltZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShleGVjdXRpb24uc3RhcnRUaW1lKS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIHByaXZhdGUgc3RhdGljIF9nZXRFbmRUaW1lKGV4ZWN1dGlvbjogRGF0YUpvYkV4ZWN1dGlvbik6IG51bWJlciB7XG4gICAgICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNEZWZpbmVkKGV4ZWN1dGlvbi5lbmRUaW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGV4ZWN1dGlvbi5lbmRUaW1lKS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcbiAgICB9XG59XG4iXX0=