@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
JavaScript
/*
* 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