UNPKG

@versatiledatakit/data-pipelines

Version:

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

438 lines 76.5 kB
/* * Copyright 2023-2025 Broadcom * SPDX-License-Identifier: Apache-2.0 */ import { Component, HostListener, Input } from '@angular/core'; import { of, throwError } from 'rxjs'; import { catchError, delay, map } from 'rxjs/operators'; import { ErrorUtil } from '../../shared/utils'; import { DataJobExecutionStatus } from '../../model'; import * as i0 from "@angular/core"; import * as i1 from "../../services"; import * as i2 from "@versatiledatakit/shared"; import * as i3 from "@angular/common"; import * as i4 from "../../shared/components/widget-value/widget-value.component"; import * as i5 from "@angular/router"; import * as i6 from "@clr/angular"; import * as i7 from "../../shared/pipes/format-schedule.pipe"; function DataJobsWidgetOneComponent_div_33_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function DataJobsWidgetOneComponent_div_33_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div"); i0.ɵɵtemplate(1, DataJobsWidgetOneComponent_div_33_ng_container_1_Template, 1, 0, "ng-container", 24); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵnextContext(); const _r9 = i0.ɵɵreference(45); i0.ɵɵadvance(1); i0.ɵɵproperty("ngTemplateOutlet", _r9); } } function DataJobsWidgetOneComponent_div_34_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function DataJobsWidgetOneComponent_div_34_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div"); i0.ɵɵtemplate(1, DataJobsWidgetOneComponent_div_34_ng_container_1_Template, 1, 0, "ng-container", 24); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵnextContext(); const _r7 = i0.ɵɵreference(43); i0.ɵɵadvance(1); i0.ɵɵproperty("ngTemplateOutlet", _r7); } } function DataJobsWidgetOneComponent_div_35_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function DataJobsWidgetOneComponent_div_35_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div"); i0.ɵɵtemplate(1, DataJobsWidgetOneComponent_div_35_ng_container_1_Template, 1, 0, "ng-container", 24); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵnextContext(); const _r5 = i0.ɵɵreference(41); i0.ɵɵadvance(1); i0.ɵɵproperty("ngTemplateOutlet", _r5); } } function DataJobsWidgetOneComponent_div_36_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "div"); } } function DataJobsWidgetOneComponent_ng_template_40_div_0_clr_dg_row_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "clr-dg-row")(1, "clr-dg-cell")(2, "div", 31)(3, "span", 32); i0.ɵɵtext(4); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "span", 33); i0.ɵɵtext(6); i0.ɵɵpipe(7, "date"); i0.ɵɵelementEnd()()()(); } if (rf & 2) { const item_r20 = ctx.$implicit; i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(item_r20.jobName); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind2(7, 3, item_r20.startTime, "MMM d, y, hh:mm a"), " , took 12min, ", item_r20.status, ""); } } function DataJobsWidgetOneComponent_ng_template_40_div_0_Template(rf, ctx) { if (rf & 1) { const _r22 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 26)(1, "clr-datagrid", 27); i0.ɵɵtemplate(2, DataJobsWidgetOneComponent_ng_template_40_div_0_clr_dg_row_2_Template, 8, 6, "clr-dg-row", 28); i0.ɵɵelementStart(3, "clr-dg-placeholder"); i0.ɵɵtext(4, "Coming Soon!"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "clr-dg-footer")(6, "clr-dg-pagination", 29, 30); i0.ɵɵlistener("clrDgPageChange", function DataJobsWidgetOneComponent_ng_template_40_div_0_Template_clr_dg_pagination_clrDgPageChange_6_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.refresh($event, ctx_r21.widgetTab.FAILURES); }); i0.ɵɵelementEnd()()()(); } if (rf & 2) { const data_r17 = ctx.ngIf; const ctx_r16 = i0.ɵɵnextContext(2); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", data_r17 == null ? null : data_r17.content); i0.ɵɵadvance(4); i0.ɵɵproperty("clrDgTotalItems", data_r17.totalItems)("clrDgPageSize", ctx_r16.pageSize)("clrDgPage", ctx_r16.currentPage); } } function DataJobsWidgetOneComponent_ng_template_40_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, DataJobsWidgetOneComponent_ng_template_40_div_0_Template, 8, 4, "div", 25); i0.ɵɵpipe(1, "async"); } if (rf & 2) { const ctx_r6 = i0.ɵɵnextContext(); const _r11 = i0.ɵɵreference(47); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 2, ctx_r6.failures$))("ngIfElse", _r11); } } function DataJobsWidgetOneComponent_ng_template_42_div_0_clr_dg_row_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "clr-dg-row")(1, "clr-dg-cell")(2, "div", 31)(3, "span", 32); i0.ɵɵtext(4); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "span", 33); i0.ɵɵtext(6); i0.ɵɵpipe(7, "date"); i0.ɵɵelementEnd()()()(); } if (rf & 2) { const item_r27 = ctx.$implicit; i0.ɵɵadvance(4); i0.ɵɵtextInterpolate(item_r27.jobName); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind2(7, 3, item_r27.startTime, "MMM d, y, hh:mm a"), " , took 12min, ", item_r27.status, ""); } } function DataJobsWidgetOneComponent_ng_template_42_div_0_Template(rf, ctx) { if (rf & 1) { const _r29 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 26)(1, "clr-datagrid", 27); i0.ɵɵtemplate(2, DataJobsWidgetOneComponent_ng_template_42_div_0_clr_dg_row_2_Template, 8, 6, "clr-dg-row", 28); i0.ɵɵelementStart(3, "clr-dg-placeholder"); i0.ɵɵtext(4, "Coming Soon!"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "clr-dg-footer")(6, "clr-dg-pagination", 29, 30); i0.ɵɵlistener("clrDgPageChange", function DataJobsWidgetOneComponent_ng_template_42_div_0_Template_clr_dg_pagination_clrDgPageChange_6_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return ctx_r28.refresh($event, ctx_r28.widgetTab.FAILURES); }); i0.ɵɵelementEnd()()()(); } if (rf & 2) { const data_r24 = ctx.ngIf; const ctx_r23 = i0.ɵɵnextContext(2); i0.ɵɵadvance(2); i0.ɵɵproperty("ngForOf", data_r24 == null ? null : data_r24.content); i0.ɵɵadvance(4); i0.ɵɵproperty("clrDgTotalItems", data_r24.totalItems)("clrDgPageSize", ctx_r23.pageSize)("clrDgPage", ctx_r23.currentPage); } } function DataJobsWidgetOneComponent_ng_template_42_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, DataJobsWidgetOneComponent_ng_template_42_div_0_Template, 8, 4, "div", 25); i0.ɵɵpipe(1, "async"); } if (rf & 2) { const ctx_r8 = i0.ɵɵnextContext(); const _r11 = i0.ɵɵreference(47); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 2, ctx_r8.executions$))("ngIfElse", _r11); } } const _c0 = function (a0) { return { search: a0 }; }; function DataJobsWidgetOneComponent_ng_template_44_div_0_clr_dg_row_6_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "clr-dg-row")(1, "clr-dg-cell")(2, "div", 34)(3, "span", 35); i0.ɵɵtext(4); i0.ɵɵelementEnd()()(); i0.ɵɵelementStart(5, "clr-dg-cell"); i0.ɵɵtext(6); i0.ɵɵpipe(7, "formatSchedule"); i0.ɵɵelementEnd()(); } if (rf & 2) { const item_r34 = ctx.$implicit; const ctx_r32 = i0.ɵɵnextContext(3); const _r0 = i0.ɵɵreference(10); i0.ɵɵadvance(1); i0.ɵɵstyleProp("width", _r0.offsetWidth, "px"); i0.ɵɵadvance(1); i0.ɵɵproperty("routerLink", ctx_r32.manageLink)("queryParams", i0.ɵɵpureFunction1(11, _c0, item_r34.jobName)); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate(item_r34.jobName); i0.ɵɵadvance(1); i0.ɵɵstyleProp("font-size", 0.6, "rem"); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(7, 8, item_r34.config == null ? null : item_r34.config.schedule == null ? null : item_r34.config.schedule.scheduleCron, "Not scheduled"), " "); } } function DataJobsWidgetOneComponent_ng_template_44_div_0_Template(rf, ctx) { if (rf & 1) { const _r36 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 26)(1, "clr-datagrid", 27)(2, "clr-dg-column"); i0.ɵɵtext(3, "Job"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(4, "clr-dg-column"); i0.ɵɵtext(5, "Schedule (in UTC)"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(6, DataJobsWidgetOneComponent_ng_template_44_div_0_clr_dg_row_6_Template, 8, 13, "clr-dg-row", 28); i0.ɵɵelementStart(7, "clr-dg-placeholder"); i0.ɵɵtext(8, "We couldn't find any data jobs, but you can always create one!"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(9, "clr-dg-footer")(10, "clr-dg-pagination", 29, 30); i0.ɵɵlistener("clrDgPageChange", function DataJobsWidgetOneComponent_ng_template_44_div_0_Template_clr_dg_pagination_clrDgPageChange_10_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(2); return ctx_r35.refresh($event, ctx_r35.widgetTab.DATAJOBS); }); i0.ɵɵelementEnd()()()(); } if (rf & 2) { const data_r31 = ctx.ngIf; const ctx_r30 = i0.ɵɵnextContext(2); const _r0 = i0.ɵɵreference(10); i0.ɵɵadvance(2); i0.ɵɵstyleProp("width", _r0.offsetWidth, "px"); i0.ɵɵadvance(4); i0.ɵɵproperty("ngForOf", data_r31 == null ? null : data_r31.content); i0.ɵɵadvance(4); i0.ɵɵproperty("clrDgTotalItems", data_r31.totalItems)("clrDgPageSize", ctx_r30.pageSize)("clrDgPage", ctx_r30.currentPage); } } function DataJobsWidgetOneComponent_ng_template_44_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, DataJobsWidgetOneComponent_ng_template_44_div_0_Template, 12, 6, "div", 25); i0.ɵɵpipe(1, "async"); } if (rf & 2) { const ctx_r10 = i0.ɵɵnextContext(); const _r11 = i0.ɵɵreference(47); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 2, ctx_r10.jobs$))("ngIfElse", _r11); } } function DataJobsWidgetOneComponent_ng_template_46_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 26)(1, "div", 36)(2, "clr-spinner"); i0.ɵɵtext(3, "Loading ..."); i0.ɵɵelementEnd()()(); } } const _c1 = function (a0) { return { "show-details": a0 }; }; export var WidgetTab; (function (WidgetTab) { /* eslint-disable-next-line @typescript-eslint/naming-convention */ WidgetTab[WidgetTab["DATAJOBS"] = 0] = "DATAJOBS"; /* eslint-disable-next-line @typescript-eslint/naming-convention */ WidgetTab[WidgetTab["EXECUTIONS"] = 1] = "EXECUTIONS"; /* eslint-disable-next-line @typescript-eslint/naming-convention */ WidgetTab[WidgetTab["FAILURES"] = 2] = "FAILURES"; /* eslint-disable-next-line @typescript-eslint/naming-convention */ WidgetTab[WidgetTab["NONE"] = 3] = "NONE"; })(WidgetTab || (WidgetTab = {})); // TODO: Remove when consume data from API const executionsMock = [ { jobName: 'data-job-1', status: DataJobExecutionStatus.FINISHED, startTime: Date.now(), endTime: Date.now(), startedBy: 'auserov' }, { jobName: 'data-job-2', status: DataJobExecutionStatus.FAILED, startTime: Date.now(), endTime: Date.now(), startedBy: 'buserov' }, { jobName: 'data-job-3', status: DataJobExecutionStatus.FINISHED, startTime: Date.now(), endTime: Date.now(), startedBy: 'cuserov' }, { jobName: 'data-job-long-name-test-1', status: DataJobExecutionStatus.FINISHED, startTime: Date.now(), endTime: Date.now(), startedBy: 'duserov' }, { jobName: 'data-job-long-name-test-2', status: DataJobExecutionStatus.FAILED, startTime: Date.now(), endTime: Date.now(), startedBy: 'euserov' }, { jobName: 'data-job-long-name-test-3', status: DataJobExecutionStatus.SUBMITTED, startTime: Date.now(), endTime: Date.now(), startedBy: 'fuserov' }, { jobName: 'data-job-long-name-test-4', status: DataJobExecutionStatus.PLATFORM_ERROR, startTime: Date.now(), endTime: Date.now(), startedBy: 'guserov' }, { jobName: 'data-job-long-name-test-5', status: DataJobExecutionStatus.USER_ERROR, startTime: Date.now(), endTime: Date.now(), startedBy: 'huserov' }, { jobName: 'data-job-a-very-long-name-listed-here-test-1', status: DataJobExecutionStatus.FINISHED, startTime: Date.now(), endTime: Date.now(), startedBy: 'fuserov' } ]; export class DataJobsWidgetOneComponent { constructor(dataJobsService, errorHandlerService) { this.dataJobsService = dataJobsService; this.errorHandlerService = errorHandlerService; this.selectedTab = WidgetTab.DATAJOBS; /* eslint-enable @typescript-eslint/no-explicit-any */ this.widgetTab = WidgetTab; this.pageSize = 25; this.currentPage = 1; } onWindowResize() { // Listener was needed because ChangeDetection cycle doesn't run for Component on "window resize event" // and doesn't update the data grid column width as expected, // so only solution was to add dummy listener for window:resize which triggers ChangeDetection cycle inside the Component. // No-op! Updates the component when the window resizes. This is used for resizing the data grid columns. } ngOnInit() { this.refreshAll(); } refreshAll() { this.refresh(this.currentPage, WidgetTab.DATAJOBS); this.refresh(this.currentPage, WidgetTab.EXECUTIONS); this.refresh(this.currentPage, WidgetTab.FAILURES); } switchTab(tab) { this.selectedTab = this.selectedTab !== tab ? tab : WidgetTab.NONE; this.currentPage = 1; } refresh(currentPage, tab) { this.currentPage = currentPage; switch (tab) { case WidgetTab.DATAJOBS: this.errorJobs = false; this.jobs$ = this.dataJobsService.getJobs([], '', this.currentPage, this.pageSize).pipe(map((result) => result?.data), catchError((error) => { this.errorJobs = !!error; this.errorHandlerService.processError(ErrorUtil.extractError(error)); return throwError(() => error); })); break; case WidgetTab.EXECUTIONS: // TODO: Consume data from API this.executions$ = of({ data: { totalItems: 0, totalPages: executionsMock.length / this.pageSize, content: [] } }).pipe(map((result) => result?.data), delay(1200) // TODO: Remove delay when consume data from API ); break; case WidgetTab.FAILURES: // TODO: Consume data from API const failuresMock = executionsMock.filter((e) => e.status === DataJobExecutionStatus.FAILED); this.failures$ = of({ data: { totalItems: 0, totalPages: failuresMock.length / this.pageSize, content: [] } }).pipe(map((result) => result?.data), delay(1800) // TODO: Remove delay when consume data from API ); break; } } } DataJobsWidgetOneComponent.ɵfac = function DataJobsWidgetOneComponent_Factory(t) { return new (t || DataJobsWidgetOneComponent)(i0.ɵɵdirectiveInject(i1.DataJobsApiService), i0.ɵɵdirectiveInject(i2.ErrorHandlerService)); }; DataJobsWidgetOneComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataJobsWidgetOneComponent, selectors: [["lib-data-jobs-widget-one"]], hostBindings: function DataJobsWidgetOneComponent_HostBindings(rf, ctx) { if (rf & 1) { i0.ɵɵlistener("resize", function DataJobsWidgetOneComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, false, i0.ɵɵresolveWindow); } }, inputs: { manageLink: "manageLink" }, decls: 48, vars: 21, consts: [[1, "get-started-jobs", "widget"], [1, "widget-section-container", "widget-card"], [1, "widget-header"], [1, "header-title"], [1, "widget-container"], [1, "widget-values"], [1, "widget-value", "widget-clickable", 3, "ngClass", "click"], ["widgetTabDiv", ""], [1, "widget-value-wrapper"], [1, "widget-title"], ["prop", "totalItems", 3, "observable$", "showErrorState"], [1, "widget-text"], ["prop", "totalItems", 3, "observable$"], [1, "widget-title", "label-success"], [1, "widget-details", 3, "ngClass"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], [1, "widget-footer"], ["id", "data-jobs-widget-manage-link", "alt", "Navigate to Manage Data jobs", "routerLinkActive", "active", "href", "", 1, "btn", "btn-link", 3, "routerLink"], ["failuresTemplate", ""], ["executionsTemplate", ""], ["dataJobsTemplate", ""], ["loadingTemplate", ""], [4, "ngTemplateOutlet"], ["class", "data-details", 4, "ngIf", "ngIfElse"], [1, "data-details"], [1, "datagrid-compact"], [4, "ngFor", "ngForOf"], [3, "clrDgTotalItems", "clrDgPageSize", "clrDgPage", "clrDgPageChange"], ["pagination", ""], [1, "data-row"], [1, "p5", "data-title"], [1, "p7", "data-description"], [1, "data-row", "clickable", 3, "routerLink", "queryParams"], [1, "p3", "data-title"], [1, "no-issues"]], template: function DataJobsWidgetOneComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 0)(1, "section", 1)(2, "div", 2)(3, "h3", 3); i0.ɵɵtext(4, "Data Jobs"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "p"); i0.ɵɵtext(6, " Data Jobs help Data Engineers develop, deploy, run, and manage data processing workloads "); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(7, "div", 4)(8, "div", 5)(9, "div", 6, 7); i0.ɵɵlistener("click", function DataJobsWidgetOneComponent_Template_div_click_9_listener() { return ctx.switchTab(ctx.widgetTab.DATAJOBS); }); i0.ɵɵelementStart(11, "div", 8)(12, "span", 9); i0.ɵɵelement(13, "lib-widget-value", 10); i0.ɵɵelementEnd(); i0.ɵɵelementStart(14, "span", 11); i0.ɵɵtext(15, "Data Jobs"); i0.ɵɵelementEnd(); i0.ɵɵelement(16, "span", 11); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(17, "div", 6); i0.ɵɵlistener("click", function DataJobsWidgetOneComponent_Template_div_click_17_listener() { return ctx.switchTab(ctx.widgetTab.EXECUTIONS); }); i0.ɵɵelementStart(18, "span", 9); i0.ɵɵelement(19, "lib-widget-value", 12); i0.ɵɵelementEnd(); i0.ɵɵelementStart(20, "span", 11); i0.ɵɵtext(21, "Job Executions"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(22, "span", 11); i0.ɵɵtext(23, "last 24 hours"); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(24, "div", 6); i0.ɵɵlistener("click", function DataJobsWidgetOneComponent_Template_div_click_24_listener() { return ctx.switchTab(ctx.widgetTab.FAILURES); }); i0.ɵɵelementStart(25, "span", 13); i0.ɵɵelement(26, "lib-widget-value", 12); i0.ɵɵelementEnd(); i0.ɵɵelementStart(27, "span", 11); i0.ɵɵtext(28, "Failures"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(29, "span", 11); i0.ɵɵtext(30, "last 24 hours"); i0.ɵɵelementEnd()()()(); i0.ɵɵelementStart(31, "div", 14)(32, "div", 15); i0.ɵɵtemplate(33, DataJobsWidgetOneComponent_div_33_Template, 2, 1, "div", 16); i0.ɵɵtemplate(34, DataJobsWidgetOneComponent_div_34_Template, 2, 1, "div", 16); i0.ɵɵtemplate(35, DataJobsWidgetOneComponent_div_35_Template, 2, 1, "div", 16); i0.ɵɵtemplate(36, DataJobsWidgetOneComponent_div_36_Template, 1, 0, "div", 17); i0.ɵɵelementEnd()(); i0.ɵɵelementStart(37, "div", 18)(38, "a", 19); i0.ɵɵtext(39, " Manage "); i0.ɵɵelementEnd()()()(); i0.ɵɵtemplate(40, DataJobsWidgetOneComponent_ng_template_40_Template, 2, 4, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor); i0.ɵɵtemplate(42, DataJobsWidgetOneComponent_ng_template_42_Template, 2, 4, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor); i0.ɵɵtemplate(44, DataJobsWidgetOneComponent_ng_template_44_Template, 2, 4, "ng-template", null, 22, i0.ɵɵtemplateRefExtractor); i0.ɵɵtemplate(46, DataJobsWidgetOneComponent_ng_template_46_Template, 4, 0, "ng-template", null, 23, i0.ɵɵtemplateRefExtractor); } if (rf & 2) { i0.ɵɵadvance(9); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(13, _c1, ctx.selectedTab === ctx.widgetTab.DATAJOBS)); i0.ɵɵadvance(4); i0.ɵɵproperty("observable$", ctx.jobs$)("showErrorState", ctx.errorJobs); i0.ɵɵadvance(4); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c1, ctx.selectedTab === ctx.widgetTab.EXECUTIONS)); i0.ɵɵadvance(2); i0.ɵɵproperty("observable$", ctx.executions$); i0.ɵɵadvance(5); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(17, _c1, ctx.selectedTab === ctx.widgetTab.FAILURES)); i0.ɵɵadvance(2); i0.ɵɵproperty("observable$", ctx.failures$); i0.ɵɵadvance(5); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(19, _c1, ctx.selectedTab !== ctx.widgetTab.NONE)); i0.ɵɵadvance(1); i0.ɵɵproperty("ngSwitch", ctx.selectedTab); i0.ɵɵadvance(1); i0.ɵɵproperty("ngSwitchCase", ctx.widgetTab.DATAJOBS); i0.ɵɵadvance(1); i0.ɵɵproperty("ngSwitchCase", ctx.widgetTab.EXECUTIONS); i0.ɵɵadvance(1); i0.ɵɵproperty("ngSwitchCase", ctx.widgetTab.FAILURES); i0.ɵɵadvance(3); i0.ɵɵproperty("routerLink", ctx.manageLink); } }, directives: [i3.NgClass, i4.WidgetValueComponent, i3.NgSwitch, i3.NgSwitchCase, i3.NgTemplateOutlet, i3.NgSwitchDefault, i5.RouterLinkWithHref, i5.RouterLinkActive, i3.NgIf, i6.ClrDatagrid, i6.ÇlrDatagridMainRenderer, i6.ÇlrDatagridWillyWonka, i6.ÇlrActionableOompaLoompa, i6.ÇlrExpandableOompaLoompa, i3.NgForOf, i6.ClrDatagridRow, i6.ÇlrDatagridRowRenderer, i6.ClrDatagridCell, i6.ÇlrDatagridCellRenderer, i6.ClrDatagridPlaceholder, i6.ClrDatagridFooter, i6.ClrDatagridPagination, i6.ClrDatagridColumn, i6.ÇlrDatagridHeaderRenderer, i5.RouterLink, i6.ClrSpinner], pipes: [i3.AsyncPipe, i3.DatePipe, i7.FormatSchedulePipe], styles: [".fade-to-dark.dark .widget-card{--label-color-error: #f27963;--label-color-success: #5eb715;--header-background: #28404d;--widget-border: 1px solid #28404d;--widget-clickable-background: #324f62;--widget-details-background: #21333b;--widget-details-hover-background: #1b2a32;--widget-details-color: #b3b3b3;--widget-details-border: 2px solid #28404d;--widget-icon-backgound-color: #194b70}.widget-card[_ngcontent-%COMP%]{--label-color-error: #f35e44;--label-color-success: #5aa220;--header-background: #ffffff;--widget-border: 1px solid #e3f5fc;--widget-clickable-background: #e8e8e8;--widget-details-background: #ffffff;--widget-details-hover-background: #d8e3e9;--widget-details-color: #8c8c8c;--widget-details-border: 2px solid #e3f5fc;--widget-icon-backgound-color: #0072a3}.widget-card[_ngcontent-%COMP%] .label-error[_ngcontent-%COMP%]{color:var(--label-color-error)}.widget-card[_ngcontent-%COMP%] .label-success[_ngcontent-%COMP%]{color:var(--label-color-success)}.widget-card[_ngcontent-%COMP%] .widget-footer[_ngcontent-%COMP%]{position:relative;min-height:25px;margin:1.3rem -1.2rem -1.2rem;border-top:var(--widget-border)}.widget-card[_ngcontent-%COMP%] .widget-footer[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin:0 0 0 .5rem;padding:0}.widget-card[_ngcontent-%COMP%] .widget-header[_ngcontent-%COMP%]{background:var(--header-background);margin:-1.2rem -1.2rem 0;padding:.8rem;border-radius:.1rem .1rem 0 0;position:relative;min-height:96px}.widget-card[_ngcontent-%COMP%] .widget-header[_ngcontent-%COMP%] .header-title[_ngcontent-%COMP%]{margin-top:0;font-weight:200}.widget-card[_ngcontent-%COMP%] .widget-header[_ngcontent-%COMP%] .header-title[_ngcontent-%COMP%] clr-icon[_ngcontent-%COMP%]{margin-top:-2px}.widget-card[_ngcontent-%COMP%] .widget-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-top:.3rem;line-height:.8rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.widget-card[_ngcontent-%COMP%] .widget-header[_ngcontent-%COMP%] .header-link[_ngcontent-%COMP%]{position:absolute;top:.4rem;right:.3rem}.widget-card[_ngcontent-%COMP%] .widget-header[_ngcontent-%COMP%] .header-link[_ngcontent-%COMP%] clr-icon[_ngcontent-%COMP%]{margin-top:-.1rem}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%]{z-index:100}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%]{line-height:.8rem;display:grid;grid-template:\". . .\" 1fr/1fr 1fr 1fr;margin-left:-1.2rem;margin-right:-1.2rem;margin-bottom:-1.2rem;grid-row-gap:1.2rem;row-gap:1.2rem;border-top:var(--widget-border)}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value[_ngcontent-%COMP%]{display:block;text-align:center;background:var(--widget-details-background);padding:.6rem}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value[_ngcontent-%COMP%]:not(:first-child){border-left:var(--widget-border)}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value[_ngcontent-%COMP%]:not(:last-child){border-right:var(--widget-border)}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value[_ngcontent-%COMP%] .widget-title[_ngcontent-%COMP%]{margin-bottom:.2rem;margin-top:.2rem;font-size:1.2rem;font-weight:500;display:block}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value[_ngcontent-%COMP%] .widget-text[_ngcontent-%COMP%]{font-size:.55rem;display:block;line-height:.6rem}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value.widget-clickable[_ngcontent-%COMP%]{cursor:pointer}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value.widget-clickable[_ngcontent-%COMP%]:hover{background:var(--widget-clickable-background)}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value.show-details[_ngcontent-%COMP%]{background:var(--widget-clickable-background);position:relative}.widget-card[_ngcontent-%COMP%] .widget-container[_ngcontent-%COMP%] .widget-values[_ngcontent-%COMP%] .widget-value.show-details[_ngcontent-%COMP%] .widget-text[_ngcontent-%COMP%]{font-weight:700}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%]{z-index:1;height:0;margin:1.2rem -1.2rem -1.2rem;transition:height .3s;overflow:hidden;background:var(--widget-details-background)}.widget-card[_ngcontent-%COMP%] .widget-details.show-details[_ngcontent-%COMP%]{height:240px;border-top:var(--widget-details-border)}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .no-issues[_ngcontent-%COMP%]{height:100%;width:100%;text-align:center;margin-top:1.2rem}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .no-issues[_ngcontent-%COMP%] .no-issues-img[_ngcontent-%COMP%]{display:block;height:120px;margin:0 auto}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .no-issues[_ngcontent-%COMP%] .no-issues-text[_ngcontent-%COMP%]{color:var(--widget-details-color)}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%]{height:240px;position:relative}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] clr-datagrid{height:100%}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] clr-datagrid .datagrid{margin-top:0;flex-basis:0;border:0}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] clr-datagrid .datagrid .datagrid-row{border-top:none;border-bottom:none}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] clr-datagrid .datagrid .datagrid-placeholder-container{border-top:none}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] clr-datagrid .datagrid-footer{padding:.1rem .5rem;border-right:none;border-left:none;border-bottom:none}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%]{display:block;margin-top:0;position:relative;padding-left:.2rem}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row.clickable[_ngcontent-%COMP%]{cursor:pointer}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%] .data-title[_ngcontent-%COMP%]{line-height:.6rem;font-weight:500;display:block;margin-top:0;position:relative}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%] .data-title[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{margin:0}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%] .data-title[_ngcontent-%COMP%] .title-icon[_ngcontent-%COMP%]{float:left;width:32px;display:flex;justify-content:center}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%] .data-title[_ngcontent-%COMP%] .title-icon[_ngcontent-%COMP%] lib-status-cell[_ngcontent-%COMP%]{width:15px;display:flex;justify-content:center}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%] .data-description[_ngcontent-%COMP%]{display:block;margin-top:0;color:var(--widget-details-color);line-height:1rem}.widget-card[_ngcontent-%COMP%] .widget-details[_ngcontent-%COMP%] .data-details[_ngcontent-%COMP%] .data-row[_ngcontent-%COMP%] .data-description[_ngcontent-%COMP%] clr-icon[_ngcontent-%COMP%]{margin-top:-2px}", ".widget[_ngcontent-%COMP%]{position:relative;height:100%}.widget[_ngcontent-%COMP%] .widget-section-container[_ngcontent-%COMP%]{padding:1.2rem;height:100%;border-radius:.2rem;border:none;box-shadow:0 3px 10px #0000001a,0 3px 5px #00000017;position:relative;overflow:hidden}"] }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataJobsWidgetOneComponent, [{ type: Component, args: [{ selector: 'lib-data-jobs-widget-one', template: "<!--\n ~ Copyright 2023-2025 Broadcom\n ~ SPDX-License-Identifier: Apache-2.0\n -->\n\n<div class=\"get-started-jobs widget\">\n <section class=\"widget-section-container widget-card\">\n <div class=\"widget-header\">\n <h3 class=\"header-title\">Data Jobs</h3>\n <p>\n Data Jobs help Data Engineers develop, deploy, run, and manage\n data processing workloads\n </p>\n </div>\n\n <div class=\"widget-container\">\n <div class=\"widget-values\">\n <div\n #widgetTabDiv\n class=\"widget-value widget-clickable\"\n [ngClass]=\"{\n 'show-details': selectedTab === widgetTab.DATAJOBS\n }\"\n (click)=\"switchTab(widgetTab.DATAJOBS)\"\n >\n <div class=\"widget-value-wrapper\">\n <span class=\"widget-title\">\n <lib-widget-value\n [observable$]=\"jobs$\"\n prop=\"totalItems\"\n [showErrorState]=\"errorJobs\"\n ></lib-widget-value>\n </span>\n <span class=\"widget-text\">Data Jobs</span>\n <span class=\"widget-text\"></span>\n </div>\n </div>\n <div\n class=\"widget-value widget-clickable\"\n [ngClass]=\"{\n 'show-details': selectedTab === widgetTab.EXECUTIONS\n }\"\n (click)=\"switchTab(widgetTab.EXECUTIONS)\"\n >\n <span class=\"widget-title\">\n <lib-widget-value\n [observable$]=\"executions$\"\n prop=\"totalItems\"\n ></lib-widget-value>\n </span>\n <span class=\"widget-text\">Job Executions</span>\n <span class=\"widget-text\">last 24 hours</span>\n </div>\n <div\n class=\"widget-value widget-clickable\"\n [ngClass]=\"{\n 'show-details': selectedTab === widgetTab.FAILURES\n }\"\n (click)=\"switchTab(widgetTab.FAILURES)\"\n >\n <span class=\"widget-title label-success\">\n <lib-widget-value\n [observable$]=\"failures$\"\n prop=\"totalItems\"\n ></lib-widget-value>\n </span>\n <span class=\"widget-text\">Failures</span>\n <span class=\"widget-text\">last 24 hours</span>\n </div>\n </div>\n </div>\n\n <div\n class=\"widget-details\"\n [ngClass]=\"{ 'show-details': selectedTab !== widgetTab.NONE }\"\n >\n <div [ngSwitch]=\"selectedTab\">\n <div *ngSwitchCase=\"widgetTab.DATAJOBS\">\n <ng-container\n *ngTemplateOutlet=\"dataJobsTemplate\"\n ></ng-container>\n </div>\n <div *ngSwitchCase=\"widgetTab.EXECUTIONS\">\n <ng-container\n *ngTemplateOutlet=\"executionsTemplate\"\n ></ng-container>\n </div>\n <div *ngSwitchCase=\"widgetTab.FAILURES\">\n <ng-container\n *ngTemplateOutlet=\"failuresTemplate\"\n ></ng-container>\n </div>\n <div *ngSwitchDefault></div>\n </div>\n </div>\n\n <div class=\"widget-footer\">\n <a\n id=\"data-jobs-widget-manage-link\"\n class=\"btn btn-link\"\n alt=\"Navigate to Manage Data jobs\"\n [routerLink]=\"manageLink\"\n routerLinkActive=\"active\"\n href=\"\"\n >\n Manage\n </a>\n </div>\n </section>\n</div>\n\n<ng-template #failuresTemplate>\n <div\n class=\"data-details\"\n *ngIf=\"failures$ | async as data; else loadingTemplate\"\n >\n <clr-datagrid class=\"datagrid-compact\">\n <clr-dg-row *ngFor=\"let item of data?.content\">\n <clr-dg-cell>\n <div class=\"data-row\">\n <span class=\"p5 data-title\">{{ item.jobName }}</span>\n <span class=\"p7 data-description\"\n >{{ item.startTime | date : \"MMM d, y, hh:mm a\" }} ,\n took 12min, {{ item.status }}</span\n >\n </div>\n </clr-dg-cell>\n </clr-dg-row>\n <clr-dg-placeholder>Coming Soon!</clr-dg-placeholder>\n <clr-dg-footer>\n <clr-dg-pagination\n #pagination\n [clrDgTotalItems]=\"data.totalItems\"\n [clrDgPageSize]=\"pageSize\"\n [clrDgPage]=\"currentPage\"\n (clrDgPageChange)=\"refresh($event, widgetTab.FAILURES)\"\n >\n </clr-dg-pagination>\n </clr-dg-footer>\n </clr-datagrid>\n </div>\n</ng-template>\n\n<ng-template #executionsTemplate>\n <div\n class=\"data-details\"\n *ngIf=\"executions$ | async as data; else loadingTemplate\"\n >\n <clr-datagrid class=\"datagrid-compact\">\n <clr-dg-row *ngFor=\"let item of data?.content\">\n <clr-dg-cell>\n <div class=\"data-row\">\n <span class=\"p5 data-title\">{{ item.jobName }}</span>\n <span class=\"p7 data-description\"\n >{{ item.startTime | date : \"MMM d, y, hh:mm a\" }} ,\n took 12min, {{ item.status }}</span\n >\n </div>\n </clr-dg-cell>\n </clr-dg-row>\n <clr-dg-placeholder>Coming Soon!</clr-dg-placeholder>\n\n <clr-dg-footer>\n <clr-dg-pagination\n #pagination\n [clrDgTotalItems]=\"data.totalItems\"\n [clrDgPageSize]=\"pageSize\"\n [clrDgPage]=\"currentPage\"\n (clrDgPageChange)=\"refresh($event, widgetTab.FAILURES)\"\n >\n </clr-dg-pagination>\n </clr-dg-footer>\n </clr-datagrid>\n </div>\n</ng-template>\n\n<ng-template #dataJobsTemplate>\n <div\n class=\"data-details\"\n *ngIf=\"jobs$ | async as data; else loadingTemplate\"\n >\n <clr-datagrid class=\"datagrid-compact\">\n <clr-dg-column [style.width.px]=\"widgetTabDiv.offsetWidth\"\n >Job</clr-dg-column\n >\n <clr-dg-column>Schedule (in UTC)</clr-dg-column>\n <clr-dg-row *ngFor=\"let item of data?.content\">\n <clr-dg-cell [style.width.px]=\"widgetTabDiv.offsetWidth\">\n <div\n class=\"data-row clickable\"\n [routerLink]=\"manageLink\"\n [queryParams]=\"{ search: item.jobName }\"\n >\n <span class=\"p3 data-title\">{{ item.jobName }}</span>\n </div>\n </clr-dg-cell>\n <clr-dg-cell [style.font-size.rem]=\"0.6\">\n {{ item.config?.schedule?.scheduleCron | formatSchedule :\n \"Not scheduled\" }}\n </clr-dg-cell>\n </clr-dg-row>\n <clr-dg-placeholder\n >We couldn't find any data jobs, but you can always create\n one!</clr-dg-placeholder\n >\n\n <clr-dg-footer>\n <clr-dg-pagination\n #pagination\n [clrDgTotalItems]=\"data.totalItems\"\n [clrDgPageSize]=\"pageSize\"\n [clrDgPage]=\"currentPage\"\n (clrDgPageChange)=\"refresh($event, widgetTab.DATAJOBS)\"\n >\n </clr-dg-pagination>\n </clr-dg-footer>\n </clr-datagrid>\n </div>\n</ng-template>\n\n<ng-template #loadingTemplate>\n <div class=\"data-details\">\n <div class=\"no-issues\">\n <clr-spinner>Loading ...</clr-spinner>\n </div>\n </div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2023-2025 Broadcom\n * SPDX-License-Identifier: Apache-2.0\n */::ng-deep .fade-to-dark.dark .widget-card{--label-color-error: #f27963;--label-color-success: #5eb715;--header-background: #28404d;--widget-border: 1px solid #28404d;--widget-clickable-background: #324f62;--widget-details-background: #21333b;--widget-details-hover-background: #1b2a32;--widget-details-color: #b3b3b3;--widget-details-border: 2px solid #28404d;--widget-icon-backgound-color: #194b70}.widget-card{--label-color-error: #f35e44;--label-color-success: #5aa220;--header-background: #ffffff;--widget-border: 1px solid #e3f5fc;--widget-clickable-background: #e8e8e8;--widget-details-background: #ffffff;--widget-details-hover-background: #d8e3e9;--widget-details-color: #8c8c8c;--widget-details-border: 2px solid #e3f5fc;--widget-icon-backgound-color: #0072a3}.widget-card .label-error{color:var(--label-color-error)}.widget-card .label-success{color:var(--label-color-success)}.widget-card .widget-footer{position:relative;min-height:25px;margin:1.3rem -1.2rem -1.2rem;border-top:var(--widget-border)}.widget-card .widget-footer a{margin:0 0 0 .5rem;padding:0}.widget-card .widget-header{background:var(--header-background);margin:-1.2rem -1.2rem 0;padding:.8rem;border-radius:.1rem .1rem 0 0;position:relative;min-height:96px}.widget-card .widget-header .header-title{margin-top:0;font-weight:200}.widget-card .widget-header .header-title clr-icon{margin-top:-2px}.widget-card .widget-header p{margin-top:.3rem;line-height:.8rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.widget-card .widget-header .header-link{position:absolute;top:.4rem;right:.3rem}.widget-card .widget-header .header-link clr-icon{margin-top:-.1rem}.widget-card .widget-container{z-index:100}.widget-card .widget-container .widget-values{line-height:.8rem;display:grid;grid-template:\". . .\" 1fr/1fr 1fr 1fr;margin-left:-1.2rem;margin-right:-1.2rem;margin-bottom:-1.2rem;grid-row-gap:1.2rem;row-gap:1.2rem;border-top:var(--widget-border)}.widget-card .widget-container .widget-values .widget-value{display:block;text-align:center;background:var(--widget-details-background);padding:.6rem}.widget-card .widget-container .widget-values .widget-value:not(:first-child){border-left:var(--widget-border)}.widget-card .widget-container .widget-values .widget-value:not(:last-child){border-right:var(--widget-border)}.widget-card .widget-container .widget-values .widget-value .widget-title{margin-bottom:.2rem;margin-top:.2rem;font-size:1.2rem;font-weight:500;display:block}.widget-card .widget-container .widget-values .widget-value .widget-text{font-size:.55rem;display:block;line-height:.6rem}.widget-card .widget-container .widget-values .widget-value.widget-clickable{cursor:pointer}.widget-card .widget-container .widget-values .widget-value.widget-clickable:hover{background:var(--widget-clickable-background)}.widget-card .widget-container .widget-values .widget-value.show-details{background:var(--widget-clickable-background);position:relative}.widget-card .widget-container .widget-values .widget-value.show-details .widget-text{font-weight:700}.widget-card .widget-details{z-index:1;height:0;margin:1.2rem -1.2rem -1.2rem;transition:height .3s;overflow:hidden;background:var(--widget-details-background)}.widget-card .widget-details.show-details{height:240px;border-top:var(--widget-details-border)}.widget-card .widget-details .no-issues{height:100%;width:100%;text-align:center;margin-top:1.2rem}.widget-card .widget-details .no-issues .no-issues-img{display:block;height:120px;margin:0 auto}.widget-card .widget-details .no-issues .no-issues-text{color:var(--widget-details-color)}.widget-card .widget-details .data-details{height:240px;position:relative}.widget-card .widget-details .data-details ::ng-deep clr-datagrid{height:100%}.widget-card .widget-details .data-details ::ng-deep clr-datagrid .datagrid{margin-top:0;flex-basis:0;border:0}.widget-card .widget-details .data-details ::ng-deep clr-datagrid .datagrid .datagrid-row{border-top:none;border-bottom:none}.widget-card .widget-details .data-details ::ng-deep clr-datagrid .datagrid .datagrid-placeholder-container{border-top:none}.widget-card .widget-details .data-details ::ng-deep clr-datagrid .datagrid-footer{padding:.1rem .5rem;border-right:none;border-left:none;border-bottom:none}.widget-card .widget-details .data-details .data-row{display:block;margin-top:0;position:relative;padding-left:.2rem}.widget-card .widget-details .data-details .data-row.clickable{cursor:pointer}.widget-card .widget-details .data-details .data-row .data-title{line-height:.6rem;font-weight:500;display:block;margin-top:0;position:relative}.widget-card .widget-details .data-details .data-row .data-title .btn{margin:0}.widget-card .widget-details .data-details .data-row .data-title .title-icon{float:left;width:32px;display:flex;justify-content:center}.widget-card .widget-details .data-details .data-row .data-title .title-icon lib-status-cell{width:15px;display:flex;justify-content:center}.widget-card .widget-details .data-details .data-row .data-description{display:block;margin-top:0;color:var(--widget-details-color);line-height:1rem}.widget-card .widget-details .data-details .data-row .data-description clr-icon{margin-top:-2px}\n", "/*!\n * Copyright 2023-2025 Broadcom\n * SPDX-License-Identifier: Apache-2.0\n */.widget{position:relative;height:100%}.widget .widget-section-container{padding:1.2rem;height:100%;border-radius:.2rem;border:none;box-shadow:0 3px 10px #0000001a,0 3px 5px #00000017;position:relative;overflow:hidden}\n"] }] }], function () { return [{ type: i1.DataJobsApiService }, { type: i2.ErrorHandlerService }]; }, { manageLink: [{ type: Input }], onWindowResize: [{ type: HostListener, args: ['window:resize'] }] }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1qb2JzLXdpZGdldC1vbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1waXBlbGluZXMvc3JjL2xpYi9jb21wb25lbnRzL3dpZGdldHMvZGF0YS1qb2JzLXdpZGdldC1vbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1waXBlbGluZXMvc3JjL2xpYi9jb21wb25lbnRzL3dpZGdldHMvZGF0YS1qb2JzLXdpZGdldC1vbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQWUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7SUNnRTlDLHdCQUVnQjs7O0lBSHBCLDJCQUF3QztJQUNwQyxxR0FFZ0I7SUFDcEIsaUJBQU07Ozs7SUFGRyxlQUFrQztJQUFsQyxzQ0FBa0M7OztJQUl2Qyx3QkFFZ0I7OztJQUhwQiwyQkFBMEM7SUFDdEMscUdBRWdCO0lBQ3BCLGlCQUFNOzs7O0lBRkcsZUFBb0M7SUFBcEMsc0NBQW9DOzs7SUFJekMsd0JBRWdCOzs7SUFIcEIsMkJBQXdDO0lBQ3BDLHFHQUVnQjtJQUNwQixpQkFBTTs7OztJQUZHLGVBQWtDO0lBQWxDLHNDQUFrQzs7O0lBRzNDLHNCQUE0Qjs7O0lBeUJoQyxrQ0FBK0Msa0JBQUEsY0FBQSxlQUFBO0lBR1AsWUFB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TUFBTSxFQUFFLHNCQUFzQixDQUFDLE1BQU07UUFDckMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDckIsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDbkIsU0FBUyxFQUFFLFNBQVM7S0FDdkI7SUFDRDtRQUNJLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ25CLFNBQVMsRUFBRSxTQUFTO0tBQ3ZCO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsMkJBQTJCO1FBQ3BDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxRQUFRO1FBQ3ZDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ25CLFNBQVMsRUFBRSxTQUFTO0tBQ3ZCO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsMkJBQTJCO1FBQ3BDLE1BQU