@memberjunction/ng-dashboards 2.51.0 → 2.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/ai-dashboard.component.js +17 -19
- package/dist/AI/ai-dashboard.component.js.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +4 -6
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +3 -5
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management-v2.component.js +67 -64
- package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +4 -6
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/Actions/actions-management-dashboard.component.js +14 -15
- package/dist/Actions/actions-management-dashboard.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +5 -6
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +6 -7
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.js +3 -4
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +3 -4
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +5 -6
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +3 -4
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +3 -4
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +3 -4
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/EntityAdmin/components/erd-composite.component.js +6 -7
- package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +4 -6
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +7 -7
|
@@ -7,10 +7,9 @@ import * as i1 from "@angular/forms";
|
|
|
7
7
|
import * as i2 from "@progress/kendo-angular-indicators";
|
|
8
8
|
import * as i3 from "@progress/kendo-angular-dropdowns";
|
|
9
9
|
import * as i4 from "@progress/kendo-angular-inputs";
|
|
10
|
-
import * as i5 from "@memberjunction/ng-
|
|
11
|
-
import * as i6 from "@
|
|
12
|
-
import * as i7 from "@
|
|
13
|
-
import * as i8 from "@angular/common";
|
|
10
|
+
import * as i5 from "@memberjunction/ng-code-editor";
|
|
11
|
+
import * as i6 from "@progress/kendo-angular-buttons";
|
|
12
|
+
import * as i7 from "@angular/common";
|
|
14
13
|
const _forTrack0 = ($index, $item) => $item.categoryId;
|
|
15
14
|
const _forTrack1 = ($index, $item) => $item.ID;
|
|
16
15
|
const _c0 = () => ({ text: "All Statuses", value: "all" });
|
|
@@ -488,7 +487,7 @@ export class ActionsOverviewComponent {
|
|
|
488
487
|
}
|
|
489
488
|
}
|
|
490
489
|
static ɵfac = function ActionsOverviewComponent_Factory(t) { return new (t || ActionsOverviewComponent)(); };
|
|
491
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsOverviewComponent, selectors: [["mj-actions-overview"]], outputs: { openEntityRecord: "openEntityRecord", showActionsListView: "showActionsListView", showExecutionsListView: "showExecutionsListView", showCategoriesListView: "showCategoriesListView" }, decls: 87, vars: 35, consts: [[
|
|
490
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsOverviewComponent, selectors: [["mj-actions-overview"]], outputs: { openEntityRecord: "openEntityRecord", showActionsListView: "showActionsListView", showExecutionsListView: "showExecutionsListView", showCategoriesListView: "showCategoriesListView" }, decls: 87, vars: 35, consts: [[1, "actions-overview"], [1, "overview-header"], [1, "filters-row"], [1, "search-container"], ["placeholder", "Search actions...", 3, "valueChange", "value"], ["kendoTextBoxPrefixTemplate", ""], [1, "filter-container"], ["textField", "text", "valueField", "value", 3, "valueChange", "data", "value"], [1, "metrics-grid"], [1, "metric-card", "primary", "clickable", 3, "click"], [1, "metric-icon"], [1, "fa-solid", "fa-cogs"], [1, "metric-content"], [1, "metric-value"], [1, "metric-label"], [1, "metric-breakdown"], [1, "active"], [1, "pending"], [1, "disabled"], [1, "metric-card", "success", "clickable", 3, "click"], [1, "fa-solid", "fa-play-circle"], [1, "recent"], [1, "success-rate"], [1, "metric-card", "info", "clickable", 3, "click"], [1, "fa-solid", "fa-sitemap"], [1, "metric-card", "warning", "clickable", 3, "click"], [1, "fa-solid", "fa-robot"], [1, "custom"], [1, "content-grid"], [1, "panel", "category-stats"], [1, "panel-header"], [1, "fa-solid", "fa-chart-bar"], [1, "panel-content"], [1, "category-list"], [1, "empty-state"], [1, "panel", "recent-actions"], [1, "fa-solid", "fa-clock"], [1, "actions-list"], [1, "panel", "recent-executions"], [1, "fa-solid", "fa-history"], [1, "executions-list"], [1, "loading-overlay"], [1, "fa-solid", "fa-search"], [1, "category-item"], [1, "category-item", 3, "click"], [1, "category-info"], [1, "category-name"], [1, "category-metrics"], [1, "metric"], [1, "metric", "success-rate"], [1, "category-chart"], [1, "progress-bar"], [1, "progress-fill"], [1, "action-item"], [1, "action-item", 3, "click"], [1, "action-icon"], [1, "action-info"], [1, "action-name"], [1, "action-description"], [1, "action-status"], [3, "themeColor", "size"], [1, "execution-item", 3, "expanded"], [1, "execution-item"], [1, "execution-header", 3, "click"], [1, "execution-time"], [1, "execution-info"], [1, "execution-action"], [1, "execution-user"], [1, "execution-result"], [1, "execution-expand-icon"], [1, "execution-details"], [1, "params-section"], [1, "fa-solid", "fa-sliders"], [2, "height", "150px", "width", "100%", 3, "ngModel", "readonly", "language", "lineWrapping"], [1, "execution-actions"], ["themeColor", "primary", "size", "small", 3, "click"], [1, "fa-solid", "fa-external-link"], ["type", "converging-spinner", 3, "themeColor"]], template: function ActionsOverviewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
492
491
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "kendo-textbox", 4);
|
|
493
492
|
i0.ɵɵlistener("valueChange", function ActionsOverviewComponent_Template_kendo_textbox_valueChange_4_listener($event) { return ctx.onSearchChange($event); });
|
|
494
493
|
i0.ɵɵtemplate(5, ActionsOverviewComponent_ng_template_5_Template, 1, 0, "ng-template", 5);
|
|
@@ -622,11 +621,11 @@ export class ActionsOverviewComponent {
|
|
|
622
621
|
i0.ɵɵconditional(ctx.recentExecutions.length > 0 ? 84 : 85);
|
|
623
622
|
i0.ɵɵadvance(2);
|
|
624
623
|
i0.ɵɵconditional(ctx.isLoading ? 86 : -1);
|
|
625
|
-
} }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.LoaderComponent, i3.DropDownListComponent, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.FillContainer, i6.CodeEditorComponent, i7.ButtonComponent, i7.ChipComponent, i8.DatePipe], styles: [".actions-overview[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .overview-header {\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-container {\n min-width: 150px;\n \n kendo-dropdownlist {\n width: 100%;\n }\n }\n }\n }\n\n .metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1.5rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.5rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 0.5rem;\n font-size: 1.25rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.75rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.5rem;\n }\n\n .metric-breakdown {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n font-size: 0.75rem;\n\n span {\n color: var(--kendo-color-subtle);\n\n &.active { color: var(--kendo-color-success); }\n &.pending { color: var(--kendo-color-warning); }\n &.disabled { color: var(--kendo-color-error); }\n &.recent { color: var(--kendo-color-info); }\n &.success-rate { color: var(--kendo-color-success); }\n &.custom { color: var(--kendo-color-primary); }\n }\n }\n }\n\n &.primary .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.info .metric-icon { background: var(--kendo-color-info); }\n &.warning .metric-icon { background: var(--kendo-color-warning); }\n }\n }\n\n .content-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 1.5rem;\n flex: 1;\n\n .panel {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n overflow: hidden;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n\n .panel-header {\n padding: 1rem 1.5rem;\n background: var(--kendo-color-app-surface);\n border-bottom: 1px solid var(--kendo-color-border);\n\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .panel-content {\n padding: 1.5rem;\n height: calc(100% - 60px);\n overflow-y: auto;\n }\n }\n\n .category-stats {\n .category-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .category-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .category-info {\n flex: 1;\n\n .category-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .category-metrics {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .metric {\n &.success-rate {\n color: var(--kendo-color-success);\n font-weight: 600;\n }\n }\n }\n }\n\n .category-chart {\n width: 60px;\n\n .progress-bar {\n height: 6px;\n background: var(--kendo-color-border);\n border-radius: 3px;\n overflow: hidden;\n\n .progress-fill {\n height: 100%;\n background: var(--kendo-color-success);\n transition: width 0.3s ease;\n }\n }\n }\n }\n }\n }\n\n .recent-actions {\n .actions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .action-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.375rem;\n background: var(--kendo-color-primary-subtle);\n\n i {\n color: var(--kendo-color-primary);\n font-size: 1rem;\n }\n }\n\n .action-info {\n flex: 1;\n\n .action-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .action-description {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n line-height: 1.3;\n }\n }\n\n .action-status {\n flex-shrink: 0;\n }\n }\n }\n }\n\n .recent-executions {\n grid-column: 1 / -1;\n\n .executions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .execution-item {\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n transition: all 0.2s ease;\n margin-bottom: 0.5rem;\n\n &.expanded {\n border-color: var(--kendo-color-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n cursor: pointer;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n }\n\n .execution-time {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n min-width: 80px;\n }\n\n .execution-info {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n font-size: 0.875rem;\n }\n\n .execution-user {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-expand-icon {\n color: var(--kendo-color-subtle);\n font-size: 0.75rem;\n margin-left: 0.5rem;\n }\n }\n\n .execution-details {\n padding: 1rem;\n background: var(--kendo-color-base-subtle);\n border-top: 1px solid var(--kendo-color-border);\n\n .params-section {\n margin-bottom: 1rem;\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n color: var(--kendo-color-subtle);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n font-size: 0.75rem;\n }\n }\n }\n\n .execution-actions {\n display: flex;\n justify-content: flex-end;\n }\n }\n }\n }\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2.5rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n//[_ngcontent-%COMP%] Responsive[_ngcontent-%COMP%] design\n@media[_ngcontent-%COMP%] (max-width[_ngcontent-%COMP%]: 1200px)[_ngcontent-%COMP%] {\n .actions-overview .content-grid {\n grid-template-columns: 1fr;\n \n .recent-executions {\n grid-column: 1;\n }\n }\n}\n\n@media (max-width: 768px) {\n .actions-overview[_ngcontent-%COMP%] {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .overview-header .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-container {\n min-width: unset;\n }\n }\n }\n}"] });
|
|
624
|
+
} }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.LoaderComponent, i3.DropDownListComponent, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.CodeEditorComponent, i6.ButtonComponent, i6.ChipComponent, i7.DatePipe], styles: [".actions-overview[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .overview-header {\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-container {\n min-width: 150px;\n \n kendo-dropdownlist {\n width: 100%;\n }\n }\n }\n }\n\n .metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1.5rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.5rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 0.5rem;\n font-size: 1.25rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.75rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.5rem;\n }\n\n .metric-breakdown {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n font-size: 0.75rem;\n\n span {\n color: var(--kendo-color-subtle);\n\n &.active { color: var(--kendo-color-success); }\n &.pending { color: var(--kendo-color-warning); }\n &.disabled { color: var(--kendo-color-error); }\n &.recent { color: var(--kendo-color-info); }\n &.success-rate { color: var(--kendo-color-success); }\n &.custom { color: var(--kendo-color-primary); }\n }\n }\n }\n\n &.primary .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.info .metric-icon { background: var(--kendo-color-info); }\n &.warning .metric-icon { background: var(--kendo-color-warning); }\n }\n }\n\n .content-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 1.5rem;\n flex: 1;\n\n .panel {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n overflow: hidden;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n\n .panel-header {\n padding: 1rem 1.5rem;\n background: var(--kendo-color-app-surface);\n border-bottom: 1px solid var(--kendo-color-border);\n\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .panel-content {\n padding: 1.5rem;\n height: calc(100% - 60px);\n overflow-y: auto;\n }\n }\n\n .category-stats {\n .category-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .category-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .category-info {\n flex: 1;\n\n .category-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .category-metrics {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .metric {\n &.success-rate {\n color: var(--kendo-color-success);\n font-weight: 600;\n }\n }\n }\n }\n\n .category-chart {\n width: 60px;\n\n .progress-bar {\n height: 6px;\n background: var(--kendo-color-border);\n border-radius: 3px;\n overflow: hidden;\n\n .progress-fill {\n height: 100%;\n background: var(--kendo-color-success);\n transition: width 0.3s ease;\n }\n }\n }\n }\n }\n }\n\n .recent-actions {\n .actions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .action-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.375rem;\n background: var(--kendo-color-primary-subtle);\n\n i {\n color: var(--kendo-color-primary);\n font-size: 1rem;\n }\n }\n\n .action-info {\n flex: 1;\n\n .action-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .action-description {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n line-height: 1.3;\n }\n }\n\n .action-status {\n flex-shrink: 0;\n }\n }\n }\n }\n\n .recent-executions {\n grid-column: 1 / -1;\n\n .executions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .execution-item {\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n transition: all 0.2s ease;\n margin-bottom: 0.5rem;\n\n &.expanded {\n border-color: var(--kendo-color-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n cursor: pointer;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n }\n\n .execution-time {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n min-width: 80px;\n }\n\n .execution-info {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n font-size: 0.875rem;\n }\n\n .execution-user {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-expand-icon {\n color: var(--kendo-color-subtle);\n font-size: 0.75rem;\n margin-left: 0.5rem;\n }\n }\n\n .execution-details {\n padding: 1rem;\n background: var(--kendo-color-base-subtle);\n border-top: 1px solid var(--kendo-color-border);\n\n .params-section {\n margin-bottom: 1rem;\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n color: var(--kendo-color-subtle);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n font-size: 0.75rem;\n }\n }\n }\n\n .execution-actions {\n display: flex;\n justify-content: flex-end;\n }\n }\n }\n }\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2.5rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n//[_ngcontent-%COMP%] Responsive[_ngcontent-%COMP%] design\n@media[_ngcontent-%COMP%] (max-width[_ngcontent-%COMP%]: 1200px)[_ngcontent-%COMP%] {\n .actions-overview .content-grid {\n grid-template-columns: 1fr;\n \n .recent-executions {\n grid-column: 1;\n }\n }\n}\n\n@media (max-width: 768px) {\n .actions-overview[_ngcontent-%COMP%] {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .overview-header .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-container {\n min-width: unset;\n }\n }\n }\n}"] });
|
|
626
625
|
}
|
|
627
626
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionsOverviewComponent, [{
|
|
628
627
|
type: Component,
|
|
629
|
-
args: [{ selector: 'mj-actions-overview', template: "<div class=\"actions-overview\" mjFillContainer>\n <!-- Header with search and filters -->\n <div class=\"overview-header\">\n <div class=\"filters-row\">\n <div class=\"search-container\">\n <kendo-textbox \n placeholder=\"Search actions...\" \n [value]=\"searchTerm$.value\"\n (valueChange)=\"onSearchChange($event)\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"filter-container\">\n <kendo-dropdownlist \n [data]=\"[\n { text: 'All Statuses', value: 'all' },\n { text: 'Active', value: 'Active' },\n { text: 'Pending', value: 'Pending' },\n { text: 'Disabled', value: 'Disabled' }\n ]\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedStatus$.value\"\n (valueChange)=\"onStatusFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n \n <div class=\"filter-container\">\n <kendo-dropdownlist \n [data]=\"[\n { text: 'All Types', value: 'all' },\n { text: 'AI Generated', value: 'Generated' },\n { text: 'Custom', value: 'Custom' }\n ]\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedType$.value\"\n (valueChange)=\"onTypeFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Metrics Cards -->\n <div class=\"metrics-grid\">\n <div class=\"metric-card primary clickable\" (click)=\"onTotalActionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-cogs\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalActions }}</div>\n <div class=\"metric-label\">Total Actions</div>\n <div class=\"metric-breakdown\">\n <span class=\"active\">{{ metrics.activeActions }} Active</span>\n <span class=\"pending\">{{ metrics.pendingActions }} Pending</span>\n <span class=\"disabled\">{{ metrics.disabledActions }} Disabled</span>\n </div>\n </div>\n </div>\n\n <div class=\"metric-card success clickable\" (click)=\"onExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-play-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalExecutions }}</div>\n <div class=\"metric-label\">Total Executions</div>\n <div class=\"metric-breakdown\">\n <span class=\"recent\">{{ metrics.recentExecutions }} in last 24h</span>\n <span class=\"success-rate\">{{ metrics.successRate }}% success rate</span>\n </div>\n </div>\n </div>\n\n <div class=\"metric-card info clickable\" (click)=\"onCategoriesClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-sitemap\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalCategories }}</div>\n <div class=\"metric-label\">Categories</div>\n <div class=\"metric-breakdown\">\n <span>Organized structure</span>\n </div>\n </div>\n </div>\n\n <div class=\"metric-card warning clickable\" (click)=\"onAIGeneratedClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-robot\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.aiGeneratedActions }}</div>\n <div class=\"metric-label\">AI Generated</div>\n <div class=\"metric-breakdown\">\n <span class=\"custom\">{{ metrics.customActions }} Custom</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Content Grid -->\n <div class=\"content-grid\">\n <!-- Category Statistics -->\n <div class=\"panel category-stats\">\n <div class=\"panel-header\">\n <h3><i class=\"fa-solid fa-chart-bar\"></i> Category Performance</h3>\n </div>\n <div class=\"panel-content\">\n @if (categoryStats.length > 0) {\n <div class=\"category-list\">\n @for (category of categoryStats; track category.categoryId) {\n <div class=\"category-item\" (click)=\"openCategory(category.categoryId)\">\n <div class=\"category-info\">\n <div class=\"category-name\">{{ category.categoryName }}</div>\n <div class=\"category-metrics\">\n <span class=\"metric\">{{ category.actionCount }} actions</span>\n <span class=\"metric\">{{ category.executionCount }} executions</span>\n <span class=\"metric success-rate\">{{ category.successRate }}% success</span>\n </div>\n </div>\n <div class=\"category-chart\">\n <div class=\"progress-bar\">\n <div class=\"progress-fill\" [style.width.%]=\"category.successRate\"></div>\n </div>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n <p>No category statistics available</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Recent Actions -->\n <div class=\"panel recent-actions\">\n <div class=\"panel-header\">\n <h3><i class=\"fa-solid fa-clock\"></i> Recent Actions</h3>\n </div>\n <div class=\"panel-content\">\n @if (recentActions.length > 0) {\n <div class=\"actions-list\">\n @for (action of recentActions; track action.ID) {\n <div class=\"action-item\" (click)=\"openAction(action)\">\n <div class=\"action-icon\">\n <i [class]=\"getTypeIcon(action.Type)\"></i>\n </div>\n <div class=\"action-info\">\n <div class=\"action-name\">{{ action.Name }}</div>\n <div class=\"action-description\">{{ action.Description || 'No description' }}</div>\n </div>\n <div class=\"action-status\">\n <kendo-chip \n [themeColor]=\"getStatusColor(action.Status)\"\n [size]=\"'small'\">\n {{ action.Status }}\n </kendo-chip>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-cogs\"></i>\n <p>No recent actions found</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Recent Executions -->\n <div class=\"panel recent-executions\">\n <div class=\"panel-header\">\n <h3><i class=\"fa-solid fa-history\"></i> Recent Executions</h3>\n </div>\n <div class=\"panel-content\">\n @if (recentExecutions.length > 0) {\n <div class=\"executions-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"execution-item\" [class.expanded]=\"execution.isExpanded\">\n <div class=\"execution-header\" (click)=\"toggleExecutionExpanded(execution)\">\n <div class=\"execution-time\">\n {{ execution.StartedAt | date:'MMM d, HH:mm' }}\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-action\">{{ execution.Action || 'Action ID: ' + execution.ActionID }}</div>\n <div class=\"execution-user\">{{ execution.User || 'User ID: ' + execution.UserID }}</div>\n </div>\n <div class=\"execution-result\">\n <kendo-chip \n [themeColor]=\"isExecutionSuccess(execution) ? 'success' : 'error'\"\n [size]=\"'small'\">\n {{ execution.ResultCode || 'Unknown' }}\n </kendo-chip>\n </div>\n <div class=\"execution-expand-icon\">\n <i [class]=\"execution.isExpanded ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </div>\n </div>\n @if (execution.isExpanded) {\n <div class=\"execution-details\">\n <div class=\"params-section\">\n <h5><i class=\"fa-solid fa-sliders\"></i> Parameters</h5>\n <mj-code-editor \n [ngModel]=\"formatJsonParams(execution.Params)\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 150px; width: 100%;\">\n </mj-code-editor>\n </div>\n <div class=\"execution-actions\">\n <kendo-button \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openExecution(execution)\">\n <i class=\"fa-solid fa-external-link\"></i> Open Details\n </kendo-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <p>No recent executions found</p>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (isLoading) {\n <div class=\"loading-overlay\">\n <kendo-loader type=\"converging-spinner\" [themeColor]=\"'primary'\"></kendo-loader>\n </div>\n }\n</div>", styles: [".actions-overview {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .overview-header {\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-container {\n min-width: 150px;\n \n kendo-dropdownlist {\n width: 100%;\n }\n }\n }\n }\n\n .metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1.5rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.5rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 0.5rem;\n font-size: 1.25rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.75rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.5rem;\n }\n\n .metric-breakdown {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n font-size: 0.75rem;\n\n span {\n color: var(--kendo-color-subtle);\n\n &.active { color: var(--kendo-color-success); }\n &.pending { color: var(--kendo-color-warning); }\n &.disabled { color: var(--kendo-color-error); }\n &.recent { color: var(--kendo-color-info); }\n &.success-rate { color: var(--kendo-color-success); }\n &.custom { color: var(--kendo-color-primary); }\n }\n }\n }\n\n &.primary .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.info .metric-icon { background: var(--kendo-color-info); }\n &.warning .metric-icon { background: var(--kendo-color-warning); }\n }\n }\n\n .content-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 1.5rem;\n flex: 1;\n\n .panel {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n overflow: hidden;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n\n .panel-header {\n padding: 1rem 1.5rem;\n background: var(--kendo-color-app-surface);\n border-bottom: 1px solid var(--kendo-color-border);\n\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .panel-content {\n padding: 1.5rem;\n height: calc(100% - 60px);\n overflow-y: auto;\n }\n }\n\n .category-stats {\n .category-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .category-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .category-info {\n flex: 1;\n\n .category-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .category-metrics {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .metric {\n &.success-rate {\n color: var(--kendo-color-success);\n font-weight: 600;\n }\n }\n }\n }\n\n .category-chart {\n width: 60px;\n\n .progress-bar {\n height: 6px;\n background: var(--kendo-color-border);\n border-radius: 3px;\n overflow: hidden;\n\n .progress-fill {\n height: 100%;\n background: var(--kendo-color-success);\n transition: width 0.3s ease;\n }\n }\n }\n }\n }\n }\n\n .recent-actions {\n .actions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .action-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.375rem;\n background: var(--kendo-color-primary-subtle);\n\n i {\n color: var(--kendo-color-primary);\n font-size: 1rem;\n }\n }\n\n .action-info {\n flex: 1;\n\n .action-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .action-description {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n line-height: 1.3;\n }\n }\n\n .action-status {\n flex-shrink: 0;\n }\n }\n }\n }\n\n .recent-executions {\n grid-column: 1 / -1;\n\n .executions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .execution-item {\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n transition: all 0.2s ease;\n margin-bottom: 0.5rem;\n\n &.expanded {\n border-color: var(--kendo-color-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n cursor: pointer;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n }\n\n .execution-time {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n min-width: 80px;\n }\n\n .execution-info {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n font-size: 0.875rem;\n }\n\n .execution-user {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-expand-icon {\n color: var(--kendo-color-subtle);\n font-size: 0.75rem;\n margin-left: 0.5rem;\n }\n }\n\n .execution-details {\n padding: 1rem;\n background: var(--kendo-color-base-subtle);\n border-top: 1px solid var(--kendo-color-border);\n\n .params-section {\n margin-bottom: 1rem;\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n color: var(--kendo-color-subtle);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n font-size: 0.75rem;\n }\n }\n }\n\n .execution-actions {\n display: flex;\n justify-content: flex-end;\n }\n }\n }\n }\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2.5rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n// Responsive design\n@media (max-width: 1200px) {\n .actions-overview .content-grid {\n grid-template-columns: 1fr;\n \n .recent-executions {\n grid-column: 1;\n }\n }\n}\n\n@media (max-width: 768px) {\n .actions-overview {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .overview-header .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-container {\n min-width: unset;\n }\n }\n }\n}"] }]
|
|
628
|
+
args: [{ selector: 'mj-actions-overview', template: "<div class=\"actions-overview\" >\n <!-- Header with search and filters -->\n <div class=\"overview-header\">\n <div class=\"filters-row\">\n <div class=\"search-container\">\n <kendo-textbox \n placeholder=\"Search actions...\" \n [value]=\"searchTerm$.value\"\n (valueChange)=\"onSearchChange($event)\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"filter-container\">\n <kendo-dropdownlist \n [data]=\"[\n { text: 'All Statuses', value: 'all' },\n { text: 'Active', value: 'Active' },\n { text: 'Pending', value: 'Pending' },\n { text: 'Disabled', value: 'Disabled' }\n ]\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedStatus$.value\"\n (valueChange)=\"onStatusFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n \n <div class=\"filter-container\">\n <kendo-dropdownlist \n [data]=\"[\n { text: 'All Types', value: 'all' },\n { text: 'AI Generated', value: 'Generated' },\n { text: 'Custom', value: 'Custom' }\n ]\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedType$.value\"\n (valueChange)=\"onTypeFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Metrics Cards -->\n <div class=\"metrics-grid\">\n <div class=\"metric-card primary clickable\" (click)=\"onTotalActionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-cogs\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalActions }}</div>\n <div class=\"metric-label\">Total Actions</div>\n <div class=\"metric-breakdown\">\n <span class=\"active\">{{ metrics.activeActions }} Active</span>\n <span class=\"pending\">{{ metrics.pendingActions }} Pending</span>\n <span class=\"disabled\">{{ metrics.disabledActions }} Disabled</span>\n </div>\n </div>\n </div>\n\n <div class=\"metric-card success clickable\" (click)=\"onExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-play-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalExecutions }}</div>\n <div class=\"metric-label\">Total Executions</div>\n <div class=\"metric-breakdown\">\n <span class=\"recent\">{{ metrics.recentExecutions }} in last 24h</span>\n <span class=\"success-rate\">{{ metrics.successRate }}% success rate</span>\n </div>\n </div>\n </div>\n\n <div class=\"metric-card info clickable\" (click)=\"onCategoriesClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-sitemap\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalCategories }}</div>\n <div class=\"metric-label\">Categories</div>\n <div class=\"metric-breakdown\">\n <span>Organized structure</span>\n </div>\n </div>\n </div>\n\n <div class=\"metric-card warning clickable\" (click)=\"onAIGeneratedClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-robot\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.aiGeneratedActions }}</div>\n <div class=\"metric-label\">AI Generated</div>\n <div class=\"metric-breakdown\">\n <span class=\"custom\">{{ metrics.customActions }} Custom</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Content Grid -->\n <div class=\"content-grid\">\n <!-- Category Statistics -->\n <div class=\"panel category-stats\">\n <div class=\"panel-header\">\n <h3><i class=\"fa-solid fa-chart-bar\"></i> Category Performance</h3>\n </div>\n <div class=\"panel-content\">\n @if (categoryStats.length > 0) {\n <div class=\"category-list\">\n @for (category of categoryStats; track category.categoryId) {\n <div class=\"category-item\" (click)=\"openCategory(category.categoryId)\">\n <div class=\"category-info\">\n <div class=\"category-name\">{{ category.categoryName }}</div>\n <div class=\"category-metrics\">\n <span class=\"metric\">{{ category.actionCount }} actions</span>\n <span class=\"metric\">{{ category.executionCount }} executions</span>\n <span class=\"metric success-rate\">{{ category.successRate }}% success</span>\n </div>\n </div>\n <div class=\"category-chart\">\n <div class=\"progress-bar\">\n <div class=\"progress-fill\" [style.width.%]=\"category.successRate\"></div>\n </div>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n <p>No category statistics available</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Recent Actions -->\n <div class=\"panel recent-actions\">\n <div class=\"panel-header\">\n <h3><i class=\"fa-solid fa-clock\"></i> Recent Actions</h3>\n </div>\n <div class=\"panel-content\">\n @if (recentActions.length > 0) {\n <div class=\"actions-list\">\n @for (action of recentActions; track action.ID) {\n <div class=\"action-item\" (click)=\"openAction(action)\">\n <div class=\"action-icon\">\n <i [class]=\"getTypeIcon(action.Type)\"></i>\n </div>\n <div class=\"action-info\">\n <div class=\"action-name\">{{ action.Name }}</div>\n <div class=\"action-description\">{{ action.Description || 'No description' }}</div>\n </div>\n <div class=\"action-status\">\n <kendo-chip \n [themeColor]=\"getStatusColor(action.Status)\"\n [size]=\"'small'\">\n {{ action.Status }}\n </kendo-chip>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-cogs\"></i>\n <p>No recent actions found</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Recent Executions -->\n <div class=\"panel recent-executions\">\n <div class=\"panel-header\">\n <h3><i class=\"fa-solid fa-history\"></i> Recent Executions</h3>\n </div>\n <div class=\"panel-content\">\n @if (recentExecutions.length > 0) {\n <div class=\"executions-list\">\n @for (execution of recentExecutions; track execution.ID) {\n <div class=\"execution-item\" [class.expanded]=\"execution.isExpanded\">\n <div class=\"execution-header\" (click)=\"toggleExecutionExpanded(execution)\">\n <div class=\"execution-time\">\n {{ execution.StartedAt | date:'MMM d, HH:mm' }}\n </div>\n <div class=\"execution-info\">\n <div class=\"execution-action\">{{ execution.Action || 'Action ID: ' + execution.ActionID }}</div>\n <div class=\"execution-user\">{{ execution.User || 'User ID: ' + execution.UserID }}</div>\n </div>\n <div class=\"execution-result\">\n <kendo-chip \n [themeColor]=\"isExecutionSuccess(execution) ? 'success' : 'error'\"\n [size]=\"'small'\">\n {{ execution.ResultCode || 'Unknown' }}\n </kendo-chip>\n </div>\n <div class=\"execution-expand-icon\">\n <i [class]=\"execution.isExpanded ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </div>\n </div>\n @if (execution.isExpanded) {\n <div class=\"execution-details\">\n <div class=\"params-section\">\n <h5><i class=\"fa-solid fa-sliders\"></i> Parameters</h5>\n <mj-code-editor \n [ngModel]=\"formatJsonParams(execution.Params)\"\n [readonly]=\"true\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n style=\"height: 150px; width: 100%;\">\n </mj-code-editor>\n </div>\n <div class=\"execution-actions\">\n <kendo-button \n themeColor=\"primary\" \n size=\"small\"\n (click)=\"openExecution(execution)\">\n <i class=\"fa-solid fa-external-link\"></i> Open Details\n </kendo-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-history\"></i>\n <p>No recent executions found</p>\n </div>\n }\n </div>\n </div>\n </div>\n\n @if (isLoading) {\n <div class=\"loading-overlay\">\n <kendo-loader type=\"converging-spinner\" [themeColor]=\"'primary'\"></kendo-loader>\n </div>\n }\n</div>", styles: [".actions-overview {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .overview-header {\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-container {\n min-width: 150px;\n \n kendo-dropdownlist {\n width: 100%;\n }\n }\n }\n }\n\n .metrics-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1.5rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.5rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3rem;\n height: 3rem;\n border-radius: 0.5rem;\n font-size: 1.25rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.75rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.5rem;\n }\n\n .metric-breakdown {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n font-size: 0.75rem;\n\n span {\n color: var(--kendo-color-subtle);\n\n &.active { color: var(--kendo-color-success); }\n &.pending { color: var(--kendo-color-warning); }\n &.disabled { color: var(--kendo-color-error); }\n &.recent { color: var(--kendo-color-info); }\n &.success-rate { color: var(--kendo-color-success); }\n &.custom { color: var(--kendo-color-primary); }\n }\n }\n }\n\n &.primary .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.info .metric-icon { background: var(--kendo-color-info); }\n &.warning .metric-icon { background: var(--kendo-color-warning); }\n }\n }\n\n .content-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-template-rows: auto auto;\n gap: 1.5rem;\n flex: 1;\n\n .panel {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n overflow: hidden;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n\n .panel-header {\n padding: 1rem 1.5rem;\n background: var(--kendo-color-app-surface);\n border-bottom: 1px solid var(--kendo-color-border);\n\n h3 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .panel-content {\n padding: 1.5rem;\n height: calc(100% - 60px);\n overflow-y: auto;\n }\n }\n\n .category-stats {\n .category-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .category-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .category-info {\n flex: 1;\n\n .category-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .category-metrics {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .metric {\n &.success-rate {\n color: var(--kendo-color-success);\n font-weight: 600;\n }\n }\n }\n }\n\n .category-chart {\n width: 60px;\n\n .progress-bar {\n height: 6px;\n background: var(--kendo-color-border);\n border-radius: 3px;\n overflow: hidden;\n\n .progress-fill {\n height: 100%;\n background: var(--kendo-color-success);\n transition: width 0.3s ease;\n }\n }\n }\n }\n }\n }\n\n .recent-actions {\n .actions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .action-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n }\n\n .action-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.375rem;\n background: var(--kendo-color-primary-subtle);\n\n i {\n color: var(--kendo-color-primary);\n font-size: 1rem;\n }\n }\n\n .action-info {\n flex: 1;\n\n .action-name {\n font-weight: 600;\n margin-bottom: 0.25rem;\n }\n\n .action-description {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n line-height: 1.3;\n }\n }\n\n .action-status {\n flex-shrink: 0;\n }\n }\n }\n }\n\n .recent-executions {\n grid-column: 1 / -1;\n\n .executions-list {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n .execution-item {\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n transition: all 0.2s ease;\n margin-bottom: 0.5rem;\n\n &.expanded {\n border-color: var(--kendo-color-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n cursor: pointer;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n }\n\n .execution-time {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n min-width: 80px;\n }\n\n .execution-info {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n font-size: 0.875rem;\n }\n\n .execution-user {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-expand-icon {\n color: var(--kendo-color-subtle);\n font-size: 0.75rem;\n margin-left: 0.5rem;\n }\n }\n\n .execution-details {\n padding: 1rem;\n background: var(--kendo-color-base-subtle);\n border-top: 1px solid var(--kendo-color-border);\n\n .params-section {\n margin-bottom: 1rem;\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n color: var(--kendo-color-subtle);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n font-size: 0.75rem;\n }\n }\n }\n\n .execution-actions {\n display: flex;\n justify-content: flex-end;\n }\n }\n }\n }\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2.5rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n// Responsive design\n@media (max-width: 1200px) {\n .actions-overview .content-grid {\n grid-template-columns: 1fr;\n \n .recent-executions {\n grid-column: 1;\n }\n }\n}\n\n@media (max-width: 768px) {\n .actions-overview {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n }\n\n .overview-header .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-container {\n min-width: unset;\n }\n }\n }\n}"] }]
|
|
630
629
|
}], () => [], { openEntityRecord: [{
|
|
631
630
|
type: Output
|
|
632
631
|
}], showActionsListView: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions-overview.component.js","sourceRoot":"","sources":["../../../src/Actions/components/actions-overview.component.ts","../../../src/Actions/components/actions-overview.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actions-overview.component.js","sourceRoot":"","sources":["../../../src/Actions/components/actions-overview.component.ts","../../../src/Actions/components/actions-overview.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;ICMnE,wBAAkC;;;;IAyGhC,+BAAuE;IAA5C,+NAAS,2CAAiC,KAAC;IAElE,AADF,+BAA2B,cACE;IAAA,YAA2B;IAAA,iBAAM;IAE1D,AADF,+BAA8B,eACP;IAAA,YAAkC;IAAA,iBAAO;IAC9D,gCAAqB;IAAA,YAAwC;IAAA,iBAAO;IACpE,gCAAkC;IAAA,aAAmC;IAEzE,AADE,AADuE,iBAAO,EACxE,EACF;IAEJ,AADF,gCAA4B,eACA;IACxB,2BAAwE;IAG9E,AADE,AADE,iBAAM,EACF,EACF;;;IAZyB,eAA2B;IAA3B,8CAA2B;IAE/B,eAAkC;IAAlC,8DAAkC;IAClC,eAAwC;IAAxC,oEAAwC;IAC3B,eAAmC;IAAnC,+DAAmC;IAK1C,eAAsC;IAAtC,qDAAsC;;;IAb3E,+BAA2B;IACzB,4GAgBC;IACH,iBAAM;;;IAjBJ,cAgBC;IAhBD,mCAgBC;;;IAGH,+BAAyB;IACvB,wBAAqC;IACrC,yBAAG;IAAA,gDAAgC;IACrC,AADqC,iBAAI,EACnC;;;;IAcF,+BAAsD;IAA7B,6NAAS,4BAAkB,KAAC;IACnD,+BAAyB;IACvB,oBAA0C;IAC5C,iBAAM;IAEJ,AADF,+BAAyB,cACE;IAAA,YAAiB;IAAA,iBAAM;IAChD,+BAAgC;IAAA,YAA4C;IAC9E,AAD8E,iBAAM,EAC9E;IAEJ,AADF,+BAA2B,qBAGN;IACjB,aACF;IAEJ,AADE,AADE,iBAAa,EACT,EACF;;;;IAbC,eAAkC;IAAlC,iDAAkC;IAGZ,eAAiB;IAAjB,oCAAiB;IACV,eAA4C;IAA5C,+DAA4C;IAI1E,eAA4C;IAC5C,AADA,oEAA4C,iBAC5B;IAChB,cACF;IADE,iDACF;;;IAfR,+BAA0B;IACxB,4GAiBC;IACH,iBAAM;;;IAlBJ,cAiBC;IAjBD,mCAiBC;;;IAGH,+BAAyB;IACvB,wBAAgC;IAChC,yBAAG;IAAA,uCAAuB;IAC5B,AAD4B,iBAAI,EAC1B;;;;IAqCM,AADF,AADF,+BAA+B,cACD,SACtB;IAAA,wBAAmC;IAAC,2BAAU;IAAA,iBAAK;IACvD,qCAMiB;IACnB,iBAAM;IAEJ,AADF,+BAA+B,uBAIQ;IAAnC,4QAAS,kCAAwB,KAAC;IAClC,wBAAyC;IAAC,8BAC5C;IAEJ,AADE,AADE,iBAAe,EACX,EACF;;;;IAfA,eAA8C;IAG9C,AADA,AADA,AADA,sEAA8C,kBAC7B,oBACE,sBACE;;;;IA3B7B,AADF,+BAAoE,cACS;IAA7C,gOAAS,4CAAkC,KAAC;IACxE,+BAA4B;IAC1B,YACF;;IAAA,iBAAM;IAEJ,AADF,+BAA4B,cACI;IAAA,YAA4D;IAAA,iBAAM;IAChG,+BAA4B;IAAA,YAAsD;IACpF,AADoF,iBAAM,EACpF;IAEJ,AADF,gCAA8B,sBAGT;IACjB,aACF;IACF,AADE,iBAAa,EACT;IACN,gCAAmC;IACjC,qBAA8F;IAElG,AADE,iBAAM,EACF;IACN,0GAA4B;IAsB9B,iBAAM;;;;IA1CsB,mDAAuC;IAG7D,eACF;IADE,8FACF;IAEgC,eAA4D;IAA5D,kFAA4D;IAC9D,eAAsD;IAAtD,4EAAsD;IAIhF,eAAkE;IAClE,AADA,0FAAkE,iBAClD;IAChB,cACF;IADE,qEACF;IAGG,eAAsF;IAAtF,8FAAsF;IAG7F,cAqBC;IArBD,mDAqBC;;;IA3CP,+BAA6B;IAC3B,6GA4CC;IACH,iBAAM;;;IA7CJ,cA4CC;IA5CD,sCA4CC;;;IAGH,+BAAyB;IACvB,wBAAmC;IACnC,yBAAG;IAAA,0CAA0B;IAC/B,AAD+B,iBAAI,EAC7B;;;IAOZ,+BAA6B;IAC3B,mCAAgF;IAClF,iBAAM;;IADoC,cAAwB;IAAxB,sCAAwB;;AD9MtE,MAAM,OAAO,wBAAwB;IACzB,gBAAgB,GAAG,IAAI,YAAY,EAA0C,CAAC;IAC9E,mBAAmB,GAAG,IAAI,YAAY,EAAQ,CAAC;IAC/C,sBAAsB,GAAG,IAAI,YAAY,EAAQ,CAAC;IAClD,sBAAsB,GAAG,IAAI,YAAY,EAAQ,CAAC;IAErD,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAkB;QAC9B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,CAAC;QACjB,eAAe,EAAE,CAAC;QAClB,eAAe,EAAE,CAAC;QAClB,gBAAgB,EAAE,CAAC;QACnB,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,CAAC;QAClB,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;KACjB,CAAC;IAEK,aAAa,GAAoB,EAAE,CAAC;IACpC,aAAa,GAAmB,EAAE,CAAC;IACnC,gBAAgB,GAA4B,EAAE,CAAC;IAC/C,aAAa,GAA2B,EAAE,CAAC;IAE3C,WAAW,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;IAC9C,eAAe,GAAG,IAAI,eAAe,CAAS,KAAK,CAAC,CAAC;IACrD,aAAa,GAAG,IAAI,eAAe,CAAS,KAAK,CAAC,CAAC;IAElD,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAEvC,gBAAe,CAAC;IAEhB,QAAQ;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,aAAa,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,oBAAoB,EAAE,CAAC;YAChE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAChD,CAAC,CAAC,IAAI,CACL,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,iDAAiD;YACjD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAEjD,MAAM,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;gBAC5E;oBACE,UAAU,EAAE,SAAS;oBACrB,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,qBAAqB;oBAC9B,gBAAgB,EAAE,EAAE;oBACpB,aAAa,EAAE,KAAK;oBACpB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,eAAe;iBAC5B;gBACD;oBACE,UAAU,EAAE,mBAAmB;oBAC/B,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,MAAM;oBACf,gBAAgB,EAAE,EAAE;oBACpB,aAAa,EAAE,KAAK;oBACpB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,eAAe;iBAC5B;gBACD;oBACE,UAAU,EAAE,uBAAuB;oBACnC,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,gBAAgB;oBACzB,gBAAgB,EAAE,EAAE;oBACpB,aAAa,EAAE,KAAK;oBACpB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,eAAe;iBAC5B;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;YAEpD,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBACrF,MAAM,MAAM,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,OAAO;oBAAE,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;gBAClF,IAAI,CAAC,gBAAgB,CAAC,OAAO;oBAAE,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC3F,IAAI,CAAC,gBAAgB,CAAC,OAAO;oBAAE,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC3F,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAmB,CAAC;YAChE,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAA2B,CAAC;YAC9E,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAA+B,CAAC;YAElF,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,gBAAgB,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;YAClH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;YACpG,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;YAC7G,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAA4B,CAAA,CAAC,CAAC;YACjH,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC7D,QAAQ,CAAC,sCAAsC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACrE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAGO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YAC9B,UAAU,EAAE,gBAAgB;YAC5B,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,gBAAgB;YACzB,gBAAgB,EAAE,EAAE;YACpB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO,MAAM,CAAC,OAA+B,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,OAAuB,EACvB,UAAkC,EAClC,UAAsC;QAEtC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC,OAAO,GAAG;YACb,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;YAChE,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;YAClE,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM;YACpE,eAAe,EAAE,UAAU,CAAC,MAAM;YAClC,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACtC,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACvD,CAAC,CAAC,CAAC,MAAM;YACT,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YAClD,eAAe,EAAE,UAAU,CAAC,MAAM;YAClC,kBAAkB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,MAAM;YACtE,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,MAAM;SAC/D,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAEO,oBAAoB,CAAC,UAAsC;QACjE,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACrD,mFAAmF;QACnF,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACvC,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC;YACzC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;QACvF,CAAC,CAAC,CAAC,MAAM,CAAC;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5D,CAAC;IAEO,sBAAsB,CAC5B,OAAuB,EACvB,UAAkC,EAClC,UAAsC;QAEtC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC7C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1E,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC/C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAC/C,CAAC;YAEF,OAAO;gBACL,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,WAAW,EAAE,eAAe,CAAC,MAAM;gBACnC,cAAc,EAAE,kBAAkB,CAAC,MAAM;gBACzC,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;aAC3D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,iEAAiE;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAEtC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;gBAC9B,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,WAAW;gBACxB,OAAO,EAAE,gBAAgB;gBACzB,gBAAgB,EAAE,UAAU;gBAC5B,aAAa,EAAE,KAAK;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,GAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,iCAAiC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAEM,cAAc,CAAC,UAAkB;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAEM,oBAAoB,CAAC,MAAc;QACxC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,kBAAkB,CAAC,IAAY;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEM,UAAU,CAAC,MAAoB;QACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;SACpB,CAAC,CAAC;IACL,CAAC;IAEM,YAAY,CAAC,UAAkB;QACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,UAAU,EAAE,mBAAmB;YAC/B,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;IACL,CAAC;IAEM,aAAa,CAAC,SAAmC;QACtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,UAAU,EAAE,uBAAuB;YACnC,QAAQ,EAAE,SAAS,CAAC,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAEM,kBAAkB,CAAC,SAAmC;QAC3D,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC;QACjD,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;IACvF,CAAC;IAEM,cAAc,CAAC,MAAc;QAClC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC;YAChC,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,UAAU,CAAC,CAAC,OAAO,OAAO,CAAC;YAChC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QACzB,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW,CAAC,CAAC,OAAO,mBAAmB,CAAC;YAC7C,KAAK,QAAQ,CAAC,CAAC,OAAO,kBAAkB,CAAC;YACzC,OAAO,CAAC,CAAC,OAAO,iBAAiB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,6BAA6B;IACtB,mBAAmB;QACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAEM,kBAAkB;QACvB,0DAA0D;QAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAEM,uBAAuB,CAAC,SAAgC;QAC7D,SAAS,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;IAC/C,CAAC;IAEM,gBAAgB,CAAC,MAAqB;QAC3C,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;YAC/B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;kFA7UU,wBAAwB;6DAAxB,wBAAwB;YChC7B,AADF,AADF,AADF,AAFF,8BAA+B,aAEA,aACF,aACO,uBAIa;YAAvC,8HAAe,0BAAsB,IAAC;YACtC,yFAAwC;YAI5C,AADE,iBAAgB,EACZ;YAGJ,AADF,8BAA8B,4BAWmB;YAA7C,mIAAe,gCAA4B,IAAC;YAEhD,AADE,iBAAqB,EACjB;YAGJ,AADF,8BAA8B,4BAUiB;YAA3C,mIAAe,8BAA0B,IAAC;YAIlD,AADE,AADE,AADE,iBAAqB,EACjB,EACF,EACF;YAIJ,AADF,+BAA0B,cACmD;YAAhC,mGAAS,yBAAqB,IAAC;YACxE,gCAAyB;YACvB,yBAAgC;YAClC,iBAAM;YAEJ,AADF,gCAA4B,eACA;YAAA,aAA0B;YAAA,iBAAM;YAC1D,gCAA0B;YAAA,8BAAa;YAAA,iBAAM;YAE3C,AADF,gCAA8B,gBACP;YAAA,aAAkC;YAAA,iBAAO;YAC9D,iCAAsB;YAAA,aAAoC;YAAA,iBAAO;YACjE,iCAAuB;YAAA,aAAsC;YAGnE,AADE,AADE,AAD+D,iBAAO,EAChE,EACF,EACF;YAEN,gCAAyE;YAA9B,mGAAS,uBAAmB,IAAC;YACtE,gCAAyB;YACvB,yBAAuC;YACzC,iBAAM;YAEJ,AADF,gCAA4B,eACA;YAAA,aAA6B;YAAA,iBAAM;YAC7D,gCAA0B;YAAA,iCAAgB;YAAA,iBAAM;YAE9C,AADF,gCAA8B,gBACP;YAAA,aAA0C;YAAA,iBAAO;YACtE,iCAA2B;YAAA,aAAuC;YAGxE,AADE,AADE,AADoE,iBAAO,EACrE,EACF,EACF;YAEN,gCAAsE;YAA9B,mGAAS,uBAAmB,IAAC;YACnE,gCAAyB;YACvB,yBAAmC;YACrC,iBAAM;YAEJ,AADF,gCAA4B,eACA;YAAA,aAA6B;YAAA,iBAAM;YAC7D,gCAA0B;YAAA,2BAAU;YAAA,iBAAM;YAExC,AADF,gCAA8B,YACtB;YAAA,oCAAmB;YAG/B,AADE,AADE,AAD2B,iBAAO,EAC5B,EACF,EACF;YAEN,gCAA0E;YAA/B,mGAAS,wBAAoB,IAAC;YACvE,gCAAyB;YACvB,yBAAiC;YACnC,iBAAM;YAEJ,AADF,gCAA4B,eACA;YAAA,aAAgC;YAAA,iBAAM;YAChE,gCAA0B;YAAA,6BAAY;YAAA,iBAAM;YAE1C,AADF,gCAA8B,gBACP;YAAA,aAAkC;YAI/D,AADE,AADE,AADE,AADyD,iBAAO,EAC1D,EACF,EACF,EACF;YAOA,AADF,AADF,AAFF,gCAA0B,eAEU,eACN,UACpB;YAAA,yBAAqC;YAAC,sCAAoB;YAChE,AADgE,iBAAK,EAC/D;YACN,gCAA2B;YAqBvB,AApBF,oFAAgC,uEAoBvB;YAOb,AADE,iBAAM,EACF;YAKF,AADF,AADF,gCAAkC,eACN,UACpB;YAAA,yBAAiC;YAAC,gCAAc;YACtD,AADsD,iBAAK,EACrD;YACN,gCAA2B;YAsBvB,AArBF,oFAAgC,uEAqBvB;YAOb,AADE,iBAAM,EACF;YAKF,AADF,AADF,gCAAqC,eACT,UACpB;YAAA,yBAAmC;YAAC,mCAAiB;YAC3D,AAD2D,iBAAK,EAC1D;YACN,gCAA2B;YAiDvB,AAhDF,oFAAmC,uEAgD1B;YAQf,AADE,AADE,iBAAM,EACF,EACF;YAEN,oFAAiB;YAKnB,iBAAM;;YA/OI,eAA2B;YAA3B,6CAA2B;YAU3B,eAKE;YAGF,AARA,sKAKE,oCAG6B;YAO/B,eAIE;YAGF,AAPA,yIAIE,kCAG2B;YAcL,eAA0B;YAA1B,8CAA0B;YAG7B,eAAkC;YAAlC,+DAAkC;YACjC,eAAoC;YAApC,iEAAoC;YACnC,eAAsC;YAAtC,mEAAsC;YAUrC,eAA6B;YAA7B,iDAA6B;YAGhC,eAA0C;YAA1C,uEAA0C;YACpC,eAAuC;YAAvC,oEAAuC;YAU1C,eAA6B;YAA7B,iDAA6B;YAa7B,gBAAgC;YAAhC,oDAAgC;YAGnC,eAAkC;YAAlC,+DAAkC;YAczD,eAyBC;YAzBD,wDAyBC;YAUD,eA0BC;YA1BD,wDA0BC;YAUD,eAqDC;YArDD,2DAqDC;YAKP,eAIC;YAJD,yCAIC;;;iFDhNU,wBAAwB;cALpC,SAAS;2BACE,qBAAqB;oBAKrB,gBAAgB;kBAAzB,MAAM;YACG,mBAAmB;kBAA5B,MAAM;YACG,sBAAsB;kBAA/B,MAAM;YACG,sBAAsB;kBAA/B,MAAM;;kFAJI,wBAAwB"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Component, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@memberjunction/ng-container-directives";
|
|
4
3
|
export class CodeManagementComponent {
|
|
5
4
|
openEntityRecord = new EventEmitter();
|
|
6
5
|
static ɵfac = function CodeManagementComponent_Factory(t) { return new (t || CodeManagementComponent)(); };
|
|
7
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CodeManagementComponent, selectors: [["mj-code-management"]], outputs: { openEntityRecord: "openEntityRecord" }, decls: 7, vars: 0, consts: [[
|
|
6
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CodeManagementComponent, selectors: [["mj-code-management"]], outputs: { openEntityRecord: "openEntityRecord" }, decls: 7, vars: 0, consts: [[1, "code-management-placeholder"], [1, "placeholder-content"], [1, "fa-solid", "fa-code"]], template: function CodeManagementComponent_Template(rf, ctx) { if (rf & 1) {
|
|
8
7
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
9
8
|
i0.ɵɵelement(2, "i", 2);
|
|
10
9
|
i0.ɵɵelementStart(3, "h3");
|
|
@@ -13,12 +12,12 @@ export class CodeManagementComponent {
|
|
|
13
12
|
i0.ɵɵelementStart(5, "p");
|
|
14
13
|
i0.ɵɵtext(6, "AI code generation approval workflow coming soon...");
|
|
15
14
|
i0.ɵɵelementEnd()()();
|
|
16
|
-
} },
|
|
15
|
+
} }, styles: [".code-management-placeholder[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n \n .placeholder-content {\n text-align: center;\n color: var(--kendo-color-subtle);\n \n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n \n h3 {\n margin: 0 0 0.5rem 0;\n font-size: 1.25rem;\n font-weight: 600;\n }\n \n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }"] });
|
|
17
16
|
}
|
|
18
17
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CodeManagementComponent, [{
|
|
19
18
|
type: Component,
|
|
20
19
|
args: [{ selector: 'mj-code-management', template: `
|
|
21
|
-
<div class="code-management-placeholder"
|
|
20
|
+
<div class="code-management-placeholder" >
|
|
22
21
|
<div class="placeholder-content">
|
|
23
22
|
<i class="fa-solid fa-code"></i>
|
|
24
23
|
<h3>Code Management</h3>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-management.component.js","sourceRoot":"","sources":["../../../src/Actions/components/code-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC
|
|
1
|
+
{"version":3,"file":"code-management.component.js","sourceRoot":"","sources":["../../../src/Actions/components/code-management.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;AA4ChE,MAAM,OAAO,uBAAuB;IACxB,gBAAgB,GAAG,IAAI,YAAY,EAA0C,CAAC;iFAD7E,uBAAuB;6DAAvB,uBAAuB;YAtC9B,AADF,8BAA0C,aACP;YAC/B,uBAAgC;YAChC,0BAAI;YAAA,+BAAe;YAAA,iBAAK;YACxB,yBAAG;YAAA,mEAAmD;YAE1D,AADE,AADwD,iBAAI,EACtD,EACF;;;iFAiCG,uBAAuB;cA1CnC,SAAS;2BACE,oBAAoB,YACpB;;;;;;;;GAQT;gBAiCS,gBAAgB;kBAAzB,MAAM;;kFADI,uBAAuB"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Component, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@memberjunction/ng-container-directives";
|
|
4
3
|
export class EntityIntegrationComponent {
|
|
5
4
|
openEntityRecord = new EventEmitter();
|
|
6
5
|
static ɵfac = function EntityIntegrationComponent_Factory(t) { return new (t || EntityIntegrationComponent)(); };
|
|
7
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityIntegrationComponent, selectors: [["mj-entity-integration"]], outputs: { openEntityRecord: "openEntityRecord" }, decls: 7, vars: 0, consts: [[
|
|
6
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityIntegrationComponent, selectors: [["mj-entity-integration"]], outputs: { openEntityRecord: "openEntityRecord" }, decls: 7, vars: 0, consts: [[1, "entity-integration-placeholder"], [1, "placeholder-content"], [1, "fa-solid", "fa-sitemap"]], template: function EntityIntegrationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
8
7
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
9
8
|
i0.ɵɵelement(2, "i", 2);
|
|
10
9
|
i0.ɵɵelementStart(3, "h3");
|
|
@@ -13,12 +12,12 @@ export class EntityIntegrationComponent {
|
|
|
13
12
|
i0.ɵɵelementStart(5, "p");
|
|
14
13
|
i0.ɵɵtext(6, "Entity-action mapping and relationship management coming soon...");
|
|
15
14
|
i0.ɵɵelementEnd()()();
|
|
16
|
-
} },
|
|
15
|
+
} }, styles: [".entity-integration-placeholder[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n \n .placeholder-content {\n text-align: center;\n color: var(--kendo-color-subtle);\n \n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n \n h3 {\n margin: 0 0 0.5rem 0;\n font-size: 1.25rem;\n font-weight: 600;\n }\n \n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }"] });
|
|
17
16
|
}
|
|
18
17
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityIntegrationComponent, [{
|
|
19
18
|
type: Component,
|
|
20
19
|
args: [{ selector: 'mj-entity-integration', template: `
|
|
21
|
-
<div class="entity-integration-placeholder"
|
|
20
|
+
<div class="entity-integration-placeholder" >
|
|
22
21
|
<div class="placeholder-content">
|
|
23
22
|
<i class="fa-solid fa-sitemap"></i>
|
|
24
23
|
<h3>Entity Integration</h3>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-integration.component.js","sourceRoot":"","sources":["../../../src/Actions/components/entity-integration.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC
|
|
1
|
+
{"version":3,"file":"entity-integration.component.js","sourceRoot":"","sources":["../../../src/Actions/components/entity-integration.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;AA4ChE,MAAM,OAAO,0BAA0B;IAC3B,gBAAgB,GAAG,IAAI,YAAY,EAA0C,CAAC;oFAD7E,0BAA0B;6DAA1B,0BAA0B;YAtCjC,AADF,8BAA6C,aACV;YAC/B,uBAAmC;YACnC,0BAAI;YAAA,kCAAkB;YAAA,iBAAK;YAC3B,yBAAG;YAAA,gFAAgE;YAEvE,AADE,AADqE,iBAAI,EACnE,EACF;;;iFAiCG,0BAA0B;cA1CtC,SAAS;2BACE,uBAAuB,YACvB;;;;;;;;GAQT;gBAiCS,gBAAgB;kBAAzB,MAAM;;kFADI,0BAA0B"}
|
|
@@ -6,9 +6,8 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
import * as i1 from "@progress/kendo-angular-indicators";
|
|
7
7
|
import * as i2 from "@progress/kendo-angular-dropdowns";
|
|
8
8
|
import * as i3 from "@progress/kendo-angular-inputs";
|
|
9
|
-
import * as i4 from "@
|
|
10
|
-
import * as i5 from "@
|
|
11
|
-
import * as i6 from "@angular/common";
|
|
9
|
+
import * as i4 from "@progress/kendo-angular-buttons";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
12
11
|
const _forTrack0 = ($index, $item) => $item.date;
|
|
13
12
|
const _forTrack1 = ($index, $item) => $item.ID;
|
|
14
13
|
function ExecutionMonitoringComponent_ng_template_11_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -441,7 +440,7 @@ export class ExecutionMonitoringComponent {
|
|
|
441
440
|
this.selectedResult$.next('Running');
|
|
442
441
|
}
|
|
443
442
|
static ɵfac = function ExecutionMonitoringComponent_Factory(t) { return new (t || ExecutionMonitoringComponent)(); };
|
|
444
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExecutionMonitoringComponent, selectors: [["mj-execution-monitoring"]], outputs: { openEntityRecord: "openEntityRecord", showExecutionsListView: "showExecutionsListView" }, decls: 88, vars: 22, consts: [[
|
|
443
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExecutionMonitoringComponent, selectors: [["mj-execution-monitoring"]], outputs: { openEntityRecord: "openEntityRecord", showExecutionsListView: "showExecutionsListView" }, decls: 88, vars: 22, consts: [[1, "execution-monitoring"], [1, "monitoring-header"], [1, "header-title"], [1, "fa-solid", "fa-chart-line"], ["kendoButton", "", 1, "refresh-btn", 3, "click", "primary", "icon"], [1, "filters-row"], [1, "search-container"], ["placeholder", "Search executions...", 3, "valueChange", "value"], ["kendoTextBoxPrefixTemplate", ""], [1, "filter-group"], ["textField", "text", "valueField", "value", 3, "valueChange", "data", "value"], [1, "metrics-summary"], [1, "metric-card", "total", "clickable", 3, "click"], [1, "metric-icon"], [1, "fa-solid", "fa-play-circle"], [1, "metric-content"], [1, "metric-value"], [1, "metric-label"], [1, "metric-card", "success", "clickable", 3, "click"], [1, "fa-solid", "fa-check-circle"], [1, "metric-detail"], [1, "metric-card", "error", "clickable", 3, "click"], [1, "fa-solid", "fa-exclamation-circle"], [1, "metric-card", "duration"], [1, "fa-solid", "fa-clock"], [1, "metric-card", "activity"], [1, "fa-solid", "fa-calendar-day"], [1, "metric-card", "running", "clickable", 3, "click"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "trends-section"], [1, "section-header"], [1, "fa-solid", "fa-chart-area"], [1, "trends-chart"], [1, "empty-chart"], [1, "executions-section"], [1, "fa-solid", "fa-list"], [1, "results-count"], [1, "executions-list"], [1, "empty-state"], [1, "loading-overlay"], [1, "fa-solid", "fa-search"], [1, "trend-bars"], [1, "trend-bar"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-color", "success"], [1, "legend-color", "failed"], [1, "bar-container"], [1, "bar-success"], [1, "bar-failed"], [1, "bar-label"], [1, "bar-total"], [1, "execution-item"], [1, "execution-item", 3, "click"], [1, "execution-status"], [1, "execution-main"], [1, "execution-action", 3, "click"], [1, "execution-details"], [1, "execution-time"], [1, "execution-user"], [1, "execution-duration"], [1, "execution-result"], [3, "themeColor", "size"], [1, "execution-actions"], ["kendoButton", "", 3, "click", "fillMode", "icon"], ["type", "converging-spinner", 3, "themeColor"]], template: function ExecutionMonitoringComponent_Template(rf, ctx) { if (rf & 1) {
|
|
445
444
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h3");
|
|
446
445
|
i0.ɵɵelement(4, "i", 3);
|
|
447
446
|
i0.ɵɵtext(5, " Execution Monitoring");
|
|
@@ -585,11 +584,11 @@ export class ExecutionMonitoringComponent {
|
|
|
585
584
|
i0.ɵɵconditional(ctx.filteredExecutions.length > 0 ? 85 : 86);
|
|
586
585
|
i0.ɵɵadvance(2);
|
|
587
586
|
i0.ɵɵconditional(ctx.isLoading ? 87 : -1);
|
|
588
|
-
} }, dependencies: [i1.LoaderComponent, i2.DropDownListComponent, i3.TextBoxComponent, i3.TextBoxPrefixTemplateDirective, i4.FillContainer, i5.ButtonComponent, i5.ChipComponent, i6.DatePipe], styles: [".execution-monitoring[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .monitoring-header {\n .header-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n\n h3 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .refresh-btn {\n gap: 0.5rem;\n }\n }\n\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-group {\n display: flex;\n gap: 0.75rem;\n \n kendo-dropdownlist {\n min-width: 140px;\n }\n }\n }\n }\n\n .metrics-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.25rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.5rem;\n font-size: 1rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.125rem;\n }\n\n .metric-detail {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n &.total .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.error .metric-icon { background: var(--kendo-color-error); }\n &.duration .metric-icon { background: var(--kendo-color-info); }\n &.activity .metric-icon { background: var(--kendo-color-warning); }\n &.running .metric-icon { background: var(--kendo-color-secondary); }\n }\n }\n\n .trends-section {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n padding: 1.5rem;\n\n .section-header {\n margin-bottom: 1.5rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .trends-chart {\n .trend-bars {\n display: flex;\n align-items: end;\n gap: 1rem;\n height: 120px;\n margin-bottom: 1rem;\n\n .trend-bar {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n\n .bar-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 80px;\n border-radius: 0.25rem;\n overflow: hidden;\n background: var(--kendo-color-border);\n position: relative;\n\n .bar-success {\n background: var(--kendo-color-success);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n\n .bar-failed {\n background: var(--kendo-color-error);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n }\n\n .bar-label {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n\n .bar-total {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-on-app-surface);\n }\n }\n }\n\n .chart-legend {\n display: flex;\n justify-content: center;\n gap: 1.5rem;\n\n .legend-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.75rem;\n\n .legend-color {\n width: 12px;\n height: 12px;\n border-radius: 2px;\n\n &.success { background: var(--kendo-color-success); }\n &.failed { background: var(--kendo-color-error); }\n }\n }\n }\n\n .empty-chart {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 120px;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .executions-section {\n flex: 1;\n min-height: 0;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n display: flex;\n flex-direction: column;\n\n .section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem 1.5rem 0;\n margin-bottom: 1rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .results-count {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n }\n\n .executions-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0 1.5rem 1.5rem;\n\n .execution-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-status {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n\n i {\n font-size: 1rem;\n\n &.fa-check-circle { color: var(--kendo-color-success); }\n &.fa-exclamation-circle { color: var(--kendo-color-error); }\n &.fa-spinner { color: var(--kendo-color-warning); }\n &.fa-info-circle,\n &.fa-question { color: var(--kendo-color-info); }\n }\n }\n\n .execution-main {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n color: var(--kendo-color-primary);\n cursor: pointer;\n transition: color 0.2s ease;\n\n &:hover {\n color: var(--kendo-color-primary-darker);\n text-decoration: underline;\n }\n }\n\n .execution-details {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .execution-time {\n font-weight: 600;\n }\n\n .execution-user {\n color: var(--kendo-color-info);\n }\n\n .execution-duration {\n font-weight: 600;\n }\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-actions {\n flex-shrink: 0;\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n }\n\n &:hover .execution-actions button {\n opacity: 1;\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 1rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n//[_ngcontent-%COMP%] Responsive[_ngcontent-%COMP%] design\n@media[_ngcontent-%COMP%] (max-width[_ngcontent-%COMP%]: 1200px)[_ngcontent-%COMP%] {\n .execution-monitoring {\n .metrics-summary {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .monitoring-header .filters-row {\n .filter-group {\n flex-wrap: wrap;\n }\n }\n }\n}\n\n@media (max-width: 768px) {\n .execution-monitoring[_ngcontent-%COMP%] {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-summary {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.75rem;\n\n .metric-card {\n padding: 1rem;\n\n .metric-content .metric-value {\n font-size: 1.25rem;\n }\n }\n }\n\n .monitoring-header {\n .header-title {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n }\n\n .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-group {\n min-width: unset;\n }\n\n .filter-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 0.5rem;\n }\n }\n }\n\n .trends-section .trends-chart .trend-bars {\n gap: 0.5rem;\n }\n }\n}"] });
|
|
587
|
+
} }, dependencies: [i1.LoaderComponent, i2.DropDownListComponent, i3.TextBoxComponent, i3.TextBoxPrefixTemplateDirective, i4.ButtonComponent, i4.ChipComponent, i5.DatePipe], styles: [".execution-monitoring[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .monitoring-header {\n .header-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n\n h3 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .refresh-btn {\n gap: 0.5rem;\n }\n }\n\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-group {\n display: flex;\n gap: 0.75rem;\n \n kendo-dropdownlist {\n min-width: 140px;\n }\n }\n }\n }\n\n .metrics-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.25rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.5rem;\n font-size: 1rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.125rem;\n }\n\n .metric-detail {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n &.total .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.error .metric-icon { background: var(--kendo-color-error); }\n &.duration .metric-icon { background: var(--kendo-color-info); }\n &.activity .metric-icon { background: var(--kendo-color-warning); }\n &.running .metric-icon { background: var(--kendo-color-secondary); }\n }\n }\n\n .trends-section {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n padding: 1.5rem;\n\n .section-header {\n margin-bottom: 1.5rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .trends-chart {\n .trend-bars {\n display: flex;\n align-items: end;\n gap: 1rem;\n height: 120px;\n margin-bottom: 1rem;\n\n .trend-bar {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n\n .bar-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 80px;\n border-radius: 0.25rem;\n overflow: hidden;\n background: var(--kendo-color-border);\n position: relative;\n\n .bar-success {\n background: var(--kendo-color-success);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n\n .bar-failed {\n background: var(--kendo-color-error);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n }\n\n .bar-label {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n\n .bar-total {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-on-app-surface);\n }\n }\n }\n\n .chart-legend {\n display: flex;\n justify-content: center;\n gap: 1.5rem;\n\n .legend-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.75rem;\n\n .legend-color {\n width: 12px;\n height: 12px;\n border-radius: 2px;\n\n &.success { background: var(--kendo-color-success); }\n &.failed { background: var(--kendo-color-error); }\n }\n }\n }\n\n .empty-chart {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 120px;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .executions-section {\n flex: 1;\n min-height: 0;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n display: flex;\n flex-direction: column;\n\n .section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem 1.5rem 0;\n margin-bottom: 1rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .results-count {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n }\n\n .executions-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0 1.5rem 1.5rem;\n\n .execution-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-status {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n\n i {\n font-size: 1rem;\n\n &.fa-check-circle { color: var(--kendo-color-success); }\n &.fa-exclamation-circle { color: var(--kendo-color-error); }\n &.fa-spinner { color: var(--kendo-color-warning); }\n &.fa-info-circle,\n &.fa-question { color: var(--kendo-color-info); }\n }\n }\n\n .execution-main {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n color: var(--kendo-color-primary);\n cursor: pointer;\n transition: color 0.2s ease;\n\n &:hover {\n color: var(--kendo-color-primary-darker);\n text-decoration: underline;\n }\n }\n\n .execution-details {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .execution-time {\n font-weight: 600;\n }\n\n .execution-user {\n color: var(--kendo-color-info);\n }\n\n .execution-duration {\n font-weight: 600;\n }\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-actions {\n flex-shrink: 0;\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n }\n\n &:hover .execution-actions button {\n opacity: 1;\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 1rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n//[_ngcontent-%COMP%] Responsive[_ngcontent-%COMP%] design\n@media[_ngcontent-%COMP%] (max-width[_ngcontent-%COMP%]: 1200px)[_ngcontent-%COMP%] {\n .execution-monitoring {\n .metrics-summary {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .monitoring-header .filters-row {\n .filter-group {\n flex-wrap: wrap;\n }\n }\n }\n}\n\n@media (max-width: 768px) {\n .execution-monitoring[_ngcontent-%COMP%] {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-summary {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.75rem;\n\n .metric-card {\n padding: 1rem;\n\n .metric-content .metric-value {\n font-size: 1.25rem;\n }\n }\n }\n\n .monitoring-header {\n .header-title {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n }\n\n .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-group {\n min-width: unset;\n }\n\n .filter-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 0.5rem;\n }\n }\n }\n\n .trends-section .trends-chart .trend-bars {\n gap: 0.5rem;\n }\n }\n}"] });
|
|
589
588
|
}
|
|
590
589
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExecutionMonitoringComponent, [{
|
|
591
590
|
type: Component,
|
|
592
|
-
args: [{ selector: 'mj-execution-monitoring', template: "<div class=\"execution-monitoring\" mjFillContainer>\n <!-- Header with filters -->\n <div class=\"monitoring-header\">\n <div class=\"header-title\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Execution Monitoring</h3>\n <button kendoButton [primary]=\"true\" [icon]=\"'refresh'\" (click)=\"refreshData()\" class=\"refresh-btn\">\n Refresh\n </button>\n </div>\n \n <div class=\"filters-row\">\n <div class=\"search-container\">\n <kendo-textbox \n placeholder=\"Search executions...\" \n [value]=\"searchTerm$.value\"\n (valueChange)=\"onSearchChange($event)\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"filter-group\">\n <kendo-dropdownlist \n [data]=\"timeRangeOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedTimeRange$.value\"\n (valueChange)=\"onTimeRangeChange($event)\">\n </kendo-dropdownlist>\n \n <kendo-dropdownlist \n [data]=\"resultOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedResult$.value\"\n (valueChange)=\"onResultFilterChange($event)\">\n </kendo-dropdownlist>\n \n <kendo-dropdownlist \n [data]=\"actionOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedAction$.value\"\n (valueChange)=\"onActionFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Metrics Summary -->\n <div class=\"metrics-summary\">\n <div class=\"metric-card total clickable\" (click)=\"onTotalExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-play-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalExecutions }}</div>\n <div class=\"metric-label\">Total Executions</div>\n </div>\n </div>\n\n <div class=\"metric-card success clickable\" (click)=\"onSuccessRateClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ getSuccessRate() }}%</div>\n <div class=\"metric-label\">Success Rate</div>\n <div class=\"metric-detail\">{{ metrics.successfulExecutions }}/{{ metrics.totalExecutions }}</div>\n </div>\n </div>\n\n <div class=\"metric-card error clickable\" (click)=\"onFailedExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.failedExecutions }}</div>\n <div class=\"metric-label\">Failed Executions</div>\n </div>\n </div>\n\n <div class=\"metric-card duration\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-clock\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.averageDuration }}s</div>\n <div class=\"metric-label\">Avg Duration</div>\n </div>\n </div>\n\n <div class=\"metric-card activity\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-calendar-day\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.executionsToday }}</div>\n <div class=\"metric-label\">Today</div>\n <div class=\"metric-detail\">{{ metrics.executionsThisWeek }} this week</div>\n </div>\n </div>\n\n <div class=\"metric-card running clickable\" (click)=\"onRunningExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.currentlyRunning }}</div>\n <div class=\"metric-label\">Currently Running</div>\n </div>\n </div>\n </div>\n\n <!-- Execution Trends Chart -->\n <div class=\"trends-section\">\n <div class=\"section-header\">\n <h4><i class=\"fa-solid fa-chart-area\"></i> 7-Day Execution Trends</h4>\n </div>\n <div class=\"trends-chart\">\n @if (executionTrends.length > 0) {\n <div class=\"trend-bars\">\n @for (trend of executionTrends; track trend.date) {\n <div class=\"trend-bar\">\n <div class=\"bar-container\">\n <div class=\"bar-success\" [style.height.%]=\"trend.total > 0 ? (trend.successful / trend.total) * 100 : 0\"></div>\n <div class=\"bar-failed\" [style.height.%]=\"trend.total > 0 ? (trend.failed / trend.total) * 100 : 0\"></div>\n </div>\n <div class=\"bar-label\">{{ trend.date | date:'MMM d' }}</div>\n <div class=\"bar-total\">{{ trend.total }}</div>\n </div>\n }\n </div>\n <div class=\"chart-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-color success\"></div>\n <span>Successful</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-color failed\"></div>\n <span>Failed</span>\n </div>\n </div>\n } @else {\n <div class=\"empty-chart\">\n <i class=\"fa-solid fa-chart-area\"></i>\n <p>No execution trends available</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Execution List -->\n <div class=\"executions-section\">\n <div class=\"section-header\">\n <h4><i class=\"fa-solid fa-list\"></i> Recent Executions</h4>\n <div class=\"results-count\">{{ filteredExecutions.length }} executions</div>\n </div>\n \n <div class=\"executions-list\">\n @if (filteredExecutions.length > 0) {\n @for (execution of filteredExecutions; track execution.ID) {\n <div class=\"execution-item\" (click)=\"openExecution(execution)\">\n <div class=\"execution-status\">\n <i [class]=\"getResultIcon(execution.ResultCode)\"></i>\n </div>\n \n <div class=\"execution-main\">\n <div class=\"execution-action\" (click)=\"openAction(execution.ActionID!); $event.stopPropagation()\">\n {{ getActionName(execution.ActionID!) }}\n </div>\n <div class=\"execution-details\">\n <span class=\"execution-time\">{{ execution.StartedAt | date:'MMM d, HH:mm:ss' }}</span>\n <span class=\"execution-user\">{{ execution.UserID }}</span>\n <span class=\"execution-duration\">{{ getDuration(execution) }}</span>\n </div>\n </div>\n \n <div class=\"execution-result\">\n <kendo-chip \n [themeColor]=\"getResultColor(execution.ResultCode)\"\n [size]=\"'small'\">\n {{ execution.ResultCode || 'Unknown' }}\n </kendo-chip>\n </div>\n \n <div class=\"execution-actions\">\n <button kendoButton \n [fillMode]=\"'flat'\" \n [icon]=\"'more-vertical'\"\n (click)=\"$event.stopPropagation()\">\n </button>\n </div>\n </div>\n }\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search\"></i>\n <h5>No executions found</h5>\n <p>Try adjusting your filters or search terms</p>\n </div>\n }\n </div>\n </div>\n\n @if (isLoading) {\n <div class=\"loading-overlay\">\n <kendo-loader type=\"converging-spinner\" [themeColor]=\"'primary'\"></kendo-loader>\n </div>\n }\n</div>", styles: [".execution-monitoring {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .monitoring-header {\n .header-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n\n h3 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .refresh-btn {\n gap: 0.5rem;\n }\n }\n\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-group {\n display: flex;\n gap: 0.75rem;\n \n kendo-dropdownlist {\n min-width: 140px;\n }\n }\n }\n }\n\n .metrics-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.25rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.5rem;\n font-size: 1rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.125rem;\n }\n\n .metric-detail {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n &.total .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.error .metric-icon { background: var(--kendo-color-error); }\n &.duration .metric-icon { background: var(--kendo-color-info); }\n &.activity .metric-icon { background: var(--kendo-color-warning); }\n &.running .metric-icon { background: var(--kendo-color-secondary); }\n }\n }\n\n .trends-section {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n padding: 1.5rem;\n\n .section-header {\n margin-bottom: 1.5rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .trends-chart {\n .trend-bars {\n display: flex;\n align-items: end;\n gap: 1rem;\n height: 120px;\n margin-bottom: 1rem;\n\n .trend-bar {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n\n .bar-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 80px;\n border-radius: 0.25rem;\n overflow: hidden;\n background: var(--kendo-color-border);\n position: relative;\n\n .bar-success {\n background: var(--kendo-color-success);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n\n .bar-failed {\n background: var(--kendo-color-error);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n }\n\n .bar-label {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n\n .bar-total {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-on-app-surface);\n }\n }\n }\n\n .chart-legend {\n display: flex;\n justify-content: center;\n gap: 1.5rem;\n\n .legend-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.75rem;\n\n .legend-color {\n width: 12px;\n height: 12px;\n border-radius: 2px;\n\n &.success { background: var(--kendo-color-success); }\n &.failed { background: var(--kendo-color-error); }\n }\n }\n }\n\n .empty-chart {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 120px;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .executions-section {\n flex: 1;\n min-height: 0;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n display: flex;\n flex-direction: column;\n\n .section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem 1.5rem 0;\n margin-bottom: 1rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .results-count {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n }\n\n .executions-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0 1.5rem 1.5rem;\n\n .execution-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-status {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n\n i {\n font-size: 1rem;\n\n &.fa-check-circle { color: var(--kendo-color-success); }\n &.fa-exclamation-circle { color: var(--kendo-color-error); }\n &.fa-spinner { color: var(--kendo-color-warning); }\n &.fa-info-circle,\n &.fa-question { color: var(--kendo-color-info); }\n }\n }\n\n .execution-main {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n color: var(--kendo-color-primary);\n cursor: pointer;\n transition: color 0.2s ease;\n\n &:hover {\n color: var(--kendo-color-primary-darker);\n text-decoration: underline;\n }\n }\n\n .execution-details {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .execution-time {\n font-weight: 600;\n }\n\n .execution-user {\n color: var(--kendo-color-info);\n }\n\n .execution-duration {\n font-weight: 600;\n }\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-actions {\n flex-shrink: 0;\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n }\n\n &:hover .execution-actions button {\n opacity: 1;\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 1rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n// Responsive design\n@media (max-width: 1200px) {\n .execution-monitoring {\n .metrics-summary {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .monitoring-header .filters-row {\n .filter-group {\n flex-wrap: wrap;\n }\n }\n }\n}\n\n@media (max-width: 768px) {\n .execution-monitoring {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-summary {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.75rem;\n\n .metric-card {\n padding: 1rem;\n\n .metric-content .metric-value {\n font-size: 1.25rem;\n }\n }\n }\n\n .monitoring-header {\n .header-title {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n }\n\n .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-group {\n min-width: unset;\n }\n\n .filter-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 0.5rem;\n }\n }\n }\n\n .trends-section .trends-chart .trend-bars {\n gap: 0.5rem;\n }\n }\n}"] }]
|
|
591
|
+
args: [{ selector: 'mj-execution-monitoring', template: "<div class=\"execution-monitoring\" >\n <!-- Header with filters -->\n <div class=\"monitoring-header\">\n <div class=\"header-title\">\n <h3><i class=\"fa-solid fa-chart-line\"></i> Execution Monitoring</h3>\n <button kendoButton [primary]=\"true\" [icon]=\"'refresh'\" (click)=\"refreshData()\" class=\"refresh-btn\">\n Refresh\n </button>\n </div>\n \n <div class=\"filters-row\">\n <div class=\"search-container\">\n <kendo-textbox \n placeholder=\"Search executions...\" \n [value]=\"searchTerm$.value\"\n (valueChange)=\"onSearchChange($event)\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"filter-group\">\n <kendo-dropdownlist \n [data]=\"timeRangeOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedTimeRange$.value\"\n (valueChange)=\"onTimeRangeChange($event)\">\n </kendo-dropdownlist>\n \n <kendo-dropdownlist \n [data]=\"resultOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedResult$.value\"\n (valueChange)=\"onResultFilterChange($event)\">\n </kendo-dropdownlist>\n \n <kendo-dropdownlist \n [data]=\"actionOptions\"\n textField=\"text\"\n valueField=\"value\"\n [value]=\"selectedAction$.value\"\n (valueChange)=\"onActionFilterChange($event)\">\n </kendo-dropdownlist>\n </div>\n </div>\n </div>\n\n <!-- Metrics Summary -->\n <div class=\"metrics-summary\">\n <div class=\"metric-card total clickable\" (click)=\"onTotalExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-play-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.totalExecutions }}</div>\n <div class=\"metric-label\">Total Executions</div>\n </div>\n </div>\n\n <div class=\"metric-card success clickable\" (click)=\"onSuccessRateClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ getSuccessRate() }}%</div>\n <div class=\"metric-label\">Success Rate</div>\n <div class=\"metric-detail\">{{ metrics.successfulExecutions }}/{{ metrics.totalExecutions }}</div>\n </div>\n </div>\n\n <div class=\"metric-card error clickable\" (click)=\"onFailedExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-exclamation-circle\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.failedExecutions }}</div>\n <div class=\"metric-label\">Failed Executions</div>\n </div>\n </div>\n\n <div class=\"metric-card duration\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-clock\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.averageDuration }}s</div>\n <div class=\"metric-label\">Avg Duration</div>\n </div>\n </div>\n\n <div class=\"metric-card activity\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-calendar-day\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.executionsToday }}</div>\n <div class=\"metric-label\">Today</div>\n <div class=\"metric-detail\">{{ metrics.executionsThisWeek }} this week</div>\n </div>\n </div>\n\n <div class=\"metric-card running clickable\" (click)=\"onRunningExecutionsClick()\">\n <div class=\"metric-icon\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </div>\n <div class=\"metric-content\">\n <div class=\"metric-value\">{{ metrics.currentlyRunning }}</div>\n <div class=\"metric-label\">Currently Running</div>\n </div>\n </div>\n </div>\n\n <!-- Execution Trends Chart -->\n <div class=\"trends-section\">\n <div class=\"section-header\">\n <h4><i class=\"fa-solid fa-chart-area\"></i> 7-Day Execution Trends</h4>\n </div>\n <div class=\"trends-chart\">\n @if (executionTrends.length > 0) {\n <div class=\"trend-bars\">\n @for (trend of executionTrends; track trend.date) {\n <div class=\"trend-bar\">\n <div class=\"bar-container\">\n <div class=\"bar-success\" [style.height.%]=\"trend.total > 0 ? (trend.successful / trend.total) * 100 : 0\"></div>\n <div class=\"bar-failed\" [style.height.%]=\"trend.total > 0 ? (trend.failed / trend.total) * 100 : 0\"></div>\n </div>\n <div class=\"bar-label\">{{ trend.date | date:'MMM d' }}</div>\n <div class=\"bar-total\">{{ trend.total }}</div>\n </div>\n }\n </div>\n <div class=\"chart-legend\">\n <div class=\"legend-item\">\n <div class=\"legend-color success\"></div>\n <span>Successful</span>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-color failed\"></div>\n <span>Failed</span>\n </div>\n </div>\n } @else {\n <div class=\"empty-chart\">\n <i class=\"fa-solid fa-chart-area\"></i>\n <p>No execution trends available</p>\n </div>\n }\n </div>\n </div>\n\n <!-- Execution List -->\n <div class=\"executions-section\">\n <div class=\"section-header\">\n <h4><i class=\"fa-solid fa-list\"></i> Recent Executions</h4>\n <div class=\"results-count\">{{ filteredExecutions.length }} executions</div>\n </div>\n \n <div class=\"executions-list\">\n @if (filteredExecutions.length > 0) {\n @for (execution of filteredExecutions; track execution.ID) {\n <div class=\"execution-item\" (click)=\"openExecution(execution)\">\n <div class=\"execution-status\">\n <i [class]=\"getResultIcon(execution.ResultCode)\"></i>\n </div>\n \n <div class=\"execution-main\">\n <div class=\"execution-action\" (click)=\"openAction(execution.ActionID!); $event.stopPropagation()\">\n {{ getActionName(execution.ActionID!) }}\n </div>\n <div class=\"execution-details\">\n <span class=\"execution-time\">{{ execution.StartedAt | date:'MMM d, HH:mm:ss' }}</span>\n <span class=\"execution-user\">{{ execution.UserID }}</span>\n <span class=\"execution-duration\">{{ getDuration(execution) }}</span>\n </div>\n </div>\n \n <div class=\"execution-result\">\n <kendo-chip \n [themeColor]=\"getResultColor(execution.ResultCode)\"\n [size]=\"'small'\">\n {{ execution.ResultCode || 'Unknown' }}\n </kendo-chip>\n </div>\n \n <div class=\"execution-actions\">\n <button kendoButton \n [fillMode]=\"'flat'\" \n [icon]=\"'more-vertical'\"\n (click)=\"$event.stopPropagation()\">\n </button>\n </div>\n </div>\n }\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search\"></i>\n <h5>No executions found</h5>\n <p>Try adjusting your filters or search terms</p>\n </div>\n }\n </div>\n </div>\n\n @if (isLoading) {\n <div class=\"loading-overlay\">\n <kendo-loader type=\"converging-spinner\" [themeColor]=\"'primary'\"></kendo-loader>\n </div>\n }\n</div>", styles: [".execution-monitoring {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n padding: 1.5rem;\n height: 100%;\n overflow-y: auto;\n\n .monitoring-header {\n .header-title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n\n h3 {\n margin: 0;\n font-size: 1.25rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .refresh-btn {\n gap: 0.5rem;\n }\n }\n\n .filters-row {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n\n .search-container {\n flex: 1;\n min-width: 200px;\n\n kendo-textbox {\n width: 100%;\n }\n }\n\n .filter-group {\n display: flex;\n gap: 0.75rem;\n \n kendo-dropdownlist {\n min-width: 140px;\n }\n }\n }\n }\n\n .metrics-summary {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1rem;\n\n .metric-card {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1.25rem;\n border-radius: 0.75rem;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n transition: all 0.2s ease;\n\n &.clickable {\n cursor: pointer;\n \n &:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);\n }\n }\n\n .metric-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 0.5rem;\n font-size: 1rem;\n\n i {\n color: white;\n }\n }\n\n .metric-content {\n flex: 1;\n\n .metric-value {\n font-size: 1.5rem;\n font-weight: 700;\n line-height: 1;\n margin-bottom: 0.25rem;\n }\n\n .metric-label {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-subtle);\n margin-bottom: 0.125rem;\n }\n\n .metric-detail {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n }\n }\n\n &.total .metric-icon { background: var(--kendo-color-primary); }\n &.success .metric-icon { background: var(--kendo-color-success); }\n &.error .metric-icon { background: var(--kendo-color-error); }\n &.duration .metric-icon { background: var(--kendo-color-info); }\n &.activity .metric-icon { background: var(--kendo-color-warning); }\n &.running .metric-icon { background: var(--kendo-color-secondary); }\n }\n }\n\n .trends-section {\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n padding: 1.5rem;\n\n .section-header {\n margin-bottom: 1.5rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n }\n\n .trends-chart {\n .trend-bars {\n display: flex;\n align-items: end;\n gap: 1rem;\n height: 120px;\n margin-bottom: 1rem;\n\n .trend-bar {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.5rem;\n\n .bar-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 80px;\n border-radius: 0.25rem;\n overflow: hidden;\n background: var(--kendo-color-border);\n position: relative;\n\n .bar-success {\n background: var(--kendo-color-success);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n\n .bar-failed {\n background: var(--kendo-color-error);\n width: 100%;\n min-height: 2px;\n transition: height 0.3s ease;\n }\n }\n\n .bar-label {\n font-size: 0.625rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n\n .bar-total {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--kendo-color-on-app-surface);\n }\n }\n }\n\n .chart-legend {\n display: flex;\n justify-content: center;\n gap: 1.5rem;\n\n .legend-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 0.75rem;\n\n .legend-color {\n width: 12px;\n height: 12px;\n border-radius: 2px;\n\n &.success { background: var(--kendo-color-success); }\n &.failed { background: var(--kendo-color-error); }\n }\n }\n }\n\n .empty-chart {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 120px;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .executions-section {\n flex: 1;\n min-height: 0;\n background: var(--kendo-color-surface);\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.75rem;\n display: flex;\n flex-direction: column;\n\n .section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1.5rem 1.5rem 0;\n margin-bottom: 1rem;\n\n h4 {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n\n i {\n color: var(--kendo-color-primary);\n }\n }\n\n .results-count {\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n font-weight: 600;\n }\n }\n\n .executions-list {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0 1.5rem 1.5rem;\n\n .execution-item {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--kendo-color-border);\n border-radius: 0.5rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s ease;\n\n &:hover {\n background: var(--kendo-color-base-hover);\n border-color: var(--kendo-color-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n\n .execution-status {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2rem;\n height: 2rem;\n\n i {\n font-size: 1rem;\n\n &.fa-check-circle { color: var(--kendo-color-success); }\n &.fa-exclamation-circle { color: var(--kendo-color-error); }\n &.fa-spinner { color: var(--kendo-color-warning); }\n &.fa-info-circle,\n &.fa-question { color: var(--kendo-color-info); }\n }\n }\n\n .execution-main {\n flex: 1;\n\n .execution-action {\n font-weight: 600;\n margin-bottom: 0.25rem;\n color: var(--kendo-color-primary);\n cursor: pointer;\n transition: color 0.2s ease;\n\n &:hover {\n color: var(--kendo-color-primary-darker);\n text-decoration: underline;\n }\n }\n\n .execution-details {\n display: flex;\n gap: 1rem;\n font-size: 0.75rem;\n color: var(--kendo-color-subtle);\n\n .execution-time {\n font-weight: 600;\n }\n\n .execution-user {\n color: var(--kendo-color-info);\n }\n\n .execution-duration {\n font-weight: 600;\n }\n }\n }\n\n .execution-result {\n flex-shrink: 0;\n }\n\n .execution-actions {\n flex-shrink: 0;\n\n button {\n opacity: 0;\n transition: opacity 0.2s ease;\n }\n }\n\n &:hover .execution-actions button {\n opacity: 1;\n }\n }\n\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 3rem 2rem;\n text-align: center;\n color: var(--kendo-color-subtle);\n\n i {\n font-size: 3rem;\n margin-bottom: 1rem;\n opacity: 0.5;\n }\n\n h5 {\n margin: 0 0 0.5rem 0;\n font-size: 1rem;\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: 0.875rem;\n }\n }\n }\n }\n\n .loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n }\n}\n\n// Responsive design\n@media (max-width: 1200px) {\n .execution-monitoring {\n .metrics-summary {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .monitoring-header .filters-row {\n .filter-group {\n flex-wrap: wrap;\n }\n }\n }\n}\n\n@media (max-width: 768px) {\n .execution-monitoring {\n padding: 1rem;\n gap: 1rem;\n\n .metrics-summary {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.75rem;\n\n .metric-card {\n padding: 1rem;\n\n .metric-content .metric-value {\n font-size: 1.25rem;\n }\n }\n }\n\n .monitoring-header {\n .header-title {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n }\n\n .filters-row {\n flex-direction: column;\n align-items: stretch;\n\n .search-container,\n .filter-group {\n min-width: unset;\n }\n\n .filter-group {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 0.5rem;\n }\n }\n }\n\n .trends-section .trends-chart .trend-bars {\n gap: 0.5rem;\n }\n }\n}"] }]
|
|
593
592
|
}], () => [], { openEntityRecord: [{
|
|
594
593
|
type: Output
|
|
595
594
|
}], showExecutionsListView: [{
|