@masterteam/work-center 0.0.1 → 0.0.2
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/assets/work-center.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.static{position:static}.start{inset-inline-start:var(--spacing)}.flex{display:flex}.grid{display:grid}.
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.static{position:static}.start{inset-inline-start:var(--spacing)}.flex{display:flex}.grid{display:grid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}@layer keyframes{@keyframes enter{0%{opacity:var(--p-enter-opacity,1);transform:translate3d(var(--p-enter-translate-x,0), var(--p-enter-translate-y,0), 0) scale3d(var(--p-enter-scale,1), var(--p-enter-scale,1), var(--p-enter-scale,1)) rotate(var(--p-enter-rotate,0))}}@keyframes leave{to{opacity:var(--p-leave-opacity,1);transform:translate3d(var(--p-leave-translate-x,0), var(--p-leave-translate-y,0), 0) scale3d(var(--p-leave-scale,1), var(--p-leave-scale,1), var(--p-leave-scale,1)) rotate(var(--p-leave-rotate,0))}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadeout{0%{opacity:1}to{opacity:0}}@keyframes infinite-scroll{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes scalein{0%{opacity:0;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:scaleY(.8)}to{opacity:1;transform:scaleY(1)}}@keyframes slidedown{0%{max-height:0}to{max-height:auto}}@keyframes slideup{0%{max-height:1000px}to{max-height:0}}@keyframes fadeinleft{0%{opacity:0;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translate(-100%)}to{opacity:1;transform:translate(0%)}}@keyframes fadeoutleft{0%{opacity:1;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translate(0%)}to{opacity:0;transform:translate(-100%)}}@keyframes fadeinright{0%{opacity:0;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translate(100%)}to{opacity:1;transform:translate(0%)}}@keyframes fadeoutright{0%{opacity:1;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translate(0%)}to{opacity:0;transform:translate(100%)}}@keyframes fadeinup{0%{opacity:0;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translateY(-100%)}to{opacity:1;transform:translateY(0%)}}@keyframes fadeoutup{0%{opacity:1;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translateY(0%)}to{opacity:0;transform:translateY(-100%)}}@keyframes fadeindown{0%{opacity:0;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translateY(100%)}to{opacity:1;transform:translateY(0%)}}@keyframes fadeoutdown{0%{opacity:1;transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1);transform:translateY(0%)}to{opacity:0;transform:translateY(100%)}}@keyframes width{0%{width:0}to{width:100%}}@keyframes flip{0%{transform:perspective(2000px)rotateX(-100deg)}to{transform:perspective(2000px)rotateX(0)}}@keyframes flipleft{0%{opacity:0;transform:perspective(2000px)rotateY(-100deg)}to{opacity:1;transform:perspective(2000px)rotateY(0)}}@keyframes flipright{0%{opacity:0;transform:perspective(2000px)rotateY(100deg)}to{opacity:1;transform:perspective(2000px)rotateY(0)}}@keyframes flipup{0%{opacity:0;transform:perspective(2000px)rotateX(-100deg)}to{opacity:1;transform:perspective(2000px)rotateX(0)}}@keyframes zoomin{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomindown{0%{opacity:0;transform:scale3d(.1,.1,.1)translateY(-1000px)}60%{opacity:1;transform:scale3d(.475,.475,.475)translateY(60px)}}@keyframes zoominleft{0%{opacity:0;transform:scale3d(.1,.1,.1)translate(-1000px)}60%{opacity:1;transform:scale3d(.475,.475,.475)translate(10px)}}}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
|
|
@@ -2,7 +2,6 @@ import { CommonModule } from '@angular/common';
|
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { inject, Injectable, computed, input, output, Component } from '@angular/core';
|
|
4
4
|
import { ClientPage } from '@masterteam/components/client-page';
|
|
5
|
-
import { Page } from '@masterteam/components/page';
|
|
6
5
|
import { PropertyFilterBuilder } from '@masterteam/components/property-filter-builder';
|
|
7
6
|
import { StatisticCard } from '@masterteam/components/statistic-card';
|
|
8
7
|
import { Table } from '@masterteam/components/table';
|
|
@@ -780,19 +779,18 @@ class WorkCenterPage {
|
|
|
780
779
|
this.runtimeFiltersChanged.emit([]);
|
|
781
780
|
}
|
|
782
781
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: WorkCenterPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
783
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: WorkCenterPage, isStandalone: true, selector: "mt-work-center-page", inputs: { area: { classPropertyName: "area", publicName: "area", isSignal: true, isRequired: false, transformFunction: null }, pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: false, transformFunction: null }, menuIcon: { classPropertyName: "menuIcon", publicName: "menuIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeFiltersChanged: "runtimeFiltersChanged" }, ngImport: i0, template: "
|
|
782
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: WorkCenterPage, isStandalone: true, selector: "mt-work-center-page", inputs: { area: { classPropertyName: "area", publicName: "area", isSignal: true, isRequired: false, transformFunction: null }, pageTitle: { classPropertyName: "pageTitle", publicName: "pageTitle", isSignal: true, isRequired: false, transformFunction: null }, menuIcon: { classPropertyName: "menuIcon", publicName: "menuIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { runtimeFiltersChanged: "runtimeFiltersChanged" }, ngImport: i0, template: " <mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"pageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n >\r\n <ng-template #headerClientPageEnd>\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-4\">\r\n @if (loading()) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"6.5rem\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [lazy]=\"true\"\r\n [loading]=\"loading()\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"tableCurrentPage()\"\r\n [first]=\"tableFirst()\"\r\n (lazyLoad)=\"onLazyLoad($event)\"\r\n />\r\n </div>\r\n </mt-client-page>\r\n\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: ClientPage, selector: "mt-client-page", inputs: ["menuIcon", "menuTitle", "menuItems", "menuItemsLoading", "activeItem", "collapsed"], outputs: ["collapsedChange", "menuItemClick"] }, { kind: "component", type: PropertyFilterBuilder, selector: "mt-property-filter-builder", inputs: ["schema", "filters", "title", "buttonLabel", "disabled"], outputs: ["filtersChange", "applied", "cleared"] }, { kind: "component", type: StatisticCard, selector: "mt-statistic-card", inputs: ["data"] }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "generalSearch", "showFilters", "loading", "updating", "lazy", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "exportable", "exportFilename", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }] });
|
|
784
783
|
}
|
|
785
784
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: WorkCenterPage, decorators: [{
|
|
786
785
|
type: Component,
|
|
787
786
|
args: [{ selector: 'mt-work-center-page', standalone: true, imports: [
|
|
788
787
|
CommonModule,
|
|
789
788
|
ClientPage,
|
|
790
|
-
Page,
|
|
791
789
|
PropertyFilterBuilder,
|
|
792
790
|
StatisticCard,
|
|
793
791
|
Table,
|
|
794
792
|
SkeletonModule,
|
|
795
|
-
], template: "
|
|
793
|
+
], template: " <mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"pageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n >\r\n <ng-template #headerClientPageEnd>\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-4\">\r\n @if (loading()) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"6.5rem\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [lazy]=\"true\"\r\n [loading]=\"loading()\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"tableCurrentPage()\"\r\n [first]=\"tableFirst()\"\r\n (lazyLoad)=\"onLazyLoad($event)\"\r\n />\r\n </div>\r\n </mt-client-page>\r\n\r\n" }]
|
|
796
794
|
}], propDecorators: { area: [{ type: i0.Input, args: [{ isSignal: true, alias: "area", required: false }] }], pageTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageTitle", required: false }] }], menuIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuIcon", required: false }] }], runtimeFiltersChanged: [{ type: i0.Output, args: ["runtimeFiltersChanged"] }] } });
|
|
797
795
|
|
|
798
796
|
const APP_STATES = [WorkCenterState];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../packages/masterteam/work-center/src/store/work-center/work-center.actions.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.model.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.helpers.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.facade.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.html","../../../../packages/masterteam/work-center/src/store/app.state.ts","../../../../packages/masterteam/work-center/src/masterteam-work-center.ts"],"sourcesContent":["import {\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n} from './work-center.model';\r\n\r\nexport class EnterArea {\r\n static readonly type = '[WorkCenter] Enter Area';\r\n\r\n constructor(public area: WorkCenterArea) {}\r\n}\r\n\r\nexport class HydrateFromContext {\r\n static readonly type = '[WorkCenter] Hydrate From Context';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public patch: WorkCenterHydratePatch,\r\n ) {}\r\n}\r\n\r\nexport class SetParams {\r\n static readonly type = '[WorkCenter] Set Params';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public inputs: WorkCenterBootstrapInputs,\r\n ) {}\r\n}\r\n\r\nexport class LoadRuntime {\r\n static readonly type = '[WorkCenter] Load Runtime';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public reason: WorkCenterLoadReason = 'manual',\r\n ) {}\r\n}\r\n","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nexport type WorkCenterArea = 'MyInbox' | 'TasksCenter';\r\n\r\nexport enum WorkCenterActionKey {\r\n LoadRuntime = 'loadRuntime',\r\n}\r\n\r\nexport const WORK_CENTER_QUERY_VERSION = 1;\r\nexport const WORK_CENTER_MAX_PAGE_SIZE = 100;\r\nexport const WORK_CENTER_MAX_FILTERS = 20;\r\nexport const WORK_CENTER_MAX_SORT = 5;\r\n\r\nexport interface ApiEnvelope<T> {\r\n endpoint: string | null;\r\n status: number;\r\n code: 1 | 2;\r\n locale: string | null;\r\n message: string | null;\r\n errors: unknown;\r\n data: T;\r\n cacheSession: string | null;\r\n}\r\n\r\nexport interface TranslatableDto {\r\n display: string;\r\n en: string;\r\n ar: string;\r\n}\r\n\r\nexport interface WorkCenterSortRule {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nexport type WorkCenterFilterOperator =\r\n | 'Eq'\r\n | 'Neq'\r\n | 'In'\r\n | 'Contains'\r\n | 'StartsWith'\r\n | 'Gt'\r\n | 'Gte'\r\n | 'Lt'\r\n | 'Lte'\r\n | 'Between'\r\n | 'IsNull'\r\n | 'IsNotNull';\r\n\r\nexport interface WorkCenterFilterRule {\r\n field: string;\r\n op: WorkCenterFilterOperator;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\nexport interface WorkCenterRuntimeProperty {\r\n id?: number;\r\n key: string;\r\n normalizedKey?: string;\r\n name?: TranslatableDto;\r\n description?: TranslatableDto;\r\n viewType?: string;\r\n}\r\n\r\nexport interface WorkCenterRuntimeOperatorOption {\r\n value: WorkCenterFilterOperator;\r\n display?: TranslatableDto;\r\n}\r\n\r\nexport interface WorkCenterRuntimeFilterSchema {\r\n properties?: WorkCenterRuntimeProperty[];\r\n allowedFields?: string[];\r\n allowedOperators: Array<\r\n WorkCenterFilterOperator | WorkCenterRuntimeOperatorOption\r\n >;\r\n}\r\n\r\nexport interface WorkCenterColumnsConfig {\r\n columns?: string[];\r\n properties?: WorkCenterRuntimeProperty[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeRequest {\r\n area: WorkCenterArea;\r\n templateId?: number | null;\r\n selectedCardKey?: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeCard {\r\n key: string;\r\n name: TranslatableDto;\r\n icon: string | null;\r\n urlTemplate?: string | null;\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n count: number;\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeStatsItem {\r\n key: string;\r\n label: TranslatableDto;\r\n count: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimePagination {\r\n page: number;\r\n pageSize: number;\r\n totalCount: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimeSelectedCard {\r\n key: string;\r\n pagination: WorkCenterRuntimePagination;\r\n stats: WorkCenterRuntimeStatsItem[];\r\n items: Record<string, unknown>[];\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeWarningDto {\r\n code: string;\r\n message: string;\r\n cardKey: string | null;\r\n source: string | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeResponseData {\r\n area: WorkCenterArea;\r\n cards: WorkCenterRuntimeCard[];\r\n selectedCard: WorkCenterRuntimeSelectedCard | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterContext {\r\n area: WorkCenterArea;\r\n templateId: number | null;\r\n selectedCardKey: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterAreaState {\r\n context: WorkCenterContext;\r\n menuItems: ClientPageMenuItem[];\r\n rows: Record<string, unknown>[];\r\n columns: ColumnDef[];\r\n kpis: StatisticCardData[];\r\n runtimeFilterSchema: WorkCenterRuntimeFilterSchema | null;\r\n totalCount: number;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n lastLoadedAt: string | null;\r\n}\r\n\r\nexport interface WorkCenterStateModel extends LoadingStateShape<WorkCenterActionKey> {\r\n activeArea: WorkCenterArea;\r\n byArea: Record<WorkCenterArea, WorkCenterAreaState>;\r\n}\r\n\r\nexport interface WorkCenterHydratePatch {\r\n selectedCardKey?: string | null;\r\n page?: number;\r\n pageSize?: number;\r\n templateId?: number | null;\r\n sort?: WorkCenterSortRule[];\r\n runtimeFilters?: WorkCenterFilterRule[];\r\n}\r\n\r\nexport interface WorkCenterBootstrapInputs {\r\n card?: unknown;\r\n page?: unknown;\r\n pageSize?: unknown;\r\n templateId?: unknown;\r\n sort?: unknown;\r\n filters?: unknown;\r\n}\r\n\r\nexport type WorkCenterLoadReason =\r\n | 'route-enter'\r\n | 'menu-change'\r\n | 'filters-change'\r\n | 'table-lazy'\r\n | 'refresh'\r\n | 'manual';\r\n","import { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterColumnsConfig,\r\n WorkCenterContext,\r\n WorkCenterFilterOperator,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeProperty,\r\n WorkCenterRuntimeCard,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterRuntimeStatsItem,\r\n WorkCenterSortRule,\r\n WorkCenterStateModel,\r\n WORK_CENTER_MAX_FILTERS,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n WORK_CENTER_MAX_SORT,\r\n} from './work-center.model';\r\n\r\nconst AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst KPI_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\n\r\nconst FILTER_OPERATORS: Set<WorkCenterFilterOperator> = new Set([\r\n 'Eq',\r\n 'Neq',\r\n 'In',\r\n 'Contains',\r\n 'StartsWith',\r\n 'Gt',\r\n 'Gte',\r\n 'Lt',\r\n 'Lte',\r\n 'Between',\r\n 'IsNull',\r\n 'IsNotNull',\r\n]);\r\n\r\nfunction clampPage(value: number | undefined, fallback = 1): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n return Math.max(1, Math.floor(value as number));\r\n}\r\n\r\nfunction clampPageSize(value: number | undefined, fallback = 20): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n const parsed = Math.floor(value as number);\r\n return Math.min(WORK_CENTER_MAX_PAGE_SIZE, Math.max(1, parsed));\r\n}\r\n\r\nfunction sanitizeSort(\r\n rules: WorkCenterSortRule[] | undefined,\r\n): WorkCenterSortRule[] {\r\n if (!Array.isArray(rules)) return [];\r\n return rules\r\n .filter(\r\n (rule): rule is WorkCenterSortRule =>\r\n typeof rule?.field === 'string' &&\r\n rule.field.length > 0 &&\r\n (rule.dir === 'asc' || rule.dir === 'desc'),\r\n )\r\n .slice(0, WORK_CENTER_MAX_SORT);\r\n}\r\n\r\nfunction sanitizeFilters(\r\n filters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!Array.isArray(filters)) return [];\r\n\r\n return filters\r\n .filter(\r\n (filter): filter is WorkCenterFilterRule =>\r\n typeof filter?.field === 'string' &&\r\n filter.field.length > 0 &&\r\n typeof filter?.op === 'string' &&\r\n FILTER_OPERATORS.has(filter.op),\r\n )\r\n .slice(0, WORK_CENTER_MAX_FILTERS);\r\n}\r\n\r\nfunction parseJson(value: unknown): unknown {\r\n if (typeof value !== 'string') return value;\r\n if (!value.trim()) return null;\r\n\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toOptionalInt(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') return null;\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? Math.floor(parsed) : null;\r\n}\r\n\r\nfunction toSelectedCardKey(value: unknown): string | null {\r\n if (typeof value !== 'string') return null;\r\n const parsed = value.trim();\r\n return parsed.length ? parsed : null;\r\n}\r\n\r\nfunction parseSortInput(value: unknown): WorkCenterSortRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeSort(parsed as WorkCenterSortRule[])\r\n : [];\r\n}\r\n\r\nfunction parseFiltersInput(value: unknown): WorkCenterFilterRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeFilters(parsed as WorkCenterFilterRule[])\r\n : [];\r\n}\r\n\r\nfunction hasParamValue(value: unknown): boolean {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nfunction toLabel(value: string): string {\r\n const segment = value.split('.').pop() ?? value;\r\n return segment\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction toColumnType(key: string): ColumnDef['type'] {\r\n return key.toLowerCase().includes('date') ? 'date' : 'text';\r\n}\r\n\r\nfunction mapViewTypeToColumnType(\r\n viewType: string | undefined,\r\n key: string,\r\n): ColumnDef['type'] {\r\n const normalized = viewType?.toLowerCase();\r\n if (normalized === 'date' || key.toLowerCase().includes('date')) {\r\n return 'date';\r\n }\r\n return 'text';\r\n}\r\n\r\nfunction buildColumnsFromProperties(\r\n properties: WorkCenterRuntimeProperty[],\r\n): ColumnDef[] {\r\n return properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n type: mapViewTypeToColumnType(property.viewType, property.key),\r\n }));\r\n}\r\n\r\nfunction buildColumns(\r\n columnsConfig: WorkCenterColumnsConfig | null | undefined,\r\n): ColumnDef[] {\r\n const propertyColumns = buildColumnsFromProperties(\r\n columnsConfig?.properties ?? [],\r\n );\r\n if (propertyColumns.length) {\r\n return propertyColumns;\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return keys.map((key) => ({\r\n key,\r\n label: toLabel(key),\r\n type: toColumnType(key),\r\n }));\r\n}\r\n\r\nfunction buildMenuItems(cards: WorkCenterRuntimeCard[]): ClientPageMenuItem[] {\r\n const mapped = cards.map((card, index) => ({\r\n key: card.key,\r\n title:\r\n card.name?.display || card.name?.en || card.name?.ar || toLabel(card.key),\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: AREA_COLORS[index % AREA_COLORS.length],\r\n icon: card.icon ?? 'custom.task',\r\n isAvailable: card.isAvailable !== false,\r\n }));\r\n\r\n const available = mapped.filter((card) => card.isAvailable);\r\n const source = available.length ? available : mapped;\r\n\r\n return source.map((card) => ({\r\n key: card.key,\r\n title: card.title,\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: card.color,\r\n icon: card.icon ?? 'custom.task',\r\n }));\r\n}\r\n\r\nfunction buildKpis(\r\n stats: WorkCenterRuntimeStatsItem[],\r\n fallbackIcon: string | null,\r\n): StatisticCardData[] {\r\n return stats.map((stat, index) => ({\r\n title: String(stat.count ?? 0),\r\n subTitle: stat.label.display,\r\n icon: (fallbackIcon ?? 'custom.task') as any,\r\n color: KPI_COLORS[index % KPI_COLORS.length],\r\n }));\r\n}\r\n\r\nfunction createDefaultContext(area: WorkCenterArea): WorkCenterContext {\r\n return {\r\n area,\r\n templateId: null,\r\n selectedCardKey: null,\r\n page: 1,\r\n pageSize: 20,\r\n sort: [],\r\n runtimeFilters: [],\r\n includeStats: true,\r\n };\r\n}\r\n\r\nfunction createDefaultAreaState(area: WorkCenterArea): WorkCenterAreaState {\r\n return {\r\n context: createDefaultContext(area),\r\n menuItems: [],\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n runtimeFilterSchema: null,\r\n totalCount: 0,\r\n warnings: [],\r\n lastLoadedAt: null,\r\n };\r\n}\r\n\r\nexport const WORK_CENTER_DEFAULT_STATE: WorkCenterStateModel = {\r\n activeArea: 'MyInbox',\r\n byArea: {\r\n MyInbox: createDefaultAreaState('MyInbox'),\r\n TasksCenter: createDefaultAreaState('TasksCenter'),\r\n },\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\nexport function normalizeContext(\r\n context: WorkCenterContext,\r\n): WorkCenterContext {\r\n return {\r\n ...context,\r\n page: clampPage(context.page, 1),\r\n pageSize: clampPageSize(context.pageSize, 20),\r\n sort: sanitizeSort(context.sort),\r\n runtimeFilters: sanitizeFilters(context.runtimeFilters),\r\n };\r\n}\r\n\r\nexport function buildContextFromInputs(\r\n currentContext: WorkCenterContext,\r\n area: WorkCenterArea,\r\n inputs: WorkCenterBootstrapInputs = {},\r\n): WorkCenterContext {\r\n const parsedCardKey = toSelectedCardKey(inputs.card);\r\n const parsedTemplateId = toOptionalInt(inputs.templateId);\r\n const parsedPage = toOptionalInt(inputs.page);\r\n const parsedPageSize = toOptionalInt(inputs.pageSize);\r\n\r\n return normalizeContext({\r\n ...currentContext,\r\n area,\r\n selectedCardKey: parsedCardKey ?? currentContext.selectedCardKey,\r\n page: parsedPage ?? currentContext.page,\r\n pageSize: parsedPageSize ?? currentContext.pageSize,\r\n templateId: parsedTemplateId ?? currentContext.templateId,\r\n sort: hasParamValue(inputs.sort)\r\n ? parseSortInput(inputs.sort)\r\n : currentContext.sort,\r\n runtimeFilters: hasParamValue(inputs.filters)\r\n ? parseFiltersInput(inputs.filters)\r\n : currentContext.runtimeFilters,\r\n });\r\n}\r\n\r\nexport function isSameContext(\r\n left: WorkCenterContext,\r\n right: WorkCenterContext,\r\n): boolean {\r\n return (\r\n left.area === right.area &&\r\n left.templateId === right.templateId &&\r\n left.selectedCardKey === right.selectedCardKey &&\r\n left.page === right.page &&\r\n left.pageSize === right.pageSize &&\r\n left.includeStats === right.includeStats &&\r\n JSON.stringify(left.sort) === JSON.stringify(right.sort) &&\r\n JSON.stringify(left.runtimeFilters) === JSON.stringify(right.runtimeFilters)\r\n );\r\n}\r\n\r\nexport function mapRuntimeResponse(\r\n current: WorkCenterAreaState,\r\n response: WorkCenterRuntimeResponseData,\r\n): WorkCenterAreaState {\r\n const selectedCard = response.selectedCard;\r\n const rows = selectedCard?.items ?? [];\r\n const menuItems = buildMenuItems(response.cards);\r\n const requestedCardKey =\r\n selectedCard?.key ?? current.context.selectedCardKey ?? null;\r\n const selectedCardKey =\r\n requestedCardKey &&\r\n response.cards.some((card) => card.key === requestedCardKey)\r\n ? requestedCardKey\r\n : (menuItems[0]?.key ?? response.cards[0]?.key ?? null);\r\n const selectedCardFromList = selectedCardKey\r\n ? (response.cards.find((card) => card.key === selectedCardKey) ?? null)\r\n : null;\r\n const selectedMenuItem = menuItems.find(\r\n (item) => item.key === selectedCardKey,\r\n );\r\n const columns = buildColumns(\r\n selectedCard?.columnsConfig ?? selectedCardFromList?.columnsConfig,\r\n );\r\n const kpis = buildKpis(\r\n selectedCard?.stats ?? [],\r\n selectedMenuItem?.icon ?? null,\r\n );\r\n\r\n return {\r\n ...current,\r\n menuItems,\r\n rows,\r\n columns,\r\n kpis,\r\n runtimeFilterSchema:\r\n selectedCard?.runtimeFilterSchema ??\r\n selectedCardFromList?.runtimeFilterSchema ??\r\n null,\r\n totalCount: selectedCard?.pagination.totalCount ?? 0,\r\n warnings: response.warnings ?? [],\r\n lastLoadedAt: new Date().toISOString(),\r\n context: {\r\n ...current.context,\r\n selectedCardKey,\r\n page: selectedCard?.pagination.page ?? current.context.page,\r\n pageSize: selectedCard?.pagination.pageSize ?? current.context.pageSize,\r\n },\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { handleApiRequest } from '@masterteam/components';\r\nimport { EMPTY, catchError, map } from 'rxjs';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterRuntimeFilterSchema,\r\n WorkCenterRuntimeRequest,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterStateModel,\r\n} from './work-center.model';\r\nimport {\r\n buildContextFromInputs,\r\n isSameContext,\r\n mapRuntimeResponse,\r\n normalizeContext,\r\n WORK_CENTER_DEFAULT_STATE,\r\n} from './work-center.state.helpers';\r\n\r\n@State<WorkCenterStateModel>({\r\n name: 'workCenter',\r\n defaults: WORK_CENTER_DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class WorkCenterState {\r\n private readonly http = inject(HttpClient);\r\n\r\n @Selector()\r\n static getState(state: WorkCenterStateModel): WorkCenterStateModel {\r\n return state;\r\n }\r\n\r\n @Selector()\r\n static activeArea(state: WorkCenterStateModel): WorkCenterArea {\r\n return state.activeArea;\r\n }\r\n\r\n @Selector([WorkCenterState.activeArea, WorkCenterState.getState])\r\n static activeSnapshot(\r\n activeArea: WorkCenterArea,\r\n state: WorkCenterStateModel,\r\n ): WorkCenterAreaState {\r\n return state.byArea[activeArea];\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static context(snapshot: WorkCenterAreaState) {\r\n return snapshot.context;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static menuItems(snapshot: WorkCenterAreaState) {\r\n return snapshot.menuItems;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static rows(snapshot: WorkCenterAreaState) {\r\n return snapshot.rows;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columns(snapshot: WorkCenterAreaState) {\r\n return snapshot.columns;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static kpis(snapshot: WorkCenterAreaState) {\r\n return snapshot.kpis;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static runtimeFilterSchema(\r\n snapshot: WorkCenterAreaState,\r\n ): WorkCenterRuntimeFilterSchema | null {\r\n return snapshot.runtimeFilterSchema;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static totalCount(snapshot: WorkCenterAreaState): number {\r\n return snapshot.totalCount;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static warnings(snapshot: WorkCenterAreaState) {\r\n return snapshot.warnings;\r\n }\r\n\r\n @Selector()\r\n static getLoadingActive(state: WorkCenterStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: WorkCenterStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n @Action(EnterArea)\r\n enterArea(ctx: StateContext<WorkCenterStateModel>, action: EnterArea): void {\r\n if (ctx.getState().activeArea === action.area) return;\r\n ctx.patchState({ activeArea: action.area });\r\n }\r\n\r\n @Action(HydrateFromContext)\r\n hydrateFromContext(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: HydrateFromContext,\r\n ): void {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = normalizeContext({\r\n ...current.context,\r\n ...action.patch,\r\n area: action.area,\r\n });\r\n\r\n if (\r\n state.activeArea === action.area &&\r\n isSameContext(current.context, nextContext)\r\n ) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n @Action(SetParams)\r\n setParams(ctx: StateContext<WorkCenterStateModel>, action: SetParams) {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = buildContextFromInputs(\r\n current.context,\r\n action.area,\r\n action.inputs,\r\n );\r\n\r\n const areaChanged = state.activeArea !== action.area;\r\n const contextChanged = !isSameContext(current.context, nextContext);\r\n const runtimeLoading = state.loadingActive.includes(\r\n WorkCenterActionKey.LoadRuntime,\r\n );\r\n const shouldLoad =\r\n areaChanged ||\r\n contextChanged ||\r\n (!current.lastLoadedAt && !runtimeLoading);\r\n\r\n if (areaChanged || contextChanged) {\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n if (!shouldLoad) return;\r\n return ctx.dispatch(new LoadRuntime(action.area, 'route-enter'));\r\n }\r\n\r\n @Action(LoadRuntime)\r\n loadRuntime(ctx: StateContext<WorkCenterStateModel>, action: LoadRuntime) {\r\n const state = ctx.getState();\r\n const areaState = state.byArea[action.area];\r\n const request = normalizeContext(areaState.context);\r\n const nextAreaState = {\r\n ...areaState,\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n totalCount: 0,\r\n };\r\n\r\n ctx.patchState({\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: nextAreaState,\r\n },\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: WorkCenterActionKey.LoadRuntime,\r\n request$: this.getRuntime(request),\r\n onSuccess: (response, latestState) => {\r\n const current = latestState.byArea[action.area];\r\n return {\r\n byArea: {\r\n ...latestState.byArea,\r\n [action.area]: mapRuntimeResponse(current, response),\r\n },\r\n };\r\n },\r\n errorMessage: 'Failed to load Work Center runtime.',\r\n }).pipe(catchError(() => EMPTY));\r\n }\r\n\r\n private getRuntime(request: WorkCenterRuntimeRequest) {\r\n return this.http\r\n .post<\r\n ApiEnvelope<WorkCenterRuntimeResponseData>\r\n >('workcenter/runtime', request)\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) return response.data;\r\n\r\n const fallbackError = 'Failed to load Work Center runtime.';\r\n const message =\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError;\r\n\r\n throw new Error(message);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n WorkCenterSortRule,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n} from './work-center.model';\r\nimport { WorkCenterState } from './work-center.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WorkCenterFacade {\r\n private readonly store = inject(Store);\r\n\r\n readonly activeArea = select(WorkCenterState.activeArea);\r\n readonly context = select(WorkCenterState.context);\r\n readonly menuItems = select(WorkCenterState.menuItems);\r\n readonly rows = select(WorkCenterState.rows);\r\n readonly columns = select(WorkCenterState.columns);\r\n readonly kpis = select(WorkCenterState.kpis);\r\n readonly runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\r\n readonly totalCount = select(WorkCenterState.totalCount);\r\n readonly warnings = select(WorkCenterState.warnings);\r\n\r\n private readonly loadingActive = select(WorkCenterState.getLoadingActive);\r\n private readonly errors = select(WorkCenterState.getErrors);\r\n\r\n readonly loading = computed(() =>\r\n this.loadingActive().includes(WorkCenterActionKey.LoadRuntime),\r\n );\r\n readonly error = computed(\r\n () => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null,\r\n );\r\n\r\n enterArea(area: WorkCenterArea) {\r\n return this.store.dispatch(new EnterArea(area));\r\n }\r\n\r\n hydrateContext(area: WorkCenterArea, patch: WorkCenterHydratePatch) {\r\n return this.store.dispatch(new HydrateFromContext(area, patch));\r\n }\r\n\r\n setParams(area: WorkCenterArea, inputs: WorkCenterBootstrapInputs) {\r\n return this.store.dispatch(new SetParams(area, inputs));\r\n }\r\n\r\n selectCardAndLoad(area: WorkCenterArea, selectedCardKey: string) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { selectedCardKey, page: 1 }),\r\n new LoadRuntime(area, 'menu-change'),\r\n ]);\r\n }\r\n\r\n applyTableLazyLoadAndLoad(area: WorkCenterArea, event: any) {\r\n const context = this.store.selectSnapshot(WorkCenterState.context);\r\n const patch: WorkCenterHydratePatch = {};\r\n let changed = false;\r\n\r\n const page = this.toPositiveInt(event?.currentPage);\r\n if (page !== null && page !== context.page) {\r\n patch.page = page;\r\n changed = true;\r\n }\r\n\r\n const pageSize = this.toPositiveInt(event?.pageSize);\r\n if (pageSize !== null) {\r\n const normalizedPageSize = Math.min(\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n Math.max(1, pageSize),\r\n );\r\n if (normalizedPageSize !== context.pageSize) {\r\n patch.pageSize = normalizedPageSize;\r\n changed = true;\r\n }\r\n }\r\n\r\n const sort = this.toSortFromLazyEvent(event);\r\n if (sort && !this.isSameSort(sort, context.sort)) {\r\n patch.sort = sort;\r\n changed = true;\r\n }\r\n\r\n if (!changed) {\r\n return;\r\n }\r\n\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, patch),\r\n new LoadRuntime(area, 'table-lazy'),\r\n ]);\r\n }\r\n\r\n applyRuntimeFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { runtimeFilters, page: 1 }),\r\n new LoadRuntime(area, 'filters-change'),\r\n ]);\r\n }\r\n\r\n loadRuntime(area: WorkCenterArea, reason: WorkCenterLoadReason = 'manual') {\r\n return this.store.dispatch(new LoadRuntime(area, reason));\r\n }\r\n\r\n private toPositiveInt(value: unknown): number | null {\r\n const parsed = Number(value);\r\n if (!Number.isFinite(parsed)) {\r\n return null;\r\n }\r\n return Math.max(1, Math.floor(parsed));\r\n }\r\n\r\n private toSortFromLazyEvent(event: any): WorkCenterSortRule[] | null {\r\n const sortField = event?.sortField;\r\n if (typeof sortField !== 'string' || !sortField.length) {\r\n return null;\r\n }\r\n\r\n return [\r\n {\r\n field: sortField,\r\n dir: event?.sortOrder === -1 ? 'desc' : 'asc',\r\n },\r\n ];\r\n }\r\n\r\n private isSameSort(\r\n left: WorkCenterSortRule[] | undefined,\r\n right: WorkCenterSortRule[] | undefined,\r\n ): boolean {\r\n const leftValue = left ?? [];\r\n const rightValue = right ?? [];\r\n\r\n if (leftValue.length !== rightValue.length) {\r\n return false;\r\n }\r\n\r\n return leftValue.every(\r\n (rule, index) =>\r\n rule.field === rightValue[index]?.field &&\r\n rule.dir === rightValue[index]?.dir,\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, inject, input, output } from '@angular/core';\r\nimport { ClientPage } from '@masterteam/components/client-page';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { Page } from '@masterteam/components/page';\r\nimport {\r\n PropertyFilterBuilder,\r\n PropertyFilterBuilderRule,\r\n PropertyFilterBuilderSchema,\r\n} from '@masterteam/components/property-filter-builder';\r\nimport { StatisticCard } from '@masterteam/components/statistic-card';\r\nimport { Table } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeFilterSchema,\r\n} from '../../store/work-center/work-center.model';\r\n\r\nconst OPERATOR_LABELS: Record<string, string> = {\r\n Eq: 'Equals',\r\n Neq: 'Not equal',\r\n In: 'In',\r\n Contains: 'Contains',\r\n StartsWith: 'Starts with',\r\n Gt: 'Greater than',\r\n Gte: 'Greater than or equal',\r\n Lt: 'Less than',\r\n Lte: 'Less than or equal',\r\n Between: 'Between',\r\n IsNull: 'Is empty',\r\n IsNotNull: 'Is not empty',\r\n};\r\n\r\nconst OPERATOR_VALUE_MODE: Record<\r\n string,\r\n 'single' | 'multi' | 'range' | 'none'\r\n> = {\r\n In: 'multi',\r\n Between: 'range',\r\n IsNull: 'none',\r\n IsNotNull: 'none',\r\n};\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction columnTypeToViewType(type: string | undefined): string | undefined {\r\n if (type === 'date') return 'Date';\r\n return undefined;\r\n}\r\n\r\nfunction mapAllowedFields(schema: WorkCenterRuntimeFilterSchema) {\r\n const properties = schema.properties ?? [];\r\n const fromProperties = properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n viewType: property.viewType,\r\n }));\r\n\r\n if (fromProperties.length) {\r\n return fromProperties;\r\n }\r\n\r\n return (schema.allowedFields ?? []).map((field) => ({\r\n key: field,\r\n label: toLabel(field),\r\n }));\r\n}\r\n\r\nfunction mapAllowedOperators(schema: WorkCenterRuntimeFilterSchema) {\r\n const options: Array<{\r\n key: string;\r\n label: string;\r\n valueMode: 'single' | 'multi' | 'range' | 'none';\r\n }> = [];\r\n\r\n for (const operator of schema.allowedOperators ?? []) {\r\n if (typeof operator === 'string') {\r\n options.push({\r\n key: operator,\r\n label: OPERATOR_LABELS[operator] ?? toLabel(operator),\r\n valueMode: OPERATOR_VALUE_MODE[operator] ?? 'single',\r\n });\r\n continue;\r\n }\r\n\r\n const key = operator?.value;\r\n if (!key) {\r\n continue;\r\n }\r\n\r\n options.push({\r\n key,\r\n label:\r\n operator.display?.display ||\r\n operator.display?.en ||\r\n operator.display?.ar ||\r\n OPERATOR_LABELS[key] ||\r\n toLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n });\r\n }\r\n\r\n return options;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-page',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ClientPage,\r\n Page,\r\n PropertyFilterBuilder,\r\n StatisticCard,\r\n Table,\r\n SkeletonModule,\r\n ],\r\n templateUrl: './work-center-page.html',\r\n})\r\nexport class WorkCenterPage {\r\n private readonly facade = inject(WorkCenterFacade);\r\n\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('Work Center');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n\r\n readonly runtimeFiltersChanged = output<WorkCenterFilterRule[]>();\r\n\r\n protected readonly context = this.facade.context;\r\n protected readonly menuItems = this.facade.menuItems;\r\n protected readonly rows = this.facade.rows;\r\n protected readonly columns = this.facade.columns;\r\n protected readonly kpis = this.facade.kpis;\r\n protected readonly runtimeFilterSchema = this.facade.runtimeFilterSchema;\r\n protected readonly totalCount = this.facade.totalCount;\r\n protected readonly loading = this.facade.loading;\r\n\r\n protected readonly tableCurrentPage = computed(() =>\r\n Math.max((this.context().page ?? 1) - 1, 0),\r\n );\r\n protected readonly tableFirst = computed(\r\n () => this.tableCurrentPage() * (this.context().pageSize || 20),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema);\r\n if (allowedFields.length && allowedOperators.length) {\r\n return { allowedFields, allowedOperators };\r\n }\r\n }\r\n\r\n const fallbackFields = this.columns()\r\n .filter(\r\n (column) => typeof column?.key === 'string' && column.key.length > 0,\r\n )\r\n .map((column) => ({\r\n key: column.key,\r\n label: column.label || toLabel(column.key),\r\n viewType: columnTypeToViewType(column.type),\r\n }));\r\n\r\n if (!fallbackFields.length) {\r\n return null;\r\n }\r\n\r\n const fallbackOperators = Object.keys(OPERATOR_LABELS).map((key) => ({\r\n key,\r\n label: OPERATOR_LABELS[key] ?? toLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n }));\r\n\r\n return {\r\n allowedFields: fallbackFields,\r\n allowedOperators: fallbackOperators,\r\n };\r\n });\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\r\n this.facade.selectCardAndLoad(this.area(), item.key);\r\n }\r\n\r\n onLazyLoad(event: any): void {\r\n this.facade.applyTableLazyLoadAndLoad(this.area(), event);\r\n }\r\n\r\n onRuntimeFiltersApplied(filters: PropertyFilterBuilderRule[]): void {\r\n this.runtimeFiltersChanged.emit(\r\n filters.map((filter) => ({\r\n field: filter.field,\r\n op: filter.op as WorkCenterFilterRule['op'],\r\n value: filter.value,\r\n values: filter.values,\r\n from: filter.from,\r\n to: filter.to,\r\n })),\r\n );\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.runtimeFiltersChanged.emit([]);\r\n }\r\n}\r\n","<mt-page [title]=\"pageTitle()\" [avatarIcon]=\"menuIcon()\">\r\n <div class=\"h-full min-h-0\">\r\n <mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"pageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n >\r\n <ng-template #headerClientPageEnd>\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-4\">\r\n @if (loading()) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"6.5rem\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [lazy]=\"true\"\r\n [loading]=\"loading()\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"tableCurrentPage()\"\r\n [first]=\"tableFirst()\"\r\n (lazyLoad)=\"onLazyLoad($event)\"\r\n />\r\n </div>\r\n </mt-client-page>\r\n </div>\r\n</mt-page>\r\n","import { WorkCenterState } from './work-center';\r\n\r\nexport const APP_STATES = [WorkCenterState];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["toLabel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-work-center.mjs","sources":["../../../../packages/masterteam/work-center/src/store/work-center/work-center.actions.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.model.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.helpers.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.state.ts","../../../../packages/masterteam/work-center/src/store/work-center/work-center.facade.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.ts","../../../../packages/masterteam/work-center/src/lib/work-center-page/work-center-page.html","../../../../packages/masterteam/work-center/src/store/app.state.ts","../../../../packages/masterteam/work-center/src/masterteam-work-center.ts"],"sourcesContent":["import {\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n} from './work-center.model';\r\n\r\nexport class EnterArea {\r\n static readonly type = '[WorkCenter] Enter Area';\r\n\r\n constructor(public area: WorkCenterArea) {}\r\n}\r\n\r\nexport class HydrateFromContext {\r\n static readonly type = '[WorkCenter] Hydrate From Context';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public patch: WorkCenterHydratePatch,\r\n ) {}\r\n}\r\n\r\nexport class SetParams {\r\n static readonly type = '[WorkCenter] Set Params';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public inputs: WorkCenterBootstrapInputs,\r\n ) {}\r\n}\r\n\r\nexport class LoadRuntime {\r\n static readonly type = '[WorkCenter] Load Runtime';\r\n\r\n constructor(\r\n public area: WorkCenterArea,\r\n public reason: WorkCenterLoadReason = 'manual',\r\n ) {}\r\n}\r\n","import type { LoadingStateShape } from '@masterteam/components';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nexport type WorkCenterArea = 'MyInbox' | 'TasksCenter';\r\n\r\nexport enum WorkCenterActionKey {\r\n LoadRuntime = 'loadRuntime',\r\n}\r\n\r\nexport const WORK_CENTER_QUERY_VERSION = 1;\r\nexport const WORK_CENTER_MAX_PAGE_SIZE = 100;\r\nexport const WORK_CENTER_MAX_FILTERS = 20;\r\nexport const WORK_CENTER_MAX_SORT = 5;\r\n\r\nexport interface ApiEnvelope<T> {\r\n endpoint: string | null;\r\n status: number;\r\n code: 1 | 2;\r\n locale: string | null;\r\n message: string | null;\r\n errors: unknown;\r\n data: T;\r\n cacheSession: string | null;\r\n}\r\n\r\nexport interface TranslatableDto {\r\n display: string;\r\n en: string;\r\n ar: string;\r\n}\r\n\r\nexport interface WorkCenterSortRule {\r\n field: string;\r\n dir: 'asc' | 'desc';\r\n}\r\n\r\nexport type WorkCenterFilterOperator =\r\n | 'Eq'\r\n | 'Neq'\r\n | 'In'\r\n | 'Contains'\r\n | 'StartsWith'\r\n | 'Gt'\r\n | 'Gte'\r\n | 'Lt'\r\n | 'Lte'\r\n | 'Between'\r\n | 'IsNull'\r\n | 'IsNotNull';\r\n\r\nexport interface WorkCenterFilterRule {\r\n field: string;\r\n op: WorkCenterFilterOperator;\r\n value?: unknown;\r\n values?: unknown[];\r\n from?: unknown;\r\n to?: unknown;\r\n}\r\n\r\nexport interface WorkCenterRuntimeProperty {\r\n id?: number;\r\n key: string;\r\n normalizedKey?: string;\r\n name?: TranslatableDto;\r\n description?: TranslatableDto;\r\n viewType?: string;\r\n}\r\n\r\nexport interface WorkCenterRuntimeOperatorOption {\r\n value: WorkCenterFilterOperator;\r\n display?: TranslatableDto;\r\n}\r\n\r\nexport interface WorkCenterRuntimeFilterSchema {\r\n properties?: WorkCenterRuntimeProperty[];\r\n allowedFields?: string[];\r\n allowedOperators: Array<\r\n WorkCenterFilterOperator | WorkCenterRuntimeOperatorOption\r\n >;\r\n}\r\n\r\nexport interface WorkCenterColumnsConfig {\r\n columns?: string[];\r\n properties?: WorkCenterRuntimeProperty[];\r\n}\r\n\r\nexport interface WorkCenterRuntimeRequest {\r\n area: WorkCenterArea;\r\n templateId?: number | null;\r\n selectedCardKey?: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeCard {\r\n key: string;\r\n name: TranslatableDto;\r\n icon: string | null;\r\n urlTemplate?: string | null;\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n count: number;\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface WorkCenterRuntimeStatsItem {\r\n key: string;\r\n label: TranslatableDto;\r\n count: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimePagination {\r\n page: number;\r\n pageSize: number;\r\n totalCount: number;\r\n}\r\n\r\nexport interface WorkCenterRuntimeSelectedCard {\r\n key: string;\r\n pagination: WorkCenterRuntimePagination;\r\n stats: WorkCenterRuntimeStatsItem[];\r\n items: Record<string, unknown>[];\r\n runtimeFilterSchema?: WorkCenterRuntimeFilterSchema | null;\r\n columnsConfig?: WorkCenterColumnsConfig | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeWarningDto {\r\n code: string;\r\n message: string;\r\n cardKey: string | null;\r\n source: string | null;\r\n}\r\n\r\nexport interface WorkCenterRuntimeResponseData {\r\n area: WorkCenterArea;\r\n cards: WorkCenterRuntimeCard[];\r\n selectedCard: WorkCenterRuntimeSelectedCard | null;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n}\r\n\r\nexport interface WorkCenterContext {\r\n area: WorkCenterArea;\r\n templateId: number | null;\r\n selectedCardKey: string | null;\r\n page: number;\r\n pageSize: number;\r\n sort: WorkCenterSortRule[];\r\n runtimeFilters: WorkCenterFilterRule[];\r\n includeStats: boolean;\r\n}\r\n\r\nexport interface WorkCenterAreaState {\r\n context: WorkCenterContext;\r\n menuItems: ClientPageMenuItem[];\r\n rows: Record<string, unknown>[];\r\n columns: ColumnDef[];\r\n kpis: StatisticCardData[];\r\n runtimeFilterSchema: WorkCenterRuntimeFilterSchema | null;\r\n totalCount: number;\r\n warnings: WorkCenterRuntimeWarningDto[];\r\n lastLoadedAt: string | null;\r\n}\r\n\r\nexport interface WorkCenterStateModel extends LoadingStateShape<WorkCenterActionKey> {\r\n activeArea: WorkCenterArea;\r\n byArea: Record<WorkCenterArea, WorkCenterAreaState>;\r\n}\r\n\r\nexport interface WorkCenterHydratePatch {\r\n selectedCardKey?: string | null;\r\n page?: number;\r\n pageSize?: number;\r\n templateId?: number | null;\r\n sort?: WorkCenterSortRule[];\r\n runtimeFilters?: WorkCenterFilterRule[];\r\n}\r\n\r\nexport interface WorkCenterBootstrapInputs {\r\n card?: unknown;\r\n page?: unknown;\r\n pageSize?: unknown;\r\n templateId?: unknown;\r\n sort?: unknown;\r\n filters?: unknown;\r\n}\r\n\r\nexport type WorkCenterLoadReason =\r\n | 'route-enter'\r\n | 'menu-change'\r\n | 'filters-change'\r\n | 'table-lazy'\r\n | 'refresh'\r\n | 'manual';\r\n","import { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport { StatisticCardData } from '@masterteam/components/statistic-card';\r\nimport { ColumnDef } from '@masterteam/components/table';\r\n\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterColumnsConfig,\r\n WorkCenterContext,\r\n WorkCenterFilterOperator,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeProperty,\r\n WorkCenterRuntimeCard,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterRuntimeStatsItem,\r\n WorkCenterSortRule,\r\n WorkCenterStateModel,\r\n WORK_CENTER_MAX_FILTERS,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n WORK_CENTER_MAX_SORT,\r\n} from './work-center.model';\r\n\r\nconst AREA_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\nconst KPI_COLORS = ['violet', 'blue', 'emerald', 'amber', 'teal'];\r\n\r\nconst FILTER_OPERATORS: Set<WorkCenterFilterOperator> = new Set([\r\n 'Eq',\r\n 'Neq',\r\n 'In',\r\n 'Contains',\r\n 'StartsWith',\r\n 'Gt',\r\n 'Gte',\r\n 'Lt',\r\n 'Lte',\r\n 'Between',\r\n 'IsNull',\r\n 'IsNotNull',\r\n]);\r\n\r\nfunction clampPage(value: number | undefined, fallback = 1): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n return Math.max(1, Math.floor(value as number));\r\n}\r\n\r\nfunction clampPageSize(value: number | undefined, fallback = 20): number {\r\n if (!Number.isFinite(value)) return fallback;\r\n const parsed = Math.floor(value as number);\r\n return Math.min(WORK_CENTER_MAX_PAGE_SIZE, Math.max(1, parsed));\r\n}\r\n\r\nfunction sanitizeSort(\r\n rules: WorkCenterSortRule[] | undefined,\r\n): WorkCenterSortRule[] {\r\n if (!Array.isArray(rules)) return [];\r\n return rules\r\n .filter(\r\n (rule): rule is WorkCenterSortRule =>\r\n typeof rule?.field === 'string' &&\r\n rule.field.length > 0 &&\r\n (rule.dir === 'asc' || rule.dir === 'desc'),\r\n )\r\n .slice(0, WORK_CENTER_MAX_SORT);\r\n}\r\n\r\nfunction sanitizeFilters(\r\n filters: WorkCenterFilterRule[] | undefined,\r\n): WorkCenterFilterRule[] {\r\n if (!Array.isArray(filters)) return [];\r\n\r\n return filters\r\n .filter(\r\n (filter): filter is WorkCenterFilterRule =>\r\n typeof filter?.field === 'string' &&\r\n filter.field.length > 0 &&\r\n typeof filter?.op === 'string' &&\r\n FILTER_OPERATORS.has(filter.op),\r\n )\r\n .slice(0, WORK_CENTER_MAX_FILTERS);\r\n}\r\n\r\nfunction parseJson(value: unknown): unknown {\r\n if (typeof value !== 'string') return value;\r\n if (!value.trim()) return null;\r\n\r\n try {\r\n return JSON.parse(value);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction toOptionalInt(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') return null;\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? Math.floor(parsed) : null;\r\n}\r\n\r\nfunction toSelectedCardKey(value: unknown): string | null {\r\n if (typeof value !== 'string') return null;\r\n const parsed = value.trim();\r\n return parsed.length ? parsed : null;\r\n}\r\n\r\nfunction parseSortInput(value: unknown): WorkCenterSortRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeSort(parsed as WorkCenterSortRule[])\r\n : [];\r\n}\r\n\r\nfunction parseFiltersInput(value: unknown): WorkCenterFilterRule[] {\r\n const parsed = parseJson(value);\r\n return Array.isArray(parsed)\r\n ? sanitizeFilters(parsed as WorkCenterFilterRule[])\r\n : [];\r\n}\r\n\r\nfunction hasParamValue(value: unknown): boolean {\r\n return value !== null && value !== undefined && value !== '';\r\n}\r\n\r\nfunction toLabel(value: string): string {\r\n const segment = value.split('.').pop() ?? value;\r\n return segment\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/\\s+/g, ' ')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction toColumnType(key: string): ColumnDef['type'] {\r\n return key.toLowerCase().includes('date') ? 'date' : 'text';\r\n}\r\n\r\nfunction mapViewTypeToColumnType(\r\n viewType: string | undefined,\r\n key: string,\r\n): ColumnDef['type'] {\r\n const normalized = viewType?.toLowerCase();\r\n if (normalized === 'date' || key.toLowerCase().includes('date')) {\r\n return 'date';\r\n }\r\n return 'text';\r\n}\r\n\r\nfunction buildColumnsFromProperties(\r\n properties: WorkCenterRuntimeProperty[],\r\n): ColumnDef[] {\r\n return properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n type: mapViewTypeToColumnType(property.viewType, property.key),\r\n }));\r\n}\r\n\r\nfunction buildColumns(\r\n columnsConfig: WorkCenterColumnsConfig | null | undefined,\r\n): ColumnDef[] {\r\n const propertyColumns = buildColumnsFromProperties(\r\n columnsConfig?.properties ?? [],\r\n );\r\n if (propertyColumns.length) {\r\n return propertyColumns;\r\n }\r\n\r\n const keys = columnsConfig?.columns?.length ? columnsConfig.columns : [];\r\n return keys.map((key) => ({\r\n key,\r\n label: toLabel(key),\r\n type: toColumnType(key),\r\n }));\r\n}\r\n\r\nfunction buildMenuItems(cards: WorkCenterRuntimeCard[]): ClientPageMenuItem[] {\r\n const mapped = cards.map((card, index) => ({\r\n key: card.key,\r\n title:\r\n card.name?.display || card.name?.en || card.name?.ar || toLabel(card.key),\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: AREA_COLORS[index % AREA_COLORS.length],\r\n icon: card.icon ?? 'custom.task',\r\n isAvailable: card.isAvailable !== false,\r\n }));\r\n\r\n const available = mapped.filter((card) => card.isAvailable);\r\n const source = available.length ? available : mapped;\r\n\r\n return source.map((card) => ({\r\n key: card.key,\r\n title: card.title,\r\n subtitle: undefined,\r\n count: card.count ?? 0,\r\n color: card.color,\r\n icon: card.icon ?? 'custom.task',\r\n }));\r\n}\r\n\r\nfunction buildKpis(\r\n stats: WorkCenterRuntimeStatsItem[],\r\n fallbackIcon: string | null,\r\n): StatisticCardData[] {\r\n return stats.map((stat, index) => ({\r\n title: String(stat.count ?? 0),\r\n subTitle: stat.label.display,\r\n icon: (fallbackIcon ?? 'custom.task') as any,\r\n color: KPI_COLORS[index % KPI_COLORS.length],\r\n }));\r\n}\r\n\r\nfunction createDefaultContext(area: WorkCenterArea): WorkCenterContext {\r\n return {\r\n area,\r\n templateId: null,\r\n selectedCardKey: null,\r\n page: 1,\r\n pageSize: 20,\r\n sort: [],\r\n runtimeFilters: [],\r\n includeStats: true,\r\n };\r\n}\r\n\r\nfunction createDefaultAreaState(area: WorkCenterArea): WorkCenterAreaState {\r\n return {\r\n context: createDefaultContext(area),\r\n menuItems: [],\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n runtimeFilterSchema: null,\r\n totalCount: 0,\r\n warnings: [],\r\n lastLoadedAt: null,\r\n };\r\n}\r\n\r\nexport const WORK_CENTER_DEFAULT_STATE: WorkCenterStateModel = {\r\n activeArea: 'MyInbox',\r\n byArea: {\r\n MyInbox: createDefaultAreaState('MyInbox'),\r\n TasksCenter: createDefaultAreaState('TasksCenter'),\r\n },\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\nexport function normalizeContext(\r\n context: WorkCenterContext,\r\n): WorkCenterContext {\r\n return {\r\n ...context,\r\n page: clampPage(context.page, 1),\r\n pageSize: clampPageSize(context.pageSize, 20),\r\n sort: sanitizeSort(context.sort),\r\n runtimeFilters: sanitizeFilters(context.runtimeFilters),\r\n };\r\n}\r\n\r\nexport function buildContextFromInputs(\r\n currentContext: WorkCenterContext,\r\n area: WorkCenterArea,\r\n inputs: WorkCenterBootstrapInputs = {},\r\n): WorkCenterContext {\r\n const parsedCardKey = toSelectedCardKey(inputs.card);\r\n const parsedTemplateId = toOptionalInt(inputs.templateId);\r\n const parsedPage = toOptionalInt(inputs.page);\r\n const parsedPageSize = toOptionalInt(inputs.pageSize);\r\n\r\n return normalizeContext({\r\n ...currentContext,\r\n area,\r\n selectedCardKey: parsedCardKey ?? currentContext.selectedCardKey,\r\n page: parsedPage ?? currentContext.page,\r\n pageSize: parsedPageSize ?? currentContext.pageSize,\r\n templateId: parsedTemplateId ?? currentContext.templateId,\r\n sort: hasParamValue(inputs.sort)\r\n ? parseSortInput(inputs.sort)\r\n : currentContext.sort,\r\n runtimeFilters: hasParamValue(inputs.filters)\r\n ? parseFiltersInput(inputs.filters)\r\n : currentContext.runtimeFilters,\r\n });\r\n}\r\n\r\nexport function isSameContext(\r\n left: WorkCenterContext,\r\n right: WorkCenterContext,\r\n): boolean {\r\n return (\r\n left.area === right.area &&\r\n left.templateId === right.templateId &&\r\n left.selectedCardKey === right.selectedCardKey &&\r\n left.page === right.page &&\r\n left.pageSize === right.pageSize &&\r\n left.includeStats === right.includeStats &&\r\n JSON.stringify(left.sort) === JSON.stringify(right.sort) &&\r\n JSON.stringify(left.runtimeFilters) === JSON.stringify(right.runtimeFilters)\r\n );\r\n}\r\n\r\nexport function mapRuntimeResponse(\r\n current: WorkCenterAreaState,\r\n response: WorkCenterRuntimeResponseData,\r\n): WorkCenterAreaState {\r\n const selectedCard = response.selectedCard;\r\n const rows = selectedCard?.items ?? [];\r\n const menuItems = buildMenuItems(response.cards);\r\n const requestedCardKey =\r\n selectedCard?.key ?? current.context.selectedCardKey ?? null;\r\n const selectedCardKey =\r\n requestedCardKey &&\r\n response.cards.some((card) => card.key === requestedCardKey)\r\n ? requestedCardKey\r\n : (menuItems[0]?.key ?? response.cards[0]?.key ?? null);\r\n const selectedCardFromList = selectedCardKey\r\n ? (response.cards.find((card) => card.key === selectedCardKey) ?? null)\r\n : null;\r\n const selectedMenuItem = menuItems.find(\r\n (item) => item.key === selectedCardKey,\r\n );\r\n const columns = buildColumns(\r\n selectedCard?.columnsConfig ?? selectedCardFromList?.columnsConfig,\r\n );\r\n const kpis = buildKpis(\r\n selectedCard?.stats ?? [],\r\n selectedMenuItem?.icon ?? null,\r\n );\r\n\r\n return {\r\n ...current,\r\n menuItems,\r\n rows,\r\n columns,\r\n kpis,\r\n runtimeFilterSchema:\r\n selectedCard?.runtimeFilterSchema ??\r\n selectedCardFromList?.runtimeFilterSchema ??\r\n null,\r\n totalCount: selectedCard?.pagination.totalCount ?? 0,\r\n warnings: response.warnings ?? [],\r\n lastLoadedAt: new Date().toISOString(),\r\n context: {\r\n ...current.context,\r\n selectedCardKey,\r\n page: selectedCard?.pagination.page ?? current.context.page,\r\n pageSize: selectedCard?.pagination.pageSize ?? current.context.pageSize,\r\n },\r\n };\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { handleApiRequest } from '@masterteam/components';\r\nimport { EMPTY, catchError, map } from 'rxjs';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n} from './work-center.actions';\r\nimport {\r\n ApiEnvelope,\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterAreaState,\r\n WorkCenterRuntimeFilterSchema,\r\n WorkCenterRuntimeRequest,\r\n WorkCenterRuntimeResponseData,\r\n WorkCenterStateModel,\r\n} from './work-center.model';\r\nimport {\r\n buildContextFromInputs,\r\n isSameContext,\r\n mapRuntimeResponse,\r\n normalizeContext,\r\n WORK_CENTER_DEFAULT_STATE,\r\n} from './work-center.state.helpers';\r\n\r\n@State<WorkCenterStateModel>({\r\n name: 'workCenter',\r\n defaults: WORK_CENTER_DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class WorkCenterState {\r\n private readonly http = inject(HttpClient);\r\n\r\n @Selector()\r\n static getState(state: WorkCenterStateModel): WorkCenterStateModel {\r\n return state;\r\n }\r\n\r\n @Selector()\r\n static activeArea(state: WorkCenterStateModel): WorkCenterArea {\r\n return state.activeArea;\r\n }\r\n\r\n @Selector([WorkCenterState.activeArea, WorkCenterState.getState])\r\n static activeSnapshot(\r\n activeArea: WorkCenterArea,\r\n state: WorkCenterStateModel,\r\n ): WorkCenterAreaState {\r\n return state.byArea[activeArea];\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static context(snapshot: WorkCenterAreaState) {\r\n return snapshot.context;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static menuItems(snapshot: WorkCenterAreaState) {\r\n return snapshot.menuItems;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static rows(snapshot: WorkCenterAreaState) {\r\n return snapshot.rows;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static columns(snapshot: WorkCenterAreaState) {\r\n return snapshot.columns;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static kpis(snapshot: WorkCenterAreaState) {\r\n return snapshot.kpis;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static runtimeFilterSchema(\r\n snapshot: WorkCenterAreaState,\r\n ): WorkCenterRuntimeFilterSchema | null {\r\n return snapshot.runtimeFilterSchema;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static totalCount(snapshot: WorkCenterAreaState): number {\r\n return snapshot.totalCount;\r\n }\r\n\r\n @Selector([WorkCenterState.activeSnapshot])\r\n static warnings(snapshot: WorkCenterAreaState) {\r\n return snapshot.warnings;\r\n }\r\n\r\n @Selector()\r\n static getLoadingActive(state: WorkCenterStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: WorkCenterStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n @Action(EnterArea)\r\n enterArea(ctx: StateContext<WorkCenterStateModel>, action: EnterArea): void {\r\n if (ctx.getState().activeArea === action.area) return;\r\n ctx.patchState({ activeArea: action.area });\r\n }\r\n\r\n @Action(HydrateFromContext)\r\n hydrateFromContext(\r\n ctx: StateContext<WorkCenterStateModel>,\r\n action: HydrateFromContext,\r\n ): void {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = normalizeContext({\r\n ...current.context,\r\n ...action.patch,\r\n area: action.area,\r\n });\r\n\r\n if (\r\n state.activeArea === action.area &&\r\n isSameContext(current.context, nextContext)\r\n ) {\r\n return;\r\n }\r\n\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n @Action(SetParams)\r\n setParams(ctx: StateContext<WorkCenterStateModel>, action: SetParams) {\r\n const state = ctx.getState();\r\n const current = state.byArea[action.area];\r\n const nextContext = buildContextFromInputs(\r\n current.context,\r\n action.area,\r\n action.inputs,\r\n );\r\n\r\n const areaChanged = state.activeArea !== action.area;\r\n const contextChanged = !isSameContext(current.context, nextContext);\r\n const runtimeLoading = state.loadingActive.includes(\r\n WorkCenterActionKey.LoadRuntime,\r\n );\r\n const shouldLoad =\r\n areaChanged ||\r\n contextChanged ||\r\n (!current.lastLoadedAt && !runtimeLoading);\r\n\r\n if (areaChanged || contextChanged) {\r\n ctx.patchState({\r\n activeArea: action.area,\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: { ...current, context: nextContext },\r\n },\r\n });\r\n }\r\n\r\n if (!shouldLoad) return;\r\n return ctx.dispatch(new LoadRuntime(action.area, 'route-enter'));\r\n }\r\n\r\n @Action(LoadRuntime)\r\n loadRuntime(ctx: StateContext<WorkCenterStateModel>, action: LoadRuntime) {\r\n const state = ctx.getState();\r\n const areaState = state.byArea[action.area];\r\n const request = normalizeContext(areaState.context);\r\n const nextAreaState = {\r\n ...areaState,\r\n rows: [],\r\n columns: [],\r\n kpis: [],\r\n totalCount: 0,\r\n };\r\n\r\n ctx.patchState({\r\n byArea: {\r\n ...state.byArea,\r\n [action.area]: nextAreaState,\r\n },\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: WorkCenterActionKey.LoadRuntime,\r\n request$: this.getRuntime(request),\r\n onSuccess: (response, latestState) => {\r\n const current = latestState.byArea[action.area];\r\n return {\r\n byArea: {\r\n ...latestState.byArea,\r\n [action.area]: mapRuntimeResponse(current, response),\r\n },\r\n };\r\n },\r\n errorMessage: 'Failed to load Work Center runtime.',\r\n }).pipe(catchError(() => EMPTY));\r\n }\r\n\r\n private getRuntime(request: WorkCenterRuntimeRequest) {\r\n return this.http\r\n .post<\r\n ApiEnvelope<WorkCenterRuntimeResponseData>\r\n >('workcenter/runtime', request)\r\n .pipe(\r\n map((response) => {\r\n if (response.code === 1) return response.data;\r\n\r\n const fallbackError = 'Failed to load Work Center runtime.';\r\n const message =\r\n (response.errors as { message?: string } | null)?.message ??\r\n response.message ??\r\n fallbackError;\r\n\r\n throw new Error(message);\r\n }),\r\n );\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\n\r\nimport {\r\n EnterArea,\r\n HydrateFromContext,\r\n LoadRuntime,\r\n SetParams,\r\n} from './work-center.actions';\r\nimport {\r\n WorkCenterActionKey,\r\n WorkCenterArea,\r\n WorkCenterBootstrapInputs,\r\n WorkCenterFilterRule,\r\n WorkCenterHydratePatch,\r\n WorkCenterLoadReason,\r\n WorkCenterSortRule,\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n} from './work-center.model';\r\nimport { WorkCenterState } from './work-center.state';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WorkCenterFacade {\r\n private readonly store = inject(Store);\r\n\r\n readonly activeArea = select(WorkCenterState.activeArea);\r\n readonly context = select(WorkCenterState.context);\r\n readonly menuItems = select(WorkCenterState.menuItems);\r\n readonly rows = select(WorkCenterState.rows);\r\n readonly columns = select(WorkCenterState.columns);\r\n readonly kpis = select(WorkCenterState.kpis);\r\n readonly runtimeFilterSchema = select(WorkCenterState.runtimeFilterSchema);\r\n readonly totalCount = select(WorkCenterState.totalCount);\r\n readonly warnings = select(WorkCenterState.warnings);\r\n\r\n private readonly loadingActive = select(WorkCenterState.getLoadingActive);\r\n private readonly errors = select(WorkCenterState.getErrors);\r\n\r\n readonly loading = computed(() =>\r\n this.loadingActive().includes(WorkCenterActionKey.LoadRuntime),\r\n );\r\n readonly error = computed(\r\n () => this.errors()[WorkCenterActionKey.LoadRuntime] ?? null,\r\n );\r\n\r\n enterArea(area: WorkCenterArea) {\r\n return this.store.dispatch(new EnterArea(area));\r\n }\r\n\r\n hydrateContext(area: WorkCenterArea, patch: WorkCenterHydratePatch) {\r\n return this.store.dispatch(new HydrateFromContext(area, patch));\r\n }\r\n\r\n setParams(area: WorkCenterArea, inputs: WorkCenterBootstrapInputs) {\r\n return this.store.dispatch(new SetParams(area, inputs));\r\n }\r\n\r\n selectCardAndLoad(area: WorkCenterArea, selectedCardKey: string) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { selectedCardKey, page: 1 }),\r\n new LoadRuntime(area, 'menu-change'),\r\n ]);\r\n }\r\n\r\n applyTableLazyLoadAndLoad(area: WorkCenterArea, event: any) {\r\n const context = this.store.selectSnapshot(WorkCenterState.context);\r\n const patch: WorkCenterHydratePatch = {};\r\n let changed = false;\r\n\r\n const page = this.toPositiveInt(event?.currentPage);\r\n if (page !== null && page !== context.page) {\r\n patch.page = page;\r\n changed = true;\r\n }\r\n\r\n const pageSize = this.toPositiveInt(event?.pageSize);\r\n if (pageSize !== null) {\r\n const normalizedPageSize = Math.min(\r\n WORK_CENTER_MAX_PAGE_SIZE,\r\n Math.max(1, pageSize),\r\n );\r\n if (normalizedPageSize !== context.pageSize) {\r\n patch.pageSize = normalizedPageSize;\r\n changed = true;\r\n }\r\n }\r\n\r\n const sort = this.toSortFromLazyEvent(event);\r\n if (sort && !this.isSameSort(sort, context.sort)) {\r\n patch.sort = sort;\r\n changed = true;\r\n }\r\n\r\n if (!changed) {\r\n return;\r\n }\r\n\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, patch),\r\n new LoadRuntime(area, 'table-lazy'),\r\n ]);\r\n }\r\n\r\n applyRuntimeFiltersAndLoad(\r\n area: WorkCenterArea,\r\n runtimeFilters: WorkCenterFilterRule[],\r\n ) {\r\n return this.store.dispatch([\r\n new HydrateFromContext(area, { runtimeFilters, page: 1 }),\r\n new LoadRuntime(area, 'filters-change'),\r\n ]);\r\n }\r\n\r\n loadRuntime(area: WorkCenterArea, reason: WorkCenterLoadReason = 'manual') {\r\n return this.store.dispatch(new LoadRuntime(area, reason));\r\n }\r\n\r\n private toPositiveInt(value: unknown): number | null {\r\n const parsed = Number(value);\r\n if (!Number.isFinite(parsed)) {\r\n return null;\r\n }\r\n return Math.max(1, Math.floor(parsed));\r\n }\r\n\r\n private toSortFromLazyEvent(event: any): WorkCenterSortRule[] | null {\r\n const sortField = event?.sortField;\r\n if (typeof sortField !== 'string' || !sortField.length) {\r\n return null;\r\n }\r\n\r\n return [\r\n {\r\n field: sortField,\r\n dir: event?.sortOrder === -1 ? 'desc' : 'asc',\r\n },\r\n ];\r\n }\r\n\r\n private isSameSort(\r\n left: WorkCenterSortRule[] | undefined,\r\n right: WorkCenterSortRule[] | undefined,\r\n ): boolean {\r\n const leftValue = left ?? [];\r\n const rightValue = right ?? [];\r\n\r\n if (leftValue.length !== rightValue.length) {\r\n return false;\r\n }\r\n\r\n return leftValue.every(\r\n (rule, index) =>\r\n rule.field === rightValue[index]?.field &&\r\n rule.dir === rightValue[index]?.dir,\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, inject, input, output } from '@angular/core';\r\nimport { ClientPage } from '@masterteam/components/client-page';\r\nimport { ClientPageMenuItem } from '@masterteam/components/client-page-menu';\r\nimport {\r\n PropertyFilterBuilder,\r\n PropertyFilterBuilderRule,\r\n PropertyFilterBuilderSchema,\r\n} from '@masterteam/components/property-filter-builder';\r\nimport { StatisticCard } from '@masterteam/components/statistic-card';\r\nimport { Table } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\nimport { WorkCenterFacade } from '../../store/work-center/work-center.facade';\r\nimport {\r\n WorkCenterArea,\r\n WorkCenterFilterRule,\r\n WorkCenterRuntimeFilterSchema,\r\n} from '../../store/work-center/work-center.model';\r\n\r\nconst OPERATOR_LABELS: Record<string, string> = {\r\n Eq: 'Equals',\r\n Neq: 'Not equal',\r\n In: 'In',\r\n Contains: 'Contains',\r\n StartsWith: 'Starts with',\r\n Gt: 'Greater than',\r\n Gte: 'Greater than or equal',\r\n Lt: 'Less than',\r\n Lte: 'Less than or equal',\r\n Between: 'Between',\r\n IsNull: 'Is empty',\r\n IsNotNull: 'Is not empty',\r\n};\r\n\r\nconst OPERATOR_VALUE_MODE: Record<\r\n string,\r\n 'single' | 'multi' | 'range' | 'none'\r\n> = {\r\n In: 'multi',\r\n Between: 'range',\r\n IsNull: 'none',\r\n IsNotNull: 'none',\r\n};\r\n\r\nfunction toLabel(value: string): string {\r\n const normalized = value.split('.').pop() ?? value;\r\n return normalized\r\n .replace(/[_-]/g, ' ')\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .trim()\r\n .replace(/\\b\\w/g, (char) => char.toUpperCase());\r\n}\r\n\r\nfunction columnTypeToViewType(type: string | undefined): string | undefined {\r\n if (type === 'date') return 'Date';\r\n return undefined;\r\n}\r\n\r\nfunction mapAllowedFields(schema: WorkCenterRuntimeFilterSchema) {\r\n const properties = schema.properties ?? [];\r\n const fromProperties = properties\r\n .filter(\r\n (property) =>\r\n typeof property?.key === 'string' && property.key.length > 0,\r\n )\r\n .map((property) => ({\r\n key: property.key,\r\n label:\r\n property.name?.display ||\r\n property.name?.en ||\r\n property.name?.ar ||\r\n toLabel(property.key),\r\n viewType: property.viewType,\r\n }));\r\n\r\n if (fromProperties.length) {\r\n return fromProperties;\r\n }\r\n\r\n return (schema.allowedFields ?? []).map((field) => ({\r\n key: field,\r\n label: toLabel(field),\r\n }));\r\n}\r\n\r\nfunction mapAllowedOperators(schema: WorkCenterRuntimeFilterSchema) {\r\n const options: Array<{\r\n key: string;\r\n label: string;\r\n valueMode: 'single' | 'multi' | 'range' | 'none';\r\n }> = [];\r\n\r\n for (const operator of schema.allowedOperators ?? []) {\r\n if (typeof operator === 'string') {\r\n options.push({\r\n key: operator,\r\n label: OPERATOR_LABELS[operator] ?? toLabel(operator),\r\n valueMode: OPERATOR_VALUE_MODE[operator] ?? 'single',\r\n });\r\n continue;\r\n }\r\n\r\n const key = operator?.value;\r\n if (!key) {\r\n continue;\r\n }\r\n\r\n options.push({\r\n key,\r\n label:\r\n operator.display?.display ||\r\n operator.display?.en ||\r\n operator.display?.ar ||\r\n OPERATOR_LABELS[key] ||\r\n toLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n });\r\n }\r\n\r\n return options;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-work-center-page',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ClientPage,\r\n PropertyFilterBuilder,\r\n StatisticCard,\r\n Table,\r\n SkeletonModule,\r\n ],\r\n templateUrl: './work-center-page.html',\r\n})\r\nexport class WorkCenterPage {\r\n private readonly facade = inject(WorkCenterFacade);\r\n\r\n readonly area = input<WorkCenterArea>('MyInbox');\r\n readonly pageTitle = input<string>('Work Center');\r\n readonly menuIcon = input<string>('communication.inbox-01');\r\n\r\n readonly runtimeFiltersChanged = output<WorkCenterFilterRule[]>();\r\n\r\n protected readonly context = this.facade.context;\r\n protected readonly menuItems = this.facade.menuItems;\r\n protected readonly rows = this.facade.rows;\r\n protected readonly columns = this.facade.columns;\r\n protected readonly kpis = this.facade.kpis;\r\n protected readonly runtimeFilterSchema = this.facade.runtimeFilterSchema;\r\n protected readonly totalCount = this.facade.totalCount;\r\n protected readonly loading = this.facade.loading;\r\n\r\n protected readonly tableCurrentPage = computed(() =>\r\n Math.max((this.context().page ?? 1) - 1, 0),\r\n );\r\n protected readonly tableFirst = computed(\r\n () => this.tableCurrentPage() * (this.context().pageSize || 20),\r\n );\r\n\r\n protected readonly propertyFilterSchema =\r\n computed<PropertyFilterBuilderSchema | null>(() => {\r\n const schema = this.runtimeFilterSchema();\r\n if (schema) {\r\n const allowedFields = mapAllowedFields(schema);\r\n const allowedOperators = mapAllowedOperators(schema);\r\n if (allowedFields.length && allowedOperators.length) {\r\n return { allowedFields, allowedOperators };\r\n }\r\n }\r\n\r\n const fallbackFields = this.columns()\r\n .filter(\r\n (column) => typeof column?.key === 'string' && column.key.length > 0,\r\n )\r\n .map((column) => ({\r\n key: column.key,\r\n label: column.label || toLabel(column.key),\r\n viewType: columnTypeToViewType(column.type),\r\n }));\r\n\r\n if (!fallbackFields.length) {\r\n return null;\r\n }\r\n\r\n const fallbackOperators = Object.keys(OPERATOR_LABELS).map((key) => ({\r\n key,\r\n label: OPERATOR_LABELS[key] ?? toLabel(key),\r\n valueMode: OPERATOR_VALUE_MODE[key] ?? 'single',\r\n }));\r\n\r\n return {\r\n allowedFields: fallbackFields,\r\n allowedOperators: fallbackOperators,\r\n };\r\n });\r\n\r\n onMenuItemClick(item: ClientPageMenuItem): void {\r\n this.facade.selectCardAndLoad(this.area(), item.key);\r\n }\r\n\r\n onLazyLoad(event: any): void {\r\n this.facade.applyTableLazyLoadAndLoad(this.area(), event);\r\n }\r\n\r\n onRuntimeFiltersApplied(filters: PropertyFilterBuilderRule[]): void {\r\n this.runtimeFiltersChanged.emit(\r\n filters.map((filter) => ({\r\n field: filter.field,\r\n op: filter.op as WorkCenterFilterRule['op'],\r\n value: filter.value,\r\n values: filter.values,\r\n from: filter.from,\r\n to: filter.to,\r\n })),\r\n );\r\n }\r\n\r\n onRuntimeFiltersCleared(): void {\r\n this.runtimeFiltersChanged.emit([]);\r\n }\r\n}\r\n"," <mt-client-page\r\n [menuIcon]=\"menuIcon()\"\r\n [menuTitle]=\"pageTitle()\"\r\n [menuItems]=\"menuItems()\"\r\n [menuItemsLoading]=\"loading() && !menuItems().length\"\r\n [activeItem]=\"context().selectedCardKey ?? undefined\"\r\n (menuItemClick)=\"onMenuItemClick($event)\"\r\n >\r\n <ng-template #headerClientPageEnd>\r\n <mt-property-filter-builder\r\n [schema]=\"propertyFilterSchema()\"\r\n [filters]=\"context().runtimeFilters\"\r\n (applied)=\"onRuntimeFiltersApplied($event)\"\r\n (cleared)=\"onRuntimeFiltersCleared()\"\r\n />\r\n </ng-template>\r\n\r\n <div class=\"flex flex-col gap-4\">\r\n @if (loading()) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (_ of [1, 2, 3, 4]; track $index) {\r\n <p-skeleton height=\"6.5rem\" borderRadius=\"1rem\" />\r\n }\r\n </div>\r\n } @else if (kpis().length) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\r\n @for (kpi of kpis(); track $index) {\r\n <mt-statistic-card [data]=\"kpi\" />\r\n }\r\n </div>\r\n }\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [lazy]=\"true\"\r\n [loading]=\"loading()\"\r\n [lazyTotalRecords]=\"totalCount()\"\r\n [showFilters]=\"false\"\r\n [generalSearch]=\"false\"\r\n [pageSize]=\"context().pageSize\"\r\n [currentPage]=\"tableCurrentPage()\"\r\n [first]=\"tableFirst()\"\r\n (lazyLoad)=\"onLazyLoad($event)\"\r\n />\r\n </div>\r\n </mt-client-page>\r\n\r\n","import { WorkCenterState } from './work-center';\r\n\r\nexport const APP_STATES = [WorkCenterState];\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["toLabel"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masterteam/work-center",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"directory": "../../../dist/masterteam/work-center",
|
|
6
6
|
"linkDirectory": false,
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"rxjs": "^7.8.2",
|
|
21
21
|
"tailwindcss": "^4.1.17",
|
|
22
22
|
"tailwindcss-primeui": "^0.6.1",
|
|
23
|
-
"@masterteam/components": "^0.0.
|
|
23
|
+
"@masterteam/components": "^0.0.91",
|
|
24
24
|
"@masterteam/icons": "^0.0.13"
|
|
25
25
|
},
|
|
26
26
|
"sideEffects": false,
|