cat-qw-lib 2.6.47 → 2.6.48
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
CHANGED
|
@@ -7114,7 +7114,7 @@ class QueueService extends BaseService {
|
|
|
7114
7114
|
}
|
|
7115
7115
|
}
|
|
7116
7116
|
// Use POST method with body containing underwriterIds and unassigned
|
|
7117
|
-
return this.http.post(url, body
|
|
7117
|
+
return this.http.post(url, body).pipe(tap$1((response) => {
|
|
7118
7118
|
if (useCache) {
|
|
7119
7119
|
this.recordCache.set(cacheKey, { data: response, timestamp: Date.now() });
|
|
7120
7120
|
}
|
|
@@ -8018,7 +8018,8 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8018
8018
|
selectedQueue;
|
|
8019
8019
|
currentSearchTerm = '';
|
|
8020
8020
|
selectedRows = [];
|
|
8021
|
-
loading
|
|
8021
|
+
/** Only while loading the queue list (sidebar); never tied to record pagination. */
|
|
8022
|
+
queueListLoading = false;
|
|
8022
8023
|
error = null;
|
|
8023
8024
|
filteredQueueData = [];
|
|
8024
8025
|
selectedStatus = 'active';
|
|
@@ -8124,7 +8125,8 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8124
8125
|
const { page, limit } = this.queueBusinessService.calculatePagination(event);
|
|
8125
8126
|
// Force refresh on explicit paginator navigation so returning to page 1
|
|
8126
8127
|
// (often already cached from initial load) still triggers an API call.
|
|
8127
|
-
|
|
8128
|
+
// Soft transition: keep sidebar + current rows visible to avoid flicker.
|
|
8129
|
+
this.getQueueRecordsData(page, limit, true, true);
|
|
8128
8130
|
}
|
|
8129
8131
|
onFilterApplied(record) {
|
|
8130
8132
|
this.queryString = this.queueBusinessService.buildQueryString(record);
|
|
@@ -8200,18 +8202,18 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8200
8202
|
});
|
|
8201
8203
|
}
|
|
8202
8204
|
getAllQueueList(preferredQueueId) {
|
|
8203
|
-
this.
|
|
8205
|
+
this.queueListLoading = true;
|
|
8204
8206
|
this.error = null;
|
|
8205
8207
|
this.queueService.getAllQueue().subscribe({
|
|
8206
8208
|
next: (res) => {
|
|
8207
8209
|
this.queueList = Array.isArray(res) ? res : (res.data || res);
|
|
8208
8210
|
this.baseStore.setQueueList(this.queueList);
|
|
8209
8211
|
this.filterQueues(preferredQueueId);
|
|
8210
|
-
this.
|
|
8212
|
+
this.queueListLoading = false;
|
|
8211
8213
|
},
|
|
8212
8214
|
error: (err) => {
|
|
8213
8215
|
this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;
|
|
8214
|
-
this.
|
|
8216
|
+
this.queueListLoading = false;
|
|
8215
8217
|
console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);
|
|
8216
8218
|
}
|
|
8217
8219
|
});
|
|
@@ -8255,31 +8257,31 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8255
8257
|
}
|
|
8256
8258
|
}
|
|
8257
8259
|
}
|
|
8258
|
-
getQueueRecordsData(page, limit, forceRefresh = false) {
|
|
8259
|
-
this.isShowSkeleton = true;
|
|
8260
|
+
getQueueRecordsData(page, limit, forceRefresh = false, softTransition = false) {
|
|
8260
8261
|
if (!this.selectedQueue?.apiConfig) {
|
|
8261
8262
|
console.log("Queue data or apiConfig not available");
|
|
8262
8263
|
return;
|
|
8263
8264
|
}
|
|
8264
8265
|
const targetPage = page || this.currentPage;
|
|
8265
8266
|
const targetLimit = limit || this.currentLimit;
|
|
8266
|
-
|
|
8267
|
-
|
|
8268
|
-
|
|
8269
|
-
|
|
8270
|
-
|
|
8271
|
-
|
|
8272
|
-
|
|
8273
|
-
|
|
8274
|
-
|
|
8275
|
-
|
|
8267
|
+
if (!softTransition) {
|
|
8268
|
+
// Full refresh: skeleton + empty table (new queue, search, filters, sort, initial load).
|
|
8269
|
+
this.isShowSkeleton = true;
|
|
8270
|
+
if (this.table) {
|
|
8271
|
+
this.table = { ...this.table, records: [] };
|
|
8272
|
+
}
|
|
8273
|
+
else {
|
|
8274
|
+
this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {
|
|
8275
|
+
isReferredQueue: this.isReferredQueue(this.selectedQueue)
|
|
8276
|
+
});
|
|
8277
|
+
}
|
|
8278
|
+
this.metaData = {
|
|
8279
|
+
totalItems: 0,
|
|
8280
|
+
currentPage: targetPage,
|
|
8281
|
+
itemsPerPage: targetLimit,
|
|
8282
|
+
totalPages: 0
|
|
8283
|
+
};
|
|
8276
8284
|
}
|
|
8277
|
-
this.metaData = {
|
|
8278
|
-
totalItems: 0,
|
|
8279
|
-
currentPage: targetPage,
|
|
8280
|
-
itemsPerPage: targetLimit,
|
|
8281
|
-
totalPages: 0
|
|
8282
|
-
};
|
|
8283
8285
|
// Capture snapshot so we can ignore stale responses when user changes queue/search/page before this request completes
|
|
8284
8286
|
const requestSnapshot = {
|
|
8285
8287
|
queueId: this.selectedQueueId,
|
|
@@ -8309,7 +8311,6 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8309
8311
|
const apiData = res?.data || res?.paginatedResults || res || [];
|
|
8310
8312
|
if (apiData && apiData.length > 0) {
|
|
8311
8313
|
this.isShowSkeleton = false;
|
|
8312
|
-
this.loading = false;
|
|
8313
8314
|
this.table = this.tableBuilder.buildSecondaryTable(apiData, undefined, undefined, undefined, {
|
|
8314
8315
|
isReferredQueue: this.isReferredQueue(this.selectedQueue)
|
|
8315
8316
|
});
|
|
@@ -8317,14 +8318,12 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8317
8318
|
else if (this.table) {
|
|
8318
8319
|
this.table = { ...this.table, records: [] };
|
|
8319
8320
|
this.isShowSkeleton = false;
|
|
8320
|
-
this.loading = false;
|
|
8321
8321
|
}
|
|
8322
8322
|
else {
|
|
8323
8323
|
this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {
|
|
8324
8324
|
isReferredQueue: this.isReferredQueue(this.selectedQueue)
|
|
8325
8325
|
});
|
|
8326
8326
|
this.isShowSkeleton = false;
|
|
8327
|
-
this.loading = false;
|
|
8328
8327
|
}
|
|
8329
8328
|
this.currentPage = targetPage;
|
|
8330
8329
|
this.currentLimit = targetLimit;
|
|
@@ -8335,23 +8334,24 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8335
8334
|
if (this.latestRequestSnapshot !== requestSnapshot) {
|
|
8336
8335
|
return;
|
|
8337
8336
|
}
|
|
8338
|
-
this.loading = false;
|
|
8339
8337
|
this.isShowSkeleton = false;
|
|
8340
8338
|
console.error("Error fetching data:", error);
|
|
8341
|
-
if (
|
|
8342
|
-
this.table
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
|
|
8347
|
-
|
|
8339
|
+
if (!softTransition) {
|
|
8340
|
+
if (this.table) {
|
|
8341
|
+
this.table = { ...this.table, records: [] };
|
|
8342
|
+
}
|
|
8343
|
+
else {
|
|
8344
|
+
this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {
|
|
8345
|
+
isReferredQueue: this.isReferredQueue(this.selectedQueue)
|
|
8346
|
+
});
|
|
8347
|
+
}
|
|
8348
|
+
this.metaData = {
|
|
8349
|
+
totalItems: 0,
|
|
8350
|
+
currentPage: targetPage,
|
|
8351
|
+
itemsPerPage: targetLimit,
|
|
8352
|
+
totalPages: 0
|
|
8353
|
+
};
|
|
8348
8354
|
}
|
|
8349
|
-
this.metaData = {
|
|
8350
|
-
totalItems: 0,
|
|
8351
|
-
currentPage: targetPage,
|
|
8352
|
-
itemsPerPage: targetLimit,
|
|
8353
|
-
totalPages: 0
|
|
8354
|
-
};
|
|
8355
8355
|
}
|
|
8356
8356
|
});
|
|
8357
8357
|
}
|
|
@@ -8411,11 +8411,11 @@ class QueueContainerComponent extends BaseContainerComponent {
|
|
|
8411
8411
|
}
|
|
8412
8412
|
}
|
|
8413
8413
|
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 });
|
|
8414
|
-
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=\"
|
|
8414
|
+
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"] }] });
|
|
8415
8415
|
}
|
|
8416
8416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: QueueContainerComponent, decorators: [{
|
|
8417
8417
|
type: Component,
|
|
8418
|
-
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=\"
|
|
8418
|
+
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"] }]
|
|
8419
8419
|
}], ctorParameters: () => [{ type: QueueStore$1 }, { type: QueueService }, { type: BaseStore }, { type: QueueBusinessService }, { type: QueueRecordTableBuilderService }, { type: QueueFilterDropdownService }, { type: BaseQuery }], propDecorators: { placeholder: [{
|
|
8420
8420
|
type: Input
|
|
8421
8421
|
}], filterDropdown: [{
|