cat-qw-lib 2.6.91-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 +128 -26
- 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/services/queue-record-table-builder.service.d.ts +1 -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" });
|
|
@@ -7276,18 +7300,19 @@ class QueueRecordTableBuilderService extends TableBuilder {
|
|
|
7276
7300
|
'soft check failed': { background: '#FEF2F2', border: '#FECACA', color: '#991B1B' },
|
|
7277
7301
|
'hard check failed': { background: '#FEF2F2', border: '#FECACA', color: '#991B1B' },
|
|
7278
7302
|
'kyc failed': { background: '#FEF2F2', border: '#FECACA', color: '#991B1B' },
|
|
7303
|
+
'soft check affordability fail': { background: '#FEF2F2', border: '#FECACA', color: '#991B1B' },
|
|
7279
7304
|
'withdrawn': { background: '#F9FAFB', border: '#E5E7EB', color: '#485563' },
|
|
7280
7305
|
'archived': { background: '#F9FAFB', border: '#E5E7EB', color: '#485563' }
|
|
7281
7306
|
};
|
|
7282
7307
|
/**
|
|
7283
7308
|
* Maps a status label to an inline-style object for its chip.
|
|
7284
|
-
* Unknown statuses fall back to a
|
|
7309
|
+
* Unknown / new statuses fall back to a red chip.
|
|
7285
7310
|
*/
|
|
7286
7311
|
getStatusChipStyle(status) {
|
|
7287
7312
|
if (!status)
|
|
7288
7313
|
return null;
|
|
7289
7314
|
const cfg = QueueRecordTableBuilderService.STATUS_STYLE_MAP[String(status).toLowerCase().trim()]
|
|
7290
|
-
|| { background: '#
|
|
7315
|
+
|| { background: '#FEF2F2', border: '#FECACA', color: '#991B1B' };
|
|
7291
7316
|
return {
|
|
7292
7317
|
background: cfg.background,
|
|
7293
7318
|
border: `1px solid ${cfg.border}`,
|
|
@@ -7444,7 +7469,7 @@ class QueueRecordTableBuilderService extends TableBuilder {
|
|
|
7444
7469
|
const statusValue = apiRecord[SHARED.STATUS] || undefined;
|
|
7445
7470
|
cellValue = {
|
|
7446
7471
|
appId: value,
|
|
7447
|
-
type: apiRecord.lending ||
|
|
7472
|
+
type: apiRecord.lending || undefined,
|
|
7448
7473
|
risk: formattedRisk,
|
|
7449
7474
|
status: statusValue,
|
|
7450
7475
|
statusStyle: this.getStatusChipStyle(statusValue)
|
|
@@ -7673,6 +7698,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
7673
7698
|
class QueueItemComponent {
|
|
7674
7699
|
queueStore;
|
|
7675
7700
|
filteredQueueData = [];
|
|
7701
|
+
/** Sidebar heading — the host menu entry's label, e.g. 'HPA Queues'. */
|
|
7702
|
+
queueTitle = 'Queues';
|
|
7676
7703
|
selectedQueueId = null;
|
|
7677
7704
|
selectedStatus = 'active';
|
|
7678
7705
|
userRole = false;
|
|
@@ -7721,13 +7748,15 @@ class QueueItemComponent {
|
|
|
7721
7748
|
return 'pi-list';
|
|
7722
7749
|
}
|
|
7723
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 });
|
|
7724
|
-
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 });
|
|
7725
7752
|
}
|
|
7726
7753
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueItemComponent, decorators: [{
|
|
7727
7754
|
type: Component,
|
|
7728
|
-
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"] }]
|
|
7729
7756
|
}], ctorParameters: () => [{ type: QueueStore$1 }], propDecorators: { filteredQueueData: [{
|
|
7730
7757
|
type: Input
|
|
7758
|
+
}], queueTitle: [{
|
|
7759
|
+
type: Input
|
|
7731
7760
|
}], selectedQueueId: [{
|
|
7732
7761
|
type: Input
|
|
7733
7762
|
}], selectedStatus: [{
|
|
@@ -7746,6 +7775,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
7746
7775
|
|
|
7747
7776
|
class QueueListComponent {
|
|
7748
7777
|
queueData = [];
|
|
7778
|
+
queueTitle = 'Queues';
|
|
7749
7779
|
selectedQueueId = null;
|
|
7750
7780
|
selectedStatus = 'active';
|
|
7751
7781
|
userRole = false;
|
|
@@ -7763,13 +7793,15 @@ class QueueListComponent {
|
|
|
7763
7793
|
this.insertQueueRequested.emit();
|
|
7764
7794
|
}
|
|
7765
7795
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7766
|
-
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 });
|
|
7767
7797
|
}
|
|
7768
7798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueListComponent, decorators: [{
|
|
7769
7799
|
type: Component,
|
|
7770
|
-
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" }]
|
|
7771
7801
|
}], propDecorators: { queueData: [{
|
|
7772
7802
|
type: Input
|
|
7803
|
+
}], queueTitle: [{
|
|
7804
|
+
type: Input
|
|
7773
7805
|
}], selectedQueueId: [{
|
|
7774
7806
|
type: Input
|
|
7775
7807
|
}], selectedStatus: [{
|
|
@@ -8094,6 +8126,7 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8094
8126
|
tableBuilder;
|
|
8095
8127
|
queueFilterDropdownService;
|
|
8096
8128
|
baseQuery;
|
|
8129
|
+
route;
|
|
8097
8130
|
destroy$ = new Subject();
|
|
8098
8131
|
searchSubject = new Subject();
|
|
8099
8132
|
queueList = [];
|
|
@@ -8121,6 +8154,13 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8121
8154
|
placeholder = '';
|
|
8122
8155
|
/** Snapshot of the latest request; used to ignore stale responses. */
|
|
8123
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';
|
|
8124
8164
|
filterDropdown;
|
|
8125
8165
|
// Input properties for content projection
|
|
8126
8166
|
set selectedRowsInput(rows) {
|
|
@@ -8138,7 +8178,7 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8138
8178
|
selectionChange = new EventEmitter();
|
|
8139
8179
|
isAllRowSelected = new EventEmitter(false);
|
|
8140
8180
|
excludedApplicationIds = new EventEmitter();
|
|
8141
|
-
constructor(queueStore, queueService, baseStore, queueBusinessService, tableBuilder, queueFilterDropdownService, baseQuery) {
|
|
8181
|
+
constructor(queueStore, queueService, baseStore, queueBusinessService, tableBuilder, queueFilterDropdownService, baseQuery, route) {
|
|
8142
8182
|
super(queueService);
|
|
8143
8183
|
this.queueStore = queueStore;
|
|
8144
8184
|
this.queueService = queueService;
|
|
@@ -8147,11 +8187,11 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8147
8187
|
this.tableBuilder = tableBuilder;
|
|
8148
8188
|
this.queueFilterDropdownService = queueFilterDropdownService;
|
|
8149
8189
|
this.baseQuery = baseQuery;
|
|
8190
|
+
this.route = route;
|
|
8150
8191
|
}
|
|
8151
8192
|
ngOnInit() {
|
|
8152
8193
|
this.isShowSkeleton = true;
|
|
8153
|
-
|
|
8154
|
-
this.initializeComponent(storedQueueId ?? undefined);
|
|
8194
|
+
this.watchApplicationType();
|
|
8155
8195
|
this.setupSearchDebounce();
|
|
8156
8196
|
// Sync filter dropdown after initialization
|
|
8157
8197
|
setTimeout(() => {
|
|
@@ -8266,6 +8306,65 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8266
8306
|
this.filterDropdown.syncWithAppliedFilters(this.appliedFilters);
|
|
8267
8307
|
}
|
|
8268
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
|
+
}
|
|
8269
8368
|
initializeComponent(preferredQueueId) {
|
|
8270
8369
|
this.getAllQueueList(preferredQueueId);
|
|
8271
8370
|
this.userRole = this.queueBusinessService.getUserRole();
|
|
@@ -8283,14 +8382,22 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8283
8382
|
getAllQueueList(preferredQueueId) {
|
|
8284
8383
|
this.queueListLoading = true;
|
|
8285
8384
|
this.error = null;
|
|
8286
|
-
|
|
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({
|
|
8287
8388
|
next: (res) => {
|
|
8389
|
+
if (requestedApplicationTypeId !== this.applicationTypeId) {
|
|
8390
|
+
return;
|
|
8391
|
+
}
|
|
8288
8392
|
this.queueList = Array.isArray(res) ? res : (res.data || res);
|
|
8289
8393
|
this.baseStore.setQueueList(this.queueList);
|
|
8290
8394
|
this.filterQueues(preferredQueueId);
|
|
8291
8395
|
this.queueListLoading = false;
|
|
8292
8396
|
},
|
|
8293
8397
|
error: (err) => {
|
|
8398
|
+
if (requestedApplicationTypeId !== this.applicationTypeId) {
|
|
8399
|
+
return;
|
|
8400
|
+
}
|
|
8294
8401
|
this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;
|
|
8295
8402
|
this.queueListLoading = false;
|
|
8296
8403
|
this.isShowSkeleton = false;
|
|
@@ -8304,7 +8411,7 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8304
8411
|
this.selectedQueue = Object.assign({}, newQueue);
|
|
8305
8412
|
this.selectedQueueId = queueId;
|
|
8306
8413
|
this.queueStore.setSelectedQueueId(queueId);
|
|
8307
|
-
this.queueBusinessService.storeSelectedQueue(queueId);
|
|
8414
|
+
this.queueBusinessService.storeSelectedQueue(queueId, this.applicationTypeId);
|
|
8308
8415
|
sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));
|
|
8309
8416
|
this.clearSelection();
|
|
8310
8417
|
this.resetPaginationState();
|
|
@@ -8504,20 +8611,15 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8504
8611
|
return this.selectedRows && this.selectedRows.length > 0;
|
|
8505
8612
|
}
|
|
8506
8613
|
getStoredQueueId() {
|
|
8507
|
-
|
|
8508
|
-
return localStorage.getItem(SHARED.SELECTED_QUEUE_ID);
|
|
8509
|
-
}
|
|
8510
|
-
catch (e) {
|
|
8511
|
-
return null;
|
|
8512
|
-
}
|
|
8614
|
+
return this.queueBusinessService.getStoredQueueId(this.applicationTypeId);
|
|
8513
8615
|
}
|
|
8514
|
-
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 });
|
|
8515
|
-
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"] }] });
|
|
8516
8618
|
}
|
|
8517
8619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueContainerComponent, decorators: [{
|
|
8518
8620
|
type: Component,
|
|
8519
|
-
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"] }]
|
|
8520
|
-
}], 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: [{
|
|
8521
8623
|
type: Input
|
|
8522
8624
|
}], filterDropdown: [{
|
|
8523
8625
|
type: ViewChild,
|