cat-qw-lib 2.6.92-uw → 2.6.93-uw
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/fesm2022/cat-qw-lib.mjs +125 -24
- package/fesm2022/cat-qw-lib.mjs.map +1 -1
- package/lib/queue/components/queue-container/queue-container.component.d.ts +22 -1
- package/lib/queue/components/queue-item/queue-item.component.d.ts +3 -1
- package/lib/queue/components/queue-list/queue-list.component.d.ts +2 -1
- package/lib/queue/services/queue-business.service.d.ts +7 -1
- package/lib/queue/state/queue.service.d.ts +3 -1
- package/lib/shared/constant/SHARED.d.ts +2 -0
- package/package.json +1 -1
package/fesm2022/cat-qw-lib.mjs
CHANGED
|
@@ -161,6 +161,8 @@ class SHARED {
|
|
|
161
161
|
static MISSING_RECORD_ID = "Missing recordId";
|
|
162
162
|
static EMPTY_STRING = " ";
|
|
163
163
|
static SELECTED_QUEUE_ID = "selectedQueueId";
|
|
164
|
+
/** Query param name used on GET Queues to filter the list by ApplicationType lookup _id. */
|
|
165
|
+
static QUEUE_APPLICATION_TYPE_PARAM = "applicationType";
|
|
164
166
|
static ISITEMEXPRESSION = "isItemExpression";
|
|
165
167
|
static DT2 = "dt2";
|
|
166
168
|
static TEXTBOXFIELD = "textboxField";
|
|
@@ -2775,8 +2777,25 @@ class QueueBusinessService {
|
|
|
2775
2777
|
const userSession = this.sessionService.getUserSession();
|
|
2776
2778
|
return userSession?.roles?.includes('EnterpriseAdmins') || false;
|
|
2777
2779
|
}
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
+
/**
|
|
2781
|
+
* The persisted selection is scoped per application type, otherwise a queue id restored from
|
|
2782
|
+
* the HPA list would be applied while the Handset list is showing (and vice versa).
|
|
2783
|
+
*/
|
|
2784
|
+
getSelectedQueueStorageKey(applicationTypeId) {
|
|
2785
|
+
return applicationTypeId
|
|
2786
|
+
? `${SHARED.SELECTED_QUEUE_ID}${SHARED.DASH}${applicationTypeId}`
|
|
2787
|
+
: SHARED.SELECTED_QUEUE_ID;
|
|
2788
|
+
}
|
|
2789
|
+
storeSelectedQueue(queueId, applicationTypeId) {
|
|
2790
|
+
localStorage.setItem(this.getSelectedQueueStorageKey(applicationTypeId), queueId);
|
|
2791
|
+
}
|
|
2792
|
+
getStoredQueueId(applicationTypeId) {
|
|
2793
|
+
try {
|
|
2794
|
+
return localStorage.getItem(this.getSelectedQueueStorageKey(applicationTypeId));
|
|
2795
|
+
}
|
|
2796
|
+
catch (e) {
|
|
2797
|
+
return null;
|
|
2798
|
+
}
|
|
2780
2799
|
}
|
|
2781
2800
|
storeApplicationData(record) {
|
|
2782
2801
|
localStorage.setItem(SHARED.selectedApplicationType, record.applicationType);
|
|
@@ -7151,10 +7170,15 @@ class QueueService extends BaseService {
|
|
|
7151
7170
|
/**
|
|
7152
7171
|
* Fetches all queue entities from the configured data source.
|
|
7153
7172
|
* The entities are stored in the queueStore upon retrieval.
|
|
7173
|
+
* @param {string} [applicationTypeId] Optional ApplicationType lookup _id to filter the list by.
|
|
7174
|
+
* When omitted the request is unchanged and every queue is returned.
|
|
7154
7175
|
* @returns {Observable<any>} Observable emitting the fetched queue entities
|
|
7155
7176
|
*/
|
|
7156
|
-
getAllQueue() {
|
|
7157
|
-
|
|
7177
|
+
getAllQueue(applicationTypeId) {
|
|
7178
|
+
const query = applicationTypeId
|
|
7179
|
+
? `${SHARED.QUESTION_MARK}${SHARED.QUEUE_APPLICATION_TYPE_PARAM}${SHARED.EQUALS}${encodeURIComponent(applicationTypeId)}`
|
|
7180
|
+
: SHARED.EMPTY;
|
|
7181
|
+
return this.http.get(this.apiUrl + this._pathName + query).pipe(tap$1((entities) => { this.queueStore.set(entities); }));
|
|
7158
7182
|
}
|
|
7159
7183
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueService, deps: [{ token: QueueStore$1 }, { token: i1$1.HttpClient }, { token: AppConfigService }, { token: ListService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7160
7184
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueService, providedIn: "root" });
|
|
@@ -7445,7 +7469,7 @@ class QueueRecordTableBuilderService extends TableBuilder {
|
|
|
7445
7469
|
const statusValue = apiRecord[SHARED.STATUS] || undefined;
|
|
7446
7470
|
cellValue = {
|
|
7447
7471
|
appId: value,
|
|
7448
|
-
type: apiRecord.lending ||
|
|
7472
|
+
type: apiRecord.lending || undefined,
|
|
7449
7473
|
risk: formattedRisk,
|
|
7450
7474
|
status: statusValue,
|
|
7451
7475
|
statusStyle: this.getStatusChipStyle(statusValue)
|
|
@@ -7674,6 +7698,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
7674
7698
|
class QueueItemComponent {
|
|
7675
7699
|
queueStore;
|
|
7676
7700
|
filteredQueueData = [];
|
|
7701
|
+
/** Sidebar heading — the host menu entry's label, e.g. 'HPA Queues'. */
|
|
7702
|
+
queueTitle = 'Queues';
|
|
7677
7703
|
selectedQueueId = null;
|
|
7678
7704
|
selectedStatus = 'active';
|
|
7679
7705
|
userRole = false;
|
|
@@ -7722,13 +7748,15 @@ class QueueItemComponent {
|
|
|
7722
7748
|
return 'pi-list';
|
|
7723
7749
|
}
|
|
7724
7750
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueItemComponent, deps: [{ token: QueueStore$1 }], target: i0.ɵɵFactoryTarget.Component });
|
|
7725
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: QueueItemComponent, isStandalone: false, selector: "app-queue-item", inputs: { filteredQueueData: "filteredQueueData", selectedQueueId: "selectedQueueId", selectedStatus: "selectedStatus", userRole: "userRole", showQueueDataForm: "showQueueDataForm" }, outputs: { queueSelected: "queueSelected", statusChanged: "statusChanged", insertQueueRequested: "insertQueueRequested" }, ngImport: i0, template: "<div class=\"queue-nav-wrapper\">\r\n <h4 class=\"queue-title m-0 mb-3\">
|
|
7751
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: QueueItemComponent, isStandalone: false, selector: "app-queue-item", inputs: { filteredQueueData: "filteredQueueData", queueTitle: "queueTitle", selectedQueueId: "selectedQueueId", selectedStatus: "selectedStatus", userRole: "userRole", showQueueDataForm: "showQueueDataForm" }, outputs: { queueSelected: "queueSelected", statusChanged: "statusChanged", insertQueueRequested: "insertQueueRequested" }, ngImport: i0, template: "<div class=\"queue-nav-wrapper\">\r\n <h4 class=\"queue-title m-0 mb-3\">{{ queueTitle }}</h4>\r\n <div class=\"queue-items-list\">\r\n @for(queue of filteredQueueData; let i = $index; track queue){\r\n <div class=\"queue-nav-item\"\r\n [ngClass]=\"{'queue-nav-item--active': isQueueSelected(queue._id), 'queue-nav-item--inactive': !isQueueActive(queue)}\"\r\n (click)=\"onQueueClick(queue._id)\">\r\n <div class=\"queue-nav-item__inner\">\r\n <i class=\"pi queue-nav-item__icon\"\r\n [ngClass]=\"getQueueIcon(queue.name)\"></i>\r\n <span class=\"queue-nav-item__label\" [pTooltip]=\"queue.name\" tooltipPosition=\"top\"\r\n [ngClass]=\"{'queue-nav-item__label--active': isQueueSelected(queue._id)}\">{{queue.name}}</span>\r\n </div>\r\n @if(queue.itemCount !== null){\r\n <span class=\"queue-nav-item__badge\"\r\n [ngClass]=\"{'queue-nav-item__badge--active': isQueueSelected(queue._id)}\">{{queue.itemCount}}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".queue-nav-wrapper{background:#fff;border-radius:15px;padding:20px;width:100%}.queue-title{font-family:Open Sans,sans-serif;font-weight:600;font-size:18px;line-height:1.2em;color:#1f2937}.queue-items-list{display:flex;flex-direction:column;gap:8px}.queue-nav-item{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;background:transparent;cursor:pointer;transition:background .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1);border:1px solid transparent}.queue-nav-item:hover{background:#0066ff0f;border-color:#0066ff1f;box-shadow:0 2px 8px #0066ff14;transform:translate(2px)}.queue-nav-item:hover .queue-nav-item__icon{color:#0f8bfd}.queue-nav-item:hover .queue-nav-item__label{color:#06f}.queue-nav-item:active{transform:translate(1px);box-shadow:0 1px 4px #0066ff1a}.queue-nav-item--active{background:#0066ff1a;border-color:#06f3;box-shadow:0 2px 8px #0066ff1a}.queue-nav-item--active:hover{background:#0066ff24;border-color:#0066ff40;box-shadow:0 3px 12px #0066ff1f}.queue-nav-item--active .queue-nav-item__icon{color:#0f8bfd}.queue-nav-item--inactive{opacity:.5}.queue-nav-item--inactive:hover{opacity:.7}.queue-nav-item__inner{display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0;flex:1}.queue-nav-item__icon{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#9ea0b3;flex-shrink:0;transition:color .2s cubic-bezier(.4,0,.2,1)}.queue-nav-item__label{font-family:Open Sans,sans-serif;font-weight:600;font-size:12px;line-height:1.4em;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s cubic-bezier(.4,0,.2,1)}.queue-nav-item__label--active{color:#06f}.queue-nav-item__badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;padding:2px 8px;border-radius:100px;background:#e5e7eb;font-family:Open Sans,sans-serif;font-weight:700;font-size:11px;line-height:1.4em;color:#7d879b;flex-shrink:0;transition:background .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}.queue-nav-item__badge--active{background:#0f8bfd;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4$2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7726
7752
|
}
|
|
7727
7753
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueItemComponent, decorators: [{
|
|
7728
7754
|
type: Component,
|
|
7729
|
-
args: [{ selector: 'app-queue-item', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"queue-nav-wrapper\">\r\n <h4 class=\"queue-title m-0 mb-3\">
|
|
7755
|
+
args: [{ selector: 'app-queue-item', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"queue-nav-wrapper\">\r\n <h4 class=\"queue-title m-0 mb-3\">{{ queueTitle }}</h4>\r\n <div class=\"queue-items-list\">\r\n @for(queue of filteredQueueData; let i = $index; track queue){\r\n <div class=\"queue-nav-item\"\r\n [ngClass]=\"{'queue-nav-item--active': isQueueSelected(queue._id), 'queue-nav-item--inactive': !isQueueActive(queue)}\"\r\n (click)=\"onQueueClick(queue._id)\">\r\n <div class=\"queue-nav-item__inner\">\r\n <i class=\"pi queue-nav-item__icon\"\r\n [ngClass]=\"getQueueIcon(queue.name)\"></i>\r\n <span class=\"queue-nav-item__label\" [pTooltip]=\"queue.name\" tooltipPosition=\"top\"\r\n [ngClass]=\"{'queue-nav-item__label--active': isQueueSelected(queue._id)}\">{{queue.name}}</span>\r\n </div>\r\n @if(queue.itemCount !== null){\r\n <span class=\"queue-nav-item__badge\"\r\n [ngClass]=\"{'queue-nav-item__badge--active': isQueueSelected(queue._id)}\">{{queue.itemCount}}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".queue-nav-wrapper{background:#fff;border-radius:15px;padding:20px;width:100%}.queue-title{font-family:Open Sans,sans-serif;font-weight:600;font-size:18px;line-height:1.2em;color:#1f2937}.queue-items-list{display:flex;flex-direction:column;gap:8px}.queue-nav-item{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;background:transparent;cursor:pointer;transition:background .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1);border:1px solid transparent}.queue-nav-item:hover{background:#0066ff0f;border-color:#0066ff1f;box-shadow:0 2px 8px #0066ff14;transform:translate(2px)}.queue-nav-item:hover .queue-nav-item__icon{color:#0f8bfd}.queue-nav-item:hover .queue-nav-item__label{color:#06f}.queue-nav-item:active{transform:translate(1px);box-shadow:0 1px 4px #0066ff1a}.queue-nav-item--active{background:#0066ff1a;border-color:#06f3;box-shadow:0 2px 8px #0066ff1a}.queue-nav-item--active:hover{background:#0066ff24;border-color:#0066ff40;box-shadow:0 3px 12px #0066ff1f}.queue-nav-item--active .queue-nav-item__icon{color:#0f8bfd}.queue-nav-item--inactive{opacity:.5}.queue-nav-item--inactive:hover{opacity:.7}.queue-nav-item__inner{display:flex;flex-direction:row;align-items:center;gap:8px;min-width:0;flex:1}.queue-nav-item__icon{width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#9ea0b3;flex-shrink:0;transition:color .2s cubic-bezier(.4,0,.2,1)}.queue-nav-item__label{font-family:Open Sans,sans-serif;font-weight:600;font-size:12px;line-height:1.4em;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s cubic-bezier(.4,0,.2,1)}.queue-nav-item__label--active{color:#06f}.queue-nav-item__badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;padding:2px 8px;border-radius:100px;background:#e5e7eb;font-family:Open Sans,sans-serif;font-weight:700;font-size:11px;line-height:1.4em;color:#7d879b;flex-shrink:0;transition:background .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}.queue-nav-item__badge--active{background:#0f8bfd;color:#fff}\n"] }]
|
|
7730
7756
|
}], ctorParameters: () => [{ type: QueueStore$1 }], propDecorators: { filteredQueueData: [{
|
|
7731
7757
|
type: Input
|
|
7758
|
+
}], queueTitle: [{
|
|
7759
|
+
type: Input
|
|
7732
7760
|
}], selectedQueueId: [{
|
|
7733
7761
|
type: Input
|
|
7734
7762
|
}], selectedStatus: [{
|
|
@@ -7747,6 +7775,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
7747
7775
|
|
|
7748
7776
|
class QueueListComponent {
|
|
7749
7777
|
queueData = [];
|
|
7778
|
+
queueTitle = 'Queues';
|
|
7750
7779
|
selectedQueueId = null;
|
|
7751
7780
|
selectedStatus = 'active';
|
|
7752
7781
|
userRole = false;
|
|
@@ -7764,13 +7793,15 @@ class QueueListComponent {
|
|
|
7764
7793
|
this.insertQueueRequested.emit();
|
|
7765
7794
|
}
|
|
7766
7795
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7767
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: QueueListComponent, isStandalone: false, selector: "app-queue-list", inputs: { queueData: "queueData", selectedQueueId: "selectedQueueId", selectedStatus: "selectedStatus", userRole: "userRole", showQueueDataForm: "showQueueDataForm" }, outputs: { queueSelected: "queueSelected", statusChanged: "statusChanged", insertQueueRequested: "insertQueueRequested" }, ngImport: i0, template: "<app-queue-item\r\n [filteredQueueData]=\"queueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"showQueueDataForm\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueue()\"\r\n></app-queue-item>\r\n", styles: [""], dependencies: [{ kind: "component", type: QueueItemComponent, selector: "app-queue-item", inputs: ["filteredQueueData", "selectedQueueId", "selectedStatus", "userRole", "showQueueDataForm"], outputs: ["queueSelected", "statusChanged", "insertQueueRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7796
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: QueueListComponent, isStandalone: false, selector: "app-queue-list", inputs: { queueData: "queueData", queueTitle: "queueTitle", selectedQueueId: "selectedQueueId", selectedStatus: "selectedStatus", userRole: "userRole", showQueueDataForm: "showQueueDataForm" }, outputs: { queueSelected: "queueSelected", statusChanged: "statusChanged", insertQueueRequested: "insertQueueRequested" }, ngImport: i0, template: "<app-queue-item\r\n [filteredQueueData]=\"queueData\"\r\n [queueTitle]=\"queueTitle\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"showQueueDataForm\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueue()\"\r\n></app-queue-item>\r\n", styles: [""], dependencies: [{ kind: "component", type: QueueItemComponent, selector: "app-queue-item", inputs: ["filteredQueueData", "queueTitle", "selectedQueueId", "selectedStatus", "userRole", "showQueueDataForm"], outputs: ["queueSelected", "statusChanged", "insertQueueRequested"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7768
7797
|
}
|
|
7769
7798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueListComponent, decorators: [{
|
|
7770
7799
|
type: Component,
|
|
7771
|
-
args: [{ selector: 'app-queue-list', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-queue-item\r\n [filteredQueueData]=\"queueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"showQueueDataForm\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueue()\"\r\n></app-queue-item>\r\n" }]
|
|
7800
|
+
args: [{ selector: 'app-queue-list', standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<app-queue-item\r\n [filteredQueueData]=\"queueData\"\r\n [queueTitle]=\"queueTitle\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"showQueueDataForm\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueue()\"\r\n></app-queue-item>\r\n" }]
|
|
7772
7801
|
}], propDecorators: { queueData: [{
|
|
7773
7802
|
type: Input
|
|
7803
|
+
}], queueTitle: [{
|
|
7804
|
+
type: Input
|
|
7774
7805
|
}], selectedQueueId: [{
|
|
7775
7806
|
type: Input
|
|
7776
7807
|
}], selectedStatus: [{
|
|
@@ -8095,6 +8126,7 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8095
8126
|
tableBuilder;
|
|
8096
8127
|
queueFilterDropdownService;
|
|
8097
8128
|
baseQuery;
|
|
8129
|
+
route;
|
|
8098
8130
|
destroy$ = new Subject();
|
|
8099
8131
|
searchSubject = new Subject();
|
|
8100
8132
|
queueList = [];
|
|
@@ -8122,6 +8154,13 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8122
8154
|
placeholder = '';
|
|
8123
8155
|
/** Snapshot of the latest request; used to ignore stale responses. */
|
|
8124
8156
|
latestRequestSnapshot = null;
|
|
8157
|
+
/**
|
|
8158
|
+
* ApplicationType lookup _id the sidebar is currently scoped to, taken from the
|
|
8159
|
+
* `applicationType` query param. `null` means the route has not been read yet.
|
|
8160
|
+
*/
|
|
8161
|
+
applicationTypeId = null;
|
|
8162
|
+
/** Sidebar heading — the host menu entry's label, passed through as the `title` query param. */
|
|
8163
|
+
queueTitle = 'Queues';
|
|
8125
8164
|
filterDropdown;
|
|
8126
8165
|
// Input properties for content projection
|
|
8127
8166
|
set selectedRowsInput(rows) {
|
|
@@ -8139,7 +8178,7 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8139
8178
|
selectionChange = new EventEmitter();
|
|
8140
8179
|
isAllRowSelected = new EventEmitter(false);
|
|
8141
8180
|
excludedApplicationIds = new EventEmitter();
|
|
8142
|
-
constructor(queueStore, queueService, baseStore, queueBusinessService, tableBuilder, queueFilterDropdownService, baseQuery) {
|
|
8181
|
+
constructor(queueStore, queueService, baseStore, queueBusinessService, tableBuilder, queueFilterDropdownService, baseQuery, route) {
|
|
8143
8182
|
super(queueService);
|
|
8144
8183
|
this.queueStore = queueStore;
|
|
8145
8184
|
this.queueService = queueService;
|
|
@@ -8148,11 +8187,11 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8148
8187
|
this.tableBuilder = tableBuilder;
|
|
8149
8188
|
this.queueFilterDropdownService = queueFilterDropdownService;
|
|
8150
8189
|
this.baseQuery = baseQuery;
|
|
8190
|
+
this.route = route;
|
|
8151
8191
|
}
|
|
8152
8192
|
ngOnInit() {
|
|
8153
8193
|
this.isShowSkeleton = true;
|
|
8154
|
-
|
|
8155
|
-
this.initializeComponent(storedQueueId ?? undefined);
|
|
8194
|
+
this.watchApplicationType();
|
|
8156
8195
|
this.setupSearchDebounce();
|
|
8157
8196
|
// Sync filter dropdown after initialization
|
|
8158
8197
|
setTimeout(() => {
|
|
@@ -8267,6 +8306,65 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8267
8306
|
this.filterDropdown.syncWithAppliedFilters(this.appliedFilters);
|
|
8268
8307
|
}
|
|
8269
8308
|
}
|
|
8309
|
+
/**
|
|
8310
|
+
* The host app points each sidebar entry (e.g. HPA Queues / Handset Queues) at the same route
|
|
8311
|
+
* with a different `applicationType` query param holding the ApplicationType lookup _id.
|
|
8312
|
+
* Switching between them reuses this component instance, so ngOnInit does not run again —
|
|
8313
|
+
* the queryParamMap subscription is what re-fetches the list.
|
|
8314
|
+
*/
|
|
8315
|
+
watchApplicationType() {
|
|
8316
|
+
this.route.queryParamMap
|
|
8317
|
+
.pipe(
|
|
8318
|
+
// Heading only — kept outside the distinctUntilChanged below so it updates without refetching.
|
|
8319
|
+
tap(params => { this.queueTitle = params.get('title') || 'Queues'; }), map$1(params => params.get(SHARED.APPLICATION_TYPE) ?? SHARED.EMPTY), distinctUntilChanged$1(), takeUntil(this.destroy$))
|
|
8320
|
+
.subscribe(applicationTypeId => {
|
|
8321
|
+
const isFirstLoad = this.applicationTypeId === null;
|
|
8322
|
+
this.applicationTypeId = applicationTypeId;
|
|
8323
|
+
if (!isFirstLoad) {
|
|
8324
|
+
this.resetQueueSelectionState();
|
|
8325
|
+
}
|
|
8326
|
+
this.isShowSkeleton = true;
|
|
8327
|
+
this.initializeComponent(this.getStoredQueueId() ?? undefined);
|
|
8328
|
+
});
|
|
8329
|
+
}
|
|
8330
|
+
/**
|
|
8331
|
+
* Drops every piece of state scoped to the previous application type, so nothing from the
|
|
8332
|
+
* old list (selected queue, rows, filters, search, paging) leaks into the new one.
|
|
8333
|
+
*/
|
|
8334
|
+
resetQueueSelectionState() {
|
|
8335
|
+
this.queueList = [];
|
|
8336
|
+
this.filteredQueueData = [];
|
|
8337
|
+
this.selectedQueue = undefined;
|
|
8338
|
+
this.selectedQueueId = null;
|
|
8339
|
+
this.queueStore.setSelectedQueueId(SHARED.EMPTY);
|
|
8340
|
+
if (this.table) {
|
|
8341
|
+
// Keep the table shape (the child binds it unguarded) but drop the previous type's rows.
|
|
8342
|
+
this.table = { ...this.table, records: [] };
|
|
8343
|
+
}
|
|
8344
|
+
this.error = null;
|
|
8345
|
+
// Any record request still in flight belongs to the previous application type.
|
|
8346
|
+
this.latestRequestSnapshot = null;
|
|
8347
|
+
this.resetPaginationState();
|
|
8348
|
+
this.metaData = {
|
|
8349
|
+
totalItems: 0,
|
|
8350
|
+
currentPage: this.currentPage,
|
|
8351
|
+
itemsPerPage: this.currentLimit,
|
|
8352
|
+
totalPages: 0
|
|
8353
|
+
};
|
|
8354
|
+
try {
|
|
8355
|
+
sessionStorage.removeItem(SHARED.selectedQueue);
|
|
8356
|
+
}
|
|
8357
|
+
catch (e) {
|
|
8358
|
+
// sessionStorage can be unavailable (private mode / blocked storage); selection reset is best-effort.
|
|
8359
|
+
}
|
|
8360
|
+
this.clearSelection();
|
|
8361
|
+
this.clearFilters();
|
|
8362
|
+
this.searchText = SHARED.EMPTY;
|
|
8363
|
+
this.currentSearchTerm = SHARED.EMPTY;
|
|
8364
|
+
this.queryString = SHARED.EMPTY;
|
|
8365
|
+
this.resetSorting();
|
|
8366
|
+
this.syncFilterDropdown();
|
|
8367
|
+
}
|
|
8270
8368
|
initializeComponent(preferredQueueId) {
|
|
8271
8369
|
this.getAllQueueList(preferredQueueId);
|
|
8272
8370
|
this.userRole = this.queueBusinessService.getUserRole();
|
|
@@ -8284,14 +8382,22 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8284
8382
|
getAllQueueList(preferredQueueId) {
|
|
8285
8383
|
this.queueListLoading = true;
|
|
8286
8384
|
this.error = null;
|
|
8287
|
-
|
|
8385
|
+
// Captured so a slow response for the previous application type cannot overwrite the new list.
|
|
8386
|
+
const requestedApplicationTypeId = this.applicationTypeId;
|
|
8387
|
+
this.queueService.getAllQueue(requestedApplicationTypeId || undefined).subscribe({
|
|
8288
8388
|
next: (res) => {
|
|
8389
|
+
if (requestedApplicationTypeId !== this.applicationTypeId) {
|
|
8390
|
+
return;
|
|
8391
|
+
}
|
|
8289
8392
|
this.queueList = Array.isArray(res) ? res : (res.data || res);
|
|
8290
8393
|
this.baseStore.setQueueList(this.queueList);
|
|
8291
8394
|
this.filterQueues(preferredQueueId);
|
|
8292
8395
|
this.queueListLoading = false;
|
|
8293
8396
|
},
|
|
8294
8397
|
error: (err) => {
|
|
8398
|
+
if (requestedApplicationTypeId !== this.applicationTypeId) {
|
|
8399
|
+
return;
|
|
8400
|
+
}
|
|
8295
8401
|
this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;
|
|
8296
8402
|
this.queueListLoading = false;
|
|
8297
8403
|
this.isShowSkeleton = false;
|
|
@@ -8305,7 +8411,7 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8305
8411
|
this.selectedQueue = Object.assign({}, newQueue);
|
|
8306
8412
|
this.selectedQueueId = queueId;
|
|
8307
8413
|
this.queueStore.setSelectedQueueId(queueId);
|
|
8308
|
-
this.queueBusinessService.storeSelectedQueue(queueId);
|
|
8414
|
+
this.queueBusinessService.storeSelectedQueue(queueId, this.applicationTypeId);
|
|
8309
8415
|
sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));
|
|
8310
8416
|
this.clearSelection();
|
|
8311
8417
|
this.resetPaginationState();
|
|
@@ -8505,20 +8611,15 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8505
8611
|
return this.selectedRows && this.selectedRows.length > 0;
|
|
8506
8612
|
}
|
|
8507
8613
|
getStoredQueueId() {
|
|
8508
|
-
|
|
8509
|
-
return localStorage.getItem(SHARED.SELECTED_QUEUE_ID);
|
|
8510
|
-
}
|
|
8511
|
-
catch (e) {
|
|
8512
|
-
return null;
|
|
8513
|
-
}
|
|
8614
|
+
return this.queueBusinessService.getStoredQueueId(this.applicationTypeId);
|
|
8514
8615
|
}
|
|
8515
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueContainerComponent, deps: [{ token: QueueStore$1 }, { token: QueueService }, { token: BaseStore }, { token: QueueBusinessService }, { token: QueueRecordTableBuilderService }, { token: QueueFilterDropdownService }, { token: BaseQuery }], target: i0.ɵɵFactoryTarget.Component });
|
|
8516
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: QueueContainerComponent, isStandalone: false, selector: "lib-queue-container", inputs: { placeholder: "placeholder", selectedRowsInput: "selectedRowsInput" }, outputs: { assignmentComplete: "assignmentComplete", userAssigned: "userAssigned", selectedRowsData: "selectedRowsData", assignmentDataReady: "assignmentDataReady", rowClick: "rowClick", selectionChange: "selectionChange", isAllRowSelected: "isAllRowSelected", excludedApplicationIds: "excludedApplicationIds" }, viewQueries: [{ propertyName: "filterDropdown", first: true, predicate: ["filterDropdown"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container grid m-0 h-full\">\r\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\r\n <lib-skeleton *ngIf=\"queueListLoading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n @if(!queueListLoading){\r\n <div class=\"queue-list-container-wrapper p-0\">\r\n <app-queue-list\r\n [queueData]=\"filteredQueueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"true\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueueRequested()\"\r\n ></app-queue-list>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-12 xl:col-10 md:col-12 py-0 pr-0 h-full\">\r\n @if(selectedQueue){\r\n <div class=\"queue-application-container-wrapper h-full\">\r\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\r\n <div class=\"col-8 p-0 flex align-items-center\">\r\n <div class=\"col-7 p-0 mr-3\">\r\n <queue-search \r\n [placeholder]=\"placeholder\"\r\n [searchText]=\"searchText\"\r\n (searchInputChanged)=\"onSearchInputChanged($event)\"\r\n (searchRequested)=\"onSearchRequested($event)\"\r\n (searchCleared)=\"onSearchCleared()\">\r\n </queue-search>\r\n </div>\r\n <div>\r\n <lib-queue-filter-dropdown \r\n #filterDropdown\r\n [appliedFilters]=\"appliedFilters\"\r\n (filterApplied)=\"onFilterDropdownApplied($event)\"\r\n (filtersCleared)=\"onFiltersCleared()\">\r\n </lib-queue-filter-dropdown>\r\n </div>\r\n <div *ngIf=\"hasActiveFilters\">\r\n <button \r\n class=\"clear-filters-btn\"\r\n type=\"button\"\r\n (click)=\"onClearAllFilters()\">\r\n Clear <i class=\"pi pi-times ml-2\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\r\n <ng-content select=\"[user-dropdown]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\r\n \r\n <app-queue-record-table\r\n [table]=\"table\"\r\n [metaData]=\"metaData\"\r\n [selectedRows]=\"selectedRows\"\r\n [resetSort]=\"resetSort\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selectedQueue]=\"selectedQueue\"\r\n (selectionChange)=\"onTableSelectionChange($event)\"\r\n (selectedRowsData)=\"onTableSelectionChange($event)\"\r\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\r\n (rowClick)=\"onTableRowClick($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (filterApplied)=\"onFilterApplied($event)\"\r\n (sortApplied)=\"onSortApplied($event)\">\r\n </app-queue-record-table>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n </div>", styles: [":host{display:block;height:100%;padding-top:14px}.queue-table-container-wrapper{height:calc(100% - 58px)}.queue-list-container-wrapper{background-color:transparent}.queue-application-container-wrapper{background-color:#fff;border-radius:15px;padding:20px}.clear-filters-btn{background:none;border:1px solid #e5e7eb;color:#64748b;font-size:.85rem;font-weight:500;cursor:pointer;margin-left:.5rem;display:inline-flex;align-items:center;padding:6px 12px;border-radius:8px;transition:all .2s ease}.clear-filters-btn:hover{background:#f8fafc;border-color:#cbd5e1;color:#ef4444}.clear-filters-btn i{font-size:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkeletonComponent, selector: "lib-skeleton", inputs: ["count", "columns", "width", "height", "isAllowCard"] }, { kind: "component", type: QueueSearchComponent, selector: "queue-search", inputs: ["searchText", "placeholder", "debounceTime"], outputs: ["searchInputChanged", "searchRequested", "searchCleared"] }, { kind: "component", type: QueueListComponent, selector: "app-queue-list", inputs: ["queueData", "selectedQueueId", "selectedStatus", "userRole", "showQueueDataForm"], outputs: ["queueSelected", "statusChanged", "insertQueueRequested"] }, { kind: "component", type: QueueRecordTableComponent, selector: "app-queue-record-table", inputs: ["table", "metaData", "loading", "selectedRows", "resetSort", "isShowSkeleton", "selectedQueue"], outputs: ["selectionChange", "selectedRowsData", "assignmentDataReady", "rowClick", "paginationChanged", "filterApplied", "sortApplied"] }, { kind: "component", type: QueueFilterDropdownComponent, selector: "lib-queue-filter-dropdown", inputs: ["appliedFilters"], outputs: ["filterApplied", "filtersCleared"] }] });
|
|
8616
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueContainerComponent, deps: [{ token: QueueStore$1 }, { token: QueueService }, { token: BaseStore }, { token: QueueBusinessService }, { token: QueueRecordTableBuilderService }, { token: QueueFilterDropdownService }, { token: BaseQuery }, { token: i3$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
|
|
8617
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: QueueContainerComponent, isStandalone: false, selector: "lib-queue-container", inputs: { placeholder: "placeholder", selectedRowsInput: "selectedRowsInput" }, outputs: { assignmentComplete: "assignmentComplete", userAssigned: "userAssigned", selectedRowsData: "selectedRowsData", assignmentDataReady: "assignmentDataReady", rowClick: "rowClick", selectionChange: "selectionChange", isAllRowSelected: "isAllRowSelected", excludedApplicationIds: "excludedApplicationIds" }, viewQueries: [{ propertyName: "filterDropdown", first: true, predicate: ["filterDropdown"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container grid m-0 h-full\">\r\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\r\n <lib-skeleton *ngIf=\"queueListLoading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n @if(!queueListLoading){\r\n <div class=\"queue-list-container-wrapper p-0\">\r\n <app-queue-list\r\n [queueData]=\"filteredQueueData\"\r\n [queueTitle]=\"queueTitle\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"true\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueueRequested()\"\r\n ></app-queue-list>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-12 xl:col-10 md:col-12 py-0 pr-0 h-full\">\r\n @if(selectedQueue){\r\n <div class=\"queue-application-container-wrapper h-full\">\r\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\r\n <div class=\"col-8 p-0 flex align-items-center\">\r\n <div class=\"col-7 p-0 mr-3\">\r\n <queue-search \r\n [placeholder]=\"placeholder\"\r\n [searchText]=\"searchText\"\r\n (searchInputChanged)=\"onSearchInputChanged($event)\"\r\n (searchRequested)=\"onSearchRequested($event)\"\r\n (searchCleared)=\"onSearchCleared()\">\r\n </queue-search>\r\n </div>\r\n <div>\r\n <lib-queue-filter-dropdown \r\n #filterDropdown\r\n [appliedFilters]=\"appliedFilters\"\r\n (filterApplied)=\"onFilterDropdownApplied($event)\"\r\n (filtersCleared)=\"onFiltersCleared()\">\r\n </lib-queue-filter-dropdown>\r\n </div>\r\n <div *ngIf=\"hasActiveFilters\">\r\n <button \r\n class=\"clear-filters-btn\"\r\n type=\"button\"\r\n (click)=\"onClearAllFilters()\">\r\n Clear <i class=\"pi pi-times ml-2\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\r\n <ng-content select=\"[user-dropdown]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\r\n \r\n <app-queue-record-table\r\n [table]=\"table\"\r\n [metaData]=\"metaData\"\r\n [selectedRows]=\"selectedRows\"\r\n [resetSort]=\"resetSort\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selectedQueue]=\"selectedQueue\"\r\n (selectionChange)=\"onTableSelectionChange($event)\"\r\n (selectedRowsData)=\"onTableSelectionChange($event)\"\r\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\r\n (rowClick)=\"onTableRowClick($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (filterApplied)=\"onFilterApplied($event)\"\r\n (sortApplied)=\"onSortApplied($event)\">\r\n </app-queue-record-table>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n </div>", styles: [":host{display:block;height:100%;padding-top:14px}.queue-table-container-wrapper{height:calc(100% - 58px)}.queue-list-container-wrapper{background-color:transparent}.queue-application-container-wrapper{background-color:#fff;border-radius:15px;padding:20px}.clear-filters-btn{background:none;border:1px solid #e5e7eb;color:#64748b;font-size:.85rem;font-weight:500;cursor:pointer;margin-left:.5rem;display:inline-flex;align-items:center;padding:6px 12px;border-radius:8px;transition:all .2s ease}.clear-filters-btn:hover{background:#f8fafc;border-color:#cbd5e1;color:#ef4444}.clear-filters-btn i{font-size:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SkeletonComponent, selector: "lib-skeleton", inputs: ["count", "columns", "width", "height", "isAllowCard"] }, { kind: "component", type: QueueSearchComponent, selector: "queue-search", inputs: ["searchText", "placeholder", "debounceTime"], outputs: ["searchInputChanged", "searchRequested", "searchCleared"] }, { kind: "component", type: QueueListComponent, selector: "app-queue-list", inputs: ["queueData", "queueTitle", "selectedQueueId", "selectedStatus", "userRole", "showQueueDataForm"], outputs: ["queueSelected", "statusChanged", "insertQueueRequested"] }, { kind: "component", type: QueueRecordTableComponent, selector: "app-queue-record-table", inputs: ["table", "metaData", "loading", "selectedRows", "resetSort", "isShowSkeleton", "selectedQueue"], outputs: ["selectionChange", "selectedRowsData", "assignmentDataReady", "rowClick", "paginationChanged", "filterApplied", "sortApplied"] }, { kind: "component", type: QueueFilterDropdownComponent, selector: "lib-queue-filter-dropdown", inputs: ["appliedFilters"], outputs: ["filterApplied", "filtersCleared"] }] });
|
|
8517
8618
|
}
|
|
8518
8619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueContainerComponent, decorators: [{
|
|
8519
8620
|
type: Component,
|
|
8520
|
-
args: [{ selector: 'lib-queue-container', standalone: false, template: "<div class=\"container grid m-0 h-full\">\r\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\r\n <lib-skeleton *ngIf=\"queueListLoading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n @if(!queueListLoading){\r\n <div class=\"queue-list-container-wrapper p-0\">\r\n <app-queue-list\r\n [queueData]=\"filteredQueueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"true\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueueRequested()\"\r\n ></app-queue-list>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-12 xl:col-10 md:col-12 py-0 pr-0 h-full\">\r\n @if(selectedQueue){\r\n <div class=\"queue-application-container-wrapper h-full\">\r\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\r\n <div class=\"col-8 p-0 flex align-items-center\">\r\n <div class=\"col-7 p-0 mr-3\">\r\n <queue-search \r\n [placeholder]=\"placeholder\"\r\n [searchText]=\"searchText\"\r\n (searchInputChanged)=\"onSearchInputChanged($event)\"\r\n (searchRequested)=\"onSearchRequested($event)\"\r\n (searchCleared)=\"onSearchCleared()\">\r\n </queue-search>\r\n </div>\r\n <div>\r\n <lib-queue-filter-dropdown \r\n #filterDropdown\r\n [appliedFilters]=\"appliedFilters\"\r\n (filterApplied)=\"onFilterDropdownApplied($event)\"\r\n (filtersCleared)=\"onFiltersCleared()\">\r\n </lib-queue-filter-dropdown>\r\n </div>\r\n <div *ngIf=\"hasActiveFilters\">\r\n <button \r\n class=\"clear-filters-btn\"\r\n type=\"button\"\r\n (click)=\"onClearAllFilters()\">\r\n Clear <i class=\"pi pi-times ml-2\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\r\n <ng-content select=\"[user-dropdown]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\r\n \r\n <app-queue-record-table\r\n [table]=\"table\"\r\n [metaData]=\"metaData\"\r\n [selectedRows]=\"selectedRows\"\r\n [resetSort]=\"resetSort\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selectedQueue]=\"selectedQueue\"\r\n (selectionChange)=\"onTableSelectionChange($event)\"\r\n (selectedRowsData)=\"onTableSelectionChange($event)\"\r\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\r\n (rowClick)=\"onTableRowClick($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (filterApplied)=\"onFilterApplied($event)\"\r\n (sortApplied)=\"onSortApplied($event)\">\r\n </app-queue-record-table>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n </div>", styles: [":host{display:block;height:100%;padding-top:14px}.queue-table-container-wrapper{height:calc(100% - 58px)}.queue-list-container-wrapper{background-color:transparent}.queue-application-container-wrapper{background-color:#fff;border-radius:15px;padding:20px}.clear-filters-btn{background:none;border:1px solid #e5e7eb;color:#64748b;font-size:.85rem;font-weight:500;cursor:pointer;margin-left:.5rem;display:inline-flex;align-items:center;padding:6px 12px;border-radius:8px;transition:all .2s ease}.clear-filters-btn:hover{background:#f8fafc;border-color:#cbd5e1;color:#ef4444}.clear-filters-btn i{font-size:.75rem}\n"] }]
|
|
8521
|
-
}], ctorParameters: () => [{ type: QueueStore$1 }, { type: QueueService }, { type: BaseStore }, { type: QueueBusinessService }, { type: QueueRecordTableBuilderService }, { type: QueueFilterDropdownService }, { type: BaseQuery }], propDecorators: { placeholder: [{
|
|
8621
|
+
args: [{ selector: 'lib-queue-container', standalone: false, template: "<div class=\"container grid m-0 h-full\">\r\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\r\n <lib-skeleton *ngIf=\"queueListLoading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n @if(!queueListLoading){\r\n <div class=\"queue-list-container-wrapper p-0\">\r\n <app-queue-list\r\n [queueData]=\"filteredQueueData\"\r\n [queueTitle]=\"queueTitle\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"true\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueueRequested()\"\r\n ></app-queue-list>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-12 xl:col-10 md:col-12 py-0 pr-0 h-full\">\r\n @if(selectedQueue){\r\n <div class=\"queue-application-container-wrapper h-full\">\r\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\r\n <div class=\"col-8 p-0 flex align-items-center\">\r\n <div class=\"col-7 p-0 mr-3\">\r\n <queue-search \r\n [placeholder]=\"placeholder\"\r\n [searchText]=\"searchText\"\r\n (searchInputChanged)=\"onSearchInputChanged($event)\"\r\n (searchRequested)=\"onSearchRequested($event)\"\r\n (searchCleared)=\"onSearchCleared()\">\r\n </queue-search>\r\n </div>\r\n <div>\r\n <lib-queue-filter-dropdown \r\n #filterDropdown\r\n [appliedFilters]=\"appliedFilters\"\r\n (filterApplied)=\"onFilterDropdownApplied($event)\"\r\n (filtersCleared)=\"onFiltersCleared()\">\r\n </lib-queue-filter-dropdown>\r\n </div>\r\n <div *ngIf=\"hasActiveFilters\">\r\n <button \r\n class=\"clear-filters-btn\"\r\n type=\"button\"\r\n (click)=\"onClearAllFilters()\">\r\n Clear <i class=\"pi pi-times ml-2\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\r\n <ng-content select=\"[user-dropdown]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\r\n \r\n <app-queue-record-table\r\n [table]=\"table\"\r\n [metaData]=\"metaData\"\r\n [selectedRows]=\"selectedRows\"\r\n [resetSort]=\"resetSort\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selectedQueue]=\"selectedQueue\"\r\n (selectionChange)=\"onTableSelectionChange($event)\"\r\n (selectedRowsData)=\"onTableSelectionChange($event)\"\r\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\r\n (rowClick)=\"onTableRowClick($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (filterApplied)=\"onFilterApplied($event)\"\r\n (sortApplied)=\"onSortApplied($event)\">\r\n </app-queue-record-table>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n </div>", styles: [":host{display:block;height:100%;padding-top:14px}.queue-table-container-wrapper{height:calc(100% - 58px)}.queue-list-container-wrapper{background-color:transparent}.queue-application-container-wrapper{background-color:#fff;border-radius:15px;padding:20px}.clear-filters-btn{background:none;border:1px solid #e5e7eb;color:#64748b;font-size:.85rem;font-weight:500;cursor:pointer;margin-left:.5rem;display:inline-flex;align-items:center;padding:6px 12px;border-radius:8px;transition:all .2s ease}.clear-filters-btn:hover{background:#f8fafc;border-color:#cbd5e1;color:#ef4444}.clear-filters-btn i{font-size:.75rem}\n"] }]
|
|
8622
|
+
}], ctorParameters: () => [{ type: QueueStore$1 }, { type: QueueService }, { type: BaseStore }, { type: QueueBusinessService }, { type: QueueRecordTableBuilderService }, { type: QueueFilterDropdownService }, { type: BaseQuery }, { type: i3$4.ActivatedRoute }], propDecorators: { placeholder: [{
|
|
8522
8623
|
type: Input
|
|
8523
8624
|
}], filterDropdown: [{
|
|
8524
8625
|
type: ViewChild,
|