cat-qw-lib 2.6.3 → 2.6.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cat-qw-lib.mjs","sources":["../../../projects/cat-qw-lib/src/lib/shared/constant/SHARED.ts","../../../projects/cat-qw-lib/src/lib/shared/components/sidebar/sidebar.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/sidebar/sidebar.component.html","../../../projects/cat-qw-lib/src/lib/shared/state/base.store.ts","../../../projects/cat-qw-lib/src/lib/shared/state/base.query.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-control/base-control.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-control/base-control.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/check-box/check-box.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/check-box/check-box.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/button/button.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/button/button.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/text-box/text-box.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/text-box/text-box.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/ERROR.ts","../../../projects/cat-qw-lib/src/lib/shared/components/form-container/form-container.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/form-container/form-container.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/DATASOURCES.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/URLS.ts","../../../projects/cat-qw-lib/src/lib/shared/services/app-config.service.ts","../../../projects/cat-qw-lib/src/lib/shared/models/list.model.ts","../../../projects/cat-qw-lib/src/lib/shared/services/list.service.ts","../../../projects/cat-qw-lib/src/lib/shared/state/base.service.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/models/table-primary.model.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/models/table-primary-header.model.ts","../../../projects/cat-qw-lib/src/lib/shared/services/table.builder.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-list/base-list.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-list/base-list.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/dropdown/dropdown.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/dropdown/dropdown.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/validator.service.ts","../../../projects/cat-qw-lib/src/lib/shared/services/form-state.service.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-form/base-form.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-form/base-form.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/date-parser.service.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/date/date.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/date/date.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/file-upload/file-upload.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/file-upload/file-upload.component.html","../../../projects/cat-qw-lib/src/lib/shared/pipe/capitalize-words.pipe.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/text-area/text-area.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/text-area/text-area.component.html","../../../projects/cat-qw-lib/src/lib/shared/components/queue-search-customer/queue-search-customer.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/queue-search-customer/queue-search-customer.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/ROUTES.ts","../../../projects/cat-qw-lib/src/lib/shared/components/list/block-list.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/list/block-list.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/session.service.ts","../../../projects/cat-qw-lib/src/lib/shared/directives/permission.directive.ts","../../../projects/cat-qw-lib/src/lib/shared/shared.module.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/HEADERS.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/username/username.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/username/username.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/password/password.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/password/password.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/CSS.ts","../../../projects/cat-qw-lib/src/lib/shared/models/attribute.model.ts","../../../projects/cat-qw-lib/src/lib/shared/models/base.model.ts","../../../projects/cat-qw-lib/src/lib/shared/services/auth/auth.guard.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-container/base-container.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-container/base-container.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/LOOKUPS.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/components/table-primary.component.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/components/table-primary.component.html","../../../projects/cat-qw-lib/src/lib/shared/components/skeleton/skeleton.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/skeleton/skeleton.component.html","../../../projects/cat-qw-lib/src/lib/queue/services/queue-filter-dropdown.service.ts","../../../projects/cat-qw-lib/src/lib/queue/services/queue-business.service.ts","../../../projects/cat-qw-lib/src/lib/queue/state/queue.store.ts","../../../projects/cat-qw-lib/src/lib/queue/state/queue.query.ts","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/components/table-secondary.component.ts","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/components/table-secondary.component.html","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/models/table-secondary.model.ts","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/models/table-secondary-header.model.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/models/api-config.model.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/MESSAGES.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/LIST-CONFIG.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/state/api-admin.store.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/state/api-admin.service.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-form/api-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-form/api-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/PERMISSION.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-list/api-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-list/api-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/api-admin/api-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/state/widget-admin.store.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/state/widget-admin.service.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/models/widget.model.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/state/widget-admin.query.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/widget-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/models/queue.model.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/state/queue.store.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/state/queue.query.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/state/queue.service.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/queue-admin-routing.module.ts","../../../projects/cat-qw-lib/src/lib/shared/services/data-transformer.service.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-application-list/queue-application-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-application-list/queue-application-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/queue-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/state/admin-action.store.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/state/admin-action.service.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-list/admin-action-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-list/admin-action-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/action-admin/models/admin-action.model.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-form/admin-action-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-form/admin-action-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/action-admin/action-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/models/dictionary.model.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/state/dictionary.store.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/state/dictionary.service.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/state/dictionary.query.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/models/dd-attribute-sidebar-view.model.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-item-form/dd-admin-item-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-item-form/dd-admin-item-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/dd-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/models/template.model.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/state/template-admin.store.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/state/template-admin.service.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/state/template-admin.query.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-form/template-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-form/template-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-list/template-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-list/template-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/template-admin/template-admin.module.ts","../../../projects/cat-qw-lib/src/lib/widget/state/widget.store.ts","../../../projects/cat-qw-lib/src/lib/widget/state/widget.query.ts","../../../projects/cat-qw-lib/src/lib/widget/state/widget.service.ts","../../../projects/cat-qw-lib/src/lib/shared/services/style-builder.service.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-header/widget-header.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-header/widget-header.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-footer/widget-footer.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-footer/widget-footer.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-item/widget-item.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-item/widget-item.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-body/widget-body.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-body/widget-body.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-main/widget-main.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-main/widget-main.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/custom-widget.service.ts","../../../projects/cat-qw-lib/src/lib/widget/components/custom-widget/custom-widget.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/custom-widget/custom-widget.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu/widget-menu.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu/widget-menu.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-row-tile/widget-row-tile.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-row-tile/widget-row-tile.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-container/widget-container.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-container/widget-container.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-header/widget-menu-header.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-header/widget-menu-header.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-item/widget-menu-item.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-item/widget-menu-item.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-body/widget-menu-body.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-body/widget-menu-body.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-container/widget-menu-container.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-container/widget-menu-container.component.html","../../../projects/cat-qw-lib/src/lib/widget/widget.module.ts","../../../projects/cat-qw-lib/src/lib/queue/state/queue.service.ts","../../../projects/cat-qw-lib/src/lib/queue/services/queue-record-table-builder.service.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-search/queue-search.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-search/queue-search.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-item/queue-item.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-item/queue-item.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-list/queue-list.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-list/queue-list.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-record-table/queue-record-table.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-record-table/queue-record-table.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-filter-dropdown/queue-filter-dropdown.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-filter-dropdown/queue-filter-dropdown.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-container/queue-container.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-container/queue-container.component.html","../../../projects/cat-qw-lib/src/lib/queue/queue-routing.module.ts","../../../projects/cat-qw-lib/src/lib/queue/queue.module.ts","../../../projects/cat-qw-lib/src/public-api.ts","../../../projects/cat-qw-lib/src/cat-qw-lib.ts"],"sourcesContent":["export class SHARED {\n static EMPTY = \"\";\n static REQUIRED_ERROR = \"Field Required\";\n static EMPTYARRAY = [];\n static NULL = \"NULL\";\n static SOLICITORID = \"Solicitor Id\";\n static HIPHEN = \"-\";\n static SLASH = \"/\";\n static USERROLE = \"role\"\n static SESSIONKEY = \"userData\";\n static SUCCESS = \"success\";\n static WARNING = \"warning\";\n static ERROR = \"error\";\n static DEFAULT = \"default\";\n static VULNERABLE = \"vulnerable\";\n static ERROR_MESSAGE = \"Success Message\";\n static SUCCESS_MESSAGE = \"Success Message\";\n static DICTIONARY = \"Dictionary\";\n static TITLE = 'title';\n static DICTIONARY_ITEM = 'dictionaryItem';\n static DICTIONARY_ITEM_MAPPER = 'dictionaryItemMapper';\n static SIDEBAR_MASK = '.p-sidebar-mask';\n static CUSTOMSIDEBAROVERLAY = 'custom-sidebar-overlay';\n static ID = 'id';\n static _ID = '_id';\n static DATE_FORMAT = \"DD/MM/YYYY\";\n static DATE_FORMAT_TYPE2 = \"DD-MM-YYYY\";\n static DATE_FORMAT_TYPE3 = \"YY-MM-DD\";\n static DATE_FORMAT_TYPE4 = \"YYYY-MM-DD\";\n static INVALIDDATE = \"Invalid Date\";\n static __V = '__v';\n static CREATEDAT = 'createdAt';\n static UPDATEDAT = 'updatedAt';\n static ZERO = 0\n static TYPE_OBJECT = 'object'\n static DICTIONARYITEMS = 'dictionaryItems';\n static GET_DATA_MESSAGE = [{ severity: 'success', detail: 'Data has been fetched successfully.', life:3000 }]\n static PRIMARY = 'primary';\n static mappingInfo = 'mappingInfo';\n static YES = 'Yes';\n static NO = 'No';\n static selectedQueue = 'selectedQueue';\n static DASH = \"-\"\n static selectedApplication = 'selectedApplication';\n static selectedApplicationNumber = 'selectedApplicationNumber';\n static GREEN = \"green\"\n static RED = \"red\"\n static FROM_EMAIL = \"neeraj.kumar@catura.co.uk\";\n static to_EMAIL = \"shubham.prajapati@dynamatix.com\";\n static EMAIL = 'email';\n static token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxOTI2ZjcyN2RkZWI0MDAxMWE2ZDZmNyIsIm5hbWUiOiJKb2huIERvZSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNjQyNzQ5MzYyLCJleHAiOjE2NDI4MzU3NjJ9.4fBQqP2_6z0H4Ow7J-R27XEdIgl2MrMoIXCgD_qZFlA';\n static null = 'null';\n static undefined = 'undefined';\n static rationale = 'rationale';\n static accepted = 'Accepted';\n static application = 'Application';\n static INVALID_API_PATH = 'Please enter the API path.';\n static WIDTH_AUTO = 'w-auto';\n static TRUE = true;\n static FALSE = false;\n static STRING_TRUE = \"true\";\n static STRING_FALSE = \"false\";\n static AND = 'AND';\n static STRING = 'string';\n static OPERATORS = [\"=\", \"<>\", \">\", \"<\", \">=\", \"<=\"];\n static STATUS_ACTIVE = 'active';\n static TODAY = 'Today';\n static YESTERDAY = 'Yesterday';\n static ALL = 'All';\n static UK = 'UK';\n static INTERNATIONAL = 'International';\n static QUEUE1 = 'Q1';\n static QUEUE2 = 'Q2';\n static QUEUE3 = 'Q3';\n static SELECTED_QUEUE = 'Selected Queue:';\n static QUEUEID = \"queueId\";\n static QUESTION_MARK = \"?\";\n static EQUALS = \"=\";\n static AMPERSAND = \"&\";\n static RECORDID = \"recordId\";\n static MISSING_WIDGETNAME = \"Missing widgetName\";\n static MISSING_QUEUE_ID = \"Missing queueId\";\n static MISSING_RECORD_ID = \"Missing recordId\";\n static EMPTY_STRING = \" \";\n static SELECTED_QUEUE_ID = \"selectedQueueId\";\n static ISITEMEXPRESSION = \"isItemExpression\";\n static DT2 = \"dt2\";\n static TEXTBOXFIELD = \"textboxField\";\n static DROPDOWN = \"dropdown\";\n static TEXTAREA = \"textArea\";\n static DATAITEMS = \"dataItems\";\n static ASC = \"asc\";\n static DESC = \"desc\";\n static ACTIVE = \"Active\";\n static IN_ACTIVE = \"InActive\";\n static SEMICOLON_STRING = \";\"\n static COLON_STRING = \":\";\n static PAGINATOR = \"paginator\";\n static BROWSER_WARNING = 'You have unsaved changes. Do you really want to leave?'\n static DIRECT_DEBITID = 'Direct DebitId'\n static DIRECT_DEBIT = 'directdebit'\n static SOLICITOR = 'solicitor'\n static PRODUCT = 'product'\n static COMMITMENTS = 'commitments'\n static PRODUCT_ID = 'ProductId'\n static EXPENDITURE = 'expenditure'\n static INCOME = 'income'\n static VALUATION = 'valuation'\n static VALUATIONID = 'ValuationId'\n static BROKERCOMPANY_NAME='brokerCompanyName'\n static WIDGET_NAME = 'widgetName'\n static IS_MENU = 'isMenu'\n static ON_WIDGET_UPDATE = 'onWidgetUpdate';\n static selectedApplicationType = \"applicationType\";\n static APPLICANTS = 'applicants';\n static BROKER_NAME = 'brokerName';\n static SECURITY_ADDRESS = 'securityAddress';\n static SLA = 'sla';\n static REFERRED_DATE = 'referredDate';\n static REFERRED = 'referred';\n static FINANCE = 'finance';\n static VALUATION_STATUS = 'valuationStatus';\n static TASKS = 'tasks';\n static TASK_BROKER_LABEL = 'B';\n static TASK_UNDERWRITER_LABEL = 'UW';\n static APP_ID = 'appId';\n static COMPANY_NAME = 'companyName';\n static APPLICATION_TYPE = 'applicationType';\n static ASSIGNED_TO = 'assignedTo';\n static TASK_COMPLETION_PERCENT = 'taskCompletionPercent';\n static RISK_RATING = 'riskRating';\n static LENDING = 'lending';\n static UNASSIGNED_UNDERWRITER_ID = 'unassigned';\n}\n\nexport const widgetLayoutTypeList = [\n { name: 'Row', value: 'row' },\n {name: 'Tile', value: 'tile' } \n];\n\nexport const statusList = [\n {name: 'All'},\n {name: 'Active'},\n {name: 'InActive'}\n]\n\nexport const msgTemplateTypeList = [\n { id: 1, value: 'email' },\n { id: 2, value: 'whatsapp' },\n { id: 3, value: 'sms' }\n]\n\nexport const textEditorToolbar = [\n ['bold', 'italic', 'underline', 'strike'], \n [{ list: 'ordered' }, { list: 'bullet' }],\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\n ['link']\n]\n\nexport const TemplateTabType = ['all-template', 'email','sms', 'whatsapp'];\n\nexport const MESSAGE_TYPES = ['SMS', 'WhatsApp', 'Email'];\n\nexport const delimiters = ['|', '/', '-'];\n\nexport const dictionaryItemList = [];\n\nexport const dictionaryItemMapperList = [];\n\nexport const dictionaryApiFieldList = {\n title: 'Property data',\n data: [ { name: 'First name' },\n { name: 'Last name' },\n { name: 'Email' },\n { name: 'Address' },\n { name: 'Gender' },\n { name: 'Dob' }\n ]\n}\n\nexport const FolderPanel = [\n {\n _id: 'folder1',\n fileCount: 10,\n text: 'Documents',\n missingFiles: 3,\n pendingFiles: 2\n },\n {\n _id: 'folder2',\n fileCount: 5,\n text: 'Images',\n missingFiles: 0,\n pendingFiles: 1\n },\n {\n _id: 'folder3',\n fileCount: 20,\n text: 'Reports',\n missingFiles: 5,\n pendingFiles: 0\n },\n {\n _id: 'folder4',\n fileCount: 8,\n text: 'Videos',\n missingFiles: 0,\n pendingFiles: 0\n },\n {\n _id: 'folder5',\n fileCount: 15,\n text: 'Archives',\n missingFiles: 1,\n pendingFiles: 3\n }\n];\n\nexport const DocumentList = [\n {\n id: 1,\n fileName: 'Document 1',\n status: 'pending',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n {\n id: 2,\n fileName: 'Document 2',\n status: 'verified',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n {\n id: 3,\n fileName: 'Document 3',\n status: 'sentReminder',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n {\n id: 4,\n fileName: 'Document 4',\n status: 'pending',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n];\n\n\nexport const widgetLinkList = [\n { name: 'https://dummy-url.com/NY', code: 'NY' },\n { name: 'https://dummy-url.com/RM', code: 'RM' },\n { name: 'https://dummy-url.com/LDN', code: 'LDN' },\n { name: 'https://dummy-url.com/IST', code: 'IST' },\n { name: 'https://dummy-url.com/PRS', code: 'PRS' }\n];\n\nexport const dictionaryList = [\n {\"id\": 1 ,\"Name\": \"John Doe\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 2 ,\"Name\": \"Jane Smith\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 3 ,\"Name\": \"David Lee\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 4 ,\"Name\": \"Emma Wilson\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 5 ,\"Name\": \"Michael Brown\", \"API\": \"Dynamatix.com/getfinance\" }\n]\n\nexport const SEQUENTIAL_MESSAGE = [\n \"Your case is under review.\",\n \"We have received your application.\",\n \"A new update is available for your case.\",\n \"Please verify your contact details.\",\n \"Your case is pending further action.\",\n \"We are processing your request.\",\n \"Your case has been escalated.\",\n \"Thank you for reaching out.\",\n \"Your documents have been received.\",\n \"Our team will contact you shortly.\"\n];\n\nexport const apiHiddenHeaderList = ['credentials','createdAt','updatedAt','__v','properties', '_id', 'authHeaderName', 'authToken']\n\nexport const dictionaryHiddenHeaderList = ['dictionaryItems', '_id', '__v', 'updatedAt', 'createdAt']\n\nexport const widgetHiddenHeaderList = ['_id','dataItems','__v','createdAt','updatedAt','headerDictionaryID', 'headerDictionaryItemID', 'order', 'subHeaderDictionaryID', 'subHeaderDictionaryItemID', 'badges', 'isEmptyLabelHidden', 'widgetStatusIconClass', 'widgetStatusIconClassExpression', 'widgetStatusIconStyle', 'widgetStatusIconStyleExpression']\n\nexport const templateHiddenHeaderList = ['_id','__v','updatedAt','description'];\n\nexport const hiddenHeaderList = ['status','actions']\n\nexport const expectedRoutes = ['apiManagement','queue', 'dictionary', 'widget']\n\nexport const mileList = [\n { name: '0.5 Mile', value: 0.5 },\n { name: '1 Mile', value: 1 }\n];\n\nexport const messageType = [\n { name: 'Email', icon: 'pi pi-envelope' },\n { name: 'WhatsApp', icon: 'pi pi-whatsapp' },\n { name: 'SMS', icon: 'pi pi-comment' },\n]\n\nexport const propertyDataList = [\n {\n key: '0',\n label: 'Documents',\n data: 'Documents Folder',\n icon: 'pi pi-fw pi-inbox',\n children: [\n {\n key: '0-0',\n label: 'Work',\n data: 'Work Folder',\n icon: 'pi pi-fw pi-cog',\n children: [\n { key: '0-0-0', label: 'Expenses.doc', icon: 'pi pi-fw pi-file', data: 'Expenses Document' },\n { key: '0-0-1', label: 'Resume.doc', icon: 'pi pi-fw pi-file', data: 'Resume Document' }\n ]\n },\n {\n key: '0-1',\n label: 'Home',\n data: 'Home Folder',\n icon: 'pi pi-fw pi-home',\n children: [{ key: '0-1-0', label: 'Invoices.txt', icon: 'pi pi-fw pi-file', data: 'Invoices for this month' }]\n }\n ]\n },\n{\n key: '1',\n label: 'Events',\n data: 'Events Folder',\n icon: 'pi pi-fw pi-calendar',\n children: [\n { key: '1-0', label: 'Meeting', icon: 'pi pi-fw pi-calendar-plus', data: 'Meeting' },\n { key: '1-1', label: 'Product Launch', icon: 'pi pi-fw pi-calendar-plus', data: 'Product Launch' },\n { key: '1-2', label: 'Report Review', icon: 'pi pi-fw pi-calendar-plus', data: 'Report Review' }\n ]\n},\n{\n key: '2',\n label: 'Movies',\n data: 'Movies Folder',\n icon: 'pi pi-fw pi-star-fill',\n children: [\n {\n key: '2-0',\n icon: 'pi pi-fw pi-star-fill',\n label: 'Al Pacino',\n data: 'Pacino Movies',\n children: [\n { key: '2-0-0', label: 'Scarface', icon: 'pi pi-fw pi-video', data: 'Scarface Movie' },\n { key: '2-0-1', label: 'Serpico', icon: 'pi pi-fw pi-video', data: 'Serpico Movie' }\n ]\n },\n {\n key: '2-1',\n label: 'Robert De Niro',\n icon: 'pi pi-fw pi-star-fill',\n data: 'De Niro Movies',\n children: [\n { key: '2-1-0', label: 'Goodfellas', icon: 'pi pi-fw pi-video', data: 'Goodfellas Movie' },\n { key: '2-1-1', label: 'Untouchables', icon: 'pi pi-fw pi-video', data: 'Untouchables Movie', selectable: false }\n ]\n }\n ]\n}\n];\n\nexport const actionHiddenHeaderList = ['_id', 'createdAt','updatedAt', '__v', 'formFields'];\n\nexport const actionList = [\n { action: 'Valuation Fee', \n prompt: `The following conversation includes references to various addresses. Based on the selected form \"Valuation Fee\",\n identify and extract the most recent address provided (in descending order of appearance in the text) and map it to the following schema::\n {\n \"Line1\": string,\n \"Line2\": string,\n \"town\": string,\n \"postcode\": string\n }.\n \n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\n \n Data:`, queueId: '674f1c645dafa6a66511c8fb', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\n },\n { action: 'UK Resident', \n prompt: `\n The following conversation involves information related to UK residency. Based on the selected form \"UK Resident\",\n extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\n {\n \"Line1\": string,\n \"Line2\": string,\n \"town\": string,\n \"postcode\": string\n }.\n \n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\n \n Data:`, queueId: '676e4b27ee779eafc72b11b9', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Disable'\n },\n { action: 'Address Update', \n prompt: `\n The following conversation contains updates related to address changes. Based on the selected form \"Address Update\",\n identify and extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\n {\n \"Line1\": string,\n \"Line2\": string,\n \"town\": string,\n \"postcode\": string\n }.\n \n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\n \n Data:`, queueId: '67332cf2f9439e97c47a3c43', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\n }\n]\n\nexport const offerWidgetList = [\n {\n title: 'Offer',\n badge: 'Pending',\n badgeIcon: 'pi pi-clock',\n statusList: [\n { description: 'Application(HS) Condition was added on 10th Sep 2023', status: 'active' },\n { description: 'Property Condition was added on 10th Sep 2023', status: 'active' },\n { description: 'Mandate Approval Requested on 14th Sep 2024', status: 'pending' },\n { title: 'Waiting for Mandate Approval', description: 'Existing Mandate: 100,000', status: 'pending', textColor: '#FB392D' },\n { description: 'Generate Offer', status: 'pending' }\n ],\n viewAll: 'View All Details'\n },\n {\n title: 'Valuation',\n badge: 'Pending',\n badgeIcon: 'pi pi-clock',\n statusList: [\n { description: 'Valuation Requested on 10th October 2024', status: 'active' },\n { description: 'Fees Paid £400 on 10th October 2024', status: 'active' },\n { description: 'Valuation Scheduled on 10th October 2024', status: 'active' },\n { title: 'Report Received on 13th October 2024', description: 'Value: £450,000.<br>Bedroom mismatch (3 vs. 2)<br>Valuation mismatch<br>(£450,000 vs. £500,000)', status: 'active', textColor: '#FB392D' },\n { description: 'PVQ Raised on 14th October 2024', status: 'active' },\n { description: 'PVQ Response received on 14th October 2024', status: 'active' },\n { description: 'Waiting for Valuation Report to be accepted', status: 'pending' }\n ]\n }\n ]\n\nexport const actionTableColumnWidthList = {name: 'w-3', apiConfigId: 'w-3', queueId: 'w-3', prompt: 'w-4', isActive: 'w-2'}\n\nexport const queuePriorityOrder = [\"All Applications\", \"Assigned To Me\", \"Unassigned\"];\n\nexport const QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST = {\n brokerName: 'w-3', \n securityAddress: 'w-3', \n applicants: 'w-3',\n finance: 'w-3',\n valuationStatus: 'w-2',\n sla: 'w-3',\n referredDate: 'w-3',\n appId: 'w-2',\n tasks: 'w-2'\n}\n\nexport const FIELD_DISPLAY_NAMES: { [key: string]: string } = {\n riskRating: 'Risk Rating',\n appId: 'App. ID',\n applicants: 'Company & Applicant(s)',\n brokerName: 'Broker',\n finance: 'Finance Amount',\n securityAddress: 'Security',\n valuationStatus: 'Val status',\n sla: 'SLA',\n referredDate: 'Date referred',\n pending: 'Age',\n lending: 'Type',\n tasks: 'Tasks'\n};\n\n// ...existing code...\n\nexport const QUEUE_RECORD_TABLE_COLUMN_ORDER = [\n 'riskRating',\n 'appId', // App. ID\n 'applicants', // Company & Applicant(s)\n 'brokerName',\n 'finance',\n 'securityAddress',\n 'pending',\n 'sla',\n 'valuationStatus',\n 'lending',\n 'tasks'\n];\n\n// ...existing code...","import { Component, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport { SHARED } from '../../constant/SHARED';\n@Component({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss',\n standalone : false\n})\nexport class SidebarComponent {\n @Input() isSidebarVisible!: boolean;\n @Input() title!: string;\n @Output() onClose = new EventEmitter<any>();\n\n constructor(private renderer: Renderer2) {}\n\n onSidebarShow() {\n const overlay = document.querySelector(SHARED.SIDEBAR_MASK);\n if (overlay) {\n this.renderer.addClass(overlay, SHARED.CUSTOMSIDEBAROVERLAY);\n }\n }\n\n handleSidebarClose() {\n this.onClose.emit(false);\n }\n}\n","<div *ngIf=\"isSidebarVisible\" class=\"backdrop-shadow\" (click)=\"handleSidebarClose()\"></div>\n<div>\n<p-sidebar class=\"sidebar-panel-wrapper\" [(visible)]=\"isSidebarVisible\" (onShow)=\"onSidebarShow()\" (onHide)=\"handleSidebarClose()\" [position]=\"'right'\">\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center\">\n <h2 class=\"sidebar-title-wrapper text-color mb-0\">\n {{title}}\n </h2>\n </div>\n </ng-template>\n <p-divider class=\"sidebar-devider\"></p-divider>\n <ng-content></ng-content>\n</p-sidebar>","import { Injectable } from '@angular/core';\nimport { EntityState, EntityStore, StoreConfig } from '@datorama/akita';\nimport { BaseState } from './base.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { BaseModel } from '../models/base.model';\nimport { SHARED } from '../constant/SHARED';\nexport interface BaseEntityState<T> extends BaseState, EntityState<T> {\n \n}\n\n\n/**\n * BaseStore is a generic class that extends EntityStore from Akita.\n */\n@StoreConfig({ name: 'base' })\n@Injectable({ providedIn: 'root' })\nexport class BaseStore<T extends BaseModel> extends EntityStore<BaseEntityState<T>, T> {\n static storeName = 'base';\n missingFields: string[] = [];\n public recordChange$: BehaviorSubject<any>;\n public onDocumentAccept$: BehaviorSubject<any>;\n public onDailogClose$: BehaviorSubject<any>;\n public openDocument$: BehaviorSubject<any>;\n public alertMessage$: BehaviorSubject<any>;\n public queueList$: BehaviorSubject<any>;\n\n constructor() {\n super({ records: [], lists: [], attributeModelList: [], isFormSubmitted: SHARED.EMPTY, isApiValidated: null, selectedTemplate: SHARED.EMPTY, updatedData: null, isAllRowSelected: false, isExcludedApplicationIds: [], selectedQueueId: SHARED.EMPTY }, { name: BaseStore.storeName }); \n this.recordChange$ = new BehaviorSubject<any>([]);\n this.onDocumentAccept$ = new BehaviorSubject<any>({});\n this.onDailogClose$ = new BehaviorSubject<boolean>(false);\n this.openDocument$ = new BehaviorSubject<any>({});\n this.alertMessage$ = new BehaviorSubject<string>('');\n this.queueList$ = new BehaviorSubject<any>([]);\n }\n\n setList(data: T[]) {\n this.update({ lists: data });\n }\n\n setAttributeModelList(data: T[]) {\n this.update({ attributeModelList: data });\n }\n\n setIsFormSubmitted(data: any) {\n this.update({ isFormSubmitted: data });\n }\n\n setIsApiValidated(data: any) {\n this.update({ isApiValidated: data });\n }\n\n setIsShowMessage(data: any) {\n this.update({ isShowMessage: data });\n }\n\n setSelectedTemplate(data: any) {\n this.update({ selectedTemplate: data });\n }\n\n setRecordChange(value: any) {\n this.recordChange$.next(value);\n }\n\n setOnDocumentAccept(value: any) {\n this.onDocumentAccept$.next(value);\n }\n\n setOnDailogClose(value: any) {\n this.onDailogClose$.next(value);\n }\n\n setOpenDocument(value: any) {\n this.openDocument$.next(value);\n }\n\n setAlertMessage(value: any) {\n this.alertMessage$.next(value);\n }\n\n setQueueList(value: any) {\n this.queueList$.next(value);\n }\n\n setUpdatedData(value: any) {\n this.update({ updatedData: value });\n }\n\n setIsAllRowSelected(data: any) {\n this.update({ isAllRowSelected: data });\n }\n\n setIsExcludedApplicationIds(data: any) {\n this.update({ isExcludedApplicationIds: data });\n }\n\n}\n","import { QueryEntity } from '@datorama/akita';\nimport { BaseEntityState, BaseStore } from './base.store';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseModel } from '../models/base.model';\n\n/**\n * BaseQuery is a generic class that extends QueryEntity from Akita.\n * It provides methods to interact with the state of entities managed by the BaseStore.\n */\n@Injectable({ providedIn: 'root' })\nexport class BaseQuery<T extends BaseModel> extends QueryEntity<BaseEntityState<T>, T> {\n constructor(protected override store: BaseStore<T>) {\n super(store);\n }\n\n selectAllEntities() {\n return this.selectAll();\n }\n\n selectEntityById(id: string) {\n return this.selectEntity(id);\n }\n\n getLists(): Observable<any> {\n return this.select(state => state.lists);\n }\n\n getAttributeModelList(): Observable<any> {\n return this.select(state => state.attributeModelList);\n }\n\n getIsFormSubmitted(): Observable<any> {\n return this.select(state => state.isFormSubmitted);\n }\n\n getIsApiValidated(): Observable<any> {\n return this.select(state => state.isApiValidated);\n }\n\n getIsShowMessage(): Observable<any> {\n return this.select(state => state.isShowMessage);\n }\n\n getSelectedTemplate(): Observable<any> {\n return this.select(state => state.selectedTemplate);\n }\n\n getIsAllRowSelected(): Observable<any> {\n return this.select(state => state.isAllRowSelected);\n }\n\n getExcludedApplicationIds() : Observable<any> {\n return this.select(state => state.isExcludedApplicationIds);\n }\n\n\n getRecordChange() {\n return this.store.recordChange$.asObservable();\n }\n\n getOnDocumentAccept() {\n return this.store.onDocumentAccept$.asObservable();\n }\n\n getonDailogClose() {\n return this.store.onDailogClose$.asObservable();\n }\n\n getOpenDocument() {\n return this.store.openDocument$.asObservable();\n }\n\n getAlertMessage() {\n return this.store.alertMessage$.asObservable();\n }\n\n selectPage(): Observable<any> {\n return this.select(state => state['page']);\n }\n\n}\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AttributeModel } from '../../models/attribute.model';\nimport { BaseQuery } from '../../state/base.query';\nimport { BaseStore } from '../../state/base.store';\nimport { NgModel } from '@angular/forms';\nimport { SHARED } from '../../constant/SHARED';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-base-control',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './base-control.component.html',\n styleUrl: './base-control.component.scss',\n providers : [BaseStore]\n})\nexport class BaseControlComponent implements OnInit,OnChanges,OnDestroy {\n constructor(public baseStore: BaseStore<any>, public baseQuery: BaseQuery<any>) {}\n @Input() store !: BaseStore<any> | null;\n @Input() record: any;\n @Input() attributeModel! : AttributeModel;\n @Input() error : string = SHARED.EMPTY;\n @Output() onInput = new EventEmitter();\n @Output() onEnterKeydown = new EventEmitter();\n @Output() onBtnClick = new EventEmitter();\n @ViewChild(SHARED.TEXTBOXFIELD) textboxField!: NgModel;\n @ViewChild(SHARED.DROPDOWN) dropdown!: NgModel;\n @ViewChild(SHARED.TEXTAREA) textArea!: NgModel;\n static allAttributes: AttributeModel[] = [];\n query !: BaseQuery<any>\n private destroy$ = new Subject<void>();\n private attributeDestroy$ = new Subject<void>();\n\n ngOnInit(): void {\n this.addToAttributeList();\n this.baseQuery.getIsFormSubmitted()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if(res) {\n [this.textboxField, this.dropdown, this.textArea]\n .filter(control => control && control.control)\n .forEach(control => control.control.markAsTouched());\n this.baseStore.setIsFormSubmitted(false);\n }\n })\n\n }\n\n ngOnChanges(){\n if(this.store) {\n this.query = new BaseQuery(this.store)\n }\n }\n handleModelChange(event:any, valid: boolean|null, val?:any) { \n if (this.attributeModel?.name) {\n this.record[this.attributeModel?.name] = event;\n this.onInput.emit(event);\n }\n }\n\n private addToAttributeList() {\n if (this.attributeModel) {\n if (!BaseControlComponent.allAttributes.some(attr => (attr.name === this.attributeModel.name && attr.displayText === this.attributeModel.displayText))) {\n BaseControlComponent.allAttributes.push(this.attributeModel);\n }\n this.baseStore.setAttributeModelList(BaseControlComponent.allAttributes);\n }\n }\n\n // handleEnterKey(event:any, valid: boolean|null) {\n // if (this.attributeModel?.name) {\n // this.record[this.attributeModel?.name] = event;\n // this.onEnterKeydown.emit(event);\n // this.record[this.attributeModel?.name] = SHARED.EMPTY;\n // }\n // }\n\n handleButtonClick(event:MouseEvent){\n this.onBtnClick.emit(event);\n }\n\n getValue() : string | null | undefined {\n return this.record[this.attributeModel.name]\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<p>base-control works!</p>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\n\n/**\n * CheckBoxComponent\n */\n@Component({\n selector: 'check-box',\n templateUrl: './check-box.component.html',\n styleUrl: './check-box.component.scss',\n standalone : true,\n imports : [CommonModule,FormsModule, CheckboxModule]\n})\nexport class CheckBoxComponent extends BaseControlComponent {\n \n}\n","<div class=\"checkBoxContainer\">\n \n <div class=\"checkBox\">\n <p-checkbox\n [disabled]=\"attributeModel.readonly ?? false\"\n [binary]=\"true\"\n inputId=\"binary\"\n [label]=\"attributeModel.displayText ?? ''\"\n class=\"dynamic-checkbox\"\n #checkBox=\"ngModel\"\n [ngModel]=\"this.record[this.attributeModel.name]\"\n [style]=\"{\n '--checkbox-size': attributeModel.customColumnWidth || '20px',\n '--checkbox-height': attributeModel.customHeight || '20px'\n }\"\n [required]=\"attributeModel.isRequired ?? false\" \n (ngModelChange)=\"handleModelChange($event, checkBox.valid)\"\n >\n </p-checkbox>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n</div>","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'lib-button',\n standalone: true,\n imports : [CommonModule,InputTextModule, FormsModule, ButtonModule],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n})\nexport class ButtonComponent extends BaseControlComponent{}\n","<ng-container>\n <div class=\"btn-control\">\n <p-button\n type=\"button\"\n [label]=\"attributeModel.buttonLabel ?? 'Click Me'\"\n [disabled]=\"attributeModel.isDisabled ?? false\"\n [style]=\"{\n width: attributeModel.customButtonWidth\n ? attributeModel.customButtonWidth\n : 'auto',\n padding: attributeModel.customPadding\n ? attributeModel.customPadding\n : '0.5rem' \n }\"\n [icon]=\"attributeModel.icon ? attributeModel.icon : ''\"\n [iconPos]=\"attributeModel.iconPosition ?? 'left'\" \n [ngClass]=\"{\n 'p-button-primary': attributeModel.isPrimary ?? true,\n 'p-button-secondary': !attributeModel.isPrimary\n }\"\n (onClick)=\"handleButtonClick($event)\"\n></p-button>\n\n </div>\n </ng-container>","\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'text-box',\n templateUrl: './text-box.component.html',\n styleUrl: './text-box.component.scss',\n standalone : true,\n imports : [CommonModule,InputTextModule, FormsModule, TooltipModule]\n})\nexport class TextBoxComponent extends BaseControlComponent {\n override getValue() {\n if(this.record[this.attributeModel.name] == false){\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\n }else if( this.record[this.attributeModel.name] == true){\n return \"Yes\"\n }else{\n return this.record[this.attributeModel.name] ?? \"-\"\n }\n }\n}\n","<ng-container >\n <div class=\"\">\n\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"inputTextBox\">\n\n <input\n pInputText\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"attributeModel.placeholder ?? ''\"\n class=\"block p-inputtext w-full\"\n [pTooltip]=\"attributeModel.tooltip ?? ''\"\n [tooltipPosition]=\"attributeModel.toolTipPosition ?? '' \"\n [ngModel]=\"record?.[attributeModel.name] ?? ''\"\n [disabled]=\"attributeModel.disable ?? false\" \n [readonly]=\"attributeModel.readonly ?? false\"\n [name]=\"attributeModel.name ?? 'textBox'\"\n [id]=\"attributeModel.name ?? 'textBox'\"\n [required]=\"attributeModel.isRequired ?? false\" \n [ngStyle]=\"{\n width: attributeModel.customColumnWidth\n ? attributeModel.customColumnWidth\n : '',\n padding: attributeModel.customPadding ? attributeModel.customPadding : ''\n }\"\n #textboxField=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, textboxField.valid)\"\n [ngClass]=\"{'ng-dirty ng-invalid': (!textboxField.valid && textboxField.dirty)}\"\n />\n <div *ngIf=\"textboxField.errors?.['required'] && (textboxField.dirty || textboxField.touched)\" class=\"error-message\">\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\n </div>\n </div>\n </div>\n</ng-container>\n","export class ERROR {\n static ERROR = \"Error\";\n static VALIDATE_API_FAILED = \"API validation failed. Please review the input and try again.\";\n static VALIDATE_ACTION_API_FAILED = \"Validation action failed. Please check the configuration or try again later.\";\n static API_CONFIG_FAILED = \"Error loading app config:\";\n static API_CONFIG_LOADING_FAILED = \"App configuration not loaded. Ensure loadAppConfig() is called before accessing properties.\";\n static API_NAME_NOT_SET = \"API name is not set.\";\n static ERROR_FETCHING_DATA = \"Error fetching data:\";\n static UNABLE_TO_FETCH_QUEUE_LIST = \"Unable to fetch queue list.\";\n static NO_QUEUE_FOUND_WITH_ID = \"No queue found with the provided ID.\";\n static ERROR_FETCHING_WIDGET_DATA = \"Error fetching record widget data:\";\n static ERROR_MISSING_PARAMETERS = \"Required parameters are missing:\";\n static INVALID_INDEX = \"Invalid index:\";\n static ERROR_DELETE_DICTIONARY_ITEM = \"Failed to delete dictionary item with ID:\";\n static MISSING_REQUIRED_FIELD = \"Missing required fields:\";\n static API_VALIDATE_REQURIED = \"Api validation required\";\n}","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { ToastModule } from 'primeng/toast';\nimport { ConfirmationService, Message, MessageService } from 'primeng/api';\nimport { MessagesModule } from 'primeng/messages';\nimport { ButtonComponent } from '../../controls/button/button.component';\nimport { TextBoxComponent } from '../../controls/text-box/text-box.component';\nimport { SHARED } from '../../constant/SHARED';\nimport { BaseQuery } from '../../state/base.query';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BaseStore } from '../../state/base.store';\nimport { ERROR } from '../../constant/ERROR';\n\n@Component({\n selector: \"form-container\",\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n ConfirmDialogModule,\n ToastModule,\n MessagesModule,\n ButtonComponent,\n TextBoxComponent,\n ],\n templateUrl: \"./form-container.component.html\",\n styleUrl: \"./form-container.component.scss\",\n providers: [MessageService, ConfirmationService],\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormContainerComponent implements OnInit, OnDestroy {\n @Input() messages: Message[] = [];\n @Input() record: any;\n @Input() headerText: string | undefined;\n @Input() showSave:boolean = SHARED.FALSE\n @Input() disableSaveButton!: {isValid: boolean, data: string}\n @Output() onSave = new EventEmitter();\n @Output() onCancel = new EventEmitter();\n private destroy$ = new Subject<void>();\n \n constructor(private baseQuery: BaseQuery<any>, private baseStore: BaseStore<any>){}\n\n ngOnInit(): void {\n this.baseQuery.getIsShowMessage()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n console.log(res);\n if (res) {\n console.log(res);\n this.messages = [{ severity: SHARED.ERROR, detail: ERROR.API_VALIDATE_REQURIED }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n this.baseStore.setIsShowMessage(false);\n }, 3000);\n }\n });\n }\n \n handleSaveClick(){\n this.onSave.emit()\n }\n handleCancelClick(){\n this.onCancel.emit()\n\n }\n\n handleCreateBtnClick() {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div class=\"form-container\">\n <div class=\"text-900 font-bold text-xl form-header m-0 p-0\">\n <div class=\"form-header-container w-full mr-0\">\n <div class=\"form-header-title\"[innerHTML]=\"this.headerText\">\n </div>\n <div class=\"form-header-messege w-full\">\n <p-messages class=\"message-wrapper\" [(value)]=\"messages\" [enableService]=\"false\" />\n </div>\n </div>\n\n <div class=\"btn-wrapper\">\n <ng-content select=\"[headerButtons]\"></ng-content>\n @if(showSave){\n <button\n pButton\n pRipple\n label=\"Cancel\"\n (click)=\"handleCancelClick()\"\n class=\"p-button-outlined mr-2\"\n ></button>\n\n <button\n pButton\n class=\"p-button-success\"\n label=\"Save\"\n type=\"button\"\n tooltipPosition=\"bottom\"\n (click)=\"handleSaveClick()\"\n ></button>\n }\n <ng-content select=\"[headerButtons]\"></ng-content>\n </div>\n </div>\n \n \n <p-toast></p-toast>\n\n <div>\n <p-confirmDialog>\n <ng-template pTemplate=\"message\" let-message>\n <div class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\">\n <i class=\"pi pi-exclamation-circle text-6xl text-primary-500\"></i>\n <p>{{ message.message }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n </div> \n <div class=\"grid m-0 mt-3\">\n <div class=\"col-12 p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n ","\n/**\n * This class is used to store the API Paths for the application\n */\nexport class DATASOURCES{\n static QUEUES = \"Queues\"\n static DICTIONARY = \"DataDictionaries\"\n static ACTIONS = \"ActionConfigurations\"\n static WIDGET = \"Widgets\"\n static APIMANAGEMENT = \"ApiConfigurations\"\n static APPLICATION = \"Applications\"\n static DOCUMETS = \"Documents\"\n static RATIONALE = \"Rationales\"\n static Template = \"MessageTemplates\"\n static QUEUESAPICONFIG = \"ApiConfigurations/getChildParentFields\"\n static DELETEDICTIONARYITEM = \"DataDictionaries/dictionaryItems\"\n static APPLICATION_QUEUE_SEARCH = \"Applications/search/\"\n \n}","\n/**\n * URLS\n */\nexport class URLS{\n static CONFIGFILEURL = \"assets/config/api.config.json\"\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { URLS } from '../constant/URLS';\nimport { ERROR } from '../constant/ERROR';\n\n/**\n * This service is used to get the app configuration from the config file.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AppConfigService {\n\n private appConfig: any;\n private isConfigLoaded = false;\n\n constructor(private http: HttpClient) {}\n loadAppConfig(): Promise<void> {\n return firstValueFrom(this.http.get(URLS.CONFIGFILEURL))\n .then(config => {\n this.appConfig = config;\n this.isConfigLoaded = true;\n })\n .catch(err => {\n console.error(ERROR.API_CONFIG_FAILED, err);\n throw err;\n });\n }\n\n private ensureConfigLoaded(): void {\n if (!this.isConfigLoaded) {\n throw new Error(ERROR.API_CONFIG_LOADING_FAILED);\n }\n }\n\n get apiBaseUrl() {\n this.ensureConfigLoaded();\n return this.appConfig?.catQwUrl;\n }\n\n get apiUrl() {\n this.ensureConfigLoaded();\n return this.appConfig?.apiUrl;\n }\n\n get interactBaseApi() {\n this.ensureConfigLoaded();\n return this.appConfig?.interactBaseApi;\n }\n\n get visibilityOptions() {\n this.ensureConfigLoaded();\n return this.appConfig?.visibilityOption;\n }\n\n get swaggerUrl() {\n this.ensureConfigLoaded();\n return this.appConfig?.swaggerUrl;\n }\n}\n","import { SelectItem } from \"primeng/api\";\n\nexport class List {\n dataSource?: string;\n records: any[];\n label: string;\n value: string;\n forProperty!: string;\n items: SelectItem[];\n allItems: SelectItem[];\n\n constructor(dataSource: string, records: any[] = [], label: string, value: string, forProperty?: string) {\n this.dataSource = dataSource\n this.records = records;\n this.label = label;\n this.value = value;\n this.dataSource = dataSource;\n this.forProperty = forProperty ?? \"\"\n this.items = records?.map((i) => {\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\n });\n this.allItems = this.records?.map((i) => {\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\n });\n }\n\n}\n","import { firstValueFrom } from \"rxjs\";\nimport { List } from \"../models/list.model\";\nimport { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { AppConfigService } from \"./app-config.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListService {\n constructor(public http: HttpClient, public configService: AppConfigService) {}\n\n async getLists(models: any[]) {\n const lists: List[] = [];\n\n for (const model of models) {\n if (model.dataSource) {\n try {\n const response = await firstValueFrom(\n this.getbyPathName<{ data: any[] }>(model.dataSource)\n );\n const listData = response.data || response;\n const list = new List(\n model.dataSource,\n listData,\n model.listLabelProperty as string,\n model.listValueProperty as string,\n model.dataSource\n );\n list.forProperty = model.name;\n lists.push(list);\n } catch (error) {\n console.error(`Error fetching data from ${model.dataSource}:`, error);\n }\n } \n else if (model.options) {\n const list = new List(\n model.dataSource,\n model.options as any[],\n model.listLabelProperty as string,\n model.listValueProperty as string,\n undefined\n );\n list.forProperty = model.name;\n lists.push(list);\n }\n }\n return lists;\n }\n\n getbyPathName<T>(data: string) {\n return this.http.get<T>(this.configService.apiBaseUrl + data);\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { BaseStore } from './base.store';\nimport { SHARED } from '../constant/SHARED';\nimport { BaseModel } from '../models/base.model';\nimport { AppConfigService } from '../services/app-config.service';\nimport { ListService } from '../services/list.service';\nimport { DATASOURCES } from '../constant/DATASOURCES';\n\n@Injectable({providedIn:'root'})\nexport class BaseService<T extends BaseModel> {\n public _pathName: string | undefined = SHARED.EMPTY;\n protected lists!:string[];\n protected http: HttpClient;\n protected list!:[]\n constructor(http: HttpClient, private store: BaseStore<T>, private appConfigService: AppConfigService, protected listService : ListService) {\n \n this.http = http;\n }\n \n\n get apiUrl(): string {\n return this.appConfigService.apiBaseUrl;\n }\n\n get interactBaseApi(): string {\n return this.appConfigService.interactBaseApi;\n }\n\n set pathName(value: string) {\n this._pathName = value;\n }\n\n async initList() {\n if(this.list){\n let response = await this.listService.getLists(this.list)\n if (response && response.length > 0) {\n this.store.setList(response as any)\n }\n }\n \n } \n\n create(entity: T): Observable<T> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.post<T>(baseUrl + this._pathName, entity).pipe(\n tap((newEntity: T) => this.store.add(newEntity))\n );\n }\n\n getAll(): Observable<T[]> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n const url = `${baseUrl}${this._pathName}`;\n return this.http.get<T[]>(url).pipe(\n tap((entities: T[]) => this.store.set(entities))\n );\n }\n \n getPaginatedList( search: string = SHARED.EMPTY, page: number = 1, limit: number = 10, sortBy: string = SHARED.UPDATEDAT, order: string = SHARED.DESC, type: string = SHARED.EMPTY, isActive: any = SHARED.EMPTY, pathName?:string): Observable<T[]> {\n this._pathName = (!!pathName ? pathName : this._pathName);\n const paramsObj: Record<string, string> = Object.fromEntries(\n Object.entries({\n searchKey: search,\n page: page ? page.toString() : SHARED.EMPTY,\n limit: limit ? limit.toString() : SHARED.EMPTY,\n sortBy: sortBy || SHARED.UPDATEDAT,\n order: order || SHARED.EMPTY,\n type: type || SHARED.EMPTY,\n isActive: isActive\n }).filter(([_, value]) => value !== SHARED.EMPTY)\n );\n \n const params = new URLSearchParams(paramsObj);\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n const url = `${baseUrl}${this._pathName}${params.toString() ? SHARED.QUESTION_MARK + params.toString() : SHARED.EMPTY}`;\n return this.http.get<T[]>(url).pipe(\n tap((entities: T[]) => this.store.set(entities))\n );\n }\n\n getById(id: string): Observable<T> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.get<T>(`${baseUrl}${this._pathName}/${id}`).pipe(\n tap((entity: T) => this.store.upsert(id, entity))\n );\n }\n\n update(id: string, entity: T): Observable<T> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.put<T>(`${baseUrl}${this._pathName}/${id}`, entity).pipe(\n tap((updatedEntity: T) => this.store.update(id, updatedEntity))\n );\n }\n\n delete(id: string): Observable<void> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.delete<void>(`${baseUrl}${this._pathName}/${id}`).pipe(\n tap(() => this.store.remove(id))\n );\n }\n \n}\n","import { SHARED } from \"../../constant/SHARED\";\n\nexport class TablePrimaryModel{\n name!: string;\n headers!: any[];\n records!: any[];\n editPermission : string = SHARED.EMPTY \n deletePermission : string = SHARED.EMPTY \n}\n\nexport interface tableSortOrderModel{\n [key: string]: string;\n}","import { AttributeModel } from \"../../models/attribute.model\";\n\nexport class TablePrimaryHeaderModel{\n name!: string;\n attributes!: AttributeModel;\n width!: string;\n}","import { Injectable } from \"@angular/core\";\nimport { TablePrimaryModel } from \"../table-primary/models/table-primary.model\";\nimport { SHARED } from \"../constant/SHARED\";\nimport { TablePrimaryHeaderModel } from \"../table-primary/models/table-primary-header.model\";\n\n\n/**\n * TableBuilder\n */\n@Injectable({\n providedIn:'root'\n})\nexport class TableBuilder{\n\n public hiddenHeaders: string[] = [];\n buildTable(records: any[], headerWidths?: { [key: string]: string }, editPermission?:string ,deletePermission?:string): TablePrimaryModel {\n const table = new TablePrimaryModel();\n table.records = records;\n if (records && records.length > 0) {\n table.headers = this.buildHeaders(Object.keys(records[0]),headerWidths);\n } else {\n table.headers = [];\n }\n table.editPermission = editPermission ?? SHARED.EMPTY\n table.deletePermission = deletePermission ?? SHARED.EMPTY\n return table;\n }\n \n private buildHeaders(keys: string[], headerWidths: { [key: string]: string } | undefined): TablePrimaryHeaderModel[] {\n \n const headers: TablePrimaryHeaderModel[] = [];\n const filteredKeys = keys.filter(\n key => key !== SHARED.ID && !this.hiddenHeaders.includes(key) // hide headers\n );\n for (const key of filteredKeys) {\n const header = new TablePrimaryHeaderModel();\n header.name = key;\n if(headerWidths) header.width = headerWidths[key] || SHARED.WIDTH_AUTO;\n headers.push(header);\n }\n return headers;\n }\n}","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseModel } from '../../models/base.model';\nimport { TableBuilder } from '../../services/table.builder';\nimport { BaseService } from '../../state/base.service';\nimport { TablePrimaryModel } from '../../table-primary/models/table-primary.model';\nimport { MetaDataModel } from '../../models/meta-data.model';\nimport { SHARED } from '../../constant/SHARED';\n\n/**\n * BaseListComponent is a generic class that provides a base implementation for a list component.\n */\n@Component({\n selector: 'lib-base-list',\n templateUrl: './base-list.component.html',\n styleUrl: './base-list.component.scss',\n})\nexport class BaseListComponent<T extends BaseModel> implements OnChanges {\n @Input() refreshTable : boolean = false;\n table!: TablePrimaryModel;\n metaData!: MetaDataModel;\n deletePermission :string = SHARED.EMPTY\n editPermission : string = SHARED.EMPTY\n constructor(protected service: BaseService<T>, protected builder: TableBuilder){}\n\n ngOnChanges(){\n if(this.refreshTable){\n this.handleRefreshTable()\n }\n }\n init(dynamicWidth?:any){\n this.service.getPaginatedList().subscribe((res:any)=>{\n this.table = this.builder.buildTable(res.data, dynamicWidth, this.editPermission, this.deletePermission);\n this.metaData = res.metadata;\n\n this.afterTableBuild() \n });\n }\n\n afterTableBuild(){\n\n }\n\n handleRefreshTable(){\n this.init()\n }\n}\n","<p>base-list works!</p>\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { FormsModule } from '@angular/forms';\nimport { SelectItem } from 'primeng/api';\nimport { ListService } from '../../services/list.service';\nimport { List } from '../../models/list.model';\nimport { BaseQuery } from '../../state/base.query';\nimport { BaseStore } from '../../state/base.store';\n\n/**\n * DropdownComponent\n */\n@Component({\n selector: 'dropdown',\n standalone: true,\n imports: [CommonModule, DropdownModule, FormsModule],\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DropdownComponent extends BaseControlComponent{\n options: SelectItem[] | undefined = [];\n list!: List | undefined;\n childListRecords: any[] = [];\n @Input() isStaticDropdown = false;\n\n constructor(baseStore: BaseStore<any>,public listService: ListService, baseQuery: BaseQuery<any>) {\n super(baseStore, baseQuery);\n }\n\n override ngOnChanges() {\n if(this.store) {\n this.query = new BaseQuery(this.store);\n }\n if (this.attributeModel.options) {\n this.options = this.attributeModel.options;\n }\n if (!this.isStaticDropdown) {\n this.handleGetAndSetList();\n }else{\n this.options = this.attributeModel.options?.map((x: any) => {\n return { label: x[this.attributeModel?.listLabelProperty || 0], value: x[this.attributeModel?.listValueProperty || 0] };\n });\n }\n }\n\n handleGetAndSetList() {\n try {\n this.query.getLists().subscribe((response: List[]) => {\n if (response) {\n this.mapResponseToOptions(response);\n }\n });\n } catch (error) {\n console.error('Error fetching data:', error);\n }\n }\n\n private mapResponseToOptions(lists: List[]): SelectItem[] {\n if (lists && lists.length > 0) {\n const clonedLists = JSON.parse(JSON.stringify(lists));\n this.list = clonedLists.find((x: any) => x.forProperty === this.attributeModel.name);\n if (this.list) {\n this.options = this.list?.items ?? [];\n }\n }\n if (!this.options || this.options.length === 0) {\n this.options = this.attributeModel.options ?? [];\n }\n return this.options;\n }\n\n\n override handleModelChange(event: any, valid: boolean | null, val?: any): void {\n super.handleModelChange(event, valid);\n }\n}\n","<ng-container>\n <div class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"dropdownbox\">\n\n <p-dropdown \n \n [options]=\"options\" \n [disabled]=\"attributeModel.readonly ?? false\"\n [showClear]=\"true\"\n [name]=\"attributeModel.name ?? 'testSingleSelect'\" \n [ngModel]=\"record[attributeModel.name]\" \n [placeholder]=\"attributeModel.placeholder ?? ''\" \n [required]=\"attributeModel.isRequired ?? false\"\n filterBy=\"label\" \n [filter]=\"attributeModel.filter ?? false\" \n class=\"dropdownFeild\"\n #dropdown=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, dropdown.valid)\" \n [ngClass]=\"{'ng-dirty ng-invalid': (!dropdown.valid && dropdown.dirty)}\"\n appendTo=\"body\" \n optionLabel=\"label\" \n optionValue=\"value\">\n</p-dropdown>\n<div *ngIf=\"dropdown.errors?.['required'] && (dropdown.dirty || dropdown.touched)\" class=\"error-message\">\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\n</div>\n</div>\n\n</ng-container>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidatorService {\n\n constructor() { }\n\n handleValidateRecords(record:any){\n return true\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormStateService {\n private formChangesSubject$: BehaviorSubject<boolean>;\n private isFormNavigating$: BehaviorSubject<boolean>;\n private isShowConfirmation$: BehaviorSubject<boolean>;\n constructor() {\n this.formChangesSubject$ = new BehaviorSubject<boolean>(false)\n this.isFormNavigating$ = new BehaviorSubject<boolean>(false)\n this.isShowConfirmation$ = new BehaviorSubject<boolean>(false)\n }\n\n setIsFormNavigating(isNavigation: boolean) {\n this.isFormNavigating$.next(isNavigation)\n }\n\n getIsFormNavigating() {\n return this.isFormNavigating$.getValue()\n }\n \n selectIsFormNavigating() {\n return this.isFormNavigating$.asObservable()\n }\n\n setIsFormSaved(hasChanges: boolean) {\n this.formChangesSubject$.next(hasChanges);\n }\n\n getIsFormSaved(): boolean {\n return this.formChangesSubject$.getValue();\n }\n\n selectIsFormSaved() {\n return this.formChangesSubject$.asObservable()\n }\n\n setShowConfirmation(value : boolean){\n return this.isShowConfirmation$.next(value)\n }\n\n selectShowConfirmation(){\n return this.isShowConfirmation$.asObservable()\n }\n\n \n}\n","import { Component, EventEmitter, HostListener, inject, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, takeUntil } from 'rxjs';\nimport { ValidatorService } from '../../services/validator.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SHARED } from '../../constant/SHARED';\nimport { AttributeModel } from '../../models/attribute.model';\nimport { BaseModel } from '../../models/base.model';\nimport { BaseStore } from '../../state/base.store';\nimport { BaseService } from '../../state/base.service';\nimport { BaseQuery } from '../../state/base.query';\nimport { ERROR } from '../../constant/ERROR';\nimport { FormStateService } from '../../services/form-state.service';\nimport { ConfirmationService } from 'primeng/api';\n\n/**\n * BaseFormComponent \n */\n@Component({\n selector: 'base-form',\n templateUrl: './base-form.component.html',\n styleUrls: ['./base-form.component.scss'],\n providers : [ValidatorService]\n})\nexport class BaseFormComponent<T extends BaseModel> {\n protected formStateService = inject(FormStateService)\n protected subscriptions: Subscription[];\n record!: T;\n initialRecord!: T;\n public recordChange = new BehaviorSubject<any>({});\n public destroy$ = new Subject<void>();\n @Output() onSave = new EventEmitter<any>();\n @Output() onFormNavigate = new EventEmitter<any>();\n @Output() onCancel = new EventEmitter<any>();\n sanitizedInitialRecord: any\n sanitizedCurrentRecord: any\n constructor( protected service: BaseService<T>, protected validatorService?: ValidatorService, protected router?: Router, protected activatedRoute?: ActivatedRoute, protected baseStore?: BaseStore<T>, protected baseQuery?: BaseQuery<T>,\n ) {\n this.subscriptions = [];\n this.record = {} as T;\n }\n\n message:any[] = []\n attributeMode!:AttributeModel;\n\n get currentState() {\n return this.baseQuery?.getValue();\n }\n\n\n init(): void {\n this.service.initList();\n this.baseStore?.setRecordChange(SHARED.EMPTY);\n let id = this.activatedRoute ? this.activatedRoute.snapshot.params[SHARED.ID] : '';\n if ((id !== SHARED.ZERO.toString()) && id) {\n this.service.getById(id).subscribe((res: any) => {\n this.record = JSON.parse(JSON.stringify(res));\n this.baseStore?.setRecordChange(res);\n this.initialRecord = JSON.parse(JSON.stringify(res));\n this.recordChange.next(res);\n })\n } else {\n this.initialRecord = structuredClone(this.record);\n }\n this.formStateService.selectIsFormNavigating()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.checkUnsavedChanges()\n }\n });\n }\n\n @HostListener('window:beforeunload', ['$event'])\n handleBeforeUnload(event: BeforeUnloadEvent) {\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\n const isSaved = this.formStateService.getIsFormSaved();\n if (hasChanges && !isSaved) {\n event.preventDefault();\n event.returnValue = SHARED.BROWSER_WARNING;\n }\n }\n\n checkUnsavedChanges() {\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\n const isSaved = this.formStateService.getIsFormSaved();\n this.formStateService.setShowConfirmation(hasChanges && !isSaved);\n }\n\n private normalizeRecord(record: any): Record<string, any> {\n if (!record) return {};\n return Object.keys(record).reduce((acc, key) => {\n let value = record[key];\n if (value === undefined || value === SHARED.EMPTY) {\n value = null;\n }\n acc[key] = value;\n return acc;\n }, {} as Record<string, any>);\n }\n\n handleSubmit() {\n const validateRecords = this.validatorService \n ? this.validatorService.handleValidateRecords(this.record) \n : true;\n \n if(!this.record || Object.keys(this.record).length === 0) return;\n if(this.baseStore) this.baseStore.missingFields = [];\n if (this.baseQuery) {\n this.baseQuery.getAttributeModelList()\n .pipe(takeUntil(this.destroy$))\n .subscribe((attributeModels: AttributeModel[]) => {\n attributeModels.forEach(attr => {\n const handleCheckAndAddMissingField = (value: any) => {\n if (attr.isRequired &&\n (value === undefined || value === null || (typeof value === SHARED.STRING && value.trim() === SHARED.EMPTY))\n ) {\n if(this.baseStore) this.baseStore.missingFields.push(attr.displayText || attr.name);\n }\n };\n \n if (attr.isRequired && attr.name in this.record) {\n handleCheckAndAddMissingField(this.record[attr.name]);\n }\n \n [SHARED.DICTIONARYITEMS, SHARED.DATAITEMS].forEach(key => {\n this.record[key]?.forEach((val: any) => {\n if(val.hasOwnProperty(attr.name)) {\n handleCheckAndAddMissingField(val[attr.name])\n }\n });\n });\n });\n if (this.baseStore && this.baseStore.missingFields.length > 0) {\n if(this.baseStore) this.baseStore.setIsFormSubmitted(true);\n console.error(ERROR.MISSING_REQUIRED_FIELD, this.baseStore.missingFields);\n } else {\n if(!this.currentState?.isApiValidated && this.currentState?.isApiValidated !== null) {\n this.baseStore?.setIsShowMessage(!this.currentState?.isApiValidated);\n }\n else if(validateRecords) {\n if(!this.record || Object.keys(this.record).length === 0) return;\n if (this.record._id) {\n this.handleUpdateRecord();\n } else {\n this.handleAddRecord();\n }\n }\n }\n });\n }\n }\n\n handleUpdateRecord(){\n if(!this.record._id || Object.keys(this.record).length === 0) return;\n this.service.update(this.record._id, this.record).subscribe({\n next: (response: T) => {\n console.log('Record updated:', response);\n this.record = {} as T;\n this.baseStore?.setIsApiValidated(null);\n this.onFormNavigate.emit(response);\n },\n error: (error) => {\n console.error('Error updating record:', error);\n }\n })\n }\n\n handleAddRecord() {\n if (!this.record || Object.keys(this.record).length === 0) return;\n this.service.create(this.record).subscribe({\n next: (response: T) => {\n console.log('Record created:', response);\n this.record = {} as T;\n this.baseStore?.setIsApiValidated(null);\n this.onFormNavigate.emit(response); \n },\n error: (error) => {\n console.error('Error creating record:', error);\n }\n })\n }\n\n handleCancel(){\n if(this.baseStore) this.baseStore.missingFields = [];\n this.onCancel.emit();\n }\n\n ngOnDestroy(): void {\n if(this.baseStore) {\n this.baseStore.setAttributeModelList([]);\n this.baseStore.setIsApiValidated(null);\n this.baseStore?.setIsShowMessage(null);\n } \n this.destroy$.next();\n this.destroy$.complete();\n this.formStateService.setIsFormNavigating(false)\n this.formStateService.setIsFormSaved(false)\n }\n}\n","<p>base-form works!</p>\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { SHARED } from '../constant/SHARED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateParserService {\n\n constructor() { }\n\n parseDate(date:any) {\n\n\t\tif (\n\t\t\tmoment(date, SHARED.DATE_FORMAT_TYPE2, true).isValid()\n\t\t) {\n\t\t\tconst date1 = date.toString().split(SHARED.HIPHEN)[0];\n\t\t\tconst month = date.toString().split(SHARED.HIPHEN)[1];\n\t\t\tconst year = date.toString().split(SHARED.HIPHEN)[2];\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\n\t\t}\n\t\telse if (\n\t\t\tmoment(date, SHARED.DATE_FORMAT, true).isValid()\n\t\t) {\n\t\t\tconst date1 = date.toString().split(SHARED.SLASH)[0];\n\t\t\tconst month = date.toString().split(SHARED.SLASH)[1];\n\t\t\tconst year = date.toString().split(SHARED.SLASH)[2];\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\n\t\t}\n\t\telse if (moment(date, SHARED.DATE_FORMAT_TYPE3, true).isValid()) {\n\t\t\tconst dateParts = date.toString().split(SHARED.HIPHEN);\n\t\t\tconst year = dateParts[0];\n\t\t\tconst month = dateParts[1];\n\t\t\tconst day = dateParts[2];\n\t\t\treturn moment.utc(`${year}-${month}-${day}`).toDate();\n\t\t}\n else if (\n \n\t\t\tdate instanceof Date ||\n\t\t\tnew Date(date).toString() != SHARED.INVALIDDATE\n\t\t) {\n\n\t\t\tconst result = new Date(date);\n\t\t\tresult.setHours(0, 0, 0, 0);\n\t\t\treturn moment.utc(`${result.getFullYear()}-${result.getMonth()+1}-${result.getDate()}`).toDate();\n\t\t}\n\t\telse {\n\t\t\tthrow new Error(SHARED.INVALIDDATE);\n\t\t}\n\n\t\treturn SHARED.INVALIDDATE\n\t}\n\n}\n","import { Component, OnChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { DateParserService } from '../../services/date-parser.service';\nimport { CalendarModule } from 'primeng/calendar';\nimport { FormsModule } from '@angular/forms';\nimport { SHARED } from '../../constant/SHARED';\nimport moment from 'moment';\nimport { BaseStore } from '../../state/base.store';\nimport { BaseQuery } from '../../state/base.query';\n\n@Component({\n selector: 'date',\n standalone: true,\n imports: [CommonModule, CalendarModule, FormsModule],\n templateUrl: './date.component.html',\n styleUrl: './date.component.scss',\n})\nexport class DateComponent extends BaseControlComponent implements OnChanges{\n constructor(baseStore: BaseStore<any>, public dateService : DateParserService, baseQuery: BaseQuery<any>){\n super(baseStore, baseQuery)\n }\n override ngOnChanges(): void {\n if(this.attributeModel.readonly){\n this.getValue()\n }else{\n\n this.record[this.attributeModel.name] = this.dateService.parseDate(this.record[this.attributeModel?.name]) ??\n new Date();\n }\n }\n override getValue() {\n if (this.record[this.attributeModel.name]) {\n const formattedDate = moment(this.record[this.attributeModel.name]).format('DD/MM/YYYY');\n if(formattedDate == \"Invalid date\"){\n return SHARED.HIPHEN\n }else{\n return formattedDate\n }\n }\n return SHARED.EMPTY\n }\n \n}\n","@if (attributeModel && record) {\n<div class=\"\">\n <div class=\"mb-2\">\n <label>{{\n attributeModel?.displayText\n ? attributeModel?.displayText\n : attributeModel?.name\n }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n @if (attributeModel.readonly) {\n <div class=\"mb-2\" [ngStyle]=\"{ 'font-size': '14px', color: '#0F1729', 'font-weight':'600' }\">\n <label>{{ getValue() }}</label>\n </div>\n } @else {\n <div>\n <p-calendar\n [showIcon]=\"attributeModel.showCalenderIcon ?? true\"\n inputId=\"icon\"\n [disabled]=\"attributeModel?.readonly ?? false\"\n [required]=\"attributeModel?.isRequired ?? false\"\n [name]=\"attributeModel?.name ? attributeModel?.name : 'testDatePicker'\"\n [placeholder]=\"\n attributeModel.placeholder ? attributeModel.placeholder : ''\n \"\n [yearRange]=\"attributeModel.yearRange ?? '1950 : 2050'\"\n [title]=\"attributeModel.title ? attributeModel.title : ''\"\n [(ngModel)]=\"record[attributeModel?.name]\"\n #dateField=\"ngModel\"\n [dateFormat]=\"'dd/mm/yy'\"\n appendTo=\"body\"\n (ngModelChange)=\"handleModelChange($event, dateField.valid)\"\n [ngClass]=\"{\n 'ng-dirty ng-invalid': !dateField.valid && error == attributeModel?.name\n }\"\n [hourFormat]=\"attributeModel?.hourFormat ? '24' : ''\"\n >\n </p-calendar>\n </div>\n }\n</div>\n\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { FormsModule } from '@angular/forms';\nimport { FileUploadModule } from 'primeng/fileupload';\n\n@Component({\n selector: 'file-upload',\n standalone: true,\n imports: [CommonModule, FormsModule, FileUploadModule],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.scss',\n})\nexport class FileUploadComponent extends BaseControlComponent {\n\n handleSingleUpload(event:any){\n console.log(event)\n }\n}\n","<ng-container class=\"documentContainer\">\n @if(!attributeModel.hideLabelOnForm){\n <div class=\"mb-2\">\n <label class=\"form-header-label\">{{ attributeModel?.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n }\n<div class=\"card flex justify-content-center\">\n <p-fileUpload \n mode=\"basic\" \n [chooseLabel]=\"record[attributeModel.name] ? attributeModel.displayText : 'No Files'\"\n chooseIcon=\"pi pi-plus\"\n [name]=\"attributeModel?.name\"\n accept=\"image/*,application/pdf\" \n [maxFileSize]=\"209715200\" class=\"fileUploader\"\n (onSelect)=\"handleSingleUpload($event)\" />\n</div>\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'capitalizeWords',\n standalone: true,\n})\nexport class CapitalizeWordsPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) return value;\n return value\n .split(' ')\n .map(word => \n word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n )\n .join(' ');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\n\n@Component({\n selector: 'text-area',\n templateUrl: './text-area.component.html',\n styleUrl: './text-area.component.scss',\n standalone : true,\n imports : [CommonModule ,InputTextareaModule, FormsModule]\n})\nexport class TextAreaComponent extends BaseControlComponent {\n @Input() rowspan : number = 0\n override getValue() {\n if(this.record[this.attributeModel.name] == false){\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\n }else if( this.record[this.attributeModel.name] == true){\n return \"Yes\"\n }else{\n return this.record[this.attributeModel.name] ?? \"-\"\n }\n}\n}\n","<ng-container class=\"textAreaContainer\">\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n @if (attributeModel.readonly) {\n <div class=\"mb-2\" [ngStyle]=\"{'font-size':'14px', 'color':'#0F1729', 'font-weight':'600' }\">\n <label class=\"text-value-wrapper\" [ngStyle]=\"{color: attributeModel.textColorOnReadonly}\">{{ getValue() }}</label>\n </div>\n } @else {\n <div class=\"textAreaControl\">\n <textarea\n pInputTextarea\n [rows]=\"rowspan ?? 3\"\n cols=\"30\"\n [disabled]=\"attributeModel?.readonly ?? false\"\n [ngModel]=\"record[attributeModel.name]\"\n [name]=\"attributeModel.name ?? 'textArea'\"\n [required]=\"attributeModel?.isRequired ?? false\"\n [ngStyle]=\"{\n width: attributeModel.customColumnWidth\n ? attributeModel.customColumnWidth\n : ''\n }\"\n #textArea=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, textArea.valid)\"\n [ngClass]=\"{\n 'ng-dirty ng-invalid':\n (!textArea.valid && error == attributeModel?.name)\n \n }\"\n ></textarea>\n <div *ngIf=\"textArea.errors?.['required'] && (textArea.dirty || textArea.touched)\" class=\"error-message\">\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\n </div>\n </div>\n }\n</ng-container>\n","import { Component } from '@angular/core';\nimport { SHARED } from '../../constant/SHARED';\n\n@Component({\n selector: 'queue-search-customer',\n standalone: false,\n templateUrl: './queue-search-customer.component.html',\n styleUrl: './queue-search-customer.component.scss',\n})\nexport class QueueSearchCustomerComponent {\n\n constructor() {}\n\n queues: any[] = [\n { name: SHARED.ALL, code: SHARED.QUEUE1 },\n { name: SHARED.UK, code: SHARED.QUEUE2 },\n { name: SHARED.INTERNATIONAL, code: SHARED.QUEUE3 }\n ];\n queueData :any[]=[]\n selectedQueue: any;\n\n onSearch() {\n console.log(SHARED.SELECTED_QUEUE, this.selectedQueue);\n }\n}\n","<div class=\"flex mt-5 xl:mt-0 xl:justify-content-between xl:align-items-center vh-100\">\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\">\n <div class=\"p-inputgroup border-round-left bg-white\">\n <span class=\"p-inputgroup-addon bg-white\">\n <i class=\"pi pi-search\"></i>\n </span>\n <input type=\"text\" class=\"border-none h-44 border-noround-right bg-white\" pInputText placeholder=\"Search with Applicaiton no., Name or Address\" />\n </div>\n </div>\n <div class=\"p-field m-0 p-0 py-2 border-round-right border-noround-left\">\n <p-dropdown \n [styleClass]=\"'bg-white font-bold'\"\n [options]=\"queues\" \n [(ngModel)]=\"selectedQueue\" \n placeholder=\"All queue\"\n optionLabel=\"name\"\n class=\"left-arrow-dropdown\"\n ></p-dropdown>\n </div>\n <div class=\"p-field p-0 m-0 ml-3\">\n <button class=\"py-3 border-none\" pButton type=\"button\" label=\"Search\" (click)=\"onSearch()\"></button>\n </div>\n </div>\n ","export class ROUTES {\n static RECORD = 'record/';\n static QUEUE_FORM = \"/admin/queue/\";\n static DICTIONARY_CREATE_FORM = '/DataDictionaries';\n static DICTIONARY = '/DataDictionaries/';\n static APIMANAGEMENT = '/apiManagement/';\n static APICONFIG = 'apiConfig';\n static VALIDATEAPI = 'ApiConfigurations/validateApi';\n static APPLICATION = \"application/\";\n static APIPROPERTIES = \"ApiConfigurations/get-parent\";\n static APPLICATION_WIDGET_CACHE = \"Widgets/evaluateFromCache\";\n static APPLICATION_WIDGET = \"Widgets/evaluate\";\n static DOCUMENTALERT = \"alerts/documentId\";\n static VALIDATE_ACTIONS = 'ActionConfigurations/validateApi';\n static EVALUATE_BY_WIDGETNAME = \"Widgets/evaluateByWidgetName\";\n static GET_ALL_UNDERWRITER_TEAMLEAD = \"ApplicationAssignments/getAllUnderwriterTeamlead/\";\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RippleModule } from 'primeng/ripple';\nimport { ButtonModule } from 'primeng/button';\nimport { Router, RouterModule } from '@angular/router';\nimport { ROUTES } from '../../constant/ROUTES';\nimport { SHARED } from '../../constant/SHARED';\nimport { BadgeModule } from 'primeng/badge';\n\n@Component({\n selector: 'block-list',\n standalone: true,\n imports: [CommonModule, RippleModule, ButtonModule, RouterModule, BadgeModule],\n templateUrl: './block-list.component.html',\n styleUrls: ['./block-list.component.scss'], // Fixed the typo: styleUrl -> styleUrls\n})\nexport class BlockListComponent {\n // @Input() list!: any;\n @Input() queueData!: any[];\n @Input() showQueueDataForm : boolean = true\n @Output() queueDataById: EventEmitter<any> =\n new EventEmitter<any>();\n\n selectedQueueId: any;\n constructor(public router : Router){}\n\n ngOnChanges(){\n this.queueData = this.queueData.map((queue) => {\n if (queue.name === SHARED.UK) {\n return { ...queue, itemCount: 5 };\n } else if (queue.name === SHARED.INTERNATIONAL) {\n return { ...queue, itemCount: 2 }; \n }\n return queue;\n });\n this.queueDataById.emit(this.queueData[0]?._id)\n this.selectedQueueId=this.queueData[0]?._id;\n // this.handleQueueClick(this.list[0]._id, this.showQueueDataForm);\n }\n\n\n\n insertQueue(){\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO])\n }\n\n\n handleQueueClick(queueId:any, showQueueDataForm:any){\n this.selectedQueueId=queueId;\n if(showQueueDataForm){\n this.router.navigateByUrl(ROUTES.QUEUE_FORM+queueId);\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\n }else{\n this.queueDataById.emit(queueId)\n }\n }\n}\n","<div class=\"card p-4 pr-3 mb-0\">\n <!-- <div class=\"px-4 w-full flex\">\n <button pButton pRipple label=\"Add New Queue\" routerLinkActive=\"router-link-active\" icon=\"pi pi-plus font-semibold\" class=\"py-3 justify-content-center font-semibold w-full border-round\" (click)=\"insertQueue()\"></button>\n </div> -->\n <div class=\"queues overflow-y-scroll scrollable\">\n\n @for(queue of queueData; let i = $index; track queue){\n <div class=\"flex flex-column gap-5 overflow-y-auto scrollable kanban-list\" [ngClass]=\"i !== 0 ? 'mt-2 pt-1' : ''\" #listEl style=\"min-height:2rem\" (click)=\"handleQueueClick(queue._id, false)\" >\n <div class=\"flex flex-column py-4 px-3 cursor-pointer queue-list-wrapper\" [ngClass]=\"{'active-queue-wrapper': queue._id === this.selectedQueueId}\">\n <div class=\"flex text-center justify-content-between flex align-items-center\">\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\n <span class=\"text-color queue-name font-semibold\"\n [ngClass]=\"{'active-title-wrapper': queue._id === this.selectedQueueId}\"\n >{{queue.name}}</span>\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" />\n </div>\n </div>\n </div>\n }\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\n <div class=\"flex text-center justify-content-between flex align-items-center\">\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\n <span class=\"text-color queue-name font-semibold\"\n >Total Loss</span>\n <p-badge [value]=\"11\" severity=\"primary\" />\n </div>\n </div>\n </div>\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\n <div class=\"flex text-center justify-content-between flex align-items-center\">\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\n <span class=\"text-color queue-name font-semibold\"\n >Repair</span>\n <p-badge [value]=\"7\" severity=\"primary\" />\n </div>\n </div>\n </div>\n </div>\n</div> ","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SHARED } from '../constant/SHARED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionService {\n\n constructor(public router : Router) {\n\n }\n\n getUserRole() {\n const role = sessionStorage.getItem('role');\n return role;\n }\n\n setUserSession(data: any): void {\n sessionStorage.setItem(SHARED.SESSIONKEY, JSON.stringify(data));\n }\n\n getUserPermissions(){\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\n const permissionData = sessionData ? JSON.parse(sessionData).permissions : null;\n return permissionData\n }\n \n\n getUserSession(): any {\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\n return sessionData ? JSON.parse(sessionData) : null;\n }\n\n getAllUserRole() {\n const userSession = this.getUserSession();\n return userSession?.roles;\n }\n\n getSessionID(){\n return 1;\n }\n\n clearSession(): void {\n sessionStorage.clear();\n localStorage.clear();\n }\n}\n","import { Directive, Input, ElementRef, Renderer2, SimpleChanges, OnChanges } from '@angular/core';\nimport { SessionService } from '../services/session.service';\n\n@Directive({\n selector: '[permission]',\n standalone: false\n})\nexport class HasPermissionDirective implements OnChanges {\n @Input() permission?: string | string[];\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n public sessionService: SessionService\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['permission']) {\n this.checkPermission();\n }\n }\n private checkPermission() {\n const userPermissionsObjects = this.sessionService.getUserPermissions();\n if (userPermissionsObjects) {\n const userPermissionNames = userPermissionsObjects.map((perm: any) => perm.name);\n const requiredPermissions = Array.isArray(this.permission)\n ? this.permission\n : [this.permission];\n const permission = requiredPermissions.some(permission =>\n userPermissionNames.includes(permission)\n );\n if (!permission) {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n } else {\n this.renderer.removeStyle(this.el.nativeElement, 'display');\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { ButtonModule } from 'primeng/button';\nimport { CardModule } from 'primeng/card';\nimport { SidebarModule } from 'primeng/sidebar';\nimport { SidebarComponent } from './components/sidebar/sidebar.component';\nimport { CheckBoxComponent } from './controls/check-box/check-box.component';\nimport { DragDropModule } from 'primeng/dragdrop';\nimport { FormContainerComponent } from './components/form-container/form-container.component';\nimport { BaseListComponent } from './_base/base-list/base-list.component';\nimport { DropdownComponent } from './controls/dropdown/dropdown.component'\nimport { BaseFormComponent } from './_base/base-form/base-form.component';\nimport { TextBoxComponent } from './controls/text-box/text-box.component';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { DividerModule } from 'primeng/divider';\nimport { DateComponent } from './controls/date/date.component';\nimport { DialogModule } from 'primeng/dialog';\nimport { TimelineModule } from 'primeng/timeline';\nimport { ListboxModule } from 'primeng/listbox';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FileUploadComponent } from './controls/file-upload/file-upload.component';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { CapitalizeWordsPipe } from './pipe/capitalize-words.pipe';\nimport { TextAreaComponent } from './controls/text-area/text-area.component';\nimport { QueueSearchCustomerComponent } from './components/queue-search-customer/queue-search-customer.component';\nimport { BlockListComponent } from './components/list/block-list.component';\nimport { HasPermissionDirective } from './directives/permission.directive';\n\n@NgModule({\n \n declarations: [ SidebarComponent, QueueSearchCustomerComponent,HasPermissionDirective],\n imports: [\n CommonModule,\n FormsModule,\n InputTextModule,\n ButtonModule,\n DropdownModule,\n InputGroupModule,\n CardModule,\n SidebarModule,\n CheckBoxComponent,\n DragDropModule,\n FormContainerComponent,\n BaseListComponent,\n DropdownComponent,\n BaseListComponent,\n TextBoxComponent,\n InputTextareaModule,\n DividerModule,\n DateComponent,\n DialogModule,\n TimelineModule,\n ListboxModule,\n CheckboxModule,\n FileUploadComponent,\n FileUploadModule,\n CapitalizeWordsPipe,\n TextAreaComponent,\n BaseFormComponent,\n BlockListComponent\n ],\n exports: [ HasPermissionDirective,CapitalizeWordsPipe,TextBoxComponent,FormsModule,ListboxModule,DialogModule,CheckboxModule,DropdownComponent,FormContainerComponent, BaseListComponent, SidebarComponent, DividerModule, CardModule, QueueSearchCustomerComponent, BlockListComponent]\n})\nexport class SharedModule { }\n","export class HEADERS{\n static API_MANAGEMENT = \"Api Management\";\n static DICTIONARY_FORM = \"Dictionary Form\";\n}","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'username',\n standalone: true,\n imports: [CommonModule, InputTextModule,FormsModule],\n templateUrl: './username.component.html',\n styleUrls: ['./username.component.scss'],\n})\nexport class UsernameComponent extends BaseControlComponent {\n\n \n}\n","<ng-container>\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"username-control\">\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-envelope\"></i>\n <input pInputText type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"attributeModel.placeholder ?? ''\" \n [ngModel]=\"record[attributeModel.name]\"\n [required]=\"attributeModel.isRequired ?? false\" \n [disabled]=\"attributeModel.readonly ?? false\"\n #usernameField=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, usernameField.valid)\" \n />\n </span>\n </div>\n </ng-container>","import { Component , OnInit} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { FormsModule } from '@angular/forms';\nimport { BaseStore } from '../../state/base.store';\nimport { BaseQuery } from '../../state/base.query';\n\n@Component({\n selector: 'password',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './password.component.html',\n styleUrl: './password.component.scss',\n})\nexport class PasswordComponent extends BaseControlComponent {\n invalidPasswordErrorMsg: string | undefined\n \n constructor(baseStore: BaseStore<any>, baseQuery: BaseQuery<any>){\n super(baseStore, baseQuery)\n }\n\n ngOninit():void{\n this.invalidPasswordErrorMsg = \"Invalid Password\";\n }\n\n}\n","<ng-container>\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"password-control\">\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-key\"></i>\n <input type=\"password\" autocomplete=\"off\" pInputText [placeholder]=\"attributeModel.placeholder ?? ''\"\n [ngModel]=\"record[attributeModel.name]\" [required]=\"attributeModel.isRequired ?? false\" #passwordField=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, passwordField.valid)\" [ngClass]=\"{\n 'ng-dirty ng-invalid': !passwordField.valid && error == attributeModel.name\n }\" class=\"block p-inputtext\" />\n\n </span>\n </div>\n @if (!passwordField.valid && passwordField.dirty) {\n <div>\n <small id=\"password-help\" class=\"p-error\">{{\n invalidPasswordErrorMsg\n }}</small>\n </div>\n }\n\n</ng-container>","export class CSS {\n static DIALOGUE_BREAKPOINTS = {\n '960px': '75vw',\n '640px': '90vw'\n }\n static DIALOGUE_OVERFLOW = { overflow: 'auto' }\n static DIALOGUE_WIDTH = '100vw'\n static DIALOGUE_HIGHT = '100vh'\n}","import { SelectItem } from \"primeng/api\";\n\nexport class AttributeModel {\n displayText ?: string;\n readonly ?: boolean;\n name ?: any;\n isRequired?: boolean;\n placeholder?: string;\n maxLength?: number;\n infoText?: string;\n buttonLabel?: string;\n isDisabled?: boolean;\n customButtonWidth?: string;\n isPrimary?: number;\n title?: string;\n customColumnWidth?: string;\n customHeight?: string;\n icon?: string;\n iconPosition?: 'left' | 'right';\n customPadding?: string;\n dataSource?: string;\n listValueProperty?: string;\n listLabelProperty?: string;\n options?: SelectItem[];\n childListName?: any;\n childListKey?:any;\n inputId?:string;\n allowFraction?:string = 'Y'\n numberMode?:string;\n currency?:string;\n locale ?: 'en-GB';\n tooltip?:string;\n toolTipPosition?:string\n hourFormat?:string\n yearRange?:string\n showCalenderIcon ?: boolean\n additionalFilterList?:string\n additionalFilterKey?:string\n lookupName?:any\n textColorOnReadonly ?: any\n hideLabelOnForm?:boolean = false;\n disable ?: boolean = false;\n filter ?: boolean = false\n}","export class BaseModel{\n _id ?: any\n [key: string]: any;\n}","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { SessionService } from '../session.service';\nimport { map, Observable, of, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(public _sessionService : SessionService,private _router: Router) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> {\n return of(this._sessionService.getSessionID()).pipe(\n tap((sessionID) => {\n if (!sessionID) {\n this._router.navigateByUrl(\"auth/login\" + \"?returnUrl=\" + state.url);\n }\n }),\n map((sessionID) => !!sessionID)\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseService } from '../../state/base.service';\nimport { BaseModel } from '../../models/base.model';\n\n@Component({\n selector: 'lib-base-container',\n templateUrl: './base-container.component.html',\n styleUrl: './base-container.component.scss',\n})\nexport class BaseContainerComponent<T extends BaseModel>{\n constructor(protected service : BaseService<T>){\n\n }\n init(){\n this.service.initList()\n }\n\n}\n","<p>base-container works!</p>\n","export class LOOKUPS{\n static DOCUMENTTYPE = 'DocumentType'\n}","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Table, TableModule } from 'primeng/table';\nimport { TablePrimaryModel, tableSortOrderModel } from '../models/table-primary.model';\nimport { ButtonModule } from 'primeng/button';\nimport { ToggleButtonModule } from 'primeng/togglebutton';\nimport { FormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { Router } from '@angular/router';\nimport { SHARED, statusList } from '../../constant/SHARED';\nimport { BaseService } from '../../state/base.service';\nimport { TableBuilder } from '../../services/table.builder';\nimport { MetaDataModel } from '../../models/meta-data.model';\nimport { ERROR } from '../../constant/ERROR';\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\nimport { BaseQuery } from '../../state/base.query';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { HasPermissionDirective } from '../../directives/permission.directive';\nimport { SharedModule } from '../../shared.module';\n@Component({\n selector: 'lib-table-primary',\n standalone: true,\n imports: [CommonModule, SharedModule,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, RadioButtonModule, PaginatorModule, DropdownModule ],\n templateUrl: './table-primary.component.html',\n styleUrl: './table-primary.component.scss',\n})\nexport class TablePrimaryComponent implements OnInit, OnDestroy {\n @Input() table!: TablePrimaryModel;\n @Input() metaData!: MetaDataModel;\n @Input() title!: string;\n \n @Input() showStatus = true;\n @Input() showActions = true;\n @Input() showSearchBar = true;\n @Input() showNewRecordButton = true;\n @Input() showRefreshButton = true;\n @Input() pathName!: string;\n @ViewChild(SHARED.DT2) dt2: Table | undefined;\n @ViewChild(SHARED.PAGINATOR) paginator!: Paginator;\n globalFilter: string = SHARED.EMPTY;\n page!: number;\n limit!: number;\n recordNumber!: number;\n columnName!: string;\n sortOrders: tableSortOrderModel = {};\n currentSortOrder!: string;\n isDataActive: any;\n statusList: any = statusList;\n isActive!: boolean | string;\n private searchSubject$ = new Subject<string>();\n private destroy$ = new Subject<void>();\n private templateDestroy$ = new Subject<void>();\n\n constructor(private _router: Router, private service: BaseService<any>, protected builder: TableBuilder, private baseQuery: BaseQuery<any>) {}\n\n ngOnInit(): void {\n this.isDataActive = this.statusList[0];\n if (this.table.headers.length === 0) {\n console.error('Table headers are missing.');\n }\n\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\n\n this.baseQuery.getSelectedTemplate()\n .pipe(takeUntil(this.templateDestroy$))\n .subscribe((type: string) => {\n this.fetchTableData(type)\n })\n\n this.searchSubject$.pipe(\n debounceTime(500), \n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(value => {\n this.globalFilter = value;\n this.fetchData(value);\n });\n }\n\n handleRadioChange(newValue: string) {\n if (newValue === SHARED.ALL) {\n this.isActive = SHARED.EMPTY;\n } else if (newValue === SHARED.ACTIVE) {\n this.isActive = true;\n } else if (newValue === SHARED.IN_ACTIVE) {\n this.isActive = false;\n }\n this.fetchTableData(); \n }\n\n onSearchChange(value: string) {\n this.searchSubject$.next(value);\n }\n \n fetchData(value: string) {\n if(value === null) return;\n this.page = 1;\n if (this.paginator) {\n this.paginator.first = 0;\n this.paginator.changePage(0);\n }\n return this.fetchTableData();\n }\n\n onStatusChange(event:any){\n let status = event.value.name;\n if (status === SHARED.ALL) {\n this.isActive = SHARED.EMPTY;\n } else if (status === SHARED.ACTIVE) {\n this.isActive = true;\n } else if (status === SHARED.IN_ACTIVE) {\n this.isActive = false;\n }\n this.fetchTableData(); \n }\n\n private fetchTableData(type?: string) {\n this.service.getPaginatedList(this.globalFilter, this.page, this.limit, this.columnName, this.currentSortOrder, type, this.isActive, this.pathName).subscribe({\n next: (res: any) => {\n this.table.records = res.data;\n this.metaData = res.metadata;\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\n },\n error: (err) => {\n console.error(ERROR.ERROR_FETCHING_DATA, err);\n }\n });\n }\n\n clearSearch(table: any) {\n this.globalFilter = SHARED.EMPTY;\n table.clear(); \n }\n\n refreshTable() {\n }\n\n handleCreate() {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\n }\n\n handleEditClick(id: number) {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\n }\n\n handleSortColumn(columnName: string) {\n this.columnName = columnName; \n this.sortOrders[columnName] = this.sortOrders[columnName] === SHARED.ASC ? SHARED.DESC : SHARED.ASC;\n this.currentSortOrder = this.sortOrders[columnName];\n this.fetchTableData();\n }\n\n editRow(rowData: any) {\n console.log('Edit Row:', rowData);\n }\n\n deleteRow(rowData: any) {\n console.log('Delete Row:', rowData);\n }\n\n viewRow(rowData: any) {\n console.log('Delete Row:', rowData);\n }\n\n decodeHtml(html: string): string {\n try {\n return JSON.parse(html);\n } catch (e) {\n return html;\n }\n }\n\n handleLoadRecords(event: any) {\n this.page = (event.first / event.rows) + 1;\n this.limit = event.rows; \n this.fetchTableData();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.templateDestroy$.next();\n this.templateDestroy$.complete();\n }\n}\n","<p-table #dt2 [lazy]=\"true\" \n [paginator]=\"false\"\n [rows]=\"metaData.itemsPerPage\"\n [totalRecords]=\"metaData.totalItems\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n (onPage)=\"handleLoadRecords($event)\"\n [ngClass]=\"{'no-pagination': metaData.totalItems <= 10}\"\n [columns]=\"table.headers\" class=\"table-primary-container\" [value]=\"table.records\">\n <ng-template pTemplate=\"caption\">\n <div class=\"table-header-wrapper flex align-items-center justify-content-between\">\n <h3 class=\"text-color table-title-wrapper text-color m-0\">{{title}}</h3>\n <div class=\"flex align-items-center w-full\" *ngIf=\"showSearchBar\">\n <div class=\"grid m-0 flex align-items-center w-full\">\n <div class=\"col-8 pl-0\">\n <input pInputText type=\"text\" [(ngModel)]=\"globalFilter\" (ngModelChange)=\"onSearchChange($event)\"\n [placeholder]=\"'Search ...'\" class=\"search-input-wrapper w-full\" />\n </div>\n <div class=\"col-4 pr-0 flex align-items-center justify-content-end gap-2 filter-dropdown-wrapper\">\n <p-dropdown \n [options]=\"statusList\" \n [(ngModel)]=\"isDataActive\" \n optionLabel=\"name\" \n placeholder=\"Status\"\n (onChange)=\"onStatusChange($event)\"\n />\n <p-button icon=\"pi pi-cog\" class=\"setting-icon-wrapper ml-3\"></p-button>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n\n <!-- Header Template -->\n <ng-template pTemplate=\"header\" let-columns>\n <tr *ngIf=\"table.headers.length > 0\">\n <th *ngFor=\"let col of table.headers\" class=\"p-4\" [ngClass]=\"col.width ? col.width : 'w-full'\">\n <h4 class=\"flex align-items-center table-header-title capitalize text-color font-semibold m-0\" [pSortableColumn]=\"col.name\" (click)=\"handleSortColumn(col.name)\">\n <span class=\"table-title-wrapper text-overflow-wrapper p-0 mt-1\">{{ col.name }}</span>\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n </h4>\n </th>\n <th *ngIf=\"showActions\" [permission]=\"this.table.editPermission ?? this.table.deletePermission\" class=\"table-action-title p-4\" [ngClass]=\"table.headers[0]?.width ? 'w-2' : 'w-full'\">\n <h4 class=\"text-color font-semibold table-title-wrapper text-overflow-wrapper capitalize m-0\">Actions</h4></th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template pTemplate=\"body\" let-rowData>\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\n <td class=\"text-left p-4\" *ngFor=\"let col of table.headers\">\n <div class=\"table-text-wrapper text-overflow-wrapper p-0\" \n [ngClass]=\"{\n 'enable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Enable',\n 'disable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Disable',\n 'w-8': col.name.toLowerCase() === 'status',\n 'text-primary font-semibold': col.name.toLowerCase() === 'action' || col.name.toLowerCase() === 'name'\n }\"\n >\n <span *ngIf=\"col.name.toLowerCase() === 'body'; else normalText\" [innerHTML]=\"decodeHtml(rowData[col.name])\"></span>\n <ng-template #normalText>\n {{ rowData[col.name] }}\n </ng-template>\n <p *ngIf=\"col.name.toLowerCase() === 'action'\" class=\"text-color font-normal\">{{rowData['apiEndPoint']}}</p>\n </div>\n </td>\n\n <!-- Actions -->\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left p-4\">\n <div class=\"flex align-items-center\">\n <p-button icon=\"pi pi-pencil\" [permission]=\"this.table.editPermission\" (click)=\"handleEditClick(rowData._id)\" class=\"edit-icon-wrapper mr-3\"></p-button>\n <p-button icon=\"pi pi-trash\" [permission]=\"this.table.deletePermission\" (click)=\"deleteRow(rowData)\" class=\"delete-icon-wrapper mr-3\"></p-button>\n </div>\n </td>\n <!-- <p-button icon=\"pi pi-eye\" (click)=\"viewRow(rowData)\" class=\"view-icon-wrapper icon-position-wrapper table-group-wrapper-hover:visible\"></p-button> -->\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0)\" class=\"text-center text-color font-semibold p-4\">\n No records found\n </td>\n </tr>\n </ng-template>\n</p-table>\n\n<div *ngIf=\"metaData.totalItems > 10\" class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper bg-white\">\n <div class=\"pagination-text text-color\">\n Showing {{ (metaData.currentPage - 1) * metaData.itemsPerPage + 1 }} to {{ recordNumber }} of {{ metaData?.totalItems || 0 }} entries\n </div>\n \n <p-paginator\n #paginator\n [rows]=\"metaData.itemsPerPage\"\n [totalRecords]=\"metaData.totalItems\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n (onPageChange)=\"handleLoadRecords($event)\"\n ></p-paginator>\n </div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { TableModule } from 'primeng/table';\n\n@Component({\n selector: 'lib-skeleton',\n standalone: true,\n imports: [CommonModule, SkeletonModule, TableModule],\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.scss'\n})\nexport class SkeletonComponent implements OnInit {\n products: any[] = [];\n @Input() count: number = 1;\n @Input() columns: any;\n @Input() width: string = '100%';\n @Input() height: string = '2rem';\n @Input() isAllowCard: boolean = false;\n\n ngOnInit() {\n this.products = Array.from({ length: this.count }).map((_, i) => `Item #${i}`);\n }\n}\n","<div [ngClass]=\"{'card': isAllowCard}\">\n <div *ngFor=\"let col of products\" class=\"mb-5\">\n <p-skeleton [width]=\"width\" [height]=\"height\" />\n </div>\n</div>","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { catchError, map, debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { BaseService, AppConfigService, ROUTES, SHARED, BaseStore } from '../../shared';\nimport { ListService } from '../../shared/services/list.service';\n\nexport type RiskRating = 'Low' | 'Medium' | 'High';\nexport type ApplicationType = 'BTL' | 'HPP';\nexport type PurchaseType = 'Purchase' | 'Refinance';\nexport type TaskStatus = 'Not Started' | 'In-progress' | 'Completed';\nexport type Category = 'UK' | 'Ex-Pat' | 'Intl';\nexport type EPC = 'A or B (Green)';\n\nexport interface QueueFilter {\n riskRating: RiskRating[];\n applicationType: ApplicationType[];\n purchaseType: PurchaseType[];\n taskStatus: TaskStatus[];\n category: Category[];\n epc: EPC[];\n vulnerableCustomer: boolean | null;\n financeMin: number | null;\n financeMax: number | null;\n pendingDays: number | null;\n assignedUnderwriter: string[];\n}\nexport interface UnderwriterOption {\n id: string;\n name: string;\n}\n\n/**\n *\n */\n@Injectable({ providedIn: 'root' })\nexport class QueueFilterDropdownService extends BaseService<any> {\n private searchSubject = new Subject<string>();\n\n constructor(\n http: HttpClient,\n private configService: AppConfigService,\n store: BaseStore<any>,\n listService: ListService\n ) {\n super(http, store, configService, listService);\n }\n\n /**\n * Override apiUrl to use the main API URL instead of catQwUrl\n */\n override get apiUrl(): string {\n return this.configService.apiUrl || SHARED.EMPTY;\n }\n\n private filter: QueueFilter = {\n riskRating: [],\n applicationType: [],\n purchaseType: [],\n taskStatus: [],\n category: [],\n epc: [],\n vulnerableCustomer: null,\n financeMin: null,\n financeMax: null,\n pendingDays: null,\n assignedUnderwriter: []\n };\n\n setRiskRating(rating: RiskRating) {\n const arr = this.filter.riskRating;\n const idx = arr.indexOf(rating);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(rating);\n }\n setApplicationType(type: ApplicationType) {\n const arr = this.filter.applicationType;\n const idx = arr.indexOf(type);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(type);\n }\n setPurchaseType(type: PurchaseType) {\n const arr = this.filter.purchaseType;\n const idx = arr.indexOf(type);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(type);\n }\n setTaskStatus(status: TaskStatus) {\n const arr = this.filter.taskStatus;\n const idx = arr.indexOf(status);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(status);\n }\n setCategory(category: Category) {\n const arr = this.filter.category;\n const idx = arr.indexOf(category);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(category);\n }\n setEpc(epc: EPC) {\n const arr = this.filter.epc;\n const idx = arr.indexOf(epc);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(epc);\n }\n setVulnerableCustomer(value: boolean | null) {\n this.filter.vulnerableCustomer = value;\n }\n setFinanceMin(min: number | null) {\n this.filter.financeMin = min;\n }\n setFinanceMax(max: number | null) {\n this.filter.financeMax = max;\n }\n setPendingDays(days: number | null) {\n this.filter.pendingDays = days;\n }\n\n setAssignedUnderwriter(ids: string[]) {\n this.filter.assignedUnderwriter = Array.isArray(ids) ? ids : [];\n }\n\n setAllFilters(filters: QueueFilter) {\n this.filter = {\n riskRating: [...(filters.riskRating || [])],\n applicationType: [...(filters.applicationType || [])],\n purchaseType: [...(filters.purchaseType || [])],\n taskStatus: [...(filters.taskStatus || [])],\n category: [...(filters.category || [])],\n epc: [...(filters.epc || [])],\n vulnerableCustomer: filters.vulnerableCustomer,\n financeMin: filters.financeMin,\n financeMax: filters.financeMax,\n pendingDays: filters.pendingDays,\n assignedUnderwriter: [...(filters.assignedUnderwriter || [])]\n };\n }\n\n getFilters(): QueueFilter {\n return {\n riskRating: [...this.filter.riskRating],\n applicationType: [...this.filter.applicationType],\n purchaseType: [...this.filter.purchaseType],\n taskStatus: [...this.filter.taskStatus],\n category: [...this.filter.category],\n epc: [...this.filter.epc],\n vulnerableCustomer: this.filter.vulnerableCustomer,\n financeMin: this.filter.financeMin,\n financeMax: this.filter.financeMax,\n pendingDays: this.filter.pendingDays,\n assignedUnderwriter: [...this.filter.assignedUnderwriter]\n };\n }\n\n hasFilters(): boolean {\n return (\n this.filter.riskRating.length > 0 ||\n this.filter.applicationType.length > 0 ||\n this.filter.purchaseType.length > 0 ||\n this.filter.taskStatus.length > 0 ||\n this.filter.category.length > 0 ||\n this.filter.epc.length > 0 ||\n this.filter.vulnerableCustomer !== null ||\n this.filter.financeMin !== null ||\n this.filter.financeMax !== null ||\n this.filter.pendingDays !== null ||\n this.filter.assignedUnderwriter.length > 0\n );\n }\n\n getFilterCount(): number {\n let count = 0;\n count += this.filter.riskRating.length;\n count += this.filter.applicationType.length;\n count += this.filter.purchaseType.length;\n count += this.filter.taskStatus.length;\n count += this.filter.category.length;\n count += this.filter.epc.length;\n if (this.filter.vulnerableCustomer !== null) count++;\n if (this.filter.financeMin !== null) count++;\n if (this.filter.financeMax !== null) count++;\n if (this.filter.pendingDays !== null) count++;\n count += this.filter.assignedUnderwriter.length;\n return count;\n }\n\n clearAll() {\n this.filter = {\n riskRating: [],\n applicationType: [],\n purchaseType: [],\n taskStatus: [],\n category: [],\n epc: [],\n vulnerableCustomer: null,\n financeMin: null,\n financeMax: null,\n pendingDays: null,\n assignedUnderwriter: []\n };\n }\n\n /**\n * Builds a query string for API calls based on the current filter values.\n * Maps UI filter values to API parameters.\n */\n public buildFilterQueryString(filters: QueueFilter): string {\n if (!filters || Object.keys(filters).length === 0) {return '';}\n const filterParams: Record<string, string> = {};\n \n // Map filter properties to API parameters\n if (filters.riskRating && filters.riskRating.length > 0) {\n filterParams['risk'] = filters.riskRating.join(',');}\n if (filters.applicationType && filters.applicationType.length > 0) {\n filterParams['lendingType'] = filters.applicationType.join(',');}\n if (filters.purchaseType && filters.purchaseType.length > 0) {\n filterParams['purchaseType'] = filters.purchaseType.join(',');}\n if (filters.category && filters.category.length > 0) {\n // Map category UI values to API values\n const categoryMap: Record<string, string> = {\n 'UK': 'UK',\n 'Ex-Pat': 'Ex-pat',\n 'Intl': 'International'\n };\n filterParams['appCategory'] = filters.category.map(cat => categoryMap[cat] || cat).join(',');}\n if (filters.epc && filters.epc.length > 0) {\n filterParams['epc'] = filters.epc.join(',');}\n if (filters.vulnerableCustomer !== null && filters.vulnerableCustomer !== undefined) {\n filterParams['vulnerable'] = String(filters.vulnerableCustomer);\n }\n // Add mapping for taskStatus UI values to API values\n const taskStatusMap: Record<string, string> = {\n 'Not Started': 'notStarted','In-progress': 'inProgress','Completed': 'completed'};\n if (filters.taskStatus && filters.taskStatus.length > 0) {\n filterParams['taskStatus'] = filters.taskStatus.map(status => taskStatusMap[status] || status).join(',');}\n if (filters.financeMin !== null && filters.financeMin !== undefined) {\n filterParams['minFinanace'] = filters.financeMin.toString(); } \n if (filters.financeMax !== null && filters.financeMax !== undefined) {\n filterParams['maxFinanace'] = filters.financeMax.toString();}\n if (filters.pendingDays !== null && filters.pendingDays !== undefined) {\n filterParams['pendingDays'] = filters.pendingDays.toString(); }\n if (filters.assignedUnderwriter && filters.assignedUnderwriter.length > 0) {\n // Separate approach: Use unassigned boolean param and underwriterId for actual IDs\n const hasUnassigned = filters.assignedUnderwriter.includes(SHARED.UNASSIGNED_UNDERWRITER_ID);\n const realUnderwriterIds = filters.assignedUnderwriter.filter(id => id !== SHARED.UNASSIGNED_UNDERWRITER_ID);\n \n // Set unassigned parameter if \"unassigned\" is selected\n if (hasUnassigned) {\n filterParams['unassigned'] = 'true';\n } else {\n filterParams['unassigned'] = 'false';\n }\n \n // Set underwriterId parameter only if there are real IDs (excluding \"unassigned\")\n if (realUnderwriterIds.length > 0) {\n filterParams['underwriterId'] = realUnderwriterIds.join(',');\n }\n }\n\n return new URLSearchParams(filterParams).toString();}\n\n /**\n * Fetches underwriter options from the API based on search key\n * @param {string} searchKey - The search term to filter underwriters\n * @returns {Observable<UnderwriterOption[]>} Observable of underwriter options array\n */\n getUnderwritersList(searchKey: string = SHARED.EMPTY): Observable<UnderwriterOption[]> {\n const url = `${this.apiUrl}${ROUTES.GET_ALL_UNDERWRITER_TEAMLEAD}${SHARED.QUESTION_MARK}searchKey${SHARED.EQUALS}${encodeURIComponent(searchKey)}`;\n return this.http.get<Array<{ _id: string; fullName: string }>>(url).pipe(\n map((response: any) => {\n // Transform API response to match component's expected format\n const underwriters = Array.isArray(response) ? response : (response?.data || []);\n return underwriters.map((uw: any) => ({\n id: uw._id,\n name: uw.fullName || SHARED.EMPTY\n }));\n }),\n catchError(error => {\n console.error('Error fetching underwriters:', error);\n return of([]);\n })\n );\n }\n\n /**\n * Triggers a search for underwriters with debounce\n * @param {string} searchKey - The search term to filter underwriters\n */\n searchUnderwriters(searchKey: string = SHARED.EMPTY): void {\n this.searchSubject.next(searchKey);\n }\n\n /**\n * Returns an Observable that emits underwriter options with debounce and distinctUntilChanged\n * @returns {Observable<UnderwriterOption[]>} Observable of underwriter options array\n */\n getUnderwritersSearchObservable(): Observable<UnderwriterOption[]> {\n return this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((searchKey: string) => {\n return this.getUnderwritersList(searchKey || SHARED.EMPTY);\n })\n );\n }\n} ","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\nimport { ROUTES } from '../../shared/constant/ROUTES';\nimport { queuePriorityOrder, SHARED } from '../../shared/constant/SHARED';\nimport { SessionService } from '../../shared/services/session.service';\nimport { QueueFilterDropdownService } from './queue-filter-dropdown.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QueueBusinessService {\n private destroy$ = new Subject<void>();\n\n constructor(\n private router: Router,\n private sessionService: SessionService,\n private queueFilterDropdownService: QueueFilterDropdownService\n ) {}\n\n filterQueuesByStatus(queues: any[], status: string): any[] {\n if (!queues) return [];\n switch (status) {\n case 'inactive':\n return queues.filter(queue => !queue.isActive);\n case 'active':\n return queues.filter(queue => queue.isActive);\n default:\n return [...queues];\n }\n }\n\n /**\n * The rest follow in their original order.\n */\n orderQueuesByPriority(queues: any[]): any[] {\n const desiredOrder = queuePriorityOrder;\n const orderMap = new Map(desiredOrder.map((name, idx) => [name, idx]));\n return [...queues].sort((a, b) => {\n const aIdx = orderMap.has(a.name) ? orderMap.get(a.name)! : Number.POSITIVE_INFINITY;\n const bIdx = orderMap.has(b.name) ? orderMap.get(b.name)! : Number.POSITIVE_INFINITY;\n return aIdx - bIdx;\n });\n }\n\n getFirstQueueId(filteredQueues: any[]): string | null {\n return filteredQueues.length > 0 ? filteredQueues[0]._id : null;\n }\n\n navigateToQueue(queueId: string, showQueueDataForm: boolean): void {\n if (showQueueDataForm) {\n this.router.navigateByUrl(ROUTES.QUEUE_FORM + queueId);\n }\n }\n\n navigateToInsertQueue(): void {\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO]);\n }\n\n getUserRole(): boolean {\n const userSession = this.sessionService.getUserSession();\n return userSession?.roles?.includes('EnterpriseAdmins') || false;\n }\n\n storeSelectedQueue(queueId: string): void {\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\n }\n\n storeApplicationData(record: any): void {\n localStorage.setItem(SHARED.selectedApplicationType, record.applicationType);\n }\n\n createDebouncedSearch(delay: number = 500) {\n const searchSubject = new Subject<string>();\n return searchSubject.pipe(\n debounceTime(delay),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n );\n }\n\n buildQueryString(record: any): string {\n const queryParams: Record<string, string> = {\n type: record.type ?? SHARED.EMPTY,\n status: record.status ?? SHARED.EMPTY\n };\n const filteredQueryParams = Object.fromEntries(\n Object.entries(queryParams).filter(([_, value]) => value)\n );\n return new URLSearchParams(filteredQueryParams).toString();\n }\n\n calculatePagination(event: any): { page: number; limit: number } {\n return {\n page: (event.first / event.rows) + 1,\n limit: event.rows\n };\n }\n\n mapApiMetadata(res: any, targetPage: number, targetLimit: number): any {\n return {\n totalItems: res?.metadata?.total || res?.data?.length || 0,\n currentPage: res?.metadata?.page || targetPage,\n itemsPerPage: res?.metadata?.limit || targetLimit,\n totalPages: res?.metadata?.totalPages || \n Math.ceil((res?.metadata?.total || res?.data?.length || 0) / targetLimit)\n };\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n} ","import { Injectable } from \"@angular/core\";\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\nimport { createInitialState, QueueState } from \"./queue.state\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { BaseStore } from \"../../shared/state/base.store\";\n\n@Injectable({ providedIn: \"root\" })\n@StoreConfig({ name: \"queues\" })\nexport class QueueStore extends BaseStore<QueueModel> {\n constructor() {\n super();\n }\n\n setSelectedQueueId(data: any) {\n this.update({ selectedQueueId: data });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseQuery } from '../../shared';\nimport { Observable } from 'rxjs';\nimport { QueueModel } from '../models/queue.model';\nimport { QueueStore } from './queue.store';\n\n\n/**\n * Widget Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class QueueQuery extends BaseQuery<QueueModel> {\n\n constructor(protected override store: QueueStore) {\n super(store);\n }\n\n getSelectedQueueId() : Observable<any> {\n return this.select(state => state['selectedQueueId']);\n }\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableModule } from 'primeng/table';\nimport { ButtonModule } from 'primeng/button';\nimport { ToggleButtonModule } from 'primeng/togglebutton';\nimport { FormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BaseService } from '../../state/base.service';\nimport { BaseStore } from '../../state/base.store';\nimport { TableBuilder } from '../../services/table.builder';\nimport { MetaDataModel } from '../../models/meta-data.model';\nimport { BaseQuery } from '../../state/base.query';\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\nimport { SHARED } from '../../constant/SHARED';\nimport { ERROR } from '../../constant/ERROR';\nimport { TableSecondaryModel } from '../models/table-secondary.model';\nimport { Subject, takeUntil } from 'rxjs';\nimport * as columnStylesJson from '../../../queue/constants/column-styles.json';\nimport {RoundProgressModule} from 'angular-svg-round-progressbar';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SessionService } from '../../services/session.service';\nimport { QueueBusinessService } from '../../../queue/services/queue-business.service';\nimport { QueueQuery } from '../../../queue/state/queue.query';\nimport { SkeletonComponent } from '../../components/skeleton/skeleton.component';\n\n/**\n * A reusable table component that displays dynamic data using PrimeNG's Table.\n * Supports features like pagination, search, row actions, selection, and routing.\n */\n@Component({\n selector: 'lib-table-secondary',\n standalone: true,\n imports: [CommonModule, SkeletonComponent,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, PaginatorModule, RoundProgressModule, CheckboxModule],\n templateUrl: './table-secondary.component.html',\n styleUrl: './table-secondary.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableSecondaryComponent implements OnInit, OnChanges, OnDestroy {\n @Input() table!: TableSecondaryModel;\n @Input() metaData: MetaDataModel = {\n totalItems: 0,\n currentPage: 1,\n itemsPerPage: 10,\n totalPages: 0\n };\n @Input() title!: string;\n @Input() builder : any\n @Input() showStatus = true;\n @Input() showActions = true;\n @Input() showSearchBar = true;\n @Input() showNewRecordButton = true;\n @Input() showRefreshButton = true;\n @Input() isShowSkeleton: boolean = false; // Flag to control skeleton display\n isSelectAll: boolean = false;\n @Input() pathName!: string;\n @Input() selectionMode: 'single' | 'multiple' | undefined;\n @Input() selection: any;\n @Input() usePagination = true; // ✅ Pagination control\n @Input() scrollHeight!: string;\n @Output() selectionChange = new EventEmitter<any>();\n @Input() rowSelection: any;\n @Output() rowSelectionChange = new EventEmitter<any>();\n @Output() sortChanged = new EventEmitter<any>();\n @Input() enableSelection = true;\n @Input() noRecordsMessage: string = 'No records found';\n recordNumber!: number;\n page: number = 1;\n limit: number = 10;\n first : number = 0\n globalFilter: string = SHARED.EMPTY;\n @Input() sortField: string = '';\n @Input() sortOrder: number = 1;\n private destroy$ = new Subject<void>();\n @ViewChild('paginator') paginator!: Paginator;\n @Output() onDeleteRow = new EventEmitter<any>();\n @Input() searchTerm: string = SHARED.EMPTY;\n @Input() filterQuery: string = SHARED.EMPTY;\n @Output() onPage = new EventEmitter<any>();\n tableNgClassExpression: string = '';\n excludedApplicationIds: any[] = [];\n userRole: Array<string> | null = [];\n isUwLogin: boolean = false;\n allQueueList: any;\n selectedQueueName!: string;\n columnStyles: any = (columnStylesJson as any).columnStyles;\n \n // Memoization cache for compiled expression functions\n private expressionCache = new Map<string, Function>();\n\n constructor(private _router: Router, private service: BaseService<any>, private sessionService : SessionService, private baseQuery : BaseQuery<any>,private baseStore: BaseStore<any>, private queueBusinessService: QueueBusinessService, private queueQuery: QueueQuery) { }\n\n /**\n * Lifecycle hook that is called after data-bound properties are initialized.\n * Initializes the record count and validates table headers.\n */\n ngOnInit(): void {\n if (this.table && this.table.headers && this.table.headers.length === 0) {\n console.error('Table headers are missing.');}\n this.updateRecordNumber();\n this.baseQuery.selectPage().pipe(takeUntil(this.destroy$)).subscribe((res) => {\n if (this.paginator) {\n this.paginator.first = 0;}});\n\n const userRole = this.sessionService.getAllUserRole();\n const roles: string[] = Array.isArray(userRole) ? userRole : [];\n this.isUwLogin = roles.includes('Underwriter User') && !roles.includes('TeamLeader');\n // Load tableStyles ngClass expression from config\n const tableStyles = (columnStylesJson as any).tableStyles;\n if (tableStyles && tableStyles.ngClass) {\n this.tableNgClassExpression = tableStyles.ngClass;}\n\n this.baseStore.queueList$.pipe(takeUntil(this.destroy$)).subscribe((res) => {\n this.allQueueList = res;})\n\n this.queueQuery.getSelectedQueueId().pipe(takeUntil(this.destroy$)).subscribe((res) => {\n const selectedQueue = this.allQueueList.filter((val:any) => val._id === res);\n this.isSelectAll = false;\n this.excludedApplicationIds = [];\n if(selectedQueue && selectedQueue.length > 0) {\n this.selectedQueueName = selectedQueue[0].name;}})}\n\n /**\n * Lifecycle hook called when any data-bound property changes.\n * Resets pagination if page is changed.\n */\n ngOnChanges(): void {\n this.updateRecordNumber();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.expressionCache.clear();\n }\n\n private updateRecordNumber(): void {\n const currentPage = this.metaData?.currentPage ?? 1;\n const itemsPerPage = this.metaData?.itemsPerPage ?? 10;\n const totalItems = this.metaData?.totalItems ?? 0;\n this.recordNumber = Math.min(currentPage * itemsPerPage, totalItems);\n }\n\n /**\n * Returns the unique key used to identify each row in the table.\n * @returns {string} The data key used for identifying rows, or an empty string if not set.\n */\n get validDataKey(): string {\n return this.table?.dataKey ?? SHARED.EMPTY;\n }\n\n /**\n * Clears the global search filter and resets the table.\n * @param {any} table - The PrimeNG table instance.\n */\n clearSearch(table: any) {\n this.globalFilter = SHARED.EMPTY;\n table.clear();\n }\n\n /**\n * Navigates to the route for creating a new record.\n */\n handleCreate() {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\n }\n\n /**\n * Navigates to the edit page for the given record ID.\n * @param {number} id - The ID of the record to edit.\n */\n handleEditClick(id: number) {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\n }\n\n get isAllCurrentPageSelected(): boolean {\n if (!this.table?.records?.length || !this.selection?.length) return false;\n const dataKey = this.validDataKey || '_id';\n return this.table.records.every(\n row => this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\n );\n }\n\n handleSelectAllRowData(checked: boolean) {\n this.isSelectAll = checked;\n this.excludedApplicationIds = [];\n const dataKey = this.validDataKey || '_id';\n if (checked) {\n // Add all current page rows to selection, avoiding duplicates\n const newSelection = [\n ...this.selection,\n ...this.table.records.filter(\n row => !this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\n ),\n ];\n this.selection = newSelection;\n } else {\n // Remove current page rows from selection\n const currentPageIds = this.table.records.map(row => row[dataKey]);\n this.selection = this.selection.filter(\n (sel: any) => !currentPageIds.includes(sel[dataKey])\n );}\n this.baseStore.setIsAllRowSelected(this.isSelectAll);\n this.selectionChange.emit(this.selection);\n }\n \n /**\n * Handles the deletion of a row by emitting the row data and preventing event propagation.\n * @param {Event} event - The DOM event triggered by the delete action.\n * @param {any} rowData - The data object of the row to be deleted.\n */\n deleteRow(event: Event, rowData: any) {\n this.baseStore.setUpdatedData(true);\n event.stopPropagation();\n this.onDeleteRow.emit(rowData);\n }\n\n /**\n * Returns CSS class for a table cell based on its content.\n * @param {any} col - The column definition.\n * @param {any} rowData - The data for the row.\n * @returns {string} A space-separated list of CSS classes for the cell.\n */\n getRowClass(col: any, rowData: any): string {\n if (!col || !col.name) return '';\n let classes: string[] = [];\n if (rowData[col.name]?.class) {\n classes.push(rowData[col.name]?.class);\n }\n return classes.join(' '); // Return space-separated class names\n }\n\n \n /**\n * Handles pagination and data reload on paginator event.\n * @param {object} event - The PrimeNG paginator event.\n * @param {number} event.first - The index of the first record in the current page.\n * @param {number} event.rows - The number of records per page.\n */\n handleLoadRecords(event: any) {\n this.page = (event.first / event.rows) + 1;\n this.limit = event.rows;\n this.isShowSkeleton = true;\n \n // Emit the pagination event to parent components\n this.onPage.emit(event);\n \n // If pathName is provided, use the default service method\n if (this.pathName) {\n this.service.getPaginatedList(this.searchTerm, this.page, this.limit, SHARED.UPDATEDAT, SHARED.DESC, SHARED.EMPTY, SHARED.EMPTY, this.pathName).subscribe({\n /**\n * Handles the successful response from the paginated list API.\n * @param {any} res - The API response containing data and metadata.\n */\n next: (res: any) => {\n this.table = this.builder.buildTable(res.data);\n this.metaData = res.metadata;\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems);\n this.isShowSkeleton = false; // Hide skeleton when data is loaded\n },\n /**\n * Handles any error encountered while fetching the paginated list.\n * @param {any} err - The error object.\n */\n error: (err) => {\n console.error(ERROR.ERROR_FETCHING_DATA, err);\n this.isShowSkeleton = false; // Hide skeleton on error\n }\n });\n }\n }\n\n /**\n * Emits the updated selection when user changes selection in the table.\n * @param {any} event - The new selection data.\n */\n onSelectionChange(event: any) {\n this.selection = event;\n this.selectionChange.emit(this.selection);\n if(this.isSelectAll) {\n this.excludedApplicationIds.push(event[0]._id);}}\n\n getProgressColor(percent: number): string {\n if (percent === 100) {return '#22c55e';\n } else if (percent > 0 && percent < 100) {return '#f59e0b';\n } else {return 'black';}}\n\n // eslint-disable-next-line max-lines\n getProgressBackground(percent: number): string {\n if (percent === 100) {return '#C5F7D7';\n } else if (percent > 0 && percent < 100) {return '#ffeadc';\n } else {return '#F9FAFB';}}\n\n /**\n * Emits the selected row when a row is clicked.\n * @param {any} rowData - The data of the clicked row.\n */\n onRowClick(rowData: any) {\n this.baseStore.setUpdatedData(true);\n this.rowSelection = rowData;\n this.rowSelectionChange.emit(this.rowSelection);}\n\n /**\n * Handles the click event on a table row.\n * If row selection is enabled (`enableSelection` is true), \n * it delegates the event to the `onRowClick` method with the provided row data.\n * @param {any} rowData - The data object for the clicked table row.\n */\n handleRowClick(rowData: any): void {\n if (this.enableSelection) {\n this.onRowClick(rowData);}}\n\n /**\n * Checks if a given row is currently selected.\n * @param {any} rowData - The row data to check.\n * @returns {boolean} `true` if the row is selected, else `false`.\n */\n isRowSelected(rowData: any): boolean {\n return this.rowSelection?.[this.validDataKey] === rowData[this.validDataKey];}\n\n onSort(event: any) {\n this.sortField = event.field;\n this.sortOrder = event.order;\n this.sortChanged.emit(event);}\n\n /**\n * Utility: Check if value is array (for template use)\n * @param {any} val - The value to check if it is an array.\n * @returns {boolean} True if the value is an array, otherwise false.\n */\n isArray(val: any): boolean {\n return Array.isArray(val);\n }\n\n /**\n * Utility: Check if value is task items array (for template use)\n * @param {any} val - The value to check if it is a task items array.\n * @returns {boolean} True if the value is a task items array, otherwise false.\n */\n isTaskItemsArray(val: any): boolean {\n return Array.isArray(val) && val.length > 0 && val[0]?.type && val[0]?.count !== undefined;\n }\n\n shouldShowValue(col: any, rowData: any): boolean {\n const value = rowData[col.name];\n if (Array.isArray(value) && value.length && value[0]?.initials) {\n return false;\n }\n if (this.isTaskItemsArray(value)) {\n return false;\n }\n // Handle enriched status objects (e.g., valuationStatus with icon/text)\n if (value && typeof value === 'object' && value.text) {\n return true;\n }\n return typeof value === 'string' || typeof value === 'number';\n }\n\n /**\n * Memoized expression evaluator - compiles and caches Function objects\n * @param {string} expression - The expression to evaluate\n * @param {any} rowData - The row data to use in evaluation\n * @returns {any} The evaluated result\n */\n private evaluateExpression(expression: string, rowData: any): any {\n if (!expression) return null;\n \n // Fast path: Simple expressions (no conditionals) - return as-is\n if (!expression.includes('?') && !expression.includes(':')) {\n return expression;\n }\n \n // Memoized path: Cache compiled Function objects\n let compiledFn = this.expressionCache.get(expression);\n if (!compiledFn) {\n compiledFn = new Function('rowData', `return ${expression};`);\n this.expressionCache.set(expression, compiledFn);\n }\n \n return compiledFn(rowData);\n }\n\n /**\n * Evaluates ngClass expression for dynamic styling with memoization\n * @param {string} expression - The ngClass expression to evaluate\n * @param {any} rowData - The row data to use in evaluation\n * @returns {string} The evaluated CSS classes\n */\n evaluateNgClass(expression: string, rowData: any): string {\n try {\n const result = this.evaluateExpression(expression, rowData);\n return result || '';\n } catch (error) {\n console.error('Error evaluating ngClass expression:', error);\n return '';\n }\n }\n\n /**\n * Evaluates ngStyle expression for dynamic inline styles with memoization\n * @param {string} expression - The ngStyle expression to evaluate\n * @param {any} rowData - The row data to use in evaluation\n * @returns {any} The evaluated style object\n */\n evaluateNgStyle(expression: string, rowData: any): any {\n try {\n return this.evaluateExpression(expression, rowData);\n } catch (error) {\n console.error('Error evaluating ngStyle expression:', error);\n return null;\n }\n }\n\n getLine1DisplayClasses(col: any, rowData: any): string {\n const classes: string[] = [];\n const customClasses = col?.line1NgClassExpression ? this.evaluateNgClass(col.line1NgClassExpression, rowData) : '';\n if (customClasses) {\n classes.push(customClasses);\n }\n if (this.shouldRenderChip(col, rowData)) {\n classes.push('queue-chip');\n const variantClass = this.getChipVariantClass(col, rowData);\n if (variantClass) {\n classes.push(variantClass);\n }\n }\n return classes.join(' ').trim();\n }\n\n private shouldRenderChip(col: any, rowData: any): boolean {\n if (!col || !rowData) {\n return false;\n }\n if (rowData[col.name]?.chipVariant) {\n return true;\n }\n if (col.line1IsChip) {\n return true;\n }\n if (col.line1ChipVariantExpression) {\n const evaluated = this.evaluateGenericExpression(col.line1ChipVariantExpression, rowData);\n return Boolean(evaluated);\n }\n return false;\n }\n\n private getChipVariantClass(col: any, rowData: any): string {\n const variant = this.resolveChipVariant(col, rowData);\n return variant ? `queue-chip--${variant}` : '';\n }\n\n private resolveChipVariant(col: any, rowData: any): string {\n if (rowData[col.name]?.chipVariant) {\n return rowData[col.name].chipVariant;\n }\n if (col.line1ChipVariantExpression) {\n const evaluated = this.evaluateGenericExpression(col.line1ChipVariantExpression, rowData);\n return typeof evaluated === 'string' ? evaluated : '';\n }\n return '';\n }\n\n private evaluateGenericExpression(expression: string, rowData: any): any {\n try {\n const result = this.evaluateExpression(expression, rowData);\n return result || '';\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return '';\n }\n }\n\n /**\n * Generic method to get column class (container or text) from config\n * @param {string} columnName - The column name (e.g., 'lending', 'riskRating')\n * @param {string} value - The value to evaluate\n * @param {'container' | 'text'} type - The type of class to retrieve\n * @returns {string} The evaluated CSS class\n */\n getColumnClass(columnName: string, value: string, type: 'container' | 'text'): string {\n const expr = this.columnStyles?.[columnName]?.[`${type}NgClass`];\n return expr ? this.evaluateNgClass(expr, { [columnName]: value }) : '';\n }\n\n // Legacy methods for backward compatibility\n getTypeContainerClass(typeValue: string): string {\n return this.getColumnClass('lending', typeValue, 'container');\n }\n\n getTypeTextClass(typeValue: string): string {\n return this.getColumnClass('lending', typeValue, 'text');\n }\n\n getRiskContainerClass(riskValue: string): string {\n return this.getColumnClass('riskRating', riskValue, 'container');\n }\n\n getRiskTextClass(riskValue: string): string {\n return this.getColumnClass('riskRating', riskValue, 'text');\n }\n\n getColumnAlignment(columnName: string): string {\n if (columnName === 'applicants' || columnName === 'brokerName' || columnName === 'appId' || columnName === 'finance' || columnName === 'securityAddress') {\n return 'justify-content-start';\n }\n return 'justify-content-center';\n }\n\n getSwitchCase(rowData: any, col: any): string {\n if (this.isTaskItemsArray(rowData[col.name])) {\n return 'taskItems';\n }\n if (col.name === 'finance' && rowData[col.name]?.isFinance) {\n return 'finance';\n }\n if (col.name === 'appId' && typeof rowData[col.name] === 'object') {\n return 'appId';\n }\n if (col.name === 'brokerName' && typeof rowData[col.name] === 'object' && rowData[col.name]?.brokerName !== undefined) {\n return 'broker';\n }\n if (col.isTwoLine) {\n return 'twoLine';\n }\n if (col.isShowProgressbar) {\n return 'progress';\n }\n return 'default';\n }\n} "," <lib-skeleton *ngIf=\"isShowSkeleton\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\n <p-table\n *ngIf=\"table && table.headers && !isShowSkeleton\"\n #dt2\n [lazy]=\"true\"\n (onSort)=\"onSort($event)\"\n [paginator]=\"false\"\n [rows]=\"metaData?.itemsPerPage ?? 10\"\n [totalRecords]=\"metaData?.totalItems ?? 0\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\n [columns]=\"table.headers\"\n class=\"table-secondary-container\"\n [value]=\"table.records\"\n [sortField]=\"sortField\"\n [sortOrder]=\"sortOrder\"\n [dataKey]=\"table.dataKey\"\n [selectionMode]=\"selectionMode\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [ngClass]=\"tableNgClassExpression ? evaluateNgClass(tableNgClassExpression, {}) : ''\"\n >\n <!-- Header -->\n <ng-template pTemplate=\"header\" let-columns>\n <tr *ngIf=\"table.headers.length > 0\">\n <th\n *ngFor=\"let col of table.headers; let i = index\"\n class=\"table-header-wrapper bg-white\"\n [pSortableColumn]=\"col.name\"\n [pSortableColumnDisabled]=\"!(table.isSortingAllow && col.isShowSortIcon)\"\n [ngClass]=\"[col.width ? col.width : 'w-full', (!showActions && selectionMode !== 'multiple' && (i === table.headers.length - 1)) ? 'table-action-title' : '']\"\n style=\"min-width: 100px\"\n > \n <h4\n [ngClass]=\"[\n col.class || '', \n getColumnAlignment(col.name) === 'justify-content-start' ? 'justify-content-start text-left' : 'justify-content-center text-center'\n ]\"\n class=\"flex align-items-center table-header-title font-semibold m-0\">\n {{ col.displayName || col.name }}\n @if(table.isSortingAllow && col.isShowSortIcon){\n <p-sortIcon [field]=\"col.name\" />\n }\n </h4>\n </th>\n \n <th *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" \n class=\"table-header-wrapper text-right table-action-title\" style=\"width: 6rem;\">\n <h4 class=\"flex align-items-center justify-content-end gap-2 table-header-title capitalize font-semibold m-0\">\n <span *ngIf=\"selection?.length && !isSelectAll\">\n ({{ selection.length }})\n </span>\n <p-checkbox\n [binary]=\"true\"\n [ngModel]=\"isAllCurrentPageSelected\"\n (ngModelChange)=\"handleSelectAllRowData($event)\"></p-checkbox>\n </h4>\n </th>\n \n <th\n *ngIf=\"showActions\"\n class=\"table-action-title table-header-wrapper\"\n [ngClass]=\"table.headers[0]?.width ? 'w-2' : 'w-2'\"\n >\n </th>\n \n </tr>\n </ng-template>\n \n <!-- Body -->\n<ng-template pTemplate=\"body\" let-rowData>\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\n <!-- one TD per column -->\n <td *ngFor=\"let col of table.headers; let j = index\" class=\"p-0 border-none bg-none table-body-row-wrapper\"\n (click)=\"handleRowClick(rowData)\"\n [ngClass]=\"[rowData._columnWidths ? rowData._columnWidths?.[col.name] : col.width]\">\n <div class=\"table-body-wrapper table-row-card-wrapper\"\n [ngClass]=\"[\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\n isRowSelected(rowData) ? 'row-selected' : '',\n selection?.includes(rowData) ? 'green-highlight' : ''\n ]\">\n \n <div class=\"flex align-items-center h-full\" [ngClass]=\"getColumnAlignment(col.name)\">\n <!-- your existing inner column wrapper -->\n <div class=\"row-wrapprt flex align-items-center\" [ngClass]=\"getColumnAlignment(col.name)\">\n <ng-container [ngSwitch]=\"getSwitchCase(rowData, col)\">\n <!-- task items - check this first -->\n <ng-container *ngSwitchCase=\"'taskItems'\">\n <div class=\"col-tasks\">\n <ng-container *ngFor=\"let taskItem of rowData[col.name]\">\n <div class=\"task-item\" [ngClass]=\"taskItem.status === 'warning' ? 'task-warning' : (taskItem.status === 'default' ? 'task-default' : 'task-success')\">\n <span>{{ taskItem.type }}</span>\n <span *ngIf=\"taskItem.count !== null && taskItem.count !== undefined\" class=\"task-badge\">{{ taskItem.count }}</span>\n </div>\n </ng-container>\n </div>\n </ng-container>\n \n <!-- Finance amount with special styling -->\n <ng-container *ngSwitchCase=\"'finance'\">\n <div class=\"text-black font-semibold\">\n {{ rowData[col.name].amount }}\n </div>\n </ng-container>\n \n <!-- App ID with type and risk tags -->\n <ng-container *ngSwitchCase=\"'appId'\">\n <div class=\"w-full text-left\">\n <div class=\"font-semibold\">{{ rowData[col.name].appId }}</div>\n <div class=\"flex gap-2 justify-content-start app-id-tags\">\n <!-- Type chip using style config (lending) -->\n <div *ngIf=\"rowData[col.name].type\" [ngClass]=\"getTypeContainerClass(rowData[col.name].type)\">\n <p class=\"mb-0\" [ngClass]=\"getTypeTextClass(rowData[col.name].type)\">\n {{ rowData[col.name].type }}\n </p>\n </div>\n <!-- Risk chip using style config (riskRating) -->\n <div *ngIf=\"rowData[col.name].risk && rowData[col.name].risk.toLowerCase() !== 'unknown'\"\n [ngClass]=\"getRiskContainerClass(rowData[col.name].risk)\">\n <p class=\"mb-0\" [ngClass]=\"getRiskTextClass(rowData[col.name].risk)\">\n {{ rowData[col.name].risk }}\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n \n <!-- Broker with name and company name -->\n <ng-container *ngSwitchCase=\"'broker'\">\n <div class=\"w-full text-left\">\n <div class=\"font-medium\">{{ rowData[col.name].brokerName }}</div>\n <div *ngIf=\"rowData[col.name].brokerCompanyName\" class=\"text-gray-700\">\n {{ rowData[col.name].brokerCompanyName }}\n </div>\n </div>\n </ng-container>\n <!--Render two lines with dynamic classes for any two-line column -->\n <ng-container *ngSwitchCase=\"'twoLine'\">\n <div class=\"w-full\" [ngClass]=\"[\n getColumnAlignment(col.name) === 'justify-content-start' ? 'text-left' : 'text-center',\n rowData[col.name]?.containerClass || (col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : '')\n ]\">\n <div class=\"row-multi-line-wrapper flex align-items-center justify-content-center\">\n <i\n *ngIf=\"rowData[col.name]?.iconClass && rowData[col.name]?.addressLine1\"\n class=\"pi\"\n [ngClass]=\"[rowData[col.name].addressLine1, rowData[col.name].iconClass]\"\n ></i>\n <span\n *ngIf=\"!rowData[col.name]?.iconClass\"\n [ngClass]=\"getLine1DisplayClasses(col, rowData)\"\n >\n {{ rowData[col.name]?.addressLine1 }}\n </span>\n </div>\n <div class=\"row-multi-line-wrapper\"\n [ngClass]=\"rowData[col.name]?.textClass || (col.line2NgClassExpression ? evaluateNgClass(col.line2NgClassExpression, rowData) : '')\">\n {{ rowData[col.name]?.postCode }}\n </div>\n </div>\n </ng-container>\n <!-- progress bar -->\n <ng-container *ngSwitchCase=\"'progress'\">\n <div class=\"progress-wrapper\">\n <round-progress [current]=\"rowData['taskCompletionPercent']\" [max]=\"100\"\n [color]=\"getProgressColor(rowData['taskCompletionPercent'])\"\n [background]=\"getProgressBackground(rowData['taskCompletionPercent'])\" [radius]=\"125\" [stroke]=\"20\"\n [semicircle]=\"false\" [rounded]=\"true\" [clockwise]=\"true\" [responsive]=\"false\" [duration]=\"800\"\n [animation]=\"'easeInOutQuart'\" [animationDelay]=\"0\">\n </round-progress>\n <div class=\"progress-title\" [ngStyle]=\"{color: getProgressColor(rowData['taskCompletionPercent'])}\">\n {{ rowData[col.name] }}\n </div>\n </div>\n \n </ng-container>\n <!-- Default cell rendering for other columns -->\n <ng-container *ngSwitchDefault>\n <!-- Don't render default content if we have task items -->\n <ng-container *ngIf=\"!isTaskItemsArray(rowData[col.name])\">\n <div\n class=\"table-text-wrapper text-center p-0 flex align-items-center\"\n [ngClass]=\"[\n getRowClass(col, rowData),\n j === 0 ? 'justify-content-start' : 'justify-content-center'\n ]\"\n [ngStyle]=\"{ 'font-weight': col.name === table.showDecriptionFor ? 'bold' : 'normal' }\"\n >\n <div *ngIf=\"!col.skipParentNgClass\" [ngClass]=\"rowData[col.name]?.containerClass || (col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : '')\">\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\n </div>\n <ng-container *ngIf=\"col.skipParentNgClass\">\n <div class=\"w-full text-left\">\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\n </div>\n </ng-container>\n <ng-template #bubbleOrFallback>\n <ng-container *ngIf=\"isArray(rowData[col.name]) && rowData[col.name].length && rowData[col.name][0]?.fullName\">\n <div class=\"flex flex-column gap-1\">\n <ng-container *ngFor=\"let bubble of rowData[col.name]; let i = index\">\n <div\n *ngIf=\"bubble.isCustomerVulnerable\"\n class=\"px-2 py-1 border-round-2xl inline-block bg-red-600 text-white\"\n >\n {{ bubble.fullName }}\n </div>\n <div\n *ngIf=\"!bubble.isCustomerVulnerable\"\n class=\"text-gray-700\"\n >\n {{ bubble.fullName }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"shouldShowValue(col, rowData)\">\n <div class=\"flex align-items-center gap-2\">\n <i\n *ngIf=\"rowData[col.name]?.icon\"\n class=\"pi\"\n [ngClass]=\"[rowData[col.name].icon, rowData[col.name].iconClass]\"\n ></i>\n <p class=\"mb-0\" [ngClass]=\"rowData[col.name]?.textClass || (col.textNgClassExpression ? evaluateNgClass(col.textNgClassExpression, rowData) : '')\">\n {{ rowData[col.name]?.text || rowData[col.name] }}\n </p>\n </div>\n </ng-container>\n </ng-template>\n <div\n *ngIf=\"col.name === table.showDecriptionFor && rowData[table.descriptionColumnName]\"\n class=\"text-black-500 text-sm mt-1\"\n style=\"font-weight: 600;\"\n >\n {{ rowData[table.descriptionColumnName] }}\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </td>\n <!-- Checkbox column -->\n <td *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" class=\"text-right p-0 border-none bg-none table-body-row-wrapper\"\n style=\"width: 4rem\" (click)=\"$event.stopPropagation()\">\n <div class=\"table-body-wrapper table-select-row-wrapper flex align-items-center justify-content-end\"\n [ngClass]=\"[\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\n isRowSelected(rowData) ? 'row-selected' : '',\n selection?.includes(rowData) ? 'green-highlight' : ''\n ]\">\n <p-tableCheckbox [value]=\"rowData\" [disabled]=\"!enableSelection\"></p-tableCheckbox>\n </div>\n </td>\n\n <!-- Actions column -->\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left table-body-wrapper\">\n <div *ngIf=\"(rowData.isRowDelete !== null || rowData.canDelete !== undefined) ? (showActions && rowData.isRowDelete) : showActions\" class=\"flex align-items-center justify-content-center\">\n <p-button\n icon=\"pi pi-trash\"\n (click)=\"deleteRow($event, rowData)\"\n class=\"delete-icon-wrapper mr-3\"\n [disabled]=\"!enableSelection\"\n ></p-button>\n </div>\n </td>\n </tr>\n</ng-template>\n \n <!-- Empty Message -->\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0) + (selectionMode === 'multiple' ? 1 : 0)\"\n class=\"text-center text-color font-semibold p-4\"\n >\n {{ noRecordsMessage }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n<!-- Paginator -->\n <div class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper\" *ngIf=\"usePagination\">\n <div class=\"pagination-text text-color\">\n Showing {{ (metaData?.totalItems ?? 0) > 0 ? (((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10) + 1) : 0 }} to {{ recordNumber }} of {{ metaData?.totalItems ?? 0 }} entries\n </div>\n\n <p-paginator\n #paginator\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\n [rows]=\"metaData?.itemsPerPage ?? 10\"\n [totalRecords]=\"metaData?.totalItems ?? 0\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n (onPageChange)=\"handleLoadRecords($event)\"\n ></p-paginator>\n</div> ","import { SHARED } from \"../../constant/SHARED\";\n\nexport class TableSecondaryModel {\n name!: string;\n headers!: any[];\n records!: any[];\n columnStyles?: StyleClass;\n sortField?:string\n dataKey?:string\n groupRowsBy?:string;\n showDecriptionFor ?: string\n descriptionColumnName : string = SHARED.EMPTY\n isSortingAllow : boolean = SHARED.TRUE\n rows: any;\n}\n\nexport class StyleClass{\n class : string = SHARED.EMPTY\n value : string = SHARED.EMPTY\n} ","import { AttributeModel } from \"../../models/attribute.model\";\n\nexport class TableSecondaryHeaderModel{\n name!: string;\n attributes!: AttributeModel;\n width!: string;\n} ","import { BaseModel } from \"../../../shared\";\n\nexport class ApiConfigModel extends BaseModel{\n name ?: string;\n path?: string;\n isActive!: boolean;\n parentapiConfigId!: string;\n parentKey!: string;\n description?:string;\n getByIDPath?:string;\n idProperty?:string;\n authHeaderName?: string;\n authToken?: string;\n}","export class MESSAGE {\n static VALIDATE_SUCCESS_MESSAGE = \"API validation completed successfully! Your API is now ready for use.\";\n static VALIDATE_ACTION_SUCCESS_MESSAGE = \"Validation action was successful. The configuration is valid.\"\n static QUERY_CHANGE_EVENT = \"Query Change Event:\";\n static DELETE_DICTIONARY_ITEM_SUCCESS = \"Dictionary item deleted successfully.\";\n static DATA_FETCH_SUCCESS = \"Data has been fetched successfully.\"\n}","import { DATASOURCES } from \"./DATASOURCES\";\n\nexport class LISTCONFIG {\n private static createConfig(name: string, dataSource: string): object {\n return {\n name: name,\n dataSource: dataSource,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\"\n };\n }\n \n static APICONFIG = [\n LISTCONFIG.createConfig(\"parentapiConfigId\", DATASOURCES.APIMANAGEMENT)\n ];\n \n static QUEUECONFIG = [\n LISTCONFIG.createConfig(\"queueID\", \"Queues\")\n ];\n\n static ACTIONQUEUECONFIG = [\n LISTCONFIG.createConfig(\"queueId\", \"Queues\")\n ];\n\n static QUEUEAPICONFIG = [\n LISTCONFIG.createConfig(\"apiConfigId\", DATASOURCES.APIMANAGEMENT)\n ];\n }","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared';\nimport { ApiConfigModel } from '../models/api-config.model';\n\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'apiManagementStore' })\n\nexport class ApiAdminStore extends BaseStore<ApiConfigModel> {\n constructor() {\n super();\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiAdminStore } from './api-admin.store';\nimport { Observable, tap } from 'rxjs';\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { ApiConfigModel } from '../models/api-config.model';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\n\n/**\n * Service for managing API configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class ApiAdminService extends BaseService<ApiConfigModel> {\n\n constructor(\n http: HttpClient,\n protected apiManagementStore: ApiAdminStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, apiManagementStore, configService, listService);\n this._pathName = DATASOURCES.APIMANAGEMENT;\n }\n\n protected override list : any= LISTCONFIG.APICONFIG\n\n checkApiByPathName(name:string, record:any): Observable<ApiConfigModel[]> {\n return this.http.post<ApiConfigModel[]>(this.apiUrl+name, record).pipe(\n tap((entities: ApiConfigModel[]) => this.apiManagementStore.set(entities))\n );\n }\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Message, SelectItem } from 'primeng/api';\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED } from '../../../../shared';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { ROUTES } from '../../../../shared/constant/ROUTES';\nimport { ApiAdminService } from '../../state/api-admin.service';\nimport { ApiAdminStore } from '../../state/api-admin.store';\nimport { ApiConfigModel } from '../../models/api-config.model';\nimport { Subscription } from 'rxjs';\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\n\n\n/**\n * Form component for creating and updating API configurations.\n */\n@Component({\n selector: 'lib-api-admin-form',\n templateUrl: './api-admin-form.component.html',\n styleUrl: './api-admin-form.component.scss',\n standalone: false,\n encapsulation:ViewEncapsulation.None\n})\nexport class ApiAdminFormComponent extends BaseFormComponent<ApiConfigModel> implements OnInit , OnDestroy{\n messages: Message[] = SHARED.EMPTYARRAY;\n name: string = SHARED.EMPTY;\n selectedParentId!: string;\n filteredRecords: string[] = SHARED.EMPTYARRAY;\n dropdownOptions: any[] = SHARED.EMPTYARRAY;\n apiPropertyList!: SelectItem[];\n\n constructor(public apiAdminService: ApiAdminService, override validatorService: ValidatorService, override router: Router, override activatedRoute: ActivatedRoute, public apiAdminStore: ApiAdminStore,override baseStore: BaseStore<ApiConfigModel>, override baseQuery: BaseQuery<ApiConfigModel>) {\n super(apiAdminService, validatorService, router, activatedRoute)\n this.record = new ApiConfigModel();\n this.record.isActive = true;\n }\n\n ngOnInit() {\n this.init();\n console.log(this.record);\n this.recordChange.asObservable().subscribe((record) => {\n if(record.parentapiConfigId){\n this.parentApiProperties(record.parentapiConfigId);\n }\n });\n this.baseStore.setIsApiValidated(false);\n }\n\n hanldeValidateApi() {\n const payload = {\n path: this.record.path,\n getByIDPath : this.record.getByIDPath,\n idProperty : this.record.idProperty,\n authHeaderName : this.record.authHeaderName,\n authToken : this.record.authToken\n }\n if (this.record.path) {\n this.apiAdminService.checkApiByPathName(ROUTES.VALIDATEAPI, payload).subscribe({\n next: (res: any) => {\n if (res && res.isValid) {\n this.handleErrorAndSuccess(res.isValid, res.message)\n }else{\n this.handleErrorAndSuccess(res.isValid, SHARED.EMPTY)\n }\n },\n error: (error: any) => {\n this.handleErrorAndSuccess(false, error.message)\n },\n });\n } else {\n this.handleErrorAndSuccess(false, ERROR.VALIDATE_API_FAILED)\n }\n }\n\n handleModelChange(event: string) {\n this.parentApiProperties(event);\n }\n\n parentApiProperties(event:string) {\n if (event) {\n this.apiAdminService.getById(event).subscribe((res: any) => {\n this.apiPropertyList = res.properties.map((property: string) => ({\n label: property,\n value: property\n }));\n })\n } else {\n this.record.parentKey = SHARED.EMPTY;\n this.apiPropertyList = SHARED.EMPTYARRAY;\n }\n }\n\n handleErrorAndSuccess(isValid:boolean, error:any){\n if(isValid){\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_SUCCESS_MESSAGE }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n this.baseStore.setIsApiValidated(SHARED.TRUE);\n }else{\n this.baseStore.setIsApiValidated(SHARED.FALSE);\n }\n }\n\n override ngOnDestroy(): void {\n this.record = {} as ApiConfigModel;\n super.ngOnDestroy();\n }\n}\n\n","<form-container\n [record]=\"record\"\n [headerText]=\"'Api Management Form'\"\n [messages]=\"messages\"\n (onSave)=\"handleSubmit()\"\n [showSave]=\"true\" \n (onCancel)=\"handleCancel()\"\n>\n <div class=\"card p-fluid p-formgrid grid m-0 mb-6\">\n <h4 class=\"font-bold col-12 md:col-12\">Api Management Form</h4>\n <div class=\"col-12 md:col-5\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Name',\n placeholder: 'Enter Name'\n }\"\n ></text-box>\n </div>\n <div class=\"col-12 md:col-5\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'path',\n isRequired: true,\n displayText: 'Path',\n placeholder: 'Enter Path'\n }\"\n ></text-box>\n </div>\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"apiAdminStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'getByIDPath',\n isRequired: false,\n displayText: 'Get By ID Path',\n placeholder: 'Enter getByID Path'\n }\"\n ></text-box>\n </div>\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'idProperty',\n isRequired: true,\n displayText: 'Id Property',\n placeholder: 'Enter Id Property'\n }\"\n ></text-box>\n </div>\n\n <div class=\"w-full px-2 mt-2 flex justify-content-end\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Validate\"\n (click)=\"hanldeValidateApi()\"\n class=\"p-button-raised validate-btn-wrapper\"\n ></button>\n </div>\n </div>\n <div class=\"card p-fluid p-formgrid grid \">\n <h4 class=\"font-bold col-12 md:col-12\">Other Details</h4>\n <div class=\"col-12 md:col-12 p-0 m-0 flex align-items-center\">\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'authHeaderName',\n isRequired: false,\n displayText: 'Auth Header',\n placeholder: 'Enter Auth Header'\n }\"\n ></text-box>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'authToken',\n isRequired: false,\n displayText: 'Token',\n placeholder: 'Enter token'\n }\"\n ></text-box>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name: 'parentapiConfigId',\n dataSource: 'api-configurations',\n listLabelProperty: 'name',\n listValueProperty: '_id', \n displayText: 'Select Parent',\n placeholder: 'Select Parent API',\n childListName: 'parentKey',\n childListKey: 'name'\n }\"\n (onInput)=\"handleModelChange($event)\"\n ></dropdown>\n\n </div>\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name:'parentKey',\n displayText : 'Property',\n placeholder: 'Select Property',\n options: apiPropertyList\n }\"></dropdown>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <text-area\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'description',\n isRequired: false,\n displayText: 'Description',\n placeholder: 'Enter Description'\n }\"\n ></text-area>\n </div>\n </div>\n</form-container>","export class PERMISSION {\n static ACTIONCONFIG_PUT = 'ActionConfigurations-PUT'\n static ACTIONCONFIG_DELETE = 'ActionConfigurations-DELETE'\n static API_CONFIG_PUT = 'ApiConfigurations-PUT'\n static API_CONFIG_DELETE = 'ApiConfigurations-DELETE'\n static DD_ADMIN_PUT = 'DataDictionaries-PUT'\n static DD_ADMIN_DELETE = 'DataDictionaries-DELETE'\n static MESSAGE_TEMPLATE_PUT = 'MessageTemplates-PUT'\n static MESSAGE_TEMPLATE_DELETE = 'MessageTemplates-DELETE'\n static WIDGETS_PUT = 'Widgets-PUT'\n static WIDGETS_DELETE = 'Widgets-DELETE'\n static WIDGETS_EVALUATE = 'Widgets-evaluate'\n static QUEUES_GET = 'Queues-GET'\n static QUEUES_POST = 'Queues-POST'\n static QUEUES_PUT = 'Queues-PUT'\n}","import { Component, OnInit } from '@angular/core';\nimport { BaseListComponent, DATASOURCES, TableBuilder, apiHiddenHeaderList } from '../../../../shared';\nimport { ApiConfigModel } from '../../models/api-config.model';\nimport { ApiAdminService } from '../../state/api-admin.service';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n\n/**\n * ApiAdminListComponent\n */\n@Component({\n selector: 'lib-api-admin-list',\n templateUrl: './api-admin-list.component.html',\n styleUrl: './api-admin-list.component.scss',\n standalone : false\n})\nexport class ApiAdminListComponent extends BaseListComponent<ApiConfigModel> implements OnInit {\n\n override editPermission: string = PERMISSION.API_CONFIG_PUT\n override deletePermission: string = PERMISSION.API_CONFIG_DELETE\n pathName:string = DATASOURCES.APIMANAGEMENT;\n constructor(apiAdminService : ApiAdminService, private tableBuilder : TableBuilder ){\n super(apiAdminService, tableBuilder)\n this.tableBuilder.hiddenHeaders = apiHiddenHeaderList;\n }\n ngOnInit() {\n this.init()\n }\n}","\n@if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\n </lib-table-primary>\n}","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ApiAdminFormComponent } from './components/api-admin-form/api-admin-form.component';\nimport { ApiAdminListComponent } from './components/api-admin-list/api-admin-list.component';\nimport { FormsModule } from '@angular/forms';\nimport { AppConfigService, CheckBoxComponent, PasswordComponent, SharedModule, TablePrimaryComponent, UsernameComponent } from '../../shared';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ButtonModule } from 'primeng/button';\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\n\n\n@NgModule({\n declarations: [ApiAdminFormComponent ,ApiAdminListComponent],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n HttpClientModule,\n ButtonModule,\n UsernameComponent,\n PasswordComponent,\n TextAreaComponent,\n TablePrimaryComponent,\n CheckBoxComponent\n ],\n exports : [ApiAdminFormComponent, ApiAdminListComponent],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: (configService: AppConfigService) => () =>\n configService.loadAppConfig(),\n deps: [AppConfigService],\n multi: true,\n },\n ],\n})\nexport class ApiAdminModule { }\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared';\nimport { WidgetModel } from '../models/widget.model';\n\n/**\n * Widget Admin Store\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'widgetStore' })\nexport class WidgetAdminStore extends BaseStore<WidgetModel> {\n constructor() {\n super();\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\nimport { WidgetAdminStore } from './widget-admin.store';\nimport { WidgetModel } from '../models/widget.model';\n\n/**\n * Service for managing widget configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetAdminService extends BaseService<WidgetModel> {\n\n constructor(\n http: HttpClient,\n protected apiManagementStore: WidgetAdminStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, apiManagementStore, configService, listService);\n this._pathName = DATASOURCES.WIDGET;\n }\n\n protected override list: any = [\n {\n name: \"apiConfigId\",\n dataSource: DATASOURCES.APIMANAGEMENT,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryID\",\n dataSource: DATASOURCES.DICTIONARY,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryItemID\",\n dataSource: \"DataDictionaries/dictionaryItems\",\n listValueProperty: \"_id\",\n listLabelProperty: \"key\",\n },\n {\n name: \"linkedWidgetID\",\n dataSource: DATASOURCES.WIDGET,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n\n ]\n\n /**\n * Cleans and parses a malformed style JSON string\n * @param {string} rawStyleStr - The raw style string from API or DB\n * @returns {Record<string, any> | null} - Parsed style object or null if parsing fails\n */\n sanitizeStyleString(rawStyleStr: string): Record<string, any> | null {\n try {\n if (!rawStyleStr) return {};\n rawStyleStr = rawStyleStr.replace(/\"\"/g, '\"');\n rawStyleStr = rawStyleStr.replace(/([{,]\\s*)([a-zA-Z0-9_]+)\\s*:/g, '$1\"$2\":');\n const parsed = JSON.parse(rawStyleStr);\n return typeof parsed === 'object' && parsed !== null ? parsed : null;\n } catch (err) {\n console.error('Failed to parse style string:', rawStyleStr, err);\n return null;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { BaseListComponent, DATASOURCES, TableBuilder, widgetHiddenHeaderList } from '../../../../shared';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetAdminService } from '../../state/widget-admin.service';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n/**\n * Widget Admin List Component\n */\n@Component({\n selector: 'lib-widget-admin-list',\n standalone: false,\n templateUrl: './widget-admin-list.component.html',\n styleUrl: './widget-admin-list.component.scss'\n})\nexport class WidgetAdminListComponent extends BaseListComponent<WidgetModel> {\n \n pathName:string = DATASOURCES.WIDGET;\n override editPermission: string = PERMISSION.WIDGETS_PUT\n override deletePermission: string = PERMISSION.WIDGETS_DELETE\n constructor(widgetAdminService: WidgetAdminService, private tableBuilder: TableBuilder) {\n super(widgetAdminService, tableBuilder);\n this.tableBuilder.hiddenHeaders = widgetHiddenHeaderList;\n }\n\n ngOnInit() {\n this.init()\n }\n}","@if(table){\n<lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\n\n</lib-table-primary>\n}","import { BaseModel } from \"../../../shared\";\nimport { StyleConfig, WidgetStyleConfig } from \"../../../widget/models/widget.model\";\n\n/**\n * WidgetModel class represents the model of a widget.\n */\nexport class WidgetModel extends BaseModel {\n name!: string;\n apiConfigId!: string;\n dataItems: WidgetItemModel[] = [];\n badges: BadgeModel[] = [];\n order?: number;\n headerDictionaryID!: string;\n subHeaderDictionaryID!: string;\n headerDictionaryItemID!: string;\n subHeaderDictionaryItemID!: string;\n style?: any;\n layoutType?: string;\n isActive!: boolean;\n}\n\n/**\n * WidgetItemModel class represents the model of a widget item.\n */\nexport class WidgetItemModel extends BaseModel{\n name!: string;\n dictionaryItemID!: string;\n dictionaryID!: string;\n style?: any;\n isActive: boolean = true;\n}\n\n/**\n * BadgeModel class represents the model of a badge.\n */\nexport class BadgeModel {\n dictionaryItemID!: string;\n dictionaryID!: string;\n style?: any;\n}\n\nexport interface WidgetLayoutTypeModel {\n name: string;\n value: string;\n}","import { Injectable } from '@angular/core';\nimport { BaseQuery } from '../../../shared';\nimport { WidgetModel } from '../models/widget.model';\nimport { WidgetAdminStore } from './widget-admin.store';\n\n\n/**\n * Widget Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetAdminQuery extends BaseQuery<WidgetModel> {\n\n constructor(protected override store: WidgetAdminStore) {\n super(store);\n }\n\n}\n","\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BadgeModel, WidgetItemModel, WidgetLayoutTypeModel, WidgetModel } from '../../models/widget.model';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED, widgetLayoutTypeList } from '../../../../shared';\nimport { WidgetAdminService } from '../../state/widget-admin.service';\nimport { WidgetAdminQuery } from '../../state/widget-admin.query';\nimport { WidgetAdminStore } from '../../state/widget-admin.store';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { List } from '../../../../shared/models/list.model';\nimport { SelectItem } from 'primeng/api';\n\n/**\n * WidgetAdminFormComponent\n */\n@Component({\n selector: 'lib-widget-admin-form',\n standalone: false,\n templateUrl: './widget-admin-form.component.html',\n styleUrl: './widget-admin-form.component.scss',\n})\nexport class WidgetAdminFormComponent extends BaseFormComponent<WidgetModel> implements OnInit, OnDestroy {\n\n widgetItem!: WidgetItemModel;\n widgetItems: WidgetItemModel[] = [];\n dictionaries: any[] = [];\n headerDictionaryItems: any[]=[];\n subHeaderDictionaryItems: any[] = [];\n dictionaryItemArray: any[][] = [];\n badgeDictionaryItemArray: any[][] = [];\n widgetOptionsArray: SelectItem[] = [];\n widgetLayoutTypeList: WidgetLayoutTypeModel[] = widgetLayoutTypeList;\n\n constructor(\n override service: WidgetAdminService,\n override validatorService: ValidatorService,\n public widgetStore: WidgetAdminStore,\n private query: WidgetAdminQuery,\n override router: Router,\n override activatedRoute: ActivatedRoute,\n override baseStore: BaseStore<WidgetModel>,\n override baseQuery: BaseQuery<WidgetModel>\n ) {\n super(service, validatorService, router, activatedRoute);\n this.record = new WidgetModel();\n this.record.isActive = true;\n this.record.dataItems = this.record.dataItems || [];\n this.record.badges = this.record.badges || [];\n this.widgetItem = new WidgetItemModel();\n }\n\n ngOnInit(): void {\n super.init();\n this.baseStore.setIsApiValidated(null);\n this.recordChange.asObservable().subscribe((record) => {\n // Ensure arrays are initialized\n if (!record.dataItems) record.dataItems = [];\n if (!record.badges) record.badges = [];\n \n this.handleAPIChange(record.queueID);\n this.handleHeaderDictionarySelect(record.headerDictionaryID);\n this.handleSubHeaderDictionarySelect(record.subHeaderDictionaryID);\n if(record?.dataItems?.length > 0) {\n record.dataItems.forEach((item:WidgetItemModel, index:number) => {\n this.handleWidgetItemDictionarySelect(item.dictionaryID, index);\n });\n }\n if(record?.badges?.length > 0) {\n record.badges.forEach((badge:BadgeModel, index:number) => {\n this.handleBadgeDictionarySelect(badge.dictionaryID, index);\n });\n }\n });\n }\n\n handleWidgetItemAddBtnClick() {\n if(!(this.record.name && this.record.apiConfigId)) return;\n if (Array.isArray(this.record.dataItems)) {\n const hasEmptyItem = this.record.dataItems.some((item: WidgetItemModel) => {\n const isItemNameEmpty = !item.name || item.name.trim() === SHARED.EMPTY;\n const isDictionaryEmpty = !item.dictionaryID || item.dictionaryID.trim() === SHARED.EMPTY;\n const isDictionaryItemEmpty = !item.dictionaryItemID || item.dictionaryItemID.trim() === SHARED.EMPTY;\n return isItemNameEmpty && isDictionaryItemEmpty && isDictionaryEmpty;\n });\n \n if (hasEmptyItem) {\n return;\n }\n } else {\n this.record.dataItems = [];\n }\n this.record.dataItems = [...this.record.dataItems, new WidgetItemModel()];\n }\n\n handleAPIChange(event:any){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\n this.dictionaries = allDictionaryRecords?.filter((item) => item.apiConfigId === event) || [];\n });\n }\n\n handleHeaderDictionarySelect(dictionaryId:string){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.headerDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleSubHeaderDictionarySelect(dictionaryId: any) {\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.subHeaderDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleWidgetItemDictionarySelect(dictionaryId: any, index: number) {\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.dictionaryItemArray[index] = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleBadgeAddBtnClick() {\n if(!(this.record.name && this.record.apiConfigId)) return;\n if (Array.isArray(this.record.badges)) {\n const hasEmptyBadge = this.record.badges.some((badge: BadgeModel) => {\n const isDictionaryEmpty = !badge.dictionaryID || badge.dictionaryID.trim() === SHARED.EMPTY;\n const isDictionaryItemEmpty = !badge.dictionaryItemID || badge.dictionaryItemID.trim() === SHARED.EMPTY;\n return isDictionaryItemEmpty && isDictionaryEmpty;\n });\n \n if (hasEmptyBadge) {\n return;\n }\n } else {\n this.record.badges = [];\n }\n this.record.badges = [...this.record.badges, new BadgeModel()];\n }\n\n handleBadgeDictionarySelect(dictionaryId: any, index: number) {\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.badgeDictionaryItemArray[index] = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleDeleteBadge(index: number) {\n if (this.record.badges && index >= 0 && index < this.record.badges.length) {\n this.record.badges = this.record.badges.filter((_, i) => i !== index);\n } else {\n console.error(ERROR.INVALID_INDEX, index);\n }\n }\n\n handleDeleteRecord(index: number) {\n if (this.record.dataItems && index >= 0 && index < this.record.dataItems.length) {\n this.record.dataItems = this.record.dataItems.filter((_, i) => i !== index);\n } else {\n console.error(ERROR.INVALID_INDEX, index);\n }\n }\n\n override handleSubmit(): void {\n if (typeof this.record.style === 'string') {\n const parsedStyle = this.service.sanitizeStyleString(this.record.style);\n this.record.style = parsedStyle ? parsedStyle : {};\n }\n\n this.record.dataItems = this.record.dataItems.map((item) => {\n if (typeof item.style === 'string') {\n const parsed = this.service.sanitizeStyleString(item.style);\n item.style = parsed ? parsed : {};\n }\n return item;\n });\n\n if (this.record.badges && Array.isArray(this.record.badges)) {\n this.record.badges = this.record.badges.map((badge) => {\n if (typeof badge.style === 'string') {\n const parsed = this.service.sanitizeStyleString(badge.style);\n badge.style = parsed ? parsed : {};\n }\n return badge;\n });\n } else {\n this.record.badges = [];\n }\n super.handleSubmit();\n }\n\n override ngOnDestroy(): void {\n this.record = {} as WidgetModel;\n super.ngOnDestroy();\n }\n}","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\n (onCancel)=\"handleCancel()\">\n <div class=\"card p-fluid p-formgrid\">\n <h4 class=\"font-bold col-12 md:col-12\">Widget Form</h4>\n <div class=\"col-12 md:col-12 mt-2 mb-2 flex\">\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Name',\n placeholder: 'Enter Widget Name'\n }\"></text-box>\n </div>\n\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\n <dropdown [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n name:'apiConfigId',\n displayText : 'Select API',\n isRequired:true,\n }\" (onInput)=\"handleAPIChange($event)\">\n </dropdown>\n </div>\n\n <div class=\"col-4 md:col-4 mt-2 mb-2\">\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'style',\n isRequired: false,\n displayText: 'Style',\n placeholder: 'Enter Widget Style'\n }\"></text-box>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n <div class=\"grid align-items-center m-0\">\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'headerDictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n options: dictionaries\n }\" (onInput)=\"handleHeaderDictionarySelect($event)\">\n </dropdown>\n </div>\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'headerDictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select Header Item',\n options: headerDictionaryItems\n }\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'subHeaderDictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n options: dictionaries\n }\" (onInput)=\"handleSubHeaderDictionarySelect($event)\">\n </dropdown>\n </div>\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'subHeaderDictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select SubHeader Item',\n options: subHeaderDictionaryItems\n }\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-6 md:col-2 mt-2 mb-2 flex\">\n <div class=\"field col-12 pl-2 pb-0 mb-2 md:mr-2 md:col-12\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'layoutType',\n listLabelProperty:'name',\n listValueProperty:'value',\n displayText : 'Select Layout Type',\n options: widgetLayoutTypeList\n }\">\n </dropdown>\n </div>\n </div>\n </div>\n\n <div class=\"field p-0 pr-2 col-12 md:col-12 flex gap-2\">\n <div class=\"col-6 md:col-2\">\n <div class=\"card m-0 p-0 mb-2\">\n <div class=\"mt-3 w-full flex\">\n <button pButton pRipple routerLinkActive=\"router-link-active\"\n icon=\"pi pi-plus font-semibold\"\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\n (click)=\"handleBadgeAddBtnClick()\">\n <span class=\"ml-3\">Add Badge </span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-6 md:col-2\">\n <div class=\"card m-0 p-0 mb-2\">\n <div class=\"mt-3 w-full flex\">\n <button pButton pRipple routerLinkActive=\"router-link-active\"\n icon=\"pi pi-plus font-semibold\"\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\n (click)=\"handleWidgetItemAddBtnClick()\">\n <span class=\"ml-3\">Add Widget Item </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Badges Section -->\n <div class=\"field p-0 pr-2 col-12 md:col-12 mb-3\">\n <h5 *ngIf=\"(record?.badges?.length ?? 0) > 0\" class=\"font-bold col-12 md:col-12 mb-2\">Badges</h5>\n <div class=\"feild-card col-12 md:col-12 flex\" *ngFor=\"let badge of (record?.badges || []); let i = index;\">\n <div class=\"field col-3 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"badge\" [attributeModel]=\"{\n name:'dictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n isRequired:true,\n options: dictionaries\n }\" (onInput)=\"handleBadgeDictionarySelect($event, i)\">\n </dropdown>\n </div>\n <div class=\"field col-3 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"badge\" [attributeModel]=\"{\n name:'dictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select Properties',\n isRequired:true,\n options: badgeDictionaryItemArray[i]\n }\">\n </dropdown>\n </div>\n <div class=\"field col-4 col-sm-6\">\n <text-box [store]=\"widgetStore\" [record]=\"badge\" [attributeModel]=\"{\n name : 'style',\n readonly : false,\n displayText : 'Style',\n isRequired : false,\n }\"></text-box>\n </div>\n <div class=\"field col-2 m-0 flex justify-content-start md:col-2 mt-5\">\n <div class=\"ml-4 delete-icon-container\">\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\" (click)=\"handleDeleteBadge(i)\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Widget Items -->\n <h5 *ngIf=\"(record?.dataItems?.length ?? 0) > 0\" class=\"font-bold col-12 md:col-12 mb-2\">Widget Items</h5>\n <div class=\"feild-card col-12 md:col-12 flex\" *ngFor=\"let widgetItem of (record?.dataItems || []); let i = index;\">\n <div class=\"field col-2 col-sm-6\">\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\n name : 'name',\n readonly : false,\n displayText : 'Item Label',\n isRequired : true,\n }\"></text-box>\n </div>\n <div class=\"field col-2 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\n name:'dictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n isRequired:true,\n options: dictionaries\n }\" (onInput)=\"handleWidgetItemDictionarySelect($event, i)\">\n </dropdown>\n </div>\n <div class=\"field col-2 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\n name:'dictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select Properties',\n isRequired:true,\n options: dictionaryItemArray[i]\n }\">\n </dropdown>\n </div>\n <div class=\"field col-4 col-sm-6\">\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\n name : 'style',\n readonly : false,\n displayText : 'Item Style',\n isRequired : false,\n }\"></text-box>\n </div>\n <div class=\"field col-4 m-0 flex justify-content-center md:col-2 mt-5\">\n <div class=\"m-0\">\n <check-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Is Active ?',\n }\">\n </check-box>\n </div>\n <div class=\"ml-4 delete-icon-container\">\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\" (click)=\"handleDeleteRecord(i)\"></i>\n </div>\n </div>\n </div>\n </div>\n</form-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent } from '../../shared';\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\nimport { WidgetAdminListComponent } from './components/widget-admin-list/widget-admin-list.component';\nimport { WidgetAdminFormComponent } from './components/widget-admin-form/widget-admin-form.component';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\n\n\n\n/**\n * Module for managing widgets.\n */\n@NgModule({\n declarations: [WidgetAdminListComponent, WidgetAdminFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n TablePrimaryComponent,\n DropdownComponent,\n CheckBoxComponent,\n ButtonComponent,\n ButtonModule,\n TextBoxComponent\n ],\n exports: [WidgetAdminListComponent, WidgetAdminFormComponent]\n})\nexport class QWWidgetAdminModule { }\n","import { BaseModel } from \"../../../shared\";\n\nexport class QueueModel extends BaseModel {\n name?: string;\n description?: string;\n apiConfigId!: string;\n rules?: any;\n properties?: any;\n itemCount?: any;\n apiConfigUrl: string = \"\";\n detailsApiConfigUrl?: string;\n header?: string;\n subHeader?: string;\n isActive?: boolean;\n}\n","import { Injectable } from \"@angular/core\";\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\nimport { createInitialState, QueueState } from \"./queue.state\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { BaseStore } from \"../../../shared\";\n\n@Injectable({ providedIn: \"root\" })\n@StoreConfig({ name: \"queues\" })\nexport class QueueStore extends BaseStore<QueueModel> {\n constructor() {\n super();\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { QueueStore } from \"./queue.store\";\nimport { BaseQuery } from \"../../../shared/state/base.query\";\nimport { QueueModel } from \"../models/queue.model\";\n\n@Injectable({ providedIn: \"root\" })\nexport class QueueQuery extends BaseQuery<QueueModel> {\n constructor(protected override store: QueueStore) {\n super(store);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { AppConfigService, BaseService, DATASOURCES, URLS } from \"../../../shared\";\nimport { QueueStore } from \"./queue.store\";\nimport { ListService } from \"../../../shared/services/list.service\";\nimport { Observable, tap } from \"rxjs\";\nimport { LISTCONFIG } from \"../../../shared/constant/LIST-CONFIG\";\n\n@Injectable({ providedIn: \"root\" })\nexport class QueueService extends BaseService<QueueModel> {\n constructor(\n public queueStore: QueueStore,\n http: HttpClient,\n appConfigService: AppConfigService,\n listService: ListService\n ) {\n super(http, queueStore, appConfigService, listService);\n this._pathName = DATASOURCES.QUEUES;\n }\n\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG;\n getbyApiPath(id: string): Observable<QueueModel[]> {\n return this.http\n .get<QueueModel[]>(`${this.apiUrl}${DATASOURCES.APIMANAGEMENT}/${id}`)\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\n }\n\n getCaseById(url: string): Observable<any> {\n return this.http\n .get<QueueModel[]>(url)\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\n }\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { QueryBuilderConfig } from \"@kerwin612/ngx-query-builder\";\nimport { QueueQuery } from \"../../state/queue.query\";\nimport { QueueModel } from \"../../models/queue.model\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { BaseFormComponent, SHARED, ERROR, BaseStore, BaseQuery } from \"../../../../shared\";\nimport { QueueStore } from \"../../state/queue.store\";\nimport { ValidatorService } from \"../../../../shared/services/validator.service\";\nimport { QueueService } from \"../../state/queue.service\";\nimport { MESSAGE } from \"../../../../shared/constant/MESSAGES\";\nimport { Message } from \"primeng/api\";\nimport { takeUntil } from \"rxjs\";\n\n@Component({\n selector: \"lib-queue-admin-form\",\n standalone: false,\n templateUrl: \"./queue-admin-form.component.html\",\n styleUrl: \"./queue-admin-form.component.scss\",\n encapsulation: ViewEncapsulation.None,\n})\nexport class QueueAdminFormComponent\n extends BaseFormComponent<QueueModel>\n implements OnInit, OnDestroy\n{\n constructor(\n public queueQuery: QueueQuery,\n public queueService: QueueService,\n override activatedRoute: ActivatedRoute,\n public queueStore: QueueStore,\n override validatorService: ValidatorService,\n override router: Router,\n override baseStore: BaseStore<QueueModel>, \n override baseQuery: BaseQuery<QueueModel>\n ) {\n super(queueService, validatorService, router, activatedRoute);\n this.record = new QueueModel();\n this.record.isActive = true;\n }\n\n messages: Message[] = SHARED.EMPTYARRAY;\n fetchedProperties: any;\n config: QueryBuilderConfig = { fields: {} };\n apiPropertyList: any;\n\n query = {\n condition: SHARED.AND,\n rules: [],\n };\n\n ngOnInit(): void {\n this.baseStore.setIsApiValidated(false);\n this.service.initList();\n const id = this.activatedRoute\n ? this.activatedRoute.snapshot.params[SHARED.ID]\n : \"\";\n if (id && id !== SHARED.ZERO.toString()) {\n this.service.getById(id).subscribe((res: any) => {\n if (res) {\n this.record = res;\n this.getApiProperties(res?.apiConfigId, res);\n this.query = res.rules ? structuredClone(res.rules) : { condition: SHARED.AND, rules: [] };\n this.fetchedProperties = res.properties;\n this.initialRecord = JSON.parse(JSON.stringify(res));\n if (this.fetchedProperties) {\n this.setupQueryBuilderConfig(this.fetchedProperties);\n }\n }\n else {\n this.initialRecord = structuredClone(this.record);\n }\n });\n } \n this.formStateService.selectIsFormNavigating()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.checkUnsavedChanges()\n }\n });\n }\n \n getApiProperties(id: string, res: any): void {\n this.fetchApiProperties(id, { setValidated: false, showToast: false }, res);\n }\n\n setupQueryBuilderConfig(properties: string[]): void {\n if (!properties || properties.length === 0) {\n console.warn(\"Properties list is empty. Query Builder config might be invalid.\");\n return;\n }\n \n const fieldsConfig: { [key: string]: any } = {};\n \n properties.forEach((prop) => {\n fieldsConfig[prop] = {\n name: prop,\n type: SHARED.STRING, // Ensure type is valid\n operators: SHARED.OPERATORS,\n options: [], // Add any default options if needed\n };\n });\n \n this.config = { fields: fieldsConfig };\n console.log(\"Query Builder Config:\", this.config);\n }\n \n\n onQueryChange(event: any) {\n console.log(MESSAGE.QUERY_CHANGE_EVENT, event);\n }\n\n private fetchApiProperties(apiConfigId: string, options: { setValidated?: boolean; showToast?: boolean } = {}, response:any): void {\n if (apiConfigId) {\n this.queueService.getbyApiPath(apiConfigId).subscribe({\n next: (res: any) => {\n if (res) {\n this.fetchedProperties = res.properties;\n const updatedPropertyList = res.properties.map((value:any) => ({ value }));\n this.apiPropertyList = updatedPropertyList;\n this.setupQueryBuilderConfig(res.properties);\n if(response) {\n this.record.header = response?.header;\n this.record.subHeader = response?.subHeader;\n }\n if (options.setValidated) {\n this.baseStore.setIsApiValidated(SHARED.TRUE);\n }\n }\n },\n error: (error: any) => {\n if (options.setValidated) {\n this.baseStore.setIsApiValidated(SHARED.FALSE);\n }\n console.error(ERROR.ERROR_FETCHING_DATA, error);\n },\n complete: () => {\n if (options.showToast) {\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.DATA_FETCH_SUCCESS }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n }\n },\n });\n } else {\n console.warn(ERROR.API_NAME_NOT_SET);\n }\n }\n\n handleGetData(): void {\n this.fetchApiProperties(this.record.apiConfigId, { setValidated: true, showToast: true }, null);\n }\n\n handleQueueChange(queueId: string) {\n if(queueId) {\n this.apiPropertyList = [];\n this.record.header = SHARED.EMPTY;\n this.record.subHeader = SHARED.EMPTY;\n }\n }\n\n override handleSubmit(): void {\n this.convertStringToBoolean(this.query.rules);\n this.record.rules = this.query;\n this.record.properties = this.fetchedProperties;\n super.handleSubmit();\n }\n\n convertStringToBoolean(rules: any[]): void {\n rules.forEach(rule => {\n if (rule.rules) {\n this.convertStringToBoolean(rule.rules);\n } else if (rule.value === SHARED.STRING_TRUE) {\n rule.value = true;\n } else if (rule.value === SHARED.STRING_FALSE) {\n rule.value = false;\n }\n });\n }\n\n override ngOnDestroy(): void {\n this.record = {} as QueueModel;\n super.ngOnDestroy();\n }\n}\n","<div class=\"grid m-0\">\n <div class=\"col-12\">\n <div>\n <form-container\n [record]=\"record\"\n [headerText]=\"'Queue / Create Queue'\"\n (onSave)=\"handleSubmit()\"\n (onCancel)=\"handleCancel()\"\n [showSave]=\"true\"\n [messages]=\"messages\"\n >\n <div class=\"card m-0\">\n <div class=\"p-fluid p-formgrid grid m-0\">\n <h4 class=\"font-bold col-12 md:col-12\">Create Queue</h4>\n <div class=\"col-12 md:col-5\">\n <text-box\n [record]=\"record\"\n [store]=\"queueStore\"\n [attributeModel]=\"{\n name : 'name',\n displayText:'Queue Name',\n readonly : false,\n isRequired : true,\n }\"\n >\n </text-box>\n </div>\n <div class=\"col-12 md:col-5\">\n <dropdown\n [record]=\"record\"\n [store]=\"queueStore\"\n [attributeModel]=\"{\n name: 'apiConfigId',\n readonly: false,\n isRequired: true,\n dataSource: 'apiConfig',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n displayText: 'Api'\n }\" (onInput)=\"handleQueueChange($event)\"\n >\n </dropdown>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"queueStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n\n <div class=\"w-full px-2 mt-2 flex justify-content-end mb-2\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Validate\"\n (click)=\"handleGetData()\"\n class=\"p-button-raised validate-btn-wrapper\"\n ></button>\n </div>\n\n <div class=\"p-fluid p-formgrid grid m-0\">\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"queueStore\"\n [record]=\"record\"\n [isStaticDropdown]=\"true\"\n [attributeModel]=\"{\n name:'header',\n displayText : 'Header',\n placeholder: 'Select Header',\n listValueProperty: 'value',\n listLabelProperty: 'value',\n readonly : false,\n isRequired : true,\n options: apiPropertyList\n }\"></dropdown>\n </div>\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"queueStore\"\n [record]=\"record\"\n [isStaticDropdown]=\"true\"\n [attributeModel]=\"{\n name:'subHeader',\n displayText : 'SubHeader',\n placeholder: 'Select SubHeader',\n listValueProperty: 'value',\n listLabelProperty: 'value',\n readonly : false,\n isRequired : false,\n options: apiPropertyList\n }\"></dropdown>\n </div>\n </div>\n </div>\n\n <div class=\"card m-0\">\n <div class=\"p-fluid p-formgrid grid m-0 mb-2\">\n <h4 class=\"font-bold col-12 md:col-12\">Queue Details</h4>\n </div>\n <ngx-query-builder\n class=\"p-2\"\n [(ngModel)]=\"query\"\n [config]=\"config\"\n (queryChange)=\"onQueryChange($event)\"\n ></ngx-query-builder>\n </div>\n </form-container>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { QueueAdminFormComponent } from './components/queue-admin-form/queue-admin-form.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: QueueAdminFormComponent,\n children: [],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class QueueRoutingModule {}","import { Injectable } from '@angular/core';\nimport { SHARED } from '../constant/SHARED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataTransformerService {\n\n constructor() { }\n flattenObject(data: any, result: any[] = [], additionalFields: any = {}): any[] {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n if (typeof data[key] === SHARED.TYPE_OBJECT && data[key] !== null && !Array.isArray(data[key])) {\n this.flattenObject(data[key], result);\n } else {\n result.push({\n label: this.transformLabel(key),\n value: data[key]\n });\n }\n }\n }\n if (additionalFields._id) {\n result.push({\n _id: additionalFields._id\n });\n }\n\n if (additionalFields.QueueID) {\n result.push({\n QueueID: additionalFields.QueueID\n });\n }\n\n return result;\n }\n\n transformLabel(key: string): string {\n return key.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { QueueModel } from '../../models/queue.model';\nimport { ROUTES, SEQUENTIAL_MESSAGE, SHARED, MESSAGE_TYPES } from '../../../../shared';\nimport { DataTransformerService } from '../../../../shared/services/data-transformer.service';\nimport { Router } from '@angular/router';\nimport { QueueService } from '../../state/queue.service';\nimport { QueueStore } from '../../state/queue.store';\n\n@Component({\n selector: 'queue-application-list',\n standalone: false,\n templateUrl: './queue-application-list.component.html',\n styleUrls: ['./queue-application-list.component.scss'],\n})\nexport class QueueApplicationListComponent implements OnChanges {\n @Input() queueData!: QueueModel;\n\n selectedStatus: string = SHARED.STATUS_ACTIVE;\n isAscending: boolean = true;\n associateQueueList: any;\n\n constructor(\n public queueService: QueueService,\n public dataTransformService: DataTransformerService,\n public router: Router,\n public queueStore : QueueStore\n ) {}\n\n ngOnChanges() {\n if (this.queueData) {\n this.loadAssociatedList();\n }\n }\n loadAssociatedList(): void {\n if (this.queueData && this.queueData._id) {\n this.queueService.getCaseById(this.queueData.apiConfigUrl).subscribe((application: any) => {\n if (application) {\n const messages = SEQUENTIAL_MESSAGE;\n this.associateQueueList = application.map((item: any, index: number) => ({\n ...item,\n initials: this.getInitials(item.FullName),\n message: {\n content: messages[index % messages.length],\n type: this.getTypeByIndex(index),\n day: index % 2 === 0 ? SHARED.TODAY : SHARED.YESTERDAY,\n count: this.getRandomCount(),\n },\n }));\n }\n });\n } else {\n this.associateQueueList = [];\n }\n }\n getRandomCount(): number {\n return Math.floor(Math.random() * 10) + 1;\n }\n \n getInitials(fullName: string): string {\n if (!fullName) return '';\n const nameParts = fullName?.split(' ')?.filter(Boolean);\n const initials = nameParts?.length > 1\n ? nameParts[0][0] + nameParts[nameParts?.length - 1][0]\n : nameParts[0][0];\n return initials?.toUpperCase();\n } \n \n getTypeByIndex(index: number): string {\n const types = MESSAGE_TYPES;\n return types[index % types.length];\n }\n \n\n getRandomType(): string {\n const types = MESSAGE_TYPES;\n return types[Math.floor(Math.random() * types.length)];\n }\n \n \n\n handleApplicationClick(application: any) {\n this.router.navigate([ROUTES.APPLICATION + application.CaseId]);\n }\n\n onStatusChange(selectedStatus: any): any {\n this.selectedStatus = selectedStatus.target.value;\n }\n}\n","<div class=\"grid m-0\">\n <div class=\"col-12\">\n <div class=\"p-fluid p-formgrid grid p-2\">\n <div class=\"card col-12 md:col-12 flex flex-column border-bottom align-items-start p-4 pb-3\" style=\"\n border-bottom: 1px solid var(--surface-border);\n border-radius: 0px;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n \">\n <h4 class=\"text-color m-0 queue-name font-semibold margin\">\n {{ queueData.name }}\n </h4>\n </div>\n\n <div class=\"col-12 md:col-12 p-0 flex scrollable flex-column\" [ngClass]=\"\n selectedStatus === 'active' ? 'surface-card' : 'inactive-card-wrapper'\n \">\n @for(record of associateQueueList; track record; let i = $index) {\n @if(record){\n <div class=\"col-12 md:col-12 border-bottom-1 p-0 surface-border gap-2 hover:surface-ground cursor-pointer\"\n (click)=\"handleApplicationClick(record)\">\n\n <div class=\"col-12 md:col-12 flex align-items-center py-3 px-4 userInfo\">\n <div class=\"col-12 md:col-2 p-0 userImage\">\n <div\n class=\"mainimg flex align-items-center justify-content-center circleColor w-3rem h-3rem border-circle\">\n <span class=\"font-bold\" style=\"font-weight: 600; font-size: 13.5; font-family: inherit;\">\n {{ record.initials }}\n </span>\n </div>\n </div>\n <div class=\"col-12 md:col-10 p-0\">\n <div class=\"flex justify-content-between align-items-center col-12 md:col-12 p-0\">\n <div class=\"userName\" style=\"font-weight: 600; font-size: 15px; \">\n {{ record.FullName | capitalizeWords }} \n </div>\n <div class=\"dayAndtime flex\">\n @if(record.message.type == \"Email\"){\n <span class=\"pi pi-envelope mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\n }\n @else if(record.message.type == \"SMS\") {\n <span class=\"pi pi-comments mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\n }@else if(record.message.type == \"WhatsApp\"){\n <span class=\"pi pi-whatsapp mr-2\" style=\"color: #676B89;font-size: 17px;\"></span>\n\n }\n <span style=\"color: #676B89; font-family: inherit;\"> {{record.message.day}}</span>\n </div>\n </div>\n <div class=\"flex align-items-center justify-content-between mt-1\">\n <div class=\"email col-12 md:col-12 p-0\" style=\"color: #8A8EA6;\">\n {{ record.message.content }}\n </div>\n \n <div class=\"countOfMessages\">\n <span>{{record.message.count}}</span>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n }\n }\n\n </div>\n </div>\n </div>\n</div>","import { Component } from '@angular/core';\nimport { QueueModel } from '../../models/queue.model';\nimport { QueueService } from '../../state/queue.service';\nimport { BaseContainerComponent, ERROR, SHARED } from '../../../../shared';\nimport { QueueStore } from '../../state/queue.store';\n\n@Component({\n selector: 'lib-queue-admin-list',\n standalone: false,\n templateUrl: './queue-admin-list.component.html',\n styleUrl: './queue-admin-list.component.scss'\n})\nexport class QueueAdminListComponent extends BaseContainerComponent<QueueModel> {\n constructor(public queueStore:QueueStore ,private queueService: QueueService) {\n super(queueService);\n }\n\n queueList: QueueModel[] = [];\n selectedQueue: any;\n queueId: any;\n ngOnInit() {\n this.init();\n this.getAllQueueList();\n }\n\n getAllQueueList() {\n this.queueService.getAll().subscribe({\n next: (res) => {\n this.queueList = res;\n this.selectedQueue = res[0];\n },\n error: (err) => {\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\n }\n });\n }\n\n handleQueueData(event: any) {\n this.selectedQueue = this.queueList.find((i) => i._id == event);\n if (this.selectedQueue) {\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\n } else {\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\n }\n }\n}","<div class=\"container grid m-0\">\n <div class=\"col-12 xl:col-3 md:col-12\">\n <block-list\n [queueData]=\"queueList\"\n (queueDataById)=\"handleQueueData($event)\"\n ></block-list>\n </div>\n <div class=\"col-12 xl:col-3 md:col-12\">\n @if(selectedQueue){\n <div class=\"animation-duration-500 associated-list\">\n <queue-application-list\n [queueData]=\"selectedQueue\"\n ></queue-application-list>\n </div>\n }\n </div>\n \n <div class=\"xl:col-6 md:col-12\">\n <div class=\"searchbar-wrapper\">\n <queue-search-customer></queue-search-customer>\n </div>\n </div>\n </div>\n ","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { QueueAdminFormComponent } from \"./components/queue-admin-form/queue-admin-form.component\";\nimport { SharedModule } from \"../../shared/shared.module\";\nimport { QueueRoutingModule } from \"./queue-admin-routing.module\";\nimport { FormsModule } from \"@angular/forms\";\nimport { QueryBuilderModule } from \"@kerwin612/ngx-query-builder\";\nimport { ButtonModule } from \"primeng/button\";\nimport { QueueAdminListComponent } from \"./components/queue-admin-list/queue-admin-list.component\";\nimport { QueueApplicationListComponent } from \"./components/queue-application-list/queue-application-list.component\";\nimport { CheckBoxComponent } from \"../../shared\";\n\n@NgModule({\n declarations: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\n imports: [\n CommonModule,\n SharedModule,\n QueueRoutingModule,\n FormsModule,\n QueryBuilderModule,\n ButtonModule,\n CheckBoxComponent\n ],\n exports: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\n})\nexport class QueueAdminModule {}\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared/state/base.store';\nimport { AdminActionModel } from '../models/admin-action.model';\n\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'action' })\nexport class AdminActionStore extends BaseStore<AdminActionModel> {\n\n constructor() {\n super();\n }\n\n}","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AdminActionModel } from '../models/admin-action.model';\nimport { AdminActionStore } from './admin-action.store';\nimport { DATASOURCES } from '../../../shared/constant/DATASOURCES';\nimport { BaseService } from '../../../shared/state/base.service';\nimport { AppConfigService } from '../../../shared/services/app-config.service';\nimport { ListService } from '../../../shared/services/list.service';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\nimport { Observable, tap } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminActionService extends BaseService<AdminActionModel> {\n\n protected override list : any= [...LISTCONFIG.QUEUEAPICONFIG, ...LISTCONFIG.ACTIONQUEUECONFIG];\n\n constructor(protected actionStore: AdminActionStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\n super(http, actionStore, appConfigService,listService);\n this._pathName = DATASOURCES.ACTIONS;\n }\n\n handleValidateAction(name:string, id: string, record:any): Observable<AdminActionModel[]> {\n const apiUrl = `${this.apiUrl}${name}/${encodeURIComponent(id)}`;\n return this.http.post<AdminActionModel[]>(`${apiUrl}`, record).pipe(\n tap((entities: AdminActionModel[]) => this.actionStore.set(entities))\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\nimport { AdminActionModel } from '../../models/admin-action.model';\nimport { TableBuilder } from '../../../../shared/services/table.builder';\nimport { AdminActionService } from '../../state/admin-action.service';\nimport { actionHiddenHeaderList, actionList, actionTableColumnWidthList } from '../../../../shared/constant/SHARED';\nimport { DATASOURCES } from '../../../../shared';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n\n/**\n * Admin Action List Component\n */\n@Component({\n selector: 'lib-admin-action-list',\n standalone : false,\n templateUrl: './admin-action-list.component.html',\n styleUrl: './admin-action-list.component.scss'\n})\nexport class AdminActionListComponent extends BaseListComponent<AdminActionModel>{\n \n pathName:string = DATASOURCES.ACTIONS;\n override editPermission: string = PERMISSION.ACTIONCONFIG_PUT\n override deletePermission: string = PERMISSION.ACTIONCONFIG_DELETE\n constructor(service: AdminActionService, private tableBuilder: TableBuilder){\n super(service, tableBuilder)\n this.tableBuilder.hiddenHeaders = actionHiddenHeaderList;\n } \n\n ngOnInit() {\n this.init(actionTableColumnWidthList);\n }\n \n}","<div class=\"dicitonary-list-wrapper\">\n @if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\n }\n</div>","import { BaseModel } from \"../../../shared/models/base.model\";\n\nexport class AdminActionModel extends BaseModel {\n name!: string;\n apiConfigId!: string;\n prompt!: string;\n queueId!: string;\n formFields!: string;\n status!: StatusType;\n isActive!: boolean;\n apiDocsUrl!: string;\n}\n\nexport type StatusType = \"Enable\" | \"Disable\";","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BaseFormComponent } from '../../../../shared/_base/base-form/base-form.component';\nimport { AdminActionModel } from '../../models/admin-action.model';\nimport { Message } from 'primeng/api';\nimport { SHARED } from '../../../../shared/constant/SHARED';\nimport { AdminActionService } from '../../state/admin-action.service';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AdminActionStore } from '../../state/admin-action.store';\nimport { AppConfigService, BaseQuery, BaseStore, ROUTES } from '../../../../shared';\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\n\n@Component({\n selector: 'lib-admin-action-form',\n standalone : false,\n templateUrl: './admin-action-form.component.html',\n styleUrl: './admin-action-form.component.scss'\n})\nexport class AdminActionFormComponent extends BaseFormComponent<AdminActionModel> implements OnInit, OnDestroy{\n messages: Message[] = SHARED.EMPTYARRAY;\n apiConfigList: any[] = [];\n queueList: any[] = [];\n\n constructor(public adminActionService: AdminActionService, override validatorService: ValidatorService, override router: Router, override activatedRoute: ActivatedRoute, public adminActionStore: AdminActionStore, private appConfigService: AppConfigService, override baseStore: BaseStore<AdminActionModel>, override baseQuery: BaseQuery<AdminActionModel>) {\n super(adminActionService, validatorService, router, activatedRoute)\n this.record = new AdminActionModel();\n this.record.isActive = true;\n }\n\n ngOnInit() {\n this.init();\n this.baseStore.setIsApiValidated(null);\n }\n\n handleValidateAction() {\n const payload = {path: this.record.apiDocsUrl};\n this.adminActionService.handleValidateAction(ROUTES.VALIDATE_ACTIONS,this.record.apiConfigId,payload)\n .subscribe({\n next: (res: any) => {\n if (res) {\n if (typeof res !== SHARED.STRING) {\n this.record.formFields = JSON.stringify(res);\n } else {\n this.record.formFields = res;\n }\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_ACTION_SUCCESS_MESSAGE }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n // this.baseStore.setIsApiValidated(SHARED.TRUE);\n }\n },\n error: (error: any) => {\n // this.baseStore.setIsApiValidated(SHARED.FALSE);\n },\n });\n }\n\n override handleSubmit(): void {\n if (typeof this.record.formFields !== SHARED.STRING && !this.isValidJSONArray(this.record.formFields)) {\n this.record.formFields = JSON.stringify(this.record.formFields);\n }\n super.handleSubmit();\n }\n \n private isValidJSONArray(value: string): boolean {\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed);\n } catch (e) {\n return false;\n }\n }\n\n override ngOnDestroy(): void {\n this.record = {} as AdminActionModel;\n super.ngOnDestroy();\n }\n}\n","<form-container\n [record]=\"record\"\n [headerText]=\"'Actions / Actions Form'\"\n [messages]=\"messages\"\n (onSave)=\"handleSubmit()\"\n [showSave]=\"true\"\n (onCancel)=\"handleCancel()\"\n>\n <div class=\"card p-fluid p-formgrid grid \">\n <h4 class=\"font-bold col-12 md:col-12\">Actions Form</h4>\n <div class=\"col-12 md:col-5\">\n <text-box\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Action Name',\n placeholder: 'Enter Action Name'\n }\"\n ></text-box>\n </div>\n \n <div class=\"col-12 md:col-5\">\n <dropdown\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name: 'apiConfigId',\n readonly: false,\n isRequired: true,\n displayText: 'End Point',\n placeholder: 'Select End Point'\n }\"></dropdown>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"adminActionStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name:'queueId',\n isRequired: true,\n displayText : 'Queue',\n placeholder: 'Select Queue',\n readonly: false\n }\"></dropdown>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'apiDocsUrl',\n isRequired: false,\n displayText: 'API Docs URL',\n placeholder: 'Enter API Docs URL'\n }\"\n ></text-box>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <text-area\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'prompt',\n isRequired: true,\n displayText: 'Prompt',\n placeholder: 'Enter prompt'\n }\"\n ></text-area>\n </div>\n\n <div class=\"w-full flex justify-content-end px-2 mt-2\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Validate\"\n class=\"p-button-raised validate-btn-wrapper\"\n (click)=\"handleValidateAction()\"\n ></button>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <text-area\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'formFields',\n isRequired: true,\n displayText: 'Form Configuration',\n placeholder: 'Enter form fields'\n }\"\n ></text-area>\n </div>\n </div>\n \n</form-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AdminActionListComponent } from './components/admin-action-list/admin-action-list.component';\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\nimport { AdminActionFormComponent } from './components/admin-action-form/admin-action-form.component';\nimport { FormsModule } from '@angular/forms';\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\nimport { ButtonModule } from 'primeng/button';\n\n\n\n@NgModule({\n declarations: [AdminActionListComponent, AdminActionFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n TablePrimaryComponent,\n TextAreaComponent,\n ButtonModule,\n CheckBoxComponent\n ],\n exports: [AdminActionListComponent, AdminActionFormComponent]\n})\nexport class ActionAdminModule { }\n","import { SHARED } from \"../../../shared\";\nimport { BaseModel } from \"../../../shared/models/base.model\";\n\nexport class DdAdminModel extends BaseModel {\n name?: string\n apiConfigId?: string\n dictionaryItems: DdItemModel[] = [];\n message?: string;\n isActive!: boolean;\n}\nexport class DdItemModel extends BaseModel {\n itemName?: string\n itemExpression?: string\n styleExpression?: string\n isActive: boolean = true;\n}\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { DdAdminModel } from '../models/dictionary.model';\nimport { BaseStore } from '../../../shared/state/base.store';\nimport { ApiPropertyModel } from '../models/api-property.model';\n\n/**\n * DictionaryStore\n * @description Store for managing dictionary state\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'dictionary' })\nexport class DictionaryStore extends BaseStore<DdAdminModel> {\n\n setPropertiesData(value : ApiPropertyModel){\n this.update({propertyData : value})\n }\n\n setSidebarVisible(value:boolean){\n this.update({isSideBarVisible:value})\n }\n}","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DictionaryStore } from './dictionary.store';\nimport { DdAdminModel } from '../models/dictionary.model';\nimport { catchError, Observable, of, tap } from 'rxjs';\nimport { BaseService, AppConfigService, DATASOURCES, ERROR } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { ApiPropertyModel } from '../models/api-property.model';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\n\n@Injectable({ providedIn: 'root' })\nexport class DictionaryService extends BaseService<DdAdminModel> {\n\n constructor(public dictionaryStore: DictionaryStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\n super(http, dictionaryStore, appConfigService,listService);\n this._pathName = DATASOURCES.DICTIONARY;\n }\n\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG\n\n getAllApiProperties(name:string, id: string): Observable<ApiPropertyModel> {\n return this.http.get<ApiPropertyModel>(`${this.apiUrl+name}/${id}`).pipe(\n tap((propertiesData: ApiPropertyModel) => this.dictionaryStore.setPropertiesData(propertiesData))\n );\n }\n\n deleteDictionaryItemById(name:string, dictionaryItemId: string) : Observable<DdAdminModel | any> {\n const Url = `${this.apiUrl+name}/${dictionaryItemId}`;\n return this.http.delete<DdAdminModel>(Url).pipe(\n catchError((error:any) => {\n console.error(ERROR.ERROR_DELETE_DICTIONARY_ITEM, error);\n return of({ error: true, message: ERROR.ERROR_DELETE_DICTIONARY_ITEM });\n })\n )\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DictionaryStore } from './dictionary.store';\nimport { DdAdminModel } from '../models/dictionary.model';\nimport { BaseQuery } from '../../../shared/state/base.query';\nimport { Observable } from 'rxjs';\nimport { ApiPropertyModel } from '../models/api-property.model';\n\n/**\n * DictionaryQuery\n * @description Query for managing dictionary state\n */\n@Injectable({ providedIn: 'root' })\nexport class DictionaryQuery extends BaseQuery<DdAdminModel> {\n constructor(protected override store: DictionaryStore) {\n super(store);\n }\n\n selectPropertyData():Observable<ApiPropertyModel>{\n return this.select((state) => state['propertyData'])\n }\n getPropertyData(): ApiPropertyModel{\n return this.getValue()['propertyData']\n }\n selectSidebarVisible(){\n return this.select((state)=>state['isSideBarVisible'])\n }\n getSidebarVisible(){\n return this.getValue()['isSideBarVisible']\n }\n}\n","import { SHARED } from \"../../../shared\";\n\nexport class DdAttributeSidebarViewModel {\n mappingInfo: string = SHARED.EMPTY;\n propertyList : string = SHARED.EMPTY\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DictionaryStore } from '../../state/dictionary.store';\nimport { DdAttributeSidebarViewModel } from '../../models/dd-attribute-sidebar-view.model';\nimport { BaseQuery, BaseStore, SHARED } from '../../../../shared';\nimport { DictionaryQuery } from '../../state/dictionary.query';\nimport { SelectItem } from 'primeng/api';\nimport { DdItemModel } from '../../models/dictionary.model';\nimport { Subscription } from 'rxjs';\n\n/**\n * DdAdminItemFormComponent\n * This component is used to create and edit item expressions and style expressions.\n */\n@Component({\n selector: 'lib-dd-admin-item-form',\n standalone: false,\n templateUrl: './dd-admin-item-form.component.html',\n styleUrl: './dd-admin-item-form.component.scss'\n})\nexport class DdAdminItemFormComponent implements OnChanges, OnDestroy {\n @Input() ddItemRecord: DdItemModel = { itemName: SHARED.EMPTY, itemExpression: SHARED.EMPTY, styleExpression: SHARED.EMPTY, isActive: SHARED.FALSE }\n @Input() isItemExpression?: boolean\n @Input() isSidebarVisible?: boolean\n @Output() saveClick = new EventEmitter<any>()\n attributeRecord!: DdAttributeSidebarViewModel\n dictionaryItemName: string = SHARED.EMPTY\n condition: string = SHARED.EMPTY\n propertyOptions: SelectItem[] = []\n private subscriptions: Subscription = new Subscription();\n\n constructor(public dictionaryStore: DictionaryStore, public dictionaryQuery: DictionaryQuery, private baseStore: BaseStore<any>) {\n this.attributeRecord = new DdAttributeSidebarViewModel()\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes[SHARED.ISITEMEXPRESSION]) {\n this.attributeRecord.mappingInfo = (this.isItemExpression ? this.ddItemRecord.itemExpression : this.ddItemRecord.styleExpression) ?? SHARED.EMPTY\n }\n this.loadPropertyOption()\n }\n\n loadPropertyOption() {\n this.subscriptions.add(\n this.dictionaryQuery.selectPropertyData().subscribe((res: any) => {\n this.propertyOptions = []\n if (res) {\n this.mapProperties(res)\n }\n })\n )\n }\n\n private mapProperties(res: any) {\n if (res?.properties?.length) {\n this.propertyOptions.push(...res.properties.map((property: string) => ({\n label: `${res.name}.${property}`,\n value: `${res.name}.${property}`\n })))\n }\n if (res?.childApis?.length) {\n res.childApis.forEach((childApi: any) => {\n this.propertyOptions.push(...childApi.properties.map((property: string) => ({\n label: `${res.name}.${childApi.name}.${property}`,\n value: `${res.name}.${childApi.name}.${property}`\n })))\n })\n }\n }\n\n handleSaveBtnClick(event: any) {\n if (this.isItemExpression) {\n if (this.baseStore) this.baseStore.setIsFormSubmitted(true);\n if (!this.attributeRecord.mappingInfo) return;\n this.ddItemRecord.itemExpression = this.attributeRecord.mappingInfo\n } else {\n this.ddItemRecord.styleExpression = this.attributeRecord.mappingInfo\n }\n this.attributeRecord.propertyList = SHARED.EMPTY\n this.saveClick.emit(false)\n }\n\n handleAddExpressionClick(event: any) {\n if (this.attributeRecord.propertyList) {\n const formattedProperty = `\\${${this.attributeRecord.propertyList}}`;\n this.attributeRecord.mappingInfo += this.attributeRecord.mappingInfo\n ? `${formattedProperty}`\n : formattedProperty;\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe()\n this.propertyOptions = []\n this.attributeRecord = new DdAttributeSidebarViewModel()\n }\n}\n","<div class=\"dicitonary-edit-action px-3\">\n <div class=\"flex align-items-center justify-content-end mt-3\">\n <lib-button\n [store]=\"dictionaryStore\"\n [record]=\"attributeRecord\"\n [attributeModel]=\"{\n buttonLabel: 'Save',\n isDisabled: false,\n }\"\n (onBtnClick)=\"handleSaveBtnClick($event)\"\n >\n </lib-button>\n </div>\n\n <div class=\"col-12 md:col-12 mt-5\">\n <label *ngIf=\"!isItemExpression\" for=\"styleInput\" class=\"text-gray-600 text-sm mb-2 block\">\n Hint: Use key-value pairs for styles.\n <br/>\n Example:<code>\n 'background-color': 'lightgray',\n 'font-size': '16px',<br>\n 'padding': '10px'\n </code>\n </label>\n <text-area\n [store]=\"dictionaryStore\"\n [record]=\"attributeRecord\"\n [attributeModel]=\"{\n displayText: 'Expression',\n readonly : false,\n name : 'mappingInfo',\n isRequired : isItemExpression ? true : false,\n placeholder : 'Enter Text',\n customPadding: '12px',\n }\"\n ></text-area>\n </div>\n <div class=\"col-12 md:col-12\">\n <div class=\"p-field queue-list-wrapper\">\n <dropdown [store]=\"dictionaryStore\" [isStaticDropdown]=\"true\" [record]=\"attributeRecord\" [attributeModel]=\"{\n name:'propertyList',\n displayText : 'Select properties',\n isRequired:false,\n listLabelProperty: 'label',\n listValueProperty: 'value',\n options : propertyOptions,\n filter : true\n }\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-12 md:col-3\">\n <lib-button\n [store]=\"dictionaryStore\"\n [record]=\"attributeRecord\"\n [attributeModel]=\"{\n buttonLabel: 'Add to expression',\n isDisabled: false,\n }\"\n (onBtnClick)=\"handleAddExpressionClick($event)\"\n >\n </lib-button>\n </div>\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BaseFormComponent, BaseQuery, BaseStore, DATASOURCES, ERROR, SHARED } from '../../../../shared';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { DictionaryQuery } from '../../state/dictionary.query';\nimport { DictionaryService } from '../../state/dictionary.service';\nimport { DictionaryStore } from '../../state/dictionary.store';\nimport { DdAdminModel, DdItemModel } from '../../models/dictionary.model';\nimport { Message } from 'primeng/api';\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\n\n/**\n * DdAdminFormComponent\n * @description Component for managing dictionary form\n */\n@Component({\n selector: 'lib-dd-admin-form',\n templateUrl: './dd-admin-form.component.html',\n styleUrl: './dd-admin-form.component.scss',\n standalone: false\n})\nexport class DdAdminFormComponent extends BaseFormComponent<DdAdminModel> implements OnInit, OnDestroy {\n sidebarVisibility: boolean[] = [];\n messages: Message[] = SHARED.EMPTYARRAY;\n dictionaryItem !: DdItemModel\n dictionaryName: string = SHARED.EMPTY;\n isItemExpression : boolean = SHARED.FALSE;\n constructor(override service: DictionaryService, public dictionaryQuery: DictionaryQuery, override validatorService: ValidatorService, override router: Router, override activatedRoute: ActivatedRoute, public ddAdminStore: DictionaryStore, override baseStore: BaseStore<DdAdminModel>, override baseQuery: BaseQuery<DdAdminModel>) {\n super(service, validatorService, router, activatedRoute);\n this.record = new DdAdminModel()\n this.record.isActive = true;\n this.dictionaryItem = new DdItemModel()\n }\n\n ngOnInit() {\n this.baseStore.setIsApiValidated(null);\n this.init()\n this.sidebarVisibility = new Array(this.record.dictionaryItems.length).fill(false);\n setTimeout(() => {\n if (this.record.apiConfigId) {\n this.handleGetProperties(this.record.apiConfigId);\n }\n }, 2000);\n }\n \n handleDictionaryItemAddBtnClick() {\n if (!(this.record.name && this.record.apiConfigId)) return;\n if (Array.isArray(this.record.dictionaryItems)) {\n const hasEmptyItem = this.record.dictionaryItems.some((item: DdItemModel) => {\n const isItemNameEmpty = !item.itemName || item.itemName.trim() === SHARED.EMPTY;\n const isItemExpressionEmpty = !item.itemExpression || item.itemExpression.trim() === SHARED.EMPTY;\n return isItemNameEmpty && isItemExpressionEmpty;\n });\n \n if (hasEmptyItem) {\n return;\n }\n } else {\n this.record.dictionaryItems = [];\n }\n this.record.dictionaryItems = [...this.record.dictionaryItems, new DdItemModel()];\n }\n\n handleItemExpression(i?:any , event?:any) {\n this.sidebarVisibility[i] = true;\n this.isItemExpression = SHARED.TRUE;\n }\n \n handleStyleExpression(i:any, event:any) {\n this.sidebarVisibility[i] = true;\n this.isItemExpression = SHARED.FALSE\n }\n \n handleGetProperties(event : any){\n if(event){\n this.service.getAllApiProperties(DATASOURCES.QUEUESAPICONFIG,event).subscribe()\n }\n }\n \n onSidebarClose(isVisible:boolean){\n this.sidebarVisibility = this.sidebarVisibility.map(() => isVisible);\n }\n\n handleDeleteRecord(index: number, dictionaryItemId: string) {\n if (index >= 0 && index < this.record.dictionaryItems.length) {\n this.record.dictionaryItems = this.record.dictionaryItems.filter((_, i) => i !== index);\n if(dictionaryItemId) {\n this.service.deleteDictionaryItemById(DATASOURCES.DELETEDICTIONARYITEM, dictionaryItemId).subscribe(\n (res) => {\n this.messages = [{ severity: SHARED.SUCCESS, detail: res?.message || MESSAGE.DELETE_DICTIONARY_ITEM_SUCCESS }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n })\n }\n } else {\n console.error(ERROR.INVALID_INDEX, index);\n }\n }\n \n override ngOnDestroy(): void {\n this.record = {} as DdAdminModel;\n super.ngOnDestroy();\n }\n}\n","<form-container [messages]=\"messages\" [record]=\"record\" [headerText]=\"'Dictionary Form'\" [showSave]=\"true\"\n (onCancel)=\"handleCancel()\" (onSave)=\"handleSubmit()\">\n <div class=\"card p-fluid p-formgrid grid m-0\">\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\">\n <div class=\"col-12 md:col-5 p-field\">\n <div class=\"dictionary-name\">\n <text-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\n readonly : false,\n name : 'name',\n isRequired : true,\n displayText: 'Dictionary Name',\n placeholder : 'Enter Text',\n }\"></text-box>\n </div>\n </div>\n <div class=\"col-12 md:col-5\">\n <div class=\"p-field queue-list-wrapper\">\n <dropdown [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\n name: 'apiConfigId',\n dataSource: 'apiconfigs',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n displayText: 'API ',\n placeholder: 'Select API',\n isRequired: true\n }\" (onInput)=\"handleGetProperties($event)\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n\n <div class=\"field p-0 pr-2 ml-3 col-12 md:col-2\">\n <div class=\"card m-0 p-0 mb-2\">\n <div class=\"mt-3 w-full flex\">\n <button pButton pRipple routerLinkActive=\"router-link-active\"\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\n (click)=\"handleDictionaryItemAddBtnClick()\">\n Add New Item\n </button>\n </div>\n </div>\n </div>\n\n <!-- dictionary Items -->\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\"\n *ngFor=\"let ddItem of record.dictionaryItems; let i = index\">\n <div class=\"field col-12 md:col-3 pr-0\">\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name : 'itemName',\n readonly : false,\n displayText : 'Item Name',\n isRequired : true,\n }\"></text-box>\n </div>\n <div class=\"field flex align-items-center justify-content-between col-12 md:col-3 pr-0\">\n <div class=\"flex align-items-center w-full\">\n <div class=\"w-full mr-3\">\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name : 'itemExpression',\n readonly : true,\n displayText : 'Item Expression',\n isRequired : true,\n }\">\n </text-box>\n </div>\n <span class=\"pi pi-cog mt-4 cursor-pointer text-xl\"\n (click)=\"handleItemExpression(i, $event )\"></span>\n </div>\n </div>\n\n <div class=\"field col-12 md:col-3 flex align-items-center justify-content-between pr-0\">\n <div class=\"flex align-items-center w-full\">\n <div class=\"w-full mr-3\">\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name : 'styleExpression',\n readonly : false,\n disable : true,\n displayText : 'Style Expression',\n isRequired : false,\n }\">\n </text-box>\n </div>\n <span class=\"pi pi-cog mt-4 text-xl cursor-pointer text-color\"\n (click)=\"handleStyleExpression(i, $event)\"></span>\n </div>\n </div>\n\n <div class=\"field col-12 md:col-2 flex align-items-center justify-content-center mt-4\">\n <check-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Is Active',\n }\">\n </check-box>\n\n <div class=\"ml-6 delete-icon-container\">\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\"\n (click)=\"handleDeleteRecord(i, ddItem?._id)\"></i>\n </div>\n </div>\n <sidebar [isSidebarVisible]=\"sidebarVisibility[i]\" [title]=\"'Edit Expression'\"\n (onClose)=\"onSidebarClose($event)\">\n <lib-dd-admin-item-form [ddItemRecord]=\"ddItem\" [isItemExpression]=\"isItemExpression\"\n (saveClick)=\"onSidebarClose($event)\"></lib-dd-admin-item-form>\n </sidebar>\n </div>\n\n </div>\n</form-container>","import { Component, OnInit } from '@angular/core';\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\nimport { TableBuilder } from '../../../../shared/services/table.builder';\nimport { DictionaryService } from '../../state/dictionary.service';\nimport { DdAdminModel } from '../../models/dictionary.model';\nimport { DATASOURCES, dictionaryHiddenHeaderList } from '../../../../shared';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n@Component({\n selector: 'lib-dd-admin-list',\n templateUrl: './dd-admin-list.component.html',\n styleUrl: './dd-admin-list.component.scss',\n standalone : false\n})\nexport class DdAdminListComponent extends BaseListComponent<DdAdminModel> implements OnInit{\n\n pathName:string = DATASOURCES.DICTIONARY;\n override editPermission: string = PERMISSION.DD_ADMIN_PUT\n override deletePermission: string = PERMISSION.DD_ADMIN_DELETE\n constructor(service: DictionaryService, private tableBuilder: TableBuilder){\n super(service, tableBuilder);\n this.tableBuilder.hiddenHeaders = dictionaryHiddenHeaderList;\n }\n\n ngOnInit(){\n this.init()\n }\n}","<div class=\"dicitonary-list-wrapper\">\n @if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DdAdminFormComponent } from './components/dd-admin-form/dd-admin-form.component';\nimport { DdAdminListComponent } from './components/dd-admin-list/dd-admin-list.component';\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DdAdminItemFormComponent } from './components/dd-admin-item-form/dd-admin-item-form.component';\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\nimport { FormContainerComponent } from '../../shared/components/form-container/form-container.component';\n\n\n\n@NgModule({\n declarations: [DdAdminFormComponent, DdAdminListComponent, DdAdminItemFormComponent ],\n imports: [\n CommonModule,\n SharedModule,\n DropdownModule,\n ButtonComponent,\n InputTextareaModule,\n ReactiveFormsModule,\n FormsModule,\n TablePrimaryComponent,\n CheckBoxComponent,\n ButtonModule,\n TextAreaComponent,\n FormContainerComponent\n ],\n exports : [DdAdminFormComponent, DdAdminListComponent]\n})\nexport class DdAdminModule { }\n","import { BaseModel } from \"../../../shared\";\n\nexport class TemplateModel extends BaseModel {\n name!: string;\n type!: string;\n queueId!: string;\n isActive!: boolean;\n subject?: string;\n body!: string;\n dictionaryID?: string;\n dictionaryItemID?: string;\n}","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared';\nimport { TemplateModel } from '../models/template.model';\n\n/**\n * Template Admin Store\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'templateStore' })\nexport class TemplateAdminStore extends BaseStore<TemplateModel> {\n constructor() {\n super();\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { TemplateModel } from '../models/template.model';\nimport { TemplateAdminStore } from './template-admin.store';\n\n/**\n * Service for managing template configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class TemplateAdminService extends BaseService<TemplateModel> {\n\n constructor(\n http: HttpClient,\n protected templateAdminStore: TemplateAdminStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, templateAdminStore, configService, listService);\n this._pathName = DATASOURCES.Template;\n }\n\n protected override list: any = [\n {\n name: \"queueId\",\n dataSource: DATASOURCES.QUEUES,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryID\",\n dataSource: DATASOURCES.DICTIONARY,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryItemID\",\n dataSource: DATASOURCES.DELETEDICTIONARYITEM,\n listValueProperty: \"_id\",\n listLabelProperty: \"key\",\n }\n ]\n}\n","import { Injectable } from '@angular/core';\nimport { BaseQuery } from '../../../shared';\nimport { TemplateModel } from '../models/template.model';\nimport { TemplateAdminStore } from './template-admin.store';\n\n\n/**\n * Template Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class TemplateAdminQuery extends BaseQuery<TemplateModel> {\n\n constructor(protected override store: TemplateAdminStore) {\n super(store);\n }\n\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TemplateModel } from '../../models/template.model';\nimport { TemplateAdminService } from '../../state/template-admin.service';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { BaseFormComponent, BaseQuery, BaseStore, msgTemplateTypeList, SHARED } from '../../../../shared';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TemplateAdminStore } from '../../state/template-admin.store';\nimport { SelectItem } from 'primeng/api';\nimport { TemplateAdminQuery } from '../../state/template-admin.query';\nimport { List } from '../../../../shared/models/list.model';\n\n@Component({\n selector: 'lib-template-admin-form',\n standalone: false,\n templateUrl: './template-admin-form.component.html',\n styleUrl: './template-admin-form.component.scss'\n})\nexport class TemplateAdminFormComponent extends BaseFormComponent<TemplateModel> implements OnInit, OnDestroy{\n\n templateTypeList: SelectItem<any>[] = msgTemplateTypeList;\n dictionaries: any[] = [];\n dictionaryItems: any[] = [];\n messageContent!: string;\n isFormSubmitted: boolean = false;\n\n constructor(\n override service: TemplateAdminService,\n override validatorService: ValidatorService,\n override router: Router,\n override activatedRoute: ActivatedRoute,\n private query: TemplateAdminQuery,\n public templateStore: TemplateAdminStore,\n override baseStore: BaseStore<TemplateModel>,\n override baseQuery: BaseQuery<TemplateModel>\n ) {\n super(service, validatorService, router, activatedRoute);\n this.record = new TemplateModel();\n this.record.isActive = true;\n }\n \n ngOnInit(): void {\n super.init();\n this.baseStore.setIsApiValidated(null);\n this.recordChange.asObservable().subscribe((record) => {\n this.messageContent = this.decodeHtml(record.body);\n });\n }\n\n handleQueueChange(event:any){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\n this.dictionaries = allDictionaryRecords?.filter((item) => item.queueID === event) || [];\n });\n }\n \n handleDictionarySelect(dictionaryId:string){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.dictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n decodeHtml(html: string): string {\n try {\n return JSON.parse(html);\n } catch (e) {\n return html;\n }\n }\n\n override handleSubmit(): void {\n this.isFormSubmitted = true;\n if(!this.messageContent) return;\n this.record.body = JSON.stringify(this.messageContent);\n super.handleSubmit();\n };\n\n override ngOnDestroy(): void {\n this.record = {} as TemplateModel;\n super.ngOnDestroy();\n }\n}\n","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\n (onCancel)=\"handleCancel()\">\n <div class=\"card p-fluid p-formgrid\">\n <h4 class=\"font-bold col-12 md:col-12\">Template Form</h4>\n <div class=\"col-12 md:col-12 flex px-0\">\n <div class=\"col-12 md:col-5\">\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Name',\n placeholder: 'Enter Template Name'\n }\"></text-box>\n </div>\n\n <div class=\"col-12 md:col-5\">\n <div class=\"p-field queue-list-wrapper\">\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name: 'type',\n displayText: 'Type',\n listLabelProperty: 'value',\n listValueProperty: 'value',\n placeholder: 'Select Type',\n isRequired: true,\n options: templateTypeList\n }\">\n </dropdown>\n </div>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n\n <div class=\"col-12 md:col-12 flex px-0\">\n <div class=\"col-12 md:col-6\">\n <dropdown [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n name:'queueId',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n displayText : 'Select Queue',\n placeholder: 'Select Queue',\n isRequired:true\n }\" (onInput)=\"handleQueueChange($event)\">\n </dropdown>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name: 'dictionaryID',\n displayText: 'Select Dictionary',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n placeholder: 'Select Dictionary',\n options: dictionaries\n }\" (onInput)=\"handleDictionarySelect($event)\">\n </dropdown>\n </div>\n </div>\n\n <div class=\"col-12 md:col-12 flex px-0\">\n <div *ngIf=\"record.type === 'email'\" class=\"col-12 md:col-6\">\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'subject',\n isRequired: true,\n displayText: 'Subject',\n placeholder: 'Enter Subject'\n }\"></text-box>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name: 'dictionaryItemID',\n displayText: 'Select Dictionary Item',\n listLabelProperty: 'itemName',\n listValueProperty: '_id',\n placeholder: 'Select Dictionary Item',\n options: dictionaryItems\n }\">\n </dropdown>\n </div>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <label>Message</label>\n <span class=\"asterisk ml-1\">*</span>\n <quill-editor [(ngModel)]=\"messageContent\" class=\"w-full mt-2\"></quill-editor>\n <div *ngIf=\"isFormSubmitted && !messageContent\" class=\"error-message\">\n <small class=\"p-error\">Message is required</small>\n </div>\n </div>\n </div>\n</form-container>","import { Component } from '@angular/core';\nimport { TemplateModel } from '../../models/template.model';\nimport { BaseListComponent, BaseStore, DATASOURCES, SHARED, TableBuilder, templateHiddenHeaderList, TemplateTabType } from '../../../../shared';\nimport { TemplateAdminService } from '../../state/template-admin.service';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n\n@Component({\n selector: 'lib-template-admin-list',\n standalone: false,\n templateUrl: './template-admin-list.component.html',\n styleUrl: './template-admin-list.component.scss'\n})\nexport class TemplateAdminListComponent extends BaseListComponent<TemplateModel>{\n\n pathName:string = DATASOURCES.Template;\n activeTabIndex: number = 0;\n selectedType!: string;\n override editPermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\n override deletePermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\n constructor(templateAdminService: TemplateAdminService, private tableBuilder: TableBuilder, private baseStore: BaseStore<TemplateModel>) {\n super(templateAdminService, tableBuilder);\n this.tableBuilder.hiddenHeaders = templateHiddenHeaderList;\n }\n \n ngOnInit() {\n this.init()\n }\n\n onTabChange(event: any) {\n this.activeTabIndex = event.index;\n this.selectedType = TemplateTabType[this.activeTabIndex] ?? SHARED.EMPTY;\n this.baseStore.setSelectedTemplate(this.activeTabIndex === 0 ? SHARED.EMPTY : this.selectedType);\n }\n}\n","<div class=\"template-tab-wrapper\">\n <p-tabView class=\"application-tabs-wrapper h-full\" [(activeIndex)]=\"activeTabIndex\" (onChange)=\"onTabChange($event)\">\n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <span class=\"font-semibold\">All Templates</span>\n </ng-template>\n </p-tabPanel>\n \n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center font-semibold\">\n <i class=\"pi pi-envelope mr-3 message-type-wrapper\"></i>\n <span class=\"mr-1\">Email</span>\n </div>\n </ng-template>\n </p-tabPanel>\n \n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center font-semibold\">\n <i class=\"pi pi-comment mr-3 message-type-wrapper\"></i>\n <span>SMS</span>\n </div>\n </ng-template>\n </p-tabPanel>\n\n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center font-semibold\">\n <i class=\"pi pi-whatsapp mr-3 message-type-wrapper\"></i>\n <span>WhatsApp</span>\n </div>\n </ng-template>\n </p-tabPanel>\n </p-tabView>\n</div>\n\n@if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\n </lib-table-primary>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemplateAdminFormComponent } from './components/template-admin-form/template-admin-form.component';\nimport { TemplateAdminListComponent } from './components/template-admin-list/template-admin-list.component';\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent, textEditorToolbar } from '../../shared';\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\nimport { FormsModule } from '@angular/forms';\nimport { TabViewModule } from 'primeng/tabview';\nimport { QuillConfigModule, QuillModule } from 'ngx-quill';\nimport hljs from 'highlight.js';\n\n@NgModule({\n declarations: [\n TemplateAdminFormComponent,\n TemplateAdminListComponent\n ],\n imports: [\n CommonModule,\n TablePrimaryComponent,\n TextBoxComponent,\n DropdownComponent,\n SharedModule,\n FormsModule,\n TabViewModule,\n CheckBoxComponent,\n QuillModule.forRoot(),\n QuillConfigModule.forRoot({\n modules: {\n syntax: {\n hljs: hljs\n },\n toolbar: textEditorToolbar\n }\n })\n ],\n exports: [\n TemplateAdminFormComponent, TemplateAdminListComponent\n ]\n})\nexport class TemplateAdminModule { }\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { WidgetModel } from '../models/widget.model';\nimport { BaseStore, SHARED } from '../../shared';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Widget Admin Store\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'widgetStore' })\nexport class WidgetStore extends BaseStore<WidgetModel> {\n public onViewAllDetails$: BehaviorSubject<any>;\n public onViewPropertyDetails$: BehaviorSubject<any>;\n public onEventClickDetails$: BehaviorSubject<any>;\n public onItemClick$ : BehaviorSubject<any>;\n public getWidgetData$: BehaviorSubject<any>;\n\n constructor() {\n super();\n this.onViewAllDetails$ = new BehaviorSubject<string>(SHARED.EMPTY_STRING);\n this.onViewPropertyDetails$ = new BehaviorSubject<string>(SHARED.EMPTY);\n this.onEventClickDetails$ = new BehaviorSubject<string>(SHARED.EMPTY);\n this.onItemClick$ = new BehaviorSubject({});\n this.getWidgetData$ = new BehaviorSubject({});\n }\n\n setEventClickDetails(value: any) {\n this.onEventClickDetails$.next(value);\n }\n\n setOnViewPropertyDetails(value: any) {\n this.onViewPropertyDetails$.next(value);\n }\n\n setOnViewAllDetails(value: any) {\n this.onViewAllDetails$.next(value);\n }\n\n resetOnViewAllDetails() {\n this.onViewAllDetails$.next(null);\n }\n\n setOnWidgetItemClick(value: any) {\n this.onItemClick$.next(value);\n }\n\n setWidgetItem(widgetItem: any) {\n this.update({widgetItem : widgetItem});\n }\n\n setIsMenu(isMenu: boolean) {\n this.update({isMenu : isMenu});\n }\n\n setWidgetData(value: any) {\n this.getWidgetData$.next(value);\n }\n \n setWidgetsList(widgetsList: any) {\n this.update({widgetsList : widgetsList});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WidgetModel } from '../models/widget.model';\nimport { WidgetStore } from './widget.store';\nimport { BaseQuery } from '../../shared';\nimport { Observable } from 'rxjs';\n\n\n/**\n * Widget Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetQuery extends BaseQuery<WidgetModel> {\n\n constructor(protected override store: WidgetStore, private widgetStore: WidgetStore) {\n super(store);\n }\n\n getOnViewAllDetails() {\n return this.widgetStore.onViewAllDetails$.asObservable();\n }\n\n getViewPropertyDetails() {\n return this.widgetStore.onViewPropertyDetails$.asObservable();\n }\n\n getEventClickDetails() {\n return this.widgetStore.onEventClickDetails$.asObservable();\n }\n\n getOnWidgetItemClick() {\n return this.widgetStore.onItemClick$.asObservable();\n }\n\n getWidgetItem():Observable<any> {\n return this.select(state => state['widgetItem']);\n }\n \n getIsMenu():Observable<any> {\n return this.select(state => state['isMenu']);\n }\n\n getWidgetData(): Observable<any> {\n return this.widgetStore.getWidgetData$.asObservable();\n }\n\n getWidgetList():Observable<any> {\n return this.select(state => state['widgetsList']);\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { WidgetModel } from '../models/widget.model';\nimport { WidgetStore } from './widget.store';\nimport { AppConfigService, BaseService, DATASOURCES, ROUTES, SHARED } from '../../shared';\nimport { ListService } from '../../shared/services/list.service';\nimport { Observable, tap } from 'rxjs';\n\n/**\n * Service for managing widget configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetService extends BaseService<WidgetModel> {\n\n constructor(\n http: HttpClient,\n protected widgetStore: WidgetStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, widgetStore, configService, listService);\n this._pathName = DATASOURCES.WIDGET;\n }\n\n getAllWidgets(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\n const url = `${this.apiUrl}${ROUTES.APPLICATION_WIDGET}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\n return this.http.get<WidgetModel[]>(url).pipe(\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\n );\n }\n\n getEvaluateFromCache(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\n const url = `${this.apiUrl}${ROUTES.APPLICATION_WIDGET_CACHE}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\n return this.http.get<WidgetModel[]>(url).pipe(\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\n );\n }\n\n getEvaluateByWidgetName(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\n const url = `${this.apiUrl}${ROUTES.EVALUATE_BY_WIDGETNAME}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\n return this.http.get<WidgetModel[]>(url).pipe(\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SHARED } from '../constant/SHARED';\nimport { StyleConfig } from '../../widget/models/widget.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StyleBuilderService {\n\n constructor() { }\n\n getStyle(style: any): { [key: string]: string } {\n if (!style) return {};\n\n if (typeof style === 'string') style = this.parseStyleObject(style);\n\n const itemStyle = typeof style.itemStyle === 'string'\n ? this.parseStyleObject(style.itemStyle)\n : (style.itemStyle || {});\n\n const styleExpression = typeof style.styleExpression === 'string'\n ? this.parseStyleObject(style.styleExpression)\n : (style.styleExpression || {});\n\n return {\n ...this.normalizeStyleObject(itemStyle),\n ...this.normalizeStyleObject(styleExpression),\n };\n }\n\n parseStyleObject(styleStr?: string): Record<string, any> {\n if (!styleStr) return {};\n\n let toParse = styleStr.trim();\n toParse = toParse.replace(/^['\"]+/, \"\").replace(/['\"]+$/, \"\").trim();\n try {\n return JSON.parse(toParse);\n } catch (e) {\n console.warn(\"Failed to parse style:\", styleStr, \"→ tried:\", toParse);\n return {};\n }\n }\n \n private normalizeStyleObject(obj: { [key: string]: any }): { [key: string]: string } {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (value !== undefined && value !== '') {\n acc[key.trim()] = value.toString().trim();\n }\n return acc;\n }, {} as { [key: string]: string }); // 👈 this line avoids the error\n }\n\n getItemStyle(style: any | undefined): { [key: string]: string } {\n if (!style) return {};\n \n return Object.entries(style).reduce((acc: any, [key, value]) => {\n if (value) acc[key.trim()] = value.toString().trim();\n return acc;\n }, {});\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { WidgetModel, WidgetBadge, BadgeStyleConfig, ProcessedBadgeConfig } from '../../models/widget.model';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n@Component({\n selector: 'lib-widget-header',\n standalone: false,\n templateUrl: './widget-header.component.html',\n styleUrl: './widget-header.component.scss'\n})\nexport class WidgetHeaderComponent implements OnChanges {\n @Input() widget!: WidgetModel;\n headerStyle: { [key: string]: any } = {};\n subHeaderStyle: { [key: string]: any } = {};\n headerIconStyle: { [key: string]: any } = {};\n headerIconClass!: string;\n processedBadges: ProcessedBadgeConfig[] = [];\n widgetStatusIconClass!: string;\n widgetStatusIconClassExpression!: string;\n widgetStatusIconStyle: { [key: string]: any } = {};\n widgetStatusIconStyleExpression: { [key: string]: any } = {};\n mergedWidgetStatusIconStyle: { [key: string]: any } = {};\n\n constructor(private styleBulderService: StyleBuilderService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.widget && this.widget.style) {\n const parsedHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerStyle);\n const parsedSubHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.subHeaderStyle);\n const parsedHeaderIconStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerIconStyle);\n this.headerStyle = this.styleBulderService.getItemStyle(parsedHeaderStyle);\n this.subHeaderStyle = this.styleBulderService.getItemStyle(parsedSubHeaderStyle);\n this.headerIconStyle = this.styleBulderService.getItemStyle(parsedHeaderIconStyle);\n this.headerIconClass = this.widget.style.headerIconClass;\n }\n\n // Process widget status icon\n this.processWidgetStatusIcon();\n\n // Process badges\n this.processBadges();\n }\n\n private processWidgetStatusIcon(): void {\n // Process widget status icon class (static)\n this.widgetStatusIconClass = this.widget?.widgetStatusIconClass || '';\n\n // Process widget status icon class expression (dynamic)\n this.widgetStatusIconClassExpression = this.widget?.widgetStatusIconClassExpression \n ? this.widget.widgetStatusIconClassExpression.replace(/^['\"]+|['\"]+$/g, '') \n : '';\n\n // Process widget status icon style (static)\n if (this.widget?.widgetStatusIconStyle) {\n const parsedWidgetStatusIconStyle = this.styleBulderService.parseStyleObject(this.widget.widgetStatusIconStyle);\n this.widgetStatusIconStyle = this.styleBulderService.getItemStyle(parsedWidgetStatusIconStyle);\n } else {\n this.widgetStatusIconStyle = {};\n }\n\n // Process widget status icon style expression (dynamic)\n if (this.widget?.widgetStatusIconStyleExpression) {\n const parsedWidgetStatusIconStyleExpression = this.styleBulderService.parseStyleObject(this.widget.widgetStatusIconStyleExpression);\n this.widgetStatusIconStyleExpression = this.styleBulderService.getItemStyle(parsedWidgetStatusIconStyleExpression);\n } else {\n this.widgetStatusIconStyleExpression = {};\n }\n\n // Merge icon styles\n this.mergedWidgetStatusIconStyle = {\n ...this.widgetStatusIconStyle,\n ...this.widgetStatusIconStyleExpression\n };\n }\n\n private processBadges(): void {\n this.processedBadges = [];\n \n if (this.widget && this.widget.badges && Array.isArray(this.widget.badges)) {\n this.processedBadges = this.widget.badges.map((badge: WidgetBadge) => {\n const badgeStyle: BadgeStyleConfig = badge.style || {};\n const processedBadge: ProcessedBadgeConfig = {\n value: badge.value || '',\n valueClass: badgeStyle.valueClass || '',\n badgeStyle: {},\n valueIconClass: badgeStyle.valueIconClass,\n valueIconStyle: {},\n valueIconClassExpression: badgeStyle.valueIconClassExpression,\n valueIconStyleExpression: {},\n mergedValueIconStyle: {}\n };\n\n // Parse and apply badge styles\n if (badgeStyle.value) {\n const parsedValueStyle = this.styleBulderService.parseStyleObject(badgeStyle.value);\n processedBadge.badgeStyle = this.styleBulderService.getItemStyle(parsedValueStyle);\n }\n\n // Parse style expression if present\n if (badgeStyle.styleExpression) {\n const parsedStyleExpression = this.styleBulderService.parseStyleObject(badgeStyle.styleExpression);\n const styleExpressionObj = this.styleBulderService.getItemStyle(parsedStyleExpression);\n processedBadge.badgeStyle = { ...processedBadge.badgeStyle, ...styleExpressionObj };\n }\n\n // Parse item style if present\n if (badgeStyle.itemStyle) {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(badgeStyle.itemStyle);\n const itemStyleObj = this.styleBulderService.getItemStyle(parsedItemStyle);\n processedBadge.badgeStyle = { ...processedBadge.badgeStyle, ...itemStyleObj };\n }\n\n // Parse value icon style\n if (badgeStyle.valueIconStyle) {\n const parsedValueIconStyle = this.styleBulderService.parseStyleObject(badgeStyle.valueIconStyle);\n processedBadge.valueIconStyle = this.styleBulderService.getItemStyle(parsedValueIconStyle);\n }\n\n // Parse value icon style expression\n if (badgeStyle.valueIconStyleExpression) {\n const parsedValueIconStyleExpression = this.styleBulderService.parseStyleObject(badgeStyle.valueIconStyleExpression);\n processedBadge.valueIconStyleExpression = this.styleBulderService.getItemStyle(parsedValueIconStyleExpression);\n }\n\n // Merge icon styles\n processedBadge.mergedValueIconStyle = {\n ...processedBadge.valueIconStyle,\n ...processedBadge.valueIconStyleExpression\n };\n\n return processedBadge;\n });\n }\n }\n}\n","@if (widget.header || widget.subHeader) {\n<div class=\"grid m-0 align-items-center justify-content-between px-3 pt-3\">\n <div class=\"col-12 p-0\">\n <div class=\"flex align-items-center justify-content-between\">\n <div class=\"flex align-items-center\">\n <i [class]=\"headerIconClass\" [ngStyle]=\"headerIconStyle\"></i>\n <h3 [ngStyle]=\"headerStyle\" class=\"m-0 application-title-wrapper\">\n {{ (widget.header) }}\n </h3>\n\n <!-- Badges -->\n @if (processedBadges && processedBadges.length > 0) {\n <div class=\"flex align-items-center gap-1 ml-2\">\n @for (badge of processedBadges; track $index) {\n @if (badge.value && badge.value !== 'null') {\n <span class=\"px-2 py-1 rounded font-semibold badge\"\n [ngClass]=\"badge.valueClass\"\n [ngStyle]=\"badge.badgeStyle\">\n @if (badge.valueIconClass) {\n <i [ngClass]=\"badge.valueIconClass\" \n [ngStyle]=\"badge.mergedValueIconStyle\"\n class=\"mr-1\"></i>\n }\n @if (badge.valueIconClassExpression) {\n <i [ngClass]=\"badge.valueIconClassExpression\" \n [ngStyle]=\"badge.mergedValueIconStyle\"\n class=\"mr-1\"></i>\n }\n {{ badge.value }}\n </span>\n }\n }\n </div>\n }\n </div>\n\n <!-- Widget Status Icon -->\n <div class=\"flex align-items-center\">\n @if (widgetStatusIconClass) {\n <i [ngClass]=\"widgetStatusIconClass\" [ngStyle]=\"mergedWidgetStatusIconStyle\"></i>\n }\n @if (widgetStatusIconClassExpression) {\n <i [ngClass]=\"widgetStatusIconClassExpression\" [ngStyle]=\"mergedWidgetStatusIconStyle\"></i>\n }\n </div>\n </div>\n @if (widget?.subHeader) {\n <div class=\"flex align-items-center mt-2\">\n <span [ngStyle]=\"subHeaderStyle\" class=\"mr-3 font-semibold\">{{ widget.subHeader }}</span>\n </div>\n }\n </div>\n</div>\n}","import { Component, Input } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetStore } from '../../state/widget.store';\nimport { PERMISSION } from '../../../shared/constant/PERMISSION';\n\n/**\n * Widget Footer Component\n */\n@Component({\n selector: 'lib-widget-footer',\n standalone: false,\n templateUrl: './widget-footer.component.html',\n styleUrl: './widget-footer.component.scss'\n})\nexport class WidgetFooterComponent {\n @Input() widget!: WidgetModel;\n\n constructor(private widgetStore: WidgetStore) {}\n PERMISSION = PERMISSION\n viewAllDetails(event : any) {\n if(event){\n this.widgetStore.setOnViewAllDetails(this.widget);\n }\n }\n }\n","<div *ngIf=\"widget.isFormEnabled\" class=\"col-12 p-0 mt-3 flex justify-content-center\">\n <a class=\"p-button p-button-link text-primary-500\">\n @if(widget.isFormEnabled){\n <span class=\"underline font-semibold\" [permission]=\"PERMISSION.WIDGETS_EVALUATE\"\n (click)=\"viewAllDetails($event)\">View\n All Details</span>\n <i class=\"pi pi-arrow-up-right arrow-up-icon ml-2\"></i>\n }\n </a>\n</div>","import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { WidgetItem, WidgetModel } from '../../models/widget.model';\nimport { SHARED } from '../../../shared';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\nimport { WidgetStore } from '../../state/widget.store';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { Subject, takeUntil } from 'rxjs';\nimport moment from 'moment';\n\n@Component({\n selector: 'lib-widget-item',\n standalone: false,\n templateUrl: './widget-item.component.html',\n styleUrl: './widget-item.component.scss'\n})\nexport class WidgetItemComponent implements OnInit, OnChanges, OnDestroy {\n @Input() widgetItem!: WidgetItem;\n @Input() widget!: WidgetModel;\n @Input() application: any;\n widgetKey!: string;\n isEmptyValueHidden: boolean = false;\n keyClass!: string;\n valueClass!: string;\n fieldKeyStyle: { [key: string]: any } = {};\n fieldValueStyle: { [key: string]: any } = {};\n keyIconClass: string | undefined = SHARED.EMPTY;\n keyIconStyle: { [key: string]: any } = {};\n valueIconClass: string | undefined = SHARED.EMPTY;\n valueIconStyle: { [key: string]: any } = {};\n valueStyleExpression: { [key: string]: any } = {};\n mergedValueStyle: { [key: string]: any } = {};\n hasSeparator: boolean | undefined = false;\n isConfirmed: boolean | undefined = false;\n valueIconExpression!: string;\n valueIconStyleExpression: { [key: string]: any } = {};\n mergedValueIconStyle: { [key: string]: any } = {};\n isMenu: boolean = false;\n valueIconClassExpression!: string;\n private destroy$ = new Subject<void>();\n \n // Computed properties for template (performance optimization)\n shouldShowItem: boolean = true;\n hasContent: boolean = false;\n isDateValue: boolean = false;\n formattedDateValue: string = '';\n hasHtmlContentValue: boolean = false;\n\n constructor(private styleBulderService: StyleBuilderService, private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) { }\n\n ngOnInit(): void {\n this.handleIsMenu();\n this.handleIsEmptyValueHidden();\n }\n\n ngOnChanges(): void {\n // Handle isEmptyLabelHidden from widget model changes\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\n }\n \n if (this.widgetItem && this.widgetItem.style) {\n this.keyClass = this.widgetItem.style.keyClass;\n this.valueClass = this.widgetItem.style.valueClass;\n this.widgetKey = this.widgetItem.key.replace(/^['\"]+|['\"]+$/g, '').trim();\n const parsedValueStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.value);\n const parsedKeyStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.key);\n const parsedKeyIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.keyIconStyle);\n const parsedValueIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyle);\n const parsedValueStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.styleExpression);\n const parsedValueIconStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyleExpression);\n\n this.fieldValueStyle = this.styleBulderService.getItemStyle(parsedValueStyle);\n this.fieldKeyStyle = this.styleBulderService.getItemStyle(parsedKeyStyle);\n this.valueStyleExpression = this.widgetItem.style.styleExpression ? this.styleBulderService.getItemStyle(parsedValueStyleExpression) : {};\n this.mergedValueStyle = { ...this.fieldValueStyle, ...this.valueStyleExpression };\n this.keyIconClass = this.widgetItem.style.keyIconClass;\n this.keyIconStyle = this.widgetItem.style.keyIconStyle ? this.styleBulderService.getItemStyle(parsedKeyIconStyle) : {};\n this.valueIconClass = this.widgetItem.style.valueIconClass;\n this.valueIconClassExpression = this.widgetItem.style.valueIconClassExpression ? this.widgetItem.style.valueIconClassExpression.replace(/^['\"]+|['\"]+$/g, \"\") : '';\n this.valueIconStyle = this.widgetItem.style.valueIconStyle ? this.styleBulderService.getItemStyle(parsedValueIconStyle) : {};\n this.valueIconStyleExpression = this.widgetItem.style.valueIconStyleExpression ? this.styleBulderService.getItemStyle(parsedValueIconStyleExpression) : {};\n this.mergedValueIconStyle = { ...this.valueIconStyle, ...this.valueIconStyleExpression };\n this.hasSeparator = this.widgetItem.style.hasSeparator;\n this.isConfirmed = this.widgetItem.style.isConfirmed === SHARED.STRING_TRUE ? true : false;\n \n // Compute values once for performance\n this.computeValueProperties();\n }\n }\n\n /**\n * Computes all value-related properties once to avoid function calls in template\n */\n private computeValueProperties(): void {\n // Check if value has content\n this.hasContent = this.hasValueContent(this.widgetItem.value, this.widgetItem.isHtml);\n \n // Determine if item should be shown based on isEmptyValueHidden\n this.shouldShowItem = this.isEmptyValueHidden ? this.hasContent : true;\n \n // Check if value is a date\n this.isDateValue = this.isDate(this.widgetItem.value);\n \n // Format date if it's a date value\n this.formattedDateValue = this.isDateValue ? this.formatDate(this.widgetItem.value) : '';\n \n // Check if HTML has content\n this.hasHtmlContentValue = this.widgetItem.isHtml ? this.hasHtmlContent(this.widgetItem.value) : false;\n }\n\n handleIsMenu() {\n this.widgetQuery.getIsMenu()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.isMenu = res;\n }\n });\n }\n\n handleIsEmptyValueHidden() {\n // Use isEmptyLabelHidden directly from widget model\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\n }\n \n if (this.widgetItem && this.widgetItem.style) {\n this.computeValueProperties();\n }\n }\n\n handleDynamicEvent(recordId: string) {\n this.widgetStore.setEventClickDetails({ recordId: recordId, isDailogShow: true });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.widgetStore.setOnWidgetItemClick(null);\n this.widgetStore.setEventClickDetails({ recordId: null, isDailogShow: false });\n }\n\n isDate(value: any): boolean {\n if (!value || typeof value !== 'string') return false;\n\n // Require separators like '/' or '-' to confirm it's a real date format\n if (!/[\\/\\-]/.test(value)) {\n return false; // e.g. \"1983\" will fail here\n }\n\n const validFormats = ['DD/MM/YYYY', 'YYYY/MM/DD', moment.ISO_8601];\n return moment(value, validFormats, true).isValid();\n}\n\n\n handleWidgetItemClick(widgetItem: WidgetItem) {\n const updatedItem = { ...widgetItem };\n const applicantId = this.widget.recordId;\n switch (updatedItem.route) {\n case SHARED.DIRECT_DEBIT:\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\n updatedItem.value = directDebit[0].value;\n break;\n case SHARED.SOLICITOR:\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\n updatedItem.value = solicitor[0].value;\n break;\n case SHARED.PRODUCT:\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\n updatedItem.value = product[0].value;\n break;\n case SHARED.COMMITMENTS:\n updatedItem.value = applicantId;\n break;\n case SHARED.INCOME:\n updatedItem.value = applicantId;\n break;\n case SHARED.EXPENDITURE:\n updatedItem.value = applicantId;\n break;\n }\n this.widgetStore.setWidgetData(this.widget);\n this.widgetStore.setOnWidgetItemClick(updatedItem);\n }\n\n\n /**\n * Checks if the HTML value has actual content after parsing\n * @param value - The HTML string to check\n * @returns true if there's meaningful content, false otherwise\n */\n hasHtmlContent(value: string): boolean {\n if (!value || value === 'null' || value === 'undefined') {\n return false;\n }\n\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = value;\n\n const textContent = tempDiv.textContent || tempDiv.innerText || '';\n\n return textContent.replace(/[,.]/g, '').trim().length > 0;\n }\n\n /**\n * Checks if the value has meaningful content (for both HTML and non-HTML values)\n * @param value - The value to check\n * @param isHtml - Whether the value is HTML content\n * @returns true if there's meaningful content, false otherwise\n */\n hasValueContent(value: string, isHtml: boolean): boolean {\n if (!value || value === 'null' || value === 'undefined') {\n return false;\n }\n\n if (isHtml) {\n return this.hasHtmlContent(value);\n } else {\n return value.trim().length > 0;\n }\n }\n\n\n formatDate(value: string): string {\n if (this.isDate(value)) {\n return moment(value, [\"DD/MM/YYYY\", \"YYYY/MM/DD\", moment.ISO_8601]).format(\"DD/MM/YYYY\");\n }\n return value;\n }\n\n}\n","<div class=\"widget-container px-3 overflow-hidden\" *ngIf=\"shouldShowItem\">\n <div class=\"widget-content widget-wrapper\" [class.border-top]=\"hasSeparator\" [ngClass]=\"{\n 'layout-row': widget.layoutType === 'row',\n 'layout-tile m-0': widget.layoutType === 'tile'\n }\">\n <div class=\"flex align-items-center justify-content-between\"\n [ngClass]=\"widget.layoutType === 'row' ? 'w-7' : 'w-full'\">\n <div class=\"flex align-items-center\">\n <i *ngIf=\"keyIconClass\" class=\"mr-2\" [ngClass]=\"keyIconClass\" [ngStyle]=\"keyIconStyle\"></i>\n <p *ngIf=\"!isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\n <p *ngIf=\"isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" (click)=\"handleDynamicEvent(widget.recordId)\"\n class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\n </div>\n <div class=\"flex justify-content-end\" *ngIf=\"isConfirmed\">\n <img src=\"assets/icons/confirm-icon.svg\" alt=\"confirm icon\" width=\"18\" height=\"18\" />\n </div>\n </div>\n\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-full\" \n [ngClass]=\"widget.layoutType === 'row' ? 'flex align-items-center justify-content-end w-5': 'w-full'\">\n <i *ngIf=\"valueIconClass\" [ngClass]=\"valueIconClass\" [ngStyle]=\"mergedValueIconStyle\"></i>\n <i *ngIf=\"valueIconClassExpression\" [ngClass]=\"valueIconClassExpression\" [ngStyle]=\"mergedValueIconStyle\"></i>\n <ng-container *ngIf=\"widgetItem.isEvent; else notEvent\">\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\n (click)=\"handleDynamicEvent(widget.recordId)\">\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\n </a>\n </ng-container>\n\n <ng-template #notEvent>\n <ng-container *ngIf=\"widgetItem.isLink; else plainText\">\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\n (click)=\"handleWidgetItemClick(widgetItem)\">\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\n </a>\n </ng-container>\n </ng-template>\n\n <ng-template #plainText>\n @if(widgetItem.isHtml && hasHtmlContentValue) {\n <div class=\"key-field-wrapper\" [innerHTML]=\"widgetItem.value !== 'null' ? widgetItem.value : ''\"\n [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"></div>\n }\n @else if(!widgetItem.isHtml) {\n <p class=\"mb-0\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\">\n\n <ng-container *ngIf=\"isDateValue; else normalText\">\n {{ formattedDateValue }}\n </ng-container>\n <ng-template #normalText>\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\n </ng-template>\n </p>\n }\n </ng-template>\n </div>\n </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n@Component({\n selector: 'lib-widget-body',\n templateUrl: './widget-body.component.html',\n styleUrl: './widget-body.component.scss',\n standalone : false\n})\nexport class WidgetBodyComponent implements OnChanges{\n\n constructor(private styleBulderService: StyleBuilderService) {}\n @Input() widget!: WidgetModel;\n hasBackgroundColor: Array<boolean> = [];\n widgetItemStyle: Array<{ [key: string]: any }> = [];\n isConfirmed: Array<boolean> = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.widget && this.widget.dataItems) {\n this.widgetItemStyle = this.widget.dataItems.map((item, i) => {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(item?.style?.itemStyle);\n const itemStyleObject = this.styleBulderService.getItemStyle(parsedItemStyle);\n\n if (parsedItemStyle?.['backgroundColor']) {\n this.hasBackgroundColor[i] = true;\n }\n\n return { ...itemStyleObject };\n });\n\n this.isConfirmed = (this.widget.dataItems)\n .filter(item => item.style != null)\n .map(item =>\n item.style.isConfirmed === 'true' ? true : false\n ) || [];\n }\n }\n}\n","<div class=\"widget-body-container grid m-0\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\" [ngClass]=\"[widget.style.width, widget.style.width === 'col-12' ? 'p-0' : '']\">\n @if(!dataItem.isHidden){\n <div class=\"h-full\" [ngStyle]=\"widgetItemStyle[i]\" \n [ngClass]=\"{\n 'widget-confirm-wrapper': isConfirmed[i]\n }\">\n <div>\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\n </div>\n </div>\n }\n </div>\n</div>","import { Component, Input, OnChanges } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n@Component({\n selector: 'lib-widget-main',\n standalone: false,\n templateUrl: './widget-main.component.html',\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-main.component.scss']\n})\nexport class WidgetMainComponent implements OnChanges {\n constructor(private styleBulderService: StyleBuilderService) {}\n\n @Input() widget!: WidgetModel;\n @Input() index!: number;\n @Input() isFullHeight = false;\n widgetStyle: { [key: string]: any } = {};\n styleExpression: { [key: string]: any } = {};\n widgetCombinedStyle: { [key: string]: any } = {};\n\n ngOnChanges(): void {\n if(this.widget && this.widget.style) {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(this.widget.style.widgetStyle);\n const styleExpression = this.styleBulderService.parseStyleObject(this.widget.style.styleExpression);\n this.widgetStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\n this.styleExpression = this.widget.style.styleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\n console.log(styleExpression);\n this.widgetCombinedStyle = { ...this.widgetStyle, ...this.styleExpression };\n }\n }\n}","<div [ngStyle]=\"widgetCombinedStyle\" class=\"widget-container-wrapper h-full\" [ngClass]=\"{'h-full': isFullHeight, 'mt-4': index !== 0}\">\n <div class=\"widget-container-wrapper\">\n <lib-widget-header [widget]=\"widget\"></lib-widget-header>\n <div [ngClass]=\"[(widget.header || widget.subHeader) ? 'widget-content-wrapper' : '', widget.style.width === 'col-6' ? 'px-2' : '']\" class=\"py-3\">\n <lib-widget-body [widget]=\"widget\"></lib-widget-body>\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\n </div>\n </div>\n</div>","import { Injectable } from '@angular/core';\nimport { CustomWidgetModel, StatusItem } from \"../models/custom-widget.model\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CustomWidgetService {\n constructor() {}\n\n isLastIndex(event: StatusItem, widgetData: CustomWidgetModel): boolean {\n if (!widgetData.statusList) {\n return false;\n }\n const index = widgetData.statusList.indexOf(event);\n return index === widgetData.statusList.length - 1;\n }\n\n getNextEventStatus(event: StatusItem, widgetData: CustomWidgetModel): string | null {\n const index = this.getEventIndex(event, widgetData);\n if (widgetData.statusList && index >= 0 && index + 1 < widgetData.statusList.length) {\n return widgetData.statusList[index + 1].status;\n }\n return null;\n }\n\n getEventIndex(event: StatusItem, widgetData: CustomWidgetModel): number {\n return widgetData.statusList ? widgetData.statusList.indexOf(event) : -1;\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport { CustomWidgetModel, StatusItem } from \"../../models/custom-widget.model\";\nimport { CustomWidgetService } from \"../../../shared/services/custom-widget.service\";\n\n@Component({\n selector: \"lib-custom-widget\",\n templateUrl: \"./custom-widget.component.html\",\n styleUrl: \"./custom-widget.component.scss\",\n standalone: false,\n})\nexport class CustomWidgetComponent {\n @Input() widgetData!: CustomWidgetModel;\n\n constructor(private widgetUtilService: CustomWidgetService) {}\n\n isLastIndex(event: StatusItem): boolean {\n return this.widgetUtilService.isLastIndex(event, this.widgetData);\n }\n\n getNextEventStatus(event: StatusItem): string | null {\n return this.widgetUtilService.getNextEventStatus(event, this.widgetData);\n }\n\n getEventIndex(event: StatusItem): number {\n return this.widgetUtilService.getEventIndex(event, this.widgetData);\n }\n}\n","@if(widgetData){\n<div class=\"custom-widget\">\n\n <div class=\" ml-3\" style=\"display: flex; flex-direction: row; align-items: center;\">\n <h3 class=\"mb-0 font-bold mr-3 widgetData-title-wrapper\">\n {{ (widgetData.title) }}\n </h3>\n \n <span class=\"px-2 py-1 rounded text-white font-semibold badge\" [ngClass]=\"{\n 'bg-yellow-500': widgetData.badge === 'Pending',\n 'bg-green-500': widgetData.badge === 'Verified'\n }\">\n <i class=\"{{ widgetData.badgeIcon }}\"></i> {{ widgetData.badge }}\n </span>\n \n </div>\n <div class=\"widget-body-wrapper\">\n\n <p-timeline class=\"widget-timeline-wrapper\" [value]=\"widgetData?.statusList\">\n <ng-template pTemplate=\"marker\" let-event let-i=\"index\">\n <div class=\"p-timeline-event-marker\" [ngStyle]=\"{\n 'background-color': event.status === 'active' ? '#0F8BFD' :\n event.status === 'pending' ? '#676B89' :\n event.status === 'removed' ? '#FF0000' :\n '#0F8BFD',\n 'border-color': event.status === 'active' ? '#0F8BFD' :\n event.status === 'pending' ? '#676B89' :\n event.status === 'removed' ? '#FF0000' :\n '#0F8BFD',\n 'outline': event.status === 'active' ? '4px solid #0f8bfd33' :\n event.status === 'pending' ? '4px solid #676b8933' :\n event.status === 'removed' ? '4px solid #FF0000' :\n '4px solid #0F8BFD',\n }\"></div>\n\n <div class=\"p-timeline-event-connector-border\" *ngIf=\"!isLastIndex(event)\" [ngStyle]=\"{\n border:\n getNextEventStatus(event) === 'active'\n ? '2px solid #0F8BFD'\n : getNextEventStatus(event) === 'pending'\n ? '2px solid #44486d33'\n : getNextEventStatus(event) === 'removed'\n ? '2px solid #FF0000'\n : '2px solid #0F8BFD',\n height: 'calc(100% - 18px)'\n }\"></div>\n </ng-template>\n\n <ng-template pTemplate=\"content\" let-event>\n <div class=\"p-timeline-event-content mb-2\"\n [ngClass]=\"{ 'mb-4': widgetData.title === 'Valuation' && event.title }\">\n\n <p *ngIf=\"!(widgetData.title === 'Valuation') && event.title\" class=\"event-title mb-2\"\n [innerHTML]=\"event.title\">\n </p>\n\n <p *ngIf=\"widgetData.title === 'Valuation' && event.title\" class=\"event-title mb-2\">\n <span style=\"color: #0f8bfd; text-decoration: underline; font-weight: bold\">{{ event.title?.split(' ')[0]\n }}</span>\n {{ event.title?.substring(event.title.indexOf(' ') + 1) }}\n </p>\n \n <span class=\"font-medium event-description\" [ngClass]=\"{ 'font-bold': event.textColor }\"\n [ngStyle]=\"{ color: event.textColor }\" [innerHTML]=\"event.description\"></span>\n </div>\n </ng-template>\n </p-timeline>\n </div>\n</div>\n\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { WidgetModel } from '../../models/widget.model';\nimport { ERROR, SHARED } from '../../../shared';\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\nimport { WidgetService } from '../../state/widget.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { WidgetStore } from '../../state/widget.store';\n\n@Component({\n selector: 'lib-widget-menu',\n standalone: false,\n templateUrl: './widget-menu.component.html',\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-menu.component.scss']\n})\nexport class WidgetMenuComponent implements OnInit, OnChanges, OnDestroy {\n constructor(\n private widgetService: WidgetService,\n public activatedRoute: ActivatedRoute,\n private widgetQuery: WidgetQuery,\n private widgetStore: WidgetStore,\n private cdr: ChangeDetectorRef\n ) { }\n\n private destroy$ = new Subject<void>();\n widgets: WidgetModel[] = [];\n private subscriptions :Subscription[]=[];\n isLoading: boolean = true;\n\n @Output() onViewAllDetails = new EventEmitter<any>();\n @Output() onWidgetEventClick = new EventEmitter<any>();\n @Output() onWidgetItemClick = new EventEmitter<any>();\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\n @Input() offerWidgetData!: CustomWidgetModel;\n @Input() valuationWidgetData!: CustomWidgetModel;\n\n ngOnInit(): void {\n this.handleEventClickDetails();\n this.handleOnViewAllDetails();\n const queueId = localStorage.getItem(SHARED.selectedQueue);\n const recordId = this.activatedRoute.snapshot.params[SHARED.ID];\n\n if (!queueId || !recordId) {\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\n queueId: queueId || SHARED.MISSING_QUEUE_ID,\n recordId: recordId || SHARED.MISSING_RECORD_ID\n });\n this.isLoading = false;\n return;\n }\n\n this.getWidgetFromCacheList(queueId, recordId);\n this.getAllWidgetList(queueId, recordId);\n this.handleWidgetItemClick();\n }\n\n handleWidgetItemClick() {\n this.widgetQuery.getOnWidgetItemClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n if (res) {\n this.onWidgetItemClick.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnWidgetItemClick subscription:', error);\n }\n );\n }\n\n handleEventClickDetails() {\n this.widgetQuery.getEventClickDetails()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.onWidgetEventClick.next(res);\n }\n })\n }\n\n handleOnViewAllDetails() {\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\n (res) => {\n if (res) {\n this.onViewAllDetails.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnViewAllDetails subscription:', error);\n }\n ));\n }\n\n getAllWidgetList(queueId: string, recordId: string) {\n this.widgetService.getAllWidgets(queueId, recordId)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.cdr.detectChanges();\n }\n )\n }\n\n getWidgetFromCacheList(queueId: string, recordId: string) {\n this.widgetService.getEvaluateFromCache(queueId, recordId)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.isLoading = false;\n },\n (error) => {\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.isLoading = false;\n }\n )\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.isSidebarVisible) {\n this.widgetStore.setEventClickDetails({recordId: null, isDailogShow: false});\n }\n }\n\n ngOnDestroy(): void {\n this.widgets = [];\n this.widgetStore.resetOnViewAllDetails();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<p-card class=\"widget-block-wrapper block\">\n <div class=\"widget-section-wrapper custom-scroll pt-2\">\n <!-- Loading state -->\n <ng-container *ngIf=\"isLoading; else widgetContent\">\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\n </ng-container>\n\n <!-- Content after API call -->\n <ng-template #widgetContent>\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\n <lib-widget-main [widget]=\"widget\" [index]=\"i\"></lib-widget-main>\n </ng-container>\n <ng-container *ngIf=\"offerWidgetData\">\n <lib-custom-widget [widgetData]=\"offerWidgetData\"></lib-custom-widget>\n </ng-container>\n <ng-container *ngIf=\"valuationWidgetData\">\n <lib-custom-widget [widgetData]=\"valuationWidgetData\"></lib-custom-widget>\n </ng-container>\n </ng-container>\n\n <!-- No widget configured state -->\n <ng-template #noWidgets>\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\n </ng-template>\n </ng-template>\n </div>\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges,ChangeDetectorRef } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetService } from '../../state/widget.service';\nimport { SHARED } from '../../../shared';\nimport { WidgetStore } from '../../state/widget.store';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n\n/**\n * WidgetRowTileComponent is a component that displays a row of widgets in a tile format.\n * It fetches the widgets based on the provided record ID and widget name.\n */\n@Component({\n selector: 'lib-widget-row-tile',\n standalone: false,\n templateUrl: './widget-row-tile.component.html',\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-row-tile.component.scss']\n})\nexport class WidgetRowTileComponent implements OnInit, OnChanges, OnDestroy {\n\n private destroy$ = new Subject<void>();\n widgets!: WidgetModel[];\n isLoading: boolean = true;\n @Input() recordId!: string;\n @Input() widgetName!: string;\n @Input() onWidgetUpdate: any;\n @Input() isFullHeight = false;\n @Output() onWidgetItemClick = new EventEmitter<any>();\n widgetCardStyle: { [key: string]: any } = {};\n widgetCardStyleExpression: { [key: string]: any } = {};\n widgetCombinedStyle: { [key: string]: any } = {};\n constructor(private widgetService: WidgetService, private widgetStore: WidgetStore, private styleBulderService: StyleBuilderService, private cdr: ChangeDetectorRef,private widgetQuery: WidgetQuery) {}\n\n ngOnInit(): void {\n this.getWidgetItemList();\n this.handleWidgetItemClick();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes[SHARED.ON_WIDGET_UPDATE]) {\n this.isLoading = true;\n this.getWidgetItemList();\n }\n }\n\n getWidgetItemList() {\n this.widgetService.getEvaluateByWidgetName(this.recordId, this.widgetName)\n .pipe(takeUntil(this.destroy$))\n .subscribe((res: WidgetModel[]) => {\n this.widgets = res;\n this.widgetStore.setWidgetsList(this.widgets);\n this.updateWidgetStyles(this.widgets[0]);\n this.isLoading = false;\n },\n (error) => {\n this.isLoading = false;\n }\n )\n }\n\n handleWidgetItemClick() {\n this.widgetQuery.getOnWidgetItemClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n if (res) {\n this.onWidgetItemClick.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnWidgetItemClick subscription:', error);\n }\n );\n }\n\n private updateWidgetStyles(widget: any): void {\n if (widget.style) {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyle);\n const styleExpression = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyleExpression);\n this.widgetCardStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\n this.widgetCardStyleExpression = widget.style.widgetCardStyleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\n this.widgetCombinedStyle = { ...this.widgetCardStyle, ...this.widgetCardStyleExpression };\n this.cdr.detectChanges();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<p-card [style]=\"widgetCombinedStyle\" class=\"widget-block-wrapper block\" [ngClass]=\"{'h-full': isFullHeight}\">\n <div class=\"widget-section-wrapper\" [ngClass]=\"{'h-full': isFullHeight}\">\n <!-- Loading state -->\n @if (isLoading) {\n @for (n of [1, 2, 3]; track $index) {\n <div style=\"padding: 6px;\">\n <p-skeleton width=\"100%\" height=\"45px\" styleClass=\"mb-3\"></p-skeleton>\n </div>\n }\n } @else {\n\n <!-- Widgets Exist -->\n @if (widgets && widgets.length > 0) {\n @for (widget of widgets; let i = $index; track i) {\n <lib-widget-main \n [widget]=\"widget\" \n [index]=\"i\" \n [isFullHeight]=\"isFullHeight\"\n ></lib-widget-main>\n }\n } @else {\n <!-- No Widgets -->\n <p class=\"text-color ml-3 font-semibold\">\n No Widgets Configured\n </p>\n }\n }\n </div>\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { SHARED } from '../../../shared';\nimport { WidgetStore } from '../../state/widget.store';\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { Subject, takeUntil } from 'rxjs';\n\n/**\n * Widget Container Component\n */\n@Component({\n selector: 'lib-widget-container',\n standalone: false,\n templateUrl: './widget-container.component.html',\n styleUrl: './widget-container.component.scss'\n})\nexport class WidgetContainerComponent implements OnInit,OnChanges, OnDestroy{ \n\n constructor(private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) {}\n\n @Input() isMenu = false;\n @Input() offerWidgetData!: CustomWidgetModel;\n @Input() valuationWidgetData!: CustomWidgetModel;\n @Input() widgetName!: string;\n @Input() recordId!: string;\n @Input() onWidgetUpdate: any;\n @Input() isFullHeight = false;\n @Output() onViewAllDetails = new EventEmitter<any>();\n @Output() onWidgetEventClick = new EventEmitter<any>();\n @Output() onWidgetItemClick = new EventEmitter<any>();\n @Output() onUpdatedWidgetList = new EventEmitter<any>();\n private destroy$ = new Subject<void>();\n \n ngOnInit(): void {\n this.widgetQuery.getWidgetList()\n .pipe(takeUntil(this.destroy$))\n .subscribe((data) => {\n if (data) {\n this.onUpdatedWidgetList.emit(data);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[SHARED.IS_MENU]) {\n this.isMenu = changes[SHARED.IS_MENU].currentValue;\n this.widgetStore.setIsMenu(this.isMenu);\n }\n }\n\n handleViewAllDetails(event: any) {\n this.onViewAllDetails.emit(event);\n }\n\n handleWidgetEventClick(event: any) {\n this.onWidgetEventClick.emit(event);\n }\n\n handleWidgetItemClick(event: any) {\n this.onWidgetItemClick.emit(event);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div class=\"widget-container-wrapper\" [ngClass]=\"{'h-full': isFullHeight}\">\n @if(isMenu) {\n <div class=\"bg-white widget-menu-container\">\n <lib-widget-menu \n [offerWidgetData]=\"offerWidgetData\"\n [valuationWidgetData]=\"valuationWidgetData\"\n (onViewAllDetails)=\"handleViewAllDetails($event)\"\n (onWidgetEventClick)=\"handleWidgetEventClick($event)\"\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\n ></lib-widget-menu>\n </div>\n } @else {\n <div class=\"bg-white widget-menu-container\" [ngClass]=\"{'h-full': isFullHeight}\">\n <lib-widget-row-tile\n [recordId]=\"recordId\"\n [widgetName]=\"widgetName\"\n [onWidgetUpdate]=\"onWidgetUpdate\"\n [isFullHeight]=\"isFullHeight\"\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\n ></lib-widget-row-tile>\n </div>\n }\n</div>","import { Component, Input } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { ProgressChartModel } from '../../models/progress-chart.model';\n\n@Component({\n selector: 'lib-widget-menu-header',\n standalone: false,\n templateUrl: './widget-menu-header.component.html',\n styleUrl: './widget-menu-header.component.scss'\n})\nexport class WidgetMenuHeaderComponent {\n @Input() widget!: WidgetModel;\n @Input() progressChartData!: ProgressChartModel;\n}\n","<div class=\"grid m-0 align-items-center justify-content-between px-3\">\n <div class=\"col-10 p-0\">\n <div class=\"flex align-items-center\">\n <h3 class=\"mb-0 application-title-wrapper font-bold mr-3\">\n {{ (widget.header) }}\n </h3>\n </div>\n <div *ngIf=\"widget?.subHeader\" class=\"flex align-items-center mt-2\">\n <span class=\"mr-1\">Risk Rating:</span>\n <span class=\"mr-3 font-semibold\" [ngClass]=\"{\n 'text-red-500': widget.subHeader === 'High',\n 'text-green-500': widget.subHeader === 'Low',\n 'text-yellow-500': widget.subHeader === 'Medium'\n }\">{{ widget.subHeader }}</span>\n </div>\n </div>\n @if(widget.predefinedName == \"ApplicationWidget\") {\n <div class=\"chart-container\">\n <p-chart type=\"pie\" [data]=\"progressChartData\" height=\"50px\" width=\"50px\"></p-chart>\n <p class=\"percentage-label text-green-500 text-lg\">{{ progressChartData.datasets[0].data[0] }}%</p>\n </div>\n }\n \n</div>","import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { StyleConfig, WidgetItem, WidgetModel } from '../../models/widget.model';\nimport { SHARED } from '../../../shared';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\nimport { WidgetStore } from '../../state/widget.store';\n\n@Component({\n selector: 'lib-widget-menu-item',\n standalone: false,\n templateUrl: './widget-menu-item.component.html',\n styleUrl: './widget-menu-item.component.scss'\n})\nexport class WidgetMenuItemComponent implements OnChanges, OnDestroy {\n @Input() widgetItem!:WidgetItem;\n @Input() widget!: WidgetModel;\n @Input() application: any;\n isShowExclamation: boolean = false;\n constructor(private styleBulderService : StyleBuilderService, private widgetStore: WidgetStore){}\n\n getStyle(style: StyleConfig){\n return this.styleBulderService.getStyle(style)\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // if(this.widgetItem && this.widgetItem.style && this.widgetItem.style.styleExpression && this.widgetItem.style.styleExpression.co) {\n // this.widgetItem.style.styleExpression.color\n // exclamation\n // }\n }\n\n onHandleSidebar(propertyId: string) {\n this.widgetStore.setOnViewPropertyDetails({propertyId: propertyId, isDailogShow: true});\n }\n \n ngOnDestroy(): void {\n this.widgetStore.setOnWidgetItemClick(null);\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\n }\n\n handleWidgetItemClick(widgetItem: WidgetItem){\n const updatedItem = { ...widgetItem };\n const applicantId = this.widget.recordId;\n switch (updatedItem.route) {\n case SHARED.DIRECT_DEBIT:\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\n updatedItem.value = directDebit[0].value;\n break;\n case SHARED.SOLICITOR:\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\n updatedItem.value = solicitor[0].value;\n break;\n case SHARED.PRODUCT:\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\n updatedItem.value = product[0].value;\n break;\n case SHARED.COMMITMENTS:\n updatedItem.value = applicantId;\n break;\n case SHARED.INCOME:\n updatedItem.value = applicantId;\n break;\n case SHARED.EXPENDITURE:\n updatedItem.value = applicantId;\n break;\n }\n this.widgetStore.setWidgetData(this.widget);\n this.widgetStore.setOnWidgetItemClick(updatedItem);\n }\n}\n","<div class=\"widget-container\">\n <div class=\"flex justify-content-between\"\n [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\n \n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\n <i *ngIf=\"false\" class=\"pi pi-exclamation-triangle text-red-500 mr-1\"\n style=\"font-size: 1.3rem\"></i>\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\"\n [ngStyle]=\"getStyle(widgetItem.style)\">\n <ng-container *ngIf=\"widgetItem?.isLink; else plainText\">\n <a class=\"cursor-pointer\" (click)=\"handleWidgetItemClick(widgetItem)\">\n {{ (widgetItem.value && widgetItem.value !== 'null') ? widgetItem.value : '' }}\n </a>\n </ng-container>\n <ng-template #plainText>\n <a (click)=\"handleWidgetItemClick(widgetItem)\"> {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : '' }} </a>\n </ng-template>\n </p>\n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\n </div>\n </div>\n \n \n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"address-title-wrapper cursor-pointer\" [ngStyle]=\"getStyle(widgetItem.style)\" (click)=\"onHandleSidebar(widget.recordId)\">\n {{ widgetItem?.value }}\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\n\n@Component({\n selector: 'lib-widget-menu-body',\n standalone: false,\n templateUrl: './widget-menu-body.component.html',\n styleUrl: './widget-menu-body.component.scss'\n})\nexport class WidgetMenuBodyComponent {\n @Input() widget!: WidgetModel;\n}\n","<div class=\"widget-body-container\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\n @if(!dataItem.isHidden){\n <div [ngClass]=\"i !== ((widget.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\n <div [ngClass]=\"\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\n ? 'vulnerability-title-wrapper'\n : ( i !== ((widget.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\n \" class=\"px-3\">\n <lib-widget-menu-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-menu-item>\n </div>\n </div>\n }\n </div>\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ERROR, ROUTES, SHARED } from '../../../shared';\nimport { WidgetService } from '../../state/widget.service';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { WidgetStore } from '../../state/widget.store';\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\nimport { ProgressChartModel } from '../../models/progress-chart.model';\n\n/**\n * Widget Container Component\n */\n@Component({\n selector: 'lib-widget-menu-container',\n standalone: false,\n templateUrl: './widget-menu-container.component.html',\n styleUrl: './widget-menu-container.component.scss'\n})\nexport class WidgetMenuContainerComponent implements OnInit, OnChanges, OnDestroy {\n constructor(\n private widgetService: WidgetService,\n public activatedRoute: ActivatedRoute,\n private widgetQuery: WidgetQuery,\n private widgetStore: WidgetStore,\n private cdr: ChangeDetectorRef\n ) { }\n\n private destroy$ = new Subject<void>();\n widgets: WidgetModel[] = [];\n private subscriptions :Subscription[]=[];\n isLoading: boolean = true;\n \n @Input() widgetName!: string | null;\n @Input() recordId!: string | null;\n @Output() onViewAllDetails = new EventEmitter<any>();\n @Output() onViewAllProperties = new EventEmitter<any>();\n @Output() onWidgetItemClick = new EventEmitter<any>();\n @Output() getWidgetData = new EventEmitter<any>();\n @Output() onDirectDebitClick = new EventEmitter<any>();\n @Output() onWidgetLoaded = new EventEmitter<any>();\n @Input() isRouteChanged: string = SHARED.EMPTY;\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\n @Input() offerWidgetData!: CustomWidgetModel;\n @Input() valuationWidgetData!: CustomWidgetModel;\n @Input() progressChartData!: ProgressChartModel;\n\n ngOnInit(): void {\n this.handleEventFromPropertyDetails();\n this.handleOnViewAllDetails();\n\n if (!this.widgetName || !this.recordId) {\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\n widgetName: this.widgetName || SHARED.MISSING_WIDGETNAME,\n recordId: this.recordId || SHARED.MISSING_RECORD_ID\n });\n this.isLoading = false;\n return;\n }\n\n this.getWidgetFromCacheList(this.recordId, this.widgetName);\n this.getAllWidgetList(this.recordId, this.widgetName);\n this.handleGetWidgetData()\n this.handleWidgetItemClick();\n }\n\n handleWidgetItemClick() {\n this.widgetQuery.getOnWidgetItemClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n if (res) {\n this.onWidgetItemClick.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnWidgetItemClick subscription:', error);\n }\n );\n\n }\n\n handleGetWidgetData() {\n this.widgetQuery.getWidgetData()\n .pipe(takeUntil(this.destroy$)) \n .subscribe(\n (res) => {\n if (res) {\n this.getWidgetData.emit(res);\n }\n },\n (error) => {\n console.error('Error in getWidgetData subscription:', error);\n }\n );\n }\n\n handleEventFromPropertyDetails() {\n this.widgetQuery.getViewPropertyDetails()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.onViewAllProperties.next(res);\n }\n })\n }\n\n handleOnViewAllDetails() {\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\n (res) => {\n if (res) {\n this.onViewAllDetails.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnViewAllDetails subscription:', error);\n }\n ));\n }\n\n getAllWidgetList(recordId: string, widgetName: string) {\n this.widgetService.getAllWidgets(recordId, widgetName)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.onWidgetLoaded.emit(this.widgets);\n this.cdr.detectChanges();\n },\n (error) => {\n this.onWidgetLoaded.emit(true);\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.cdr.detectChanges();\n }\n )\n }\n\n getWidgetFromCacheList(recordId: string, widgetName: string) {\n this.widgetService.getEvaluateFromCache(recordId, widgetName)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.isLoading = false;\n },\n (error) => {\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.isLoading = false;\n }\n )\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.isSidebarVisible) {\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\n }\n if(changes['isRouteChanged'] && this.widgetName && this.recordId) {\n console.log(this.isRouteChanged);\n this.getAllWidgetList(this.recordId, this.widgetName);\n }\n }\n\n ngOnDestroy(): void {\n this.widgets = [];\n this.widgetStore.resetOnViewAllDetails();\n this.onWidgetLoaded.emit(SHARED.EMPTY);\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.destroy$.next();\n this.destroy$.complete();\n }\n}","<p-card class=\"widget-block-wrapper block\">\n <div class=\"widget-section-wrapper pt-2\">\n <!-- Loading state -->\n <ng-container *ngIf=\"isLoading; else widgetContent\">\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\n </ng-container>\n \n <!-- Content after API call -->\n <ng-template #widgetContent>\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\n <div class=\"widget-container-wrapper pl-1\" [ngClass]=\"i !== 0 ? 'mt-4' : ''\">\n <lib-widget-menu-header [widget]=\"widget\" [progressChartData]=\"progressChartData\"></lib-widget-menu-header>\n <div class=\"widget-content-wrapper mt-3 py-3\">\n <lib-widget-menu-body [widget]=\"widget\"></lib-widget-menu-body>\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\n </div>\n </div>\n </ng-container>\n </ng-container>\n \n <!-- No widget configured state -->\n <ng-template #noWidgets>\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\n </ng-template>\n </ng-template>\n </div>\n </p-card>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { CardModule } from 'primeng/card';\nimport { SidebarModule } from 'primeng/sidebar';\nimport { SharedModule } from '../shared';\nimport { WidgetContainerComponent } from './components/widget-container/widget-container.component';\nimport { WidgetHeaderComponent } from './components/widget-header/widget-header.component';\nimport { WidgetFooterComponent } from './components/widget-footer/widget-footer.component';\nimport { WidgetBodyComponent } from './components/widget-body/widget-body.component';\nimport { WidgetItemComponent } from './components/widget-item/widget-item.component';\nimport { TimelineModule } from 'primeng/timeline';\nimport { ChartModule } from 'primeng/chart';\nimport { WidgetMainComponent } from './components/widget-main/widget-main.component';\nimport { WidgetMenuComponent } from './components/widget-menu/widget-menu.component';\nimport { WidgetRowTileComponent } from './components/widget-row-tile/widget-row-tile.component';\nimport { WidgetMenuContainerComponent } from './components/widget-menu-container/widget-menu-container.component';\nimport { WidgetMenuHeaderComponent } from './components/widget-menu-header/widget-menu-header.component';\nimport { WidgetMenuBodyComponent } from './components/widget-menu-body/widget-menu-body.component';\nimport { WidgetMenuItemComponent } from './components/widget-menu-item/widget-menu-item.component';\nimport { CustomWidgetComponent } from './components/custom-widget/custom-widget.component';\nimport { SkeletonModule } from 'primeng/skeleton';\n\n\n@NgModule({\n declarations: [WidgetContainerComponent, WidgetMenuComponent, WidgetMainComponent, WidgetHeaderComponent, WidgetFooterComponent, WidgetBodyComponent, WidgetItemComponent, WidgetRowTileComponent, WidgetMenuContainerComponent, WidgetMenuHeaderComponent, WidgetMenuBodyComponent, WidgetMenuItemComponent, CustomWidgetComponent],\n imports: [\n CommonModule,\n ButtonModule,\n DividerModule,\n CardModule,\n SharedModule,\n SidebarModule,\n TimelineModule,\n ChartModule,\n SkeletonModule\n ],\n exports: [WidgetContainerComponent, WidgetMenuContainerComponent, CustomWidgetComponent]\n})\nexport class WidgetModule { }","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { QueueStore } from \"./queue.store\";\nimport { Observable, tap } from \"rxjs\";\nimport { DATASOURCES } from \"../../shared/constant/DATASOURCES\";\nimport { BaseService } from \"../../shared/state/base.service\";\nimport { AppConfigService } from \"../../shared/services/app-config.service\";\nimport { ListService } from \"../../shared/services/list.service\";\nimport { SHARED } from \"../../shared/constant/SHARED\";\n\n/**\n * Service for managing queue-related operations such as retrieving,\n * searching, and storing queue data in the QueueStore.\n */\n@Injectable({ providedIn: \"root\" })\nexport class QueueService extends BaseService<QueueModel> {\n\n /**\n * Creates an instance of QueueService.\n * @param {QueueStore} queueStore - The store that manages the QueueModel state\n * @param {HttpClient} http - Angular HttpClient for making HTTP requests\n * @param {AppConfigService} appConfigService - Service for accessing application configuration\n * @param {ListService} listService - Service for handling list-related operations\n */\n constructor(\n public queueStore: QueueStore,\n http: HttpClient,\n appConfigService: AppConfigService,\n listService: ListService\n ) {\n super(http, queueStore, appConfigService, listService);\n this._pathName = DATASOURCES.QUEUES;\n }\n\n /**\n * Fetches queue records using the provided apiConfig URL and optional params.\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\n * @param {any} [params] - Optional query parameters as an object\n * @returns {Observable<any>} Observable emitting the queue records\n */\n getQueueRecordsByApiConfig(apiConfig: string, params?: any): Observable<any> {\n let url = apiConfig;\n if (params && typeof params === 'object') {\n const queryString = new URLSearchParams(params).toString();\n if (queryString) {\n url += (url.includes('?') ? '&' : '?') + queryString;\n }\n }\n return this.http.get<any>(url).pipe(\n tap((response: any) => {\n if (response && response.data) {\n this.queueStore.set(response.data);\n } else if (Array.isArray(response)) {\n this.queueStore.set(response);\n }\n })\n );\n }\n\n /**\n * Fetches paginated queue records using the provided apiConfig URL with search and pagination support.\n * This is the unified method used for both initial data loading and search functionality.\n * Uses POST method with underwriterIds and unassigned in body, other params in query string.\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\n * @param {string} [searchKey] - Optional search term\n * @param {number} [page] - Page number (default: 1)\n * @param {number} [limit] - Number of records per page (default: 10)\n * @param {string} [query] - Optional query string for filtering\n * @param {string} [sortBy] - Optional sort field\n * @param {string} [sortOrder] - Optional sort order ('asc' or 'desc')\n * @returns {Observable<any>} Observable emitting the paginated queue records\n */\n getPaginatedQueueRecords(apiConfig: string, searchKey?: string, page: number = 1, limit: number = 10, query?: string, sortBy?: string, sortOrder?: string): Observable<any> {\n let url = apiConfig;\n const params: any = {\n page: page.toString(),\n limit: limit.toString(),\n ...(searchKey ? { searchKey } : {}),\n ...(sortBy ? { sortBy } : {}),\n ...(sortOrder ? { sortOrder } : {})\n };\n \n // Prepare body for POST request - underwriterIds and unassigned go in body\n const body: any = {};\n \n // Add query parameters if they exist\n if (query) {\n const queryParams = new URLSearchParams(query);\n queryParams.forEach((value, key) => {\n // Extract underwriterIds and unassigned for body, keep others in params\n if (key === 'underwriterId') {\n // Convert comma-separated string to array for body\n const underwriterIds = value.split(',').filter(id => id.trim() !== '');\n if (underwriterIds.length > 0) {\n body.underwriterIds = underwriterIds;\n }\n } else if (key === 'unassigned') {\n // Convert string to boolean for body\n body.unassigned = value === 'true';\n } else {\n // Keep all other params in query string (including 'all' flag)\n params[key] = value;\n }\n });\n }\n \n const paramsString = new URLSearchParams(params).toString();\n url += (url.includes('?') ? '&' : '?') + paramsString;\n \n // Use POST method with body containing underwriterIds and unassigned\n return this.http.post<any>(url, body).pipe(\n tap((response: any) => {\n if (response && response.data) {\n this.queueStore.set(response.data);\n } else if (Array.isArray(response)) {\n this.queueStore.set(response);\n }\n })\n );\n }\n\n /**\n * Fetches all queue entities from the configured data source.\n * The entities are stored in the queueStore upon retrieval.\n * @returns {Observable<any>} Observable emitting the fetched queue entities\n */\n getAllQueue(): Observable<any> {\n return this.http.get<any>(this.apiUrl + this._pathName).pipe(\n tap((entities: any) => { this.queueStore.set(entities); })\n );\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { TableBuilder } from '../../shared/services/table.builder';\nimport { TableSecondaryModel } from '../../shared/table-secondary/models/table-secondary.model';\nimport { QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST, SHARED, FIELD_DISPLAY_NAMES, QUEUE_RECORD_TABLE_COLUMN_ORDER } from '../../shared/constant/SHARED';\nimport * as columnStylesJson from '../constants/column-styles.json';\nimport { logAction } from '@datorama/akita';\n\nconst CHIP_VARIANTS = {\n DANGER: 'danger',\n WARNING: 'warning',\n NEUTRAL: 'neutral',\n SUCCESS: 'success',\n INFO: 'info',\n LIGHT_GREEN_SUCCESS: 'light-green-success',\n LIGHT_AMBER_WARNING: 'light-amber-warning',\n LIGHT_RED_DANGER: 'light-red-danger',\n LIGHT_NEUTRAL: 'light-neutral'\n} as const;\n\ntype ChipVariant = (typeof CHIP_VARIANTS)[keyof typeof CHIP_VARIANTS];\n\n/**\n *\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class QueueRecordTableBuilderService extends TableBuilder {\n private columnStyles: any = (columnStylesJson as any).columnStyles;\n\n private deriveChipVariantFromDays(days: number | null): ChipVariant {\n if (days === null || days === undefined) {\n return CHIP_VARIANTS.NEUTRAL;\n }\n if (days < 0) {\n return CHIP_VARIANTS.DANGER;\n }\n if (days <= 1) {\n return CHIP_VARIANTS.WARNING;\n }\n return CHIP_VARIANTS.SUCCESS;\n }\n\n /**\n * Maps valuation status to icon and color configuration\n */\n private getValuationStatusConfig(status: string | null): { icon: string; iconClass: string; textClass: string } | null {\n if (!status) return null;\n \n const statusLower = status.toLowerCase();\n const configMap: Record<string, { icon: string; iconClass: string; textClass: string }> = {\n 'received': {\n icon: 'pi pi-image',\n iconClass: 'text-green-600',\n textClass: 'text-green-700 text-sm font-medium'\n },\n 'not paid': {\n icon: 'pi pi-times-circle',\n iconClass: 'text-red-600',\n textClass: 'text-red-700 text-sm font-medium'\n },\n 'instructed': {\n icon: 'pi pi-file',\n iconClass: 'text-blue-600',\n textClass: 'text-blue-700 text-sm font-medium'\n },\n 'outstanding pvq': {\n icon: 'pi pi-star',\n iconClass: 'text-purple-600',\n textClass: 'text-purple-700 text-sm font-medium'\n },\n 'paid': {\n icon: 'pi pi-pound',\n iconClass: 'text-green-500',\n textClass: 'text-green-600 text-sm font-medium'\n },\n 'reviewing': {\n icon: 'pi pi-clock',\n iconClass: 'text-orange-600',\n textClass: 'text-orange-700 text-sm font-medium'\n },\n 'complete': {\n icon: 'pi pi-check-circle',\n iconClass: 'text-green-600',\n textClass: 'text-green-700 text-sm font-medium'\n },\n 'scheduled': {\n icon: 'pi pi-calendar',\n iconClass: 'text-blue-600',\n textClass: 'text-blue-700 text-sm font-medium'\n },\n 'requested': {\n icon: 'pi pi-send',\n iconClass: 'text-indigo-600',\n textClass: 'text-indigo-700 text-sm font-medium'\n },\n 'ready to instruct': {\n icon: 'pi pi-check',\n iconClass: 'text-teal-600',\n textClass: 'text-teal-700 text-sm font-medium'\n }\n };\n\n return configMap[statusLower] || {\n icon: 'pi pi-info-circle',\n iconClass: 'text-gray-600',\n textClass: 'text-gray-700 text-sm'\n };\n }\n\n /**\n * Truncates text to specified length with ellipsis\n * @param {string} text - Text to truncate\n * @param {number} maxLength - Maximum length before truncation\n * @returns {string} Truncated text\n */\n private truncateText(text: string, maxLength: number = 15): string {\n if (!text) return '';\n return text.length > maxLength ? `${text.substring(0, maxLength - 3)}...` : text;\n }\n\n private getColumnOrder(isReferredQueue?: boolean): string[] {\n if (!isReferredQueue) { return QUEUE_RECORD_TABLE_COLUMN_ORDER.filter(field => field !== SHARED.REFERRED_DATE); }\n return QUEUE_RECORD_TABLE_COLUMN_ORDER.map(field => field === SHARED.SLA ? SHARED.REFERRED_DATE : field );\n }\n\n buildSecondaryTable(records: any[], headerWidths?: { [key: string]: string; }, editPermission?: string, deletePermission?: string, options?: { isReferredQueue?: boolean } ): TableSecondaryModel {\n const table = new TableSecondaryModel();\n table.headers = [];\n table.records = [];\n\n if (records.length === 0) {\n return table;\n }\n\n // Get the first record to determine available fields\n const firstRecord = records[0];\n const excludedFields = [\n SHARED._ID,\n SHARED.COMPANY_NAME,\n SHARED.APPLICATION_TYPE,\n SHARED.ASSIGNED_TO,\n SHARED.TASK_COMPLETION_PERCENT,\n SHARED.RISK_RATING,\n SHARED.LENDING,\n SHARED.BROKERCOMPANY_NAME\n\n ]; // Fields to exclude from table columns\n\n // Get all fields from the first record, excluding specified fields\n const columnOrder = this.getColumnOrder(options?.isReferredQueue);\n let availableFields = columnOrder\n .filter(field => !excludedFields.includes(field) && firstRecord.hasOwnProperty(field));\n\n const columnWidths: { [key: string]: string } = QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST;\n\n table.records = records.map((apiRecord, index) => {\n const record: any = {\n recordData: {\n recordId: apiRecord._id, // The nested recordData expected by table-secondary.component.ts\n ...apiRecord\n },\n ...apiRecord\n };\n\n // Add column widths for row alignment\n record._columnWidths = {};\n availableFields.forEach(field => {\n record._columnWidths[field] = columnWidths[field] || 'w-2';\n });\n\n // Add formatted values for each field\n availableFields.forEach(field => {\n let value = apiRecord[field];\n let cellValue: any = value;\n\n // Format specific fields\n if (field === SHARED.APPLICANTS && Array.isArray(value)) {\n const companyName = apiRecord.companyName || '';\n const bubbles = [];\n\n // If we have both company and applicants, show only company name\n if (companyName && value.length > 0) {\n bubbles.push({\n fullName: this.truncateText(companyName),\n isCompany: true\n });\n } else if (companyName) {\n // Only company, no applicants\n bubbles.push({\n fullName: this.truncateText(companyName),\n isCompany: true\n });\n } else {\n // Only applicants, show full names\n value.forEach((applicant) => {\n if (applicant.fullName) {\n bubbles.push({\n fullName: this.truncateText(applicant.fullName),\n isCompany: false,\n riskRating: applicant.riskRating,\n isCustomerVulnerable: applicant.isCustomerVulnerable\n });\n }\n });\n }\n cellValue = bubbles;\n }\n else if (field === SHARED.TASKS) {\n // Format tasks as task items with badges\n const taskItems = [];\n\n // Parse the string format \"brokerTasks/underwriterTasks\" (e.g., \"2/0\", \"0/3\", \"2/3\")\n if (typeof value === SHARED.STRING && value.includes(SHARED.SLASH)) {\n const [brokerTasksStr, underwriterTasksStr] = value.split(SHARED.SLASH);\n const brokerTasks = parseInt(brokerTasksStr) || 0;\n const underwriterTasks = parseInt(underwriterTasksStr) || 0;\n\n // Always show both badges, even if count is 0\n taskItems.push({\n type: SHARED.TASK_BROKER_LABEL,\n count: brokerTasks,\n status: SHARED.WARNING\n });\n taskItems.push({\n type: SHARED.TASK_UNDERWRITER_LABEL,\n count: underwriterTasks,\n status: SHARED.SUCCESS\n });\n }\n\n cellValue = taskItems;\n }\n else if (field === SHARED.APP_ID) {\n // Format App ID with type and risk tags below\n cellValue = {\n appId: value,\n type: apiRecord.lending || apiRecord.applicationType || undefined,\n risk: apiRecord.riskRating || undefined\n };\n }\n else if (field === SHARED.BROKER_NAME) {\n // Format broker with name and company name in multi-line format\n const brokerCompanyName = apiRecord[SHARED.BROKERCOMPANY_NAME];\n cellValue = {\n brokerName: this.truncateText(value),\n brokerCompanyName: brokerCompanyName || ''\n };\n }\n else if (field === SHARED.FINANCE) {\n // Remove decimal part from finance amount\n if (value && typeof value === 'string') {\n cellValue = {\n amount: value.replace(/\\.\\d{2}$/, ''),\n isFinance: true\n };\n } else {\n cellValue = value;\n }\n }\n else if (field === SHARED.SECURITY_ADDRESS && value) {\n const line1 = value.addressLine1 || '';\n cellValue = {\n addressLine1: this.truncateText(line1),\n postCode: value.postCode || ''\n };\n }\n else if (field === SHARED.SLA || field === SHARED.REFERRED_DATE) {\n const extractDays = (val: any): number | null => {\n if (typeof val === 'number') {\n return val;\n }\n if (val && typeof val === 'object') {\n if (typeof val.days === 'number') {\n return val.days;\n }\n if (typeof val.days === 'string') {\n const parsed = Number(val.days);\n return Number.isFinite(parsed) ? parsed : null;\n }\n }\n return null;\n };\n const extractTask = (val: any): string => {\n if (val && typeof val === 'object' && val.task) {\n return String(val.task);\n }\n if (typeof val === 'string') {\n return val;\n }\n return SHARED.EMPTY;\n };\n\n const daysValue = extractDays(value);\n const taskText = extractTask(value);\n const isReferredDate = field === SHARED.REFERRED_DATE;\n const chipVariant = isReferredDate ? CHIP_VARIANTS.NEUTRAL : this.deriveChipVariantFromDays(daysValue);\n\n cellValue = {\n addressLine1: daysValue !== null ? `${daysValue} days` : SHARED.EMPTY,\n postCode: taskText,\n days: daysValue,\n chipVariant\n };\n }\n else if (field === SHARED.VALUATION_STATUS) {\n // Enrich valuation status with icon and color configuration\n // Use two-line format: icon on top (addressLine1), text below (postCode)\n const statusConfig = this.getValuationStatusConfig(value);\n if (statusConfig) {\n cellValue = {\n addressLine1: statusConfig.icon, // Icon class for first line\n postCode: value, // Status text for second line\n iconClass: statusConfig.iconClass,\n textClass: statusConfig.textClass\n };\n } else {\n cellValue = {\n addressLine1: '',\n postCode: value || ''\n };\n }\n }\n else if (!value || value === 'null') {\n cellValue = SHARED.EMPTY;\n }\n\n record[field] = cellValue;\n });\n\n // Attach row-level ngClass expression for dynamic row styling\n const rowStyles = (columnStylesJson as any).rowStyles;\n if (rowStyles && rowStyles.ngClass) {\n record.rowNgClassExpression = rowStyles.ngClass;\n }\n return record;\n });\n\n\n\n table.headers = availableFields.map(field => {\n const header: any = {\n name: field,\n displayName: FIELD_DISPLAY_NAMES[field] || field,\n width: columnWidths[field] || 'w-2' // Default width for all columns\n };\n if (field === SHARED.SECURITY_ADDRESS || field === SHARED.VALUATION_STATUS || field === SHARED.SLA) {\n header.isTwoLine = true;\n }\n\n if (field === SHARED.APPLICANTS) {\n header.skipParentNgClass = true;\n }\n if (field) {\n // Add containerNgClass and textNgClass expressions for dynamic styling\n if (this.columnStyles[field]) {\n if (this.columnStyles[field].containerNgClass) {\n header.containerNgClassExpression = this.columnStyles[field].containerNgClass;\n }\n if (this.columnStyles[field].containerNgStyle) {\n header.containerNgStyleExpression = this.columnStyles[field].containerNgStyle;\n }\n if (this.columnStyles[field].isShowSortIcon) {\n header.isShowSortIcon = this.columnStyles[field].isShowSortIcon;\n }\n if (this.columnStyles[field].textNgClass) {\n header.textNgClassExpression = this.columnStyles[field].textNgClass;\n }\n if (this.columnStyles[field].line1NgClass) {\n header.line1NgClassExpression = this.columnStyles[field].line1NgClass;\n }\n if (this.columnStyles[field].line2NgClass) {\n header.line2NgClassExpression = this.columnStyles[field].line2NgClass;\n }\n if (this.columnStyles[field].line1IsChip !== undefined) {\n header.line1IsChip = this.columnStyles[field].line1IsChip;\n }\n if (this.columnStyles[field].line1ChipVariant) {\n header.line1ChipVariantExpression = this.columnStyles[field].line1ChipVariant;\n }\n }\n }\n return header;\n });\n\n // Set TableSecondaryModel specific properties\n table.isSortingAllow = SHARED.TRUE;\n return table;\n }\n\n}","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * `QueueSearchComponent` is responsible for displaying a search input and emitting\n * search terms to parent components for handling API calls with proper pagination.\n * Selector: `queue-search`\n * Template: `./queue-search.component.html`\n * Styles: `./queue-search.component.scss`\n */\n@Component({\n selector: 'queue-search',\n standalone: false,\n templateUrl: './queue-search.component.html',\n styleUrl: './queue-search.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueSearchComponent implements OnInit, OnDestroy {\n @Input() searchText: string = '';\n @Input() placeholder: string = '';\n @Input() debounceTime: number = 400;\n @Output() searchInputChanged = new EventEmitter<string>();\n @Output() searchRequested = new EventEmitter<string>();\n @Output() searchCleared = new EventEmitter<void>();\n\n private searchUpdate = new Subject<string>();\n private subscription!: Subscription;\n\n ngOnInit(): void {\n this.subscription = this.searchUpdate.pipe(\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n ).subscribe(value => {\n this.searchRequested.emit(value);\n });\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n onSearchInputChange(): void {\n this.searchInputChanged.emit(this.searchText);\n this.searchUpdate.next(this.searchText);\n }\n\n onSearch(): void {\n this.searchRequested.emit(this.searchText);\n }\n\n onClearSearch(): void {\n this.searchCleared.emit();\n }\n\n get hasSearchText(): boolean {\n return !!this.searchText;\n }\n}","<div class=\"flex xl:mt-0 xl:justify-content-between align-items-center bg-white\" style=\"border: 1px solid #e0e4ea; border-radius: 8px; height: 44px;\">\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\" >\n <div class=\"p-inputgroup border-round bg-white\" style=\"height: 100%;\">\n <span class=\"p-inputgroup-addon bg-white\" style=\"height: 100%; display: flex; align-items: center;\">\n <i class=\"pi pi-search\"></i>\n </span>\n <input \n type=\"text\" \n [(ngModel)]=\"searchText\" \n class=\"border-none p-0 border-noround-right bg-white w-full outline-none\" \n style=\"height: 100%;\" \n pInputText \n [placeholder]=\"placeholder\" \n (input)=\"onSearchInputChange()\"\n (keydown.enter)=\"onSearch()\" \n />\n <button \n *ngIf=\"hasSearchText\" \n type=\"button\" \n class=\"p-inputgroup-addon bg-white border-none cursor-pointer\" \n (click)=\"onClearSearch()\"\n pButton \n icon=\"pi pi-times\"\n [text]=\"true\"\n style=\"height: 100%; display: flex; align-items: center; border-radius: 8px;\"\n ></button>\n </div>\n </div>\n </div>\n ","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { QueueStore } from '../../state/queue.store';\n\n@Component({\n selector: 'app-queue-item',\n standalone: false,\n templateUrl: './queue-item.component.html',\n styleUrls: ['./queue-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueItemComponent {\n @Input() filteredQueueData: any[] = [];\n @Input() selectedQueueId: string | null = null;\n @Input() selectedStatus: string = 'active';\n @Input() userRole: boolean = false;\n @Input() showQueueDataForm: boolean = true;\n @Output() queueSelected = new EventEmitter<string>();\n @Output() statusChanged = new EventEmitter<string>();\n @Output() insertQueueRequested = new EventEmitter<void>();\n\n constructor(private queueStore: QueueStore) {}\n\n onQueueClick(queueId: string): void {\n this.queueSelected.emit(queueId);\n this.queueStore.setSelectedQueueId(queueId);\n }\n\n onStatusChange(event: any): void {\n this.statusChanged.emit(event.target.value);\n }\n\n onInsertQueue(): void {\n this.insertQueueRequested.emit();\n }\n\n isQueueActive(queue: any): boolean {\n return queue.isActive;\n }\n\n isQueueSelected(queueId: string): boolean {\n return queueId === this.selectedQueueId;\n }\n}","<div class=\"p-4 pt-3 mb-0\">\n <div class=\"queues overflow-x-hidden queue-item-wrapper\">\n <h4 class=\"queue-title-wrapper m-0 mb-3 pb-1\">Queues</h4>\n @for(queue of filteredQueueData; let i = $index; track queue){\n\n <div class=\"flex m-0 kanban-list\" [ngClass]=\"{'mt-2 pt-1': i !== 0}\" #listEl style=\"min-height:2rem\" (click)=\"onQueueClick(queue._id)\" >\n <div class=\"flex align-items-center p-0 w-full\">\n <div class=\"py-4 px-3 cursor-pointer w-full\" [ngClass]=\"{\n 'active-queue-wrapper': isQueueSelected(queue._id),\n 'inActiveQueue': !isQueueActive(queue),\n 'queue-list-wrapper': isQueueActive(queue)\n }\"\n >\n <div class=\"flex justify-content-between flex align-items-center\">\n <span class=\"text-color queue-name font-semibold\"\n [ngClass]=\"{'active-title-wrapper': isQueueSelected(queue._id)}\"\n >{{queue.name}}</span>\n <div class=\"elipsesWithCount flex align-items-center\">\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" [ngClass]=\"{\n 'inActiveBadgeColor': !isQueueActive(queue),\n }\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- <div *ngIf=\"userRole\" class=\"w-full mt-4\">\n <p-button class=\"add-queue-btn-wrapper\" (onClick)=\"onInsertQueue()\">\n <div class=\"flex align-items-center justify-content-between\">\n <i class=\"pi pi-plus mr-2\"></i>\n <p class=\"mb-0\">Add Queue</p>\n </div>\n </p-button>\n </div> -->\n </div> ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-queue-list',\n standalone: false,\n templateUrl: './queue-list.component.html',\n styleUrls: ['./queue-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueListComponent {\n @Input() queueData: any[] = [];\n @Input() selectedQueueId: string | null = null;\n @Input() selectedStatus: string = 'active';\n @Input() userRole: boolean = false;\n @Input() showQueueDataForm: boolean = true;\n @Output() queueSelected = new EventEmitter<string>();\n @Output() statusChanged = new EventEmitter<string>();\n @Output() insertQueueRequested = new EventEmitter<void>();\n\n onQueueSelected(queueId: string): void {\n this.queueSelected.emit(queueId);\n }\n\n onStatusChanged(status: string): void {\n this.statusChanged.emit(status);\n }\n\n onInsertQueue(): void {\n this.insertQueueRequested.emit();\n }\n}\n","<app-queue-item\n [filteredQueueData]=\"queueData\"\n [selectedQueueId]=\"selectedQueueId\"\n [selectedStatus]=\"selectedStatus\"\n [userRole]=\"userRole\"\n [showQueueDataForm]=\"showQueueDataForm\"\n (queueSelected)=\"onQueueSelected($event)\"\n (statusChanged)=\"onStatusChanged($event)\"\n (insertQueueRequested)=\"onInsertQueue()\"\n></app-queue-item>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, OnChanges, SimpleChanges } from '@angular/core';\nimport { QueueModel } from '../../models/queue.model';\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\n\n@Component({\n selector: 'app-queue-record-table',\n standalone: false,\n templateUrl: './queue-record-table.component.html',\n styleUrls: ['./queue-record-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueRecordTableComponent implements OnChanges{\n public sortField: string = '';\n public sortOrder: number = 1;\n\n @Input() table!: TableSecondaryModel;\n @Input() metaData!: MetaDataModel;\n @Input() loading: boolean = false;\n @Input() selectedRows: any[] = [];\n @Input() resetSort!: boolean;\n @Input() isShowSkeleton: boolean = false;\n @Input() selectedQueue: any;\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() selectedRowsData = new EventEmitter<any[]>();\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\n @Output() rowClick = new EventEmitter<any>();\n @Output() paginationChanged = new EventEmitter<any>();\n @Output() filterApplied = new EventEmitter<any>();\n @Output() sortApplied = new EventEmitter<any>();\n\n onSelectionChange(selection: any[]): void {\n this.selectionChange.emit(selection);\n this.selectedRowsData.emit(selection);\n }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['resetSort']){\n this.sortField = '';\n this.sortOrder = 1;\n } \n }\n\n onRowClick(record: any): void {\n this.rowClick.emit(record);\n }\n\n onPaginationChange(event: any): void {\n this.paginationChanged.emit(event);\n }\n\n onFilterApplied(record: any): void {\n this.filterApplied.emit(record);\n }\n\n onSort(event: any): void {\n this.sortField = event.field;\n this.sortOrder = event.order;\n this.sortApplied.emit(event);\n }\n\n get hasData(): boolean {\n return this.table?.records && this.table.records.length > 0;\n }\n\n get selectedCount(): number {\n return this.selectedRows?.length || 0;\n }\n} ","<div class=\"bg-white queue-table-wrapper border-round-xl\">\n <lib-table-secondary \n [table]=\"table\" \n [metaData]=\"metaData\"\n [enableSelection]=\"true\"\n [selectionMode]=\"'multiple'\"\n [isShowSkeleton]=\"isShowSkeleton\"\n [selection]=\"selectedRows\"\n [showActions]=\"false\"\n [noRecordsMessage]=\"selectedQueue?.name === 'Assigned To Me' ? 'No applications are currently assigned.' : 'No Records Found'\"\n (onPage)=\"onPaginationChange($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSelectionChange)=\"onRowClick($event)\"\n (sortChanged)=\"onSort($event)\"\n [sortField]=\"sortField\"\n [sortOrder]=\"sortOrder\">\n </lib-table-secondary>\n</div>","import { Component, ElementRef, HostListener, ViewChild, Output, EventEmitter, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { QueueFilterDropdownService, RiskRating, ApplicationType, PurchaseType, TaskStatus, QueueFilter, EPC } from '../../services/queue-filter-dropdown.service';\nimport { SHARED } from '../../../shared';\n\n/**\n *\n */\n@Component({\n selector: 'lib-queue-filter-dropdown',\n standalone: false,\n templateUrl: './queue-filter-dropdown.component.html',\n styleUrl: './queue-filter-dropdown.component.scss'\n})\nexport class QueueFilterDropdownComponent implements OnChanges, OnDestroy {\n showDropdown = false;\n @ViewChild('dropdownPanel', { static: false }) dropdownPanel!: ElementRef;\n skipNextDocumentClick = false;\n private originalFilters: QueueFilter | null = null;\n private filtersApplied = false; // Track if filters have been applied\n underwriterOptions: Array<{ id: string; name: string }> = [];\n loadingUnderwriters = false;\n // Cache filters for template bindings to avoid repeated object creation\n public filters!: QueueFilter;\n private searchSubscription?: Subscription;\n\n @Input() appliedFilters: any = {}; // Input to sync with container's applied filters\n @Output() filterApplied = new EventEmitter<any>();\n @Output() filtersCleared = new EventEmitter<void>();\n\n constructor(public filterService: QueueFilterDropdownService) {\n this.filters = this.filterService.getFilters();\n this.setupSearchSubscription();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['appliedFilters'] && !changes['appliedFilters'].firstChange) {\n this.syncWithAppliedFilters(this.appliedFilters);\n }\n }\n\n private setupSearchSubscription(): void {\n this.searchSubscription = this.filterService.getUnderwritersSearchObservable()\n .subscribe((underwriters) => {\n // Update options for search/filter - preserve \"Unassigned\" option if it exists\n const unassignedOption = this.underwriterOptions.find(opt => opt.id === SHARED.UNASSIGNED_UNDERWRITER_ID);\n if (unassignedOption) {\n this.underwriterOptions = [unassignedOption, ...underwriters];\n } else {\n this.underwriterOptions = underwriters;\n }\n this.loadingUnderwriters = false;\n });\n }\n\n onUnderwriterFilter(event: any): void {\n const searchKey = event?.filter || SHARED.EMPTY;\n this.loadingUnderwriters = true;\n this.filterService.searchUnderwriters(searchKey);\n }\n\n get filterCount(): number {\n return this.filterService.getFilterCount();\n }\n\n onFilterBtnClick() {\n if (!this.showDropdown) {\n // Store current state when opening dropdown (this will be the applied filters)\n this.originalFilters = this.filterService.getFilters();\n // Reset loading state and reload underwriter list every time dropdown opens\n this.loadingUnderwriters = false;\n this.loadUnderwriterOptions();\n } else {\n // Reset loading state when closing dropdown\n this.loadingUnderwriters = false;\n }\n this.showDropdown = !this.showDropdown;\n this.skipNextDocumentClick = true;\n this.filters = this.filterService.getFilters();\n }\n\n private loadUnderwriterOptions(): void {\n this.loadingUnderwriters = true;\n this.filterService.getUnderwritersList(SHARED.EMPTY).subscribe((underwriters) => {\n // Add \"Unassigned\" option at the beginning of the list\n const unassignedOption = { id: SHARED.UNASSIGNED_UNDERWRITER_ID, name: 'Unassigned' };\n this.underwriterOptions = [unassignedOption, ...underwriters];\n this.loadingUnderwriters = false;\n });\n }\n\n setRiskRating(rating: RiskRating) {\n this.filterService.setRiskRating(rating);\n this.filters = this.filterService.getFilters();\n }\n setApplicationType(type: ApplicationType) {\n this.filterService.setApplicationType(type);\n this.filters = this.filterService.getFilters();\n }\n setPurchaseType(type: PurchaseType) {\n this.filterService.setPurchaseType(type);\n this.filters = this.filterService.getFilters();\n }\n setTaskStatus(status: TaskStatus) {\n this.filterService.setTaskStatus(status);\n this.filters = this.filterService.getFilters();\n }\n setFinanceMin(min: number | null) {\n this.filterService.setFinanceMin(min);\n this.filters = this.filterService.getFilters();\n }\n setFinanceMax(max: number | null) {\n this.filterService.setFinanceMax(max);\n this.filters = this.filterService.getFilters();\n }\n setPendingDays(days: number | null) {\n this.filterService.setPendingDays(days);\n this.filters = this.filterService.getFilters();\n }\n\n // Category (UK, Ex-Pat, Intl)\n setCategory(category: 'UK' | 'Ex-Pat' | 'Intl') {\n this.filterService.setCategory(category);\n this.filters = this.filterService.getFilters();\n }\n\n // EPC (A or B (Green))\n setEpc(epc: EPC) {\n this.filterService.setEpc(epc);\n this.filters = this.filterService.getFilters();\n }\n\n // Vulnerable Customer (boolean)\n setVulnerableCustomer(value: boolean | null) {\n this.filterService.setVulnerableCustomer(value);\n this.filters = this.filterService.getFilters();\n }\n\n // Assigned Underwriter (multi-select ids)\n setAssignedUnderwriter(ids: string[]) {\n this.filterService.setAssignedUnderwriter(ids);\n this.filters = this.filterService.getFilters();\n }\n\n applyFilters() {\n const filterData = this.filterService.getFilters();\n this.filterApplied.emit(filterData);\n this.filtersApplied = true; // Mark that filters have been applied\n this.showDropdown = false;\n this.loadingUnderwriters = false; // Reset loading state when closing\n this.originalFilters = null; // Clear stored state after applying\n this.filters = this.filterService.getFilters();\n }\n\n clearAll() {\n this.filterService.clearAll();\n this.filtersCleared.emit();\n this.filtersApplied = false; // Reset the applied flag when clearing all\n this.originalFilters = null; // Clear originalFilters to prevent restoring old filters\n this.filters = this.filterService.getFilters();\n // Reload underwriter options when clearing\n this.loadUnderwriterOptions();\n }\n\n // Method to sync with container's applied filters\n syncWithAppliedFilters(appliedFilters: any) {\n if (appliedFilters && Object.keys(appliedFilters).length > 0) {\n const filters: QueueFilter = {\n riskRating: appliedFilters.riskRating || null,\n applicationType: appliedFilters.applicationType || null,\n purchaseType: appliedFilters.purchaseType || null,\n taskStatus: appliedFilters.taskStatus || null,\n category: appliedFilters.category || [],\n epc: appliedFilters.epc || [],\n vulnerableCustomer: appliedFilters.vulnerableCustomer ?? null,\n financeMin: appliedFilters.financeMin || null,\n financeMax: appliedFilters.financeMax || null,\n pendingDays: appliedFilters.pendingDays || null,\n assignedUnderwriter: appliedFilters.assignedUnderwriter || []\n };\n this.filterService.setAllFilters(filters);\n this.filtersApplied = true;\n this.filters = this.filterService.getFilters();\n } else {\n this.filterService.clearAll();\n this.filtersApplied = false;\n this.filters = this.filterService.getFilters();\n }\n }\n\n private restoreOriginalFilters() {\n if (this.originalFilters && !this.filtersApplied) {\n // Only restore original filters if no filters have been applied yet\n this.filterService.setAllFilters(this.originalFilters);\n }\n this.loadingUnderwriters = false; // Reset loading state when closing without applying\n this.originalFilters = null;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.skipNextDocumentClick) {\n this.skipNextDocumentClick = false;\n return;\n }\n if (this.showDropdown) {\n const clickedInside = this.dropdownPanel && this.dropdownPanel.nativeElement.contains(event.target);\n if (!clickedInside) {\n this.restoreOriginalFilters(); // Restore original state when closing without applying\n this.showDropdown = false;\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.searchSubscription) {\n this.searchSubscription.unsubscribe();\n }\n }\n}\n","<div class=\"queue-filter-dropdown-wrapper\">\n <p-button class=\"filter-btn-wrapper\" (onClick)=\"onFilterBtnClick()\">\n <div class=\"flex align-items-center\">\n <i class=\"ri-filter-3-line mr-2 mt-1\"></i>\n <p class=\"filter-count mb-0 mr-2\">{{ filterCount }}</p>\n <p class=\"mb-0\">Filter(s) Applied</p>\n <i class=\"pi pi-angle-down ml-2 mt-1\"></i>\n </div>\n </p-button>\n\n <div class=\"filter-dropdown-panel\" *ngIf=\"showDropdown\" #dropdownPanel>\n <h3 class=\"filter-title\">Queue Filters</h3>\n <div class=\"grid form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n\n\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Risk Rating</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Low')\"\n (onClick)=\"setRiskRating('Low')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Low</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Medium')\"\n (onClick)=\"setRiskRating('Medium')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Medium</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('High')\"\n (onClick)=\"setRiskRating('High')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">High</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 p-0 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Application Type</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('BTL')\"\n (onClick)=\"setApplicationType('BTL')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">BTL</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('HPP')\"\n (onClick)=\"setApplicationType('HPP')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">HPP</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n\n <div class=\"grid form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Category</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('UK')\"\n (onClick)=\"setCategory('UK')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">UK</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Ex-Pat')\"\n (onClick)=\"setCategory('Ex-Pat')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Ex-Pat</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Intl')\"\n (onClick)=\"setCategory('Intl')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Intl</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">EPC</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.epc?.includes('A or B (Green)')\"\n (onClick)=\"setEpc('A or B (Green)')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">A or B (Green)</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"grid form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Purchase Type</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.purchaseType.includes('Purchase')\"\n (onClick)=\"setPurchaseType('Purchase')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Purchase</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\"\n [class.selected]=\"filters.purchaseType.includes('Refinance')\"\n (onClick)=\"setPurchaseType('Refinance')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Refinance</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Task Status</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\"\n [class.selected]=\"filters.taskStatus.includes('Not Started')\"\n (onClick)=\"setTaskStatus('Not Started')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Not Started</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\"\n [class.selected]=\"filters.taskStatus.includes('In-progress')\"\n (onClick)=\"setTaskStatus('In-progress')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">In-progress</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.taskStatus.includes('Completed')\"\n (onClick)=\"setTaskStatus('Completed')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Completed</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"grid p-0 form-grid col-12\">\n <div class=\"col-12 pl-3 md:col-6\"> \n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Finance Amount</p>\n <div class=\"filter-options two-inputs\">\n <div class=\"grid p-0 form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n <input type=\"number\" class=\"w-full\" placeholder=\"Min\" [ngModel]=\"filters.financeMin\"\n (ngModelChange)=\"setFinanceMin($event)\" min=\"0\" />\n </div>\n <div class=\"col-12 md:col-6\">\n <input type=\"number\" class=\"w-full\" placeholder=\"Max\" [ngModel]=\"filters.financeMax\"\n (ngModelChange)=\"setFinanceMax($event)\" min=\"0\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Pending Days</p>\n <div class=\"filter-options one-input\">\n <input type=\"number\" placeholder=\"No. of days\" [ngModel]=\"filters.pendingDays\"\n (ngModelChange)=\"setPendingDays($event)\" min=\"0\" />\n </div>\n </div>\n </div>\n\n <div class=\"grid p-0 form-grid col-12\">\n <div class=\"col-12 pl-4 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Vulnerable Customer</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === true\"\n (onClick)=\"setVulnerableCustomer(true)\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Yes</p>\n </div>\n </p-button>\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === false\"\n (onClick)=\"setVulnerableCustomer(false)\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">No</p>\n </div>\n </p-button>\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === null\"\n (onClick)=\"setVulnerableCustomer(null)\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Any</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 pl-3 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Assigned Underwriter</p>\n <div class=\"filter-options one-input\">\n <p-multiSelect [options]=\"underwriterOptions\" optionLabel=\"name\" optionValue=\"id\"\n placeholder=\"Select underwriter(s)\" [appendTo]=\"'body'\" [panelStyle]=\"{ zIndex: 1100 }\"\n [filter]=\"true\" [loading]=\"loadingUnderwriters\"\n [ngModel]=\"filters.assignedUnderwriter\" (ngModelChange)=\"setAssignedUnderwriter($event)\"\n (onFilter)=\"onUnderwriterFilter($event)\">\n </p-multiSelect>\n </div>\n </div>\n </div>\n </div>\n <div class=\"filter-actions w-full flex justify-content-between\">\n <p-button class=\"pl-3 clear-btn-wrapper\" (onClick)=\"clearAll()\">\n <div class=\"flex align-items-center btn-text-wrapper\">\n <p class=\"mb-0 mr-2\">Clear All</p>\n <i class=\"pi pi-times\"></i>\n </div>\n </p-button>\n\n <p-button class=\"apply-btn-wrapper\" (onClick)=\"applyFilters()\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Apply Filters</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { QueueModel } from '../../models/queue.model';\nimport { QueueService } from '../../state/queue.service';\nimport { QueueStore } from '../../state/queue.store';\nimport { BaseContainerComponent } from '../../../shared/_base/base-container/base-container.component';\nimport { ERROR } from '../../../shared/constant/ERROR';\nimport { SHARED } from '../../../shared/constant/SHARED';\nimport { BaseStore } from '../../../shared/state/base.store';\nimport { QueueBusinessService } from '../../services/queue-business.service';\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\nimport { QueueRecordTableBuilderService } from '../../services/queue-record-table-builder.service';\nimport { QueueFilterDropdownComponent } from '../queue-filter-dropdown/queue-filter-dropdown.component';\nimport { QueueFilterDropdownService } from '../../services/queue-filter-dropdown.service';\nimport { BaseQuery } from '../../../shared';\n\n/**\n * Container component for managing queue-related data and interactions.\n * Extends the BaseContainerComponent with a generic type of QueueModel.\n */\n@Component({\n selector: 'lib-queue-container',\n standalone: false,\n templateUrl: './queue-container.component.html',\n styleUrl: './queue-container.component.scss'\n})\nexport class QueueContainerComponent extends BaseContainerComponent<QueueModel> implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n public queueList: QueueModel[] = [];\n public selectedQueue: any;\n public currentSearchTerm: string = '';\n public selectedRows: any[] = [];\n public loading: boolean = false;\n public error: string | null = null;\n public filteredQueueData: any[] = [];\n public selectedStatus: string = 'active';\n public userRole: boolean = false;\n public selectedQueueId: string | null = null;\n public table!: TableSecondaryModel;\n public metaData!: MetaDataModel;\n public currentPage: number = 1;\n public currentLimit: number = 10;\n public queryString: string = SHARED.EMPTY;\n public searchText: string = SHARED.EMPTY;\n public sortBy: string = SHARED.EMPTY;\n public sortOrder: number = 1;\n isShowSkeleton: boolean = false;\n resetSort: boolean = false;\n public appliedFilters: any = {};\n @Input() placeholder: string = '';\n\n @ViewChild('filterDropdown') filterDropdown!: QueueFilterDropdownComponent;\n\n // Input properties for content projection\n @Input() set selectedRowsInput(rows: any[]) {\n this.selectedRows = rows || [];\n }\n get selectedRowsInput(): any[] {\n return this.selectedRows;\n }\n\n // Output events for content projection\n @Output() assignmentComplete = new EventEmitter<{ success: boolean, message: string }>();\n @Output() userAssigned = new EventEmitter<{ user: any, selectedRows: any[] }>();\n @Output() selectedRowsData = new EventEmitter<any[]>();\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\n @Output() rowClick = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() isAllRowSelected = new EventEmitter<boolean>(false);\n @Output() excludedApplicationIds = new EventEmitter<any[]>();\n\n\n constructor(\n public queueStore: QueueStore,\n private queueService: QueueService,\n private baseStore: BaseStore<QueueModel>,\n private queueBusinessService: QueueBusinessService,\n private tableBuilder: QueueRecordTableBuilderService,\n private queueFilterDropdownService: QueueFilterDropdownService,\n private baseQuery: BaseQuery<any>\n ) {\n super(queueService);\n }\n\n ngOnInit() {\n this.isShowSkeleton = true;\n const storedQueueId = this.getStoredQueueId();\n this.initializeComponent(storedQueueId ?? undefined);\n this.setupSearchDebounce();\n // Sync filter dropdown after initialization\n setTimeout(() => {\n this.syncFilterDropdown();\n }, 0);\n\n this.baseQuery.getIsAllRowSelected()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if(res) {\n this.isAllRowSelected.emit(res);\n }\n })\n\n this.baseQuery.getExcludedApplicationIds()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if(res) {\n this.excludedApplicationIds.emit(res);\n }\n })\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.queueFilterDropdownService.clearAll();\n }\n\n onQueueSelected(queueId: string): void {\n this.handleQueueData(queueId);\n }\n\n onStatusChanged(status: string): void {\n this.selectedStatus = status;\n this.filterQueues();\n }\n\n onInsertQueueRequested(): void {\n this.queueBusinessService.navigateToInsertQueue();\n }\n\n onSearchInputChanged(searchTerm: string): void {\n this.searchText = searchTerm;\n this.searchSubject.next(searchTerm);\n }\n\n onSearchRequested(searchTerm: string): void {\n this.currentSearchTerm = searchTerm;\n this.resetPage();\n this.getQueueRecordsData();\n }\n\n onSearchCleared(): void {\n this.searchText = SHARED.EMPTY;\n this.currentSearchTerm = SHARED.EMPTY;\n this.resetPage();\n this.clearSelection();\n this.getQueueRecordsData();\n }\n\n onPaginationChanged(event: any): void {\n const { page, limit } = this.queueBusinessService.calculatePagination(event);\n this.getQueueRecordsData(page, limit);\n }\n\n onFilterApplied(record: any): void {\n this.queryString = this.queueBusinessService.buildQueryString(record);\n this.resetPage();\n this.getQueueRecordsData();\n this.clearSelection();\n }\n\n get hasActiveFilters(): boolean {\n return this.appliedFilters && Object.values(this.appliedFilters).some(val => val !== null && val !== '' && val !== undefined);\n }\n\n onTableRowClick(record: any): void {\n this.rowClick.emit(record);\n this.clearFilters();\n this.syncFilterDropdown();\n }\n\n onTableSelectionChange(selection: any[]): void {\n this.selectedRows = selection;\n this.selectionChange.emit(this.selectedRows);\n this.selectedRowsData.emit(this.selectedRows);\n this.assignmentDataReady.emit({\n selectedRows: this.selectedRows,\n queueData: this.selectedQueue\n });\n }\n\n onAssignmentDataReady(event: { selectedRows: any[], queueData: QueueModel }): void {\n this.assignmentDataReady.emit(event);\n }\n\n onSortApplied(event: any): void {\n if (event.field === SHARED.APPLICANTS || event.field === SHARED.SECURITY_ADDRESS) {\n return;\n }\n this.sortBy = event.field;\n this.sortOrder = event.order;\n this.getQueueRecordsData();\n }\n\n onFilterDropdownApplied(filterData: any): void {\n this.appliedFilters = filterData;\n this.resetPage();\n this.getQueueRecordsData();\n this.clearSelection();\n this.syncFilterDropdown();\n }\n\n onFiltersCleared(): void {\n this.clearFilters();\n this.resetPage();\n this.getQueueRecordsData();\n this.clearSelection();\n this.syncFilterDropdown();\n }\n\n onClearAllFilters(): void {\n if (this.filterDropdown) {\n this.filterDropdown.clearAll();\n }\n this.onFiltersCleared();\n }\n\n private syncFilterDropdown(): void {\n if (this.filterDropdown) {\n this.filterDropdown.syncWithAppliedFilters(this.appliedFilters);\n }\n }\n\n private initializeComponent(preferredQueueId?: string): void {\n this.getAllQueueList(preferredQueueId);\n this.userRole = this.queueBusinessService.getUserRole();\n }\n\n private setupSearchDebounce(): void {\n const debouncedSearch = this.queueBusinessService.createDebouncedSearch(300);\n debouncedSearch.pipe(takeUntil(this.destroy$)).subscribe(searchTerm => {\n if (this.selectedQueue) {\n this.currentSearchTerm = searchTerm;\n this.resetPage();\n this.getQueueRecordsData();\n }\n });\n }\n\n private getAllQueueList(preferredQueueId?: string): void {\n this.loading = true;\n this.error = null;\n this.queueService.getAllQueue().subscribe({\n next: (res) => {\n this.queueList = Array.isArray(res) ? res : (res.data || res);\n this.baseStore.setQueueList(this.queueList);\n this.filterQueues(preferredQueueId);\n this.loading = false;\n },\n error: (err) => {\n this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;\n this.loading = false;\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\n }\n });\n }\n\n private handleQueueData(queueId: string): void {\n const newQueue = this.queueList.find((i) => i._id == queueId);\n if (newQueue) {\n this.selectedQueue = Object.assign({}, newQueue);\n this.selectedQueueId = queueId;\n this.queueStore.setSelectedQueueId(queueId);\n this.queueBusinessService.storeSelectedQueue(queueId);\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\n this.clearSelection();\n this.resetPaginationState();\n this.resetSorting();\n this.getQueueRecordsData();\n this.syncFilterDropdown();\n } else {\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\n }\n }\n\n private resetSorting(){\n this.sortBy = SHARED.EMPTY;\n this.sortOrder = this.getDefaultSortOrder(this.selectedQueue);\n this.resetSort = !this.resetSort;\n }\n\n private filterQueues(preferredQueueId?: string): void {\n this.filteredQueueData = this.queueBusinessService.filterQueuesByStatus(this.queueList, this.selectedStatus);\n this.filteredQueueData = this.queueBusinessService.orderQueuesByPriority(this.filteredQueueData);\n let queueIdToSelect = preferredQueueId;\n if (queueIdToSelect && this.filteredQueueData.some(q => q._id == queueIdToSelect)) {\n // keep the same queue if it exists\n this.selectedQueueId = queueIdToSelect;\n this.handleQueueData(this.selectedQueueId);\n } else if (this.filteredQueueData.length > 0) {\n this.selectedQueueId = this.queueBusinessService.getFirstQueueId(this.filteredQueueData);\n if (this.selectedQueueId) {\n this.handleQueueData(this.selectedQueueId);\n }\n }\n }\n\n private getQueueRecordsData(page?: number, limit?: number): void {\n this.isShowSkeleton = true;\n if (!this.selectedQueue?.apiConfig) {\n console.log(\"Queue data or apiConfig not available\");\n return;\n }\n const targetPage = page || this.currentPage;\n const targetLimit = limit || this.currentLimit;\n \n // Build filter query string\n let filterQueryString = this.queryString;\n if (this.appliedFilters && Object.keys(this.appliedFilters).length > 0) {\n const filterQuery = this.queueFilterDropdownService.buildFilterQueryString(this.appliedFilters);\n \n // Combine existing query string with filter parameters\n const existingParams = new URLSearchParams(filterQueryString);\n const filterParams = new URLSearchParams(filterQuery);\n filterParams.forEach((value, key) => {\n existingParams.set(key, value);\n });\n filterQueryString = existingParams.toString();\n }\n \n this.queueService.getPaginatedQueueRecords(\n this.selectedQueue.apiConfig,\n this.currentSearchTerm,\n targetPage,\n targetLimit,\n filterQueryString,\n this.sortBy,\n this.getSortOrderString(this.sortOrder)\n ).subscribe({\n next: (res: any) => {\n const apiData = res?.data || res?.paginatedResults || res || [];\n if (apiData && apiData.length > 0) {\n this.isShowSkeleton = false;\n this.table = this.tableBuilder.buildSecondaryTable(apiData, undefined, undefined, undefined, {\n isReferredQueue: this.isReferredQueue(this.selectedQueue)\n });\n } else if (this.table) {\n this.table = { ...this.table, records: [] };\n this.isShowSkeleton = false;\n } else {\n this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {\n isReferredQueue: this.isReferredQueue(this.selectedQueue)\n });\n this.isShowSkeleton = false;\n }\n this.currentPage = targetPage;\n this.currentLimit = targetLimit;\n this.metaData = this.queueBusinessService.mapApiMetadata(res, targetPage, targetLimit);\n },\n error: (error) => {\n this.loading = false;\n this.isShowSkeleton = false;\n console.error(\"Error fetching data:\", error);\n if (this.table) {\n this.table = { ...this.table, records: [] };\n } else {\n this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {\n isReferredQueue: this.isReferredQueue(this.selectedQueue)\n });\n }\n this.metaData = {\n totalItems: 0,\n currentPage: targetPage,\n itemsPerPage: targetLimit,\n totalPages: 0\n };\n }\n });\n }\n\n private getSortOrderString(order: number): string {\n if (order === 1) return 'asc';\n if (order === -1) return 'desc';\n return '';\n }\n\n private resetPaginationState(): void {\n this.currentPage = 1;\n this.currentLimit = 10;\n }\n\n private resetPage(): void {\n this.currentPage = 1;\n }\n\n private clearSelection(): void {\n this.selectedRows = [];\n }\n\n private clearFilters(): void {\n this.appliedFilters = {};\n }\n\n private isReferredQueue(queue: QueueModel | null | undefined): boolean {\n const name = queue?.name || SHARED.EMPTY;\n return name.toLowerCase().includes(SHARED.REFERRED);\n }\n\n private getDefaultSortOrder(queue: QueueModel | null | undefined): number {\n return this.isReferredQueue(queue) ? -1 : 1;\n }\n\n onSearchTermChanged(searchTerm: string) {\n this.onSearchRequested(searchTerm);\n }\n\n onSelectionChange(selection: any[]): void {\n this.onTableSelectionChange(selection);\n }\n\n onAssignmentComplete(event: { success: boolean, message: string }): void {\n if (event.success) {\n // Pass the current selectedQueueId to preserve selection after refresh, but ensure it's not null\n this.getAllQueueList(this.selectedQueueId ?? undefined);\n }\n this.assignmentComplete.emit(event);\n }\n\n onUserAssigned(event: { user: any, selectedRows: any[] }): void {\n this.userAssigned.emit(event);\n }\n\n isAssignButtonEnabled(): boolean {\n return this.selectedRows && this.selectedRows.length > 0;\n }\n\n private getStoredQueueId(): string | null {\n try {\n return localStorage.getItem(SHARED.SELECTED_QUEUE_ID);\n } catch (e) {\n return null;\n }\n }\n}","<div class=\"container grid m-0 h-full\">\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\n <lib-skeleton *ngIf=\"loading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\n @if(!loading){\n <div class=\"queue-list-container-wrapper p-0\">\n <app-queue-list\n [queueData]=\"filteredQueueData\"\n [selectedQueueId]=\"selectedQueueId\"\n [selectedStatus]=\"selectedStatus\"\n [userRole]=\"userRole\"\n [showQueueDataForm]=\"true\"\n (queueSelected)=\"onQueueSelected($event)\"\n (statusChanged)=\"onStatusChanged($event)\"\n (insertQueueRequested)=\"onInsertQueueRequested()\"\n ></app-queue-list>\n </div>\n }\n </div>\n <div class=\"col-12 xl:col-10 md:col-12 py-0 h-full\">\n @if(selectedQueue){\n <div class=\"queue-application-container-wrapper h-full\">\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\n <div class=\"col-8 p-0 flex align-items-center\">\n <div class=\"col-7 p-0 mr-3\">\n <queue-search \n [placeholder]=\"placeholder\"\n [searchText]=\"searchText\"\n (searchInputChanged)=\"onSearchInputChanged($event)\"\n (searchRequested)=\"onSearchRequested($event)\"\n (searchCleared)=\"onSearchCleared()\">\n </queue-search>\n </div>\n <div>\n <lib-queue-filter-dropdown \n #filterDropdown\n [appliedFilters]=\"appliedFilters\"\n (filterApplied)=\"onFilterDropdownApplied($event)\"\n (filtersCleared)=\"onFiltersCleared()\">\n </lib-queue-filter-dropdown>\n </div>\n <div *ngIf=\"hasActiveFilters\">\n <button \n class=\"clear-filters-btn\"\n type=\"button\"\n (click)=\"onClearAllFilters()\">\n Clear <i class=\"pi pi-times ml-2\"></i>\n </button>\n </div>\n </div>\n \n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\n <ng-content select=\"[user-dropdown]\"></ng-content>\n </div>\n </div>\n\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\n \n <app-queue-record-table\n [table]=\"table\"\n [metaData]=\"metaData\"\n [loading]=\"loading\"\n [selectedRows]=\"selectedRows\"\n [resetSort]=\"resetSort\"\n [isShowSkeleton]=\"isShowSkeleton\"\n [selectedQueue]=\"selectedQueue\"\n (selectionChange)=\"onTableSelectionChange($event)\"\n (selectedRowsData)=\"onTableSelectionChange($event)\"\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\n (rowClick)=\"onTableRowClick($event)\"\n (paginationChanged)=\"onPaginationChanged($event)\"\n (filterApplied)=\"onFilterApplied($event)\"\n (sortApplied)=\"onSortApplied($event)\">\n </app-queue-record-table>\n </div>\n </div>\n }\n </div>\n\n </div>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\nimport { AuthGuard } from '../shared/services/auth/auth.guard';\nimport { PERMISSION } from '../shared/constant/PERMISSION';\n\nconst routes: Routes = [\n {\n path: '',\n component: QueueContainerComponent,\n canActivate : [AuthGuard],\n data : {accessPermission : PERMISSION.QUEUES_GET}\n\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class QueueRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QueueRoutingModule } from './queue-routing.module';\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\nimport { QueueSearchComponent } from './components/queue-search/queue-search.component';\nimport { FormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { RippleModule } from 'primeng/ripple';\nimport { ButtonModule } from 'primeng/button';\nimport { RouterModule } from '@angular/router';\nimport { BadgeModule } from 'primeng/badge';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { QueueItemComponent } from './components/queue-item/queue-item.component';\nimport { QueueListComponent } from './components/queue-list/queue-list.component';\nimport { QueueRecordTableComponent } from './components/queue-record-table/queue-record-table.component';\nimport { TagModule } from 'primeng/tag';\nimport { SharedModule } from '../shared/shared.module';\nimport { TableSecondaryComponent } from '../shared/table-secondary/components/table-secondary.component';\nimport { QueueFilterDropdownComponent } from './components/queue-filter-dropdown/queue-filter-dropdown.component';\nimport { SkeletonComponent } from '../shared/components/skeleton/skeleton.component';\n\n@NgModule({\n declarations: [\n QueueContainerComponent,\n QueueSearchComponent,\n QueueItemComponent,\n QueueListComponent,\n QueueRecordTableComponent,\n QueueFilterDropdownComponent\n ],\n imports: [\n CommonModule,\n QueueRoutingModule,\n FormsModule,\n DropdownModule,\n MultiSelectModule,\n RippleModule, ButtonModule, RouterModule, BadgeModule,\n PaginatorModule,\n SharedModule,\n TagModule,\n TableSecondaryComponent,\n SkeletonComponent\n ],\n exports: [\n QueueContainerComponent\n ]\n})\nexport class QueueModule { }\n","/*\n * Public API Surface of cat-qw-lib\n */\n\nexport * from './lib/admin/api-admin/api-admin.module';\nexport * from './lib/admin/widget-admin/widget-admin.module';\nexport * from './lib/admin/queue-admin/queue-admin.module';\n\nexport * from './lib/admin/api-admin/components/api-admin-form/api-admin-form.component';\nexport * from './lib/admin/api-admin/components/api-admin-list/api-admin-list.component';\nexport * from './lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component';\nexport * from './lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component';\nexport * from './lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component';\nexport * from './lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component';\nexport * from './lib/admin/queue-admin/components/queue-application-list/queue-application-list.component';\n\nexport * from './lib/admin/action-admin/action-admin.module';\nexport * from './lib/admin/action-admin/components/admin-action-list/admin-action-list.component';\nexport * from './lib/admin/action-admin/components/admin-action-form/admin-action-form.component';\nexport * from './lib/admin/dd-admin/dd-admin.module'\nexport * from './lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component'\nexport * from './lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component'\n\nexport * from './lib/admin/template-admin/template-admin.module'\nexport * from './lib/admin/template-admin/components/template-admin-form/template-admin-form.component'\nexport * from './lib/admin/template-admin/components/template-admin-list/template-admin-list.component'\n\nexport * from './lib/widget/widget.module';\nexport * from './lib/widget/components/widget-container/widget-container.component';\nexport * from './lib/widget/components/widget-menu-container/widget-menu-container.component';\nexport * from './lib/widget/components/custom-widget/custom-widget.component';\n\nexport * from './lib/queue/queue.module';\nexport * from './lib/queue/components/queue-container/queue-container.component';\n\nexport * from './lib/shared/services/form-state.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i1.BaseStore","i2.BaseQuery","i3","i1.BaseQuery","i2.BaseStore","i1","i2.AppConfigService","i3.AppConfigService","i4.ListService","i1.BaseService","i2.TableBuilder","i2.ListService","i3.BaseQuery","i6","i2.ValidatorService","i4.BaseStore","i5.BaseQuery","i2.DateParserService","i1.SessionService","tap","i2.BaseService","i3.TableBuilder","i4.BaseQuery","i5","i6.HasPermissionDirective","i7","i8","i10","i11","i13","map","debounceTime","distinctUntilChanged","i3.ListService","i2.SessionService","i3.QueueFilterDropdownService","QueueStore","i1.QueueStore","QueueQuery","columnStylesJson.columnStyles","tableStyles","columnStylesJson.tableStyles","i3.SessionService","i5.BaseStore","i6.QueueBusinessService","i7.QueueQuery","i12","i15","i2.ApiAdminStore","i1.ApiAdminService","i4.ApiAdminStore","i6.TextBoxComponent","i7.DropdownComponent","i8.FormContainerComponent","i9","i10.TextAreaComponent","i11.CheckBoxComponent","i3.TablePrimaryComponent","i2.WidgetAdminStore","i1.WidgetAdminService","i1.WidgetAdminStore","i3.WidgetAdminStore","i4.WidgetAdminQuery","i6.BaseStore","i6.BaseQuery","i8.TextBoxComponent","i9.DropdownComponent","i10.FormContainerComponent","QueueService","i1.QueueQuery","i2.QueueService","i4.QueueStore","i5.ValidatorService","i7.TextBoxComponent","i13.CheckBoxComponent","routes","QueueRoutingModule","i1.QueueService","i2.DataTransformerService","i6.CapitalizeWordsPipe","i3.QueueSearchCustomerComponent","i4.BlockListComponent","i5.QueueApplicationListComponent","i1.AdminActionStore","i1.AdminActionService","i4.AdminActionStore","i5.AppConfigService","i9.TextAreaComponent","catchError","i1.DictionaryStore","i2.DictionaryQuery","i3.BaseStore","i5.DropdownComponent","i6.ButtonComponent","i7.TextAreaComponent","i1.DictionaryService","i3.ValidatorService","i5.DictionaryStore","i11.SidebarComponent","i12.CheckBoxComponent","i14.DdAdminItemFormComponent","i2.TemplateAdminStore","i1.TemplateAdminStore","i1.TemplateAdminService","i4.TemplateAdminQuery","i5.TemplateAdminStore","i11.FormContainerComponent","i1.WidgetStore","i2.WidgetStore","i1.StyleBuilderService","i3.HasPermissionDirective","i3.WidgetQuery","i3.WidgetItemComponent","i3.WidgetHeaderComponent","i4.WidgetFooterComponent","i5.WidgetBodyComponent","i1.CustomWidgetService","i1.WidgetService","i4.WidgetStore","i7.WidgetMainComponent","i8.CustomWidgetComponent","i3.StyleBuilderService","i4.WidgetQuery","i8.WidgetMainComponent","i2.WidgetQuery","i4.WidgetMenuComponent","i5.WidgetRowTileComponent","i2.WidgetMenuItemComponent","i7.WidgetFooterComponent","i8.WidgetMenuHeaderComponent","i9.WidgetMenuBodyComponent","rowStyles","columnStylesJson.rowStyles","i1.QueueItemComponent","i1.TableSecondaryComponent","i1.QueueFilterDropdownService","i4.QueueBusinessService","i5.QueueRecordTableBuilderService","i6.QueueFilterDropdownService","i7.BaseQuery","i9.SkeletonComponent","i10.QueueSearchComponent","i11.QueueListComponent","i12.QueueRecordTableComponent","i13.QueueFilterDropdownComponent"],"mappings":"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"}
1
+ {"version":3,"file":"cat-qw-lib.mjs","sources":["../../../projects/cat-qw-lib/src/lib/shared/constant/SHARED.ts","../../../projects/cat-qw-lib/src/lib/shared/components/sidebar/sidebar.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/sidebar/sidebar.component.html","../../../projects/cat-qw-lib/src/lib/shared/state/base.store.ts","../../../projects/cat-qw-lib/src/lib/shared/state/base.query.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-control/base-control.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-control/base-control.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/check-box/check-box.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/check-box/check-box.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/button/button.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/button/button.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/text-box/text-box.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/text-box/text-box.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/ERROR.ts","../../../projects/cat-qw-lib/src/lib/shared/components/form-container/form-container.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/form-container/form-container.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/DATASOURCES.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/URLS.ts","../../../projects/cat-qw-lib/src/lib/shared/services/app-config.service.ts","../../../projects/cat-qw-lib/src/lib/shared/models/list.model.ts","../../../projects/cat-qw-lib/src/lib/shared/services/list.service.ts","../../../projects/cat-qw-lib/src/lib/shared/state/base.service.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/models/table-primary.model.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/models/table-primary-header.model.ts","../../../projects/cat-qw-lib/src/lib/shared/services/table.builder.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-list/base-list.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-list/base-list.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/dropdown/dropdown.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/dropdown/dropdown.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/validator.service.ts","../../../projects/cat-qw-lib/src/lib/shared/services/form-state.service.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-form/base-form.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-form/base-form.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/date-parser.service.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/date/date.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/date/date.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/file-upload/file-upload.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/file-upload/file-upload.component.html","../../../projects/cat-qw-lib/src/lib/shared/pipe/capitalize-words.pipe.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/text-area/text-area.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/text-area/text-area.component.html","../../../projects/cat-qw-lib/src/lib/shared/components/queue-search-customer/queue-search-customer.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/queue-search-customer/queue-search-customer.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/ROUTES.ts","../../../projects/cat-qw-lib/src/lib/shared/components/list/block-list.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/list/block-list.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/session.service.ts","../../../projects/cat-qw-lib/src/lib/shared/directives/permission.directive.ts","../../../projects/cat-qw-lib/src/lib/shared/shared.module.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/HEADERS.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/username/username.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/username/username.component.html","../../../projects/cat-qw-lib/src/lib/shared/controls/password/password.component.ts","../../../projects/cat-qw-lib/src/lib/shared/controls/password/password.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/CSS.ts","../../../projects/cat-qw-lib/src/lib/shared/models/attribute.model.ts","../../../projects/cat-qw-lib/src/lib/shared/models/base.model.ts","../../../projects/cat-qw-lib/src/lib/shared/services/auth/auth.guard.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-container/base-container.component.ts","../../../projects/cat-qw-lib/src/lib/shared/_base/base-container/base-container.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/LOOKUPS.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/components/table-primary.component.ts","../../../projects/cat-qw-lib/src/lib/shared/table-primary/components/table-primary.component.html","../../../projects/cat-qw-lib/src/lib/shared/components/skeleton/skeleton.component.ts","../../../projects/cat-qw-lib/src/lib/shared/components/skeleton/skeleton.component.html","../../../projects/cat-qw-lib/src/lib/queue/services/queue-filter-dropdown.service.ts","../../../projects/cat-qw-lib/src/lib/queue/services/queue-business.service.ts","../../../projects/cat-qw-lib/src/lib/queue/state/queue.store.ts","../../../projects/cat-qw-lib/src/lib/queue/state/queue.query.ts","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/components/table-secondary.component.ts","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/components/table-secondary.component.html","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/models/table-secondary.model.ts","../../../projects/cat-qw-lib/src/lib/shared/table-secondary/models/table-secondary-header.model.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/models/api-config.model.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/MESSAGES.ts","../../../projects/cat-qw-lib/src/lib/shared/constant/LIST-CONFIG.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/state/api-admin.store.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/state/api-admin.service.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-form/api-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-form/api-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/shared/constant/PERMISSION.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-list/api-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/api-admin/components/api-admin-list/api-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/api-admin/api-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/state/widget-admin.store.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/state/widget-admin.service.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/models/widget.model.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/state/widget-admin.query.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/widget-admin/widget-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/models/queue.model.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/state/queue.store.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/state/queue.query.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/state/queue.service.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/queue-admin-routing.module.ts","../../../projects/cat-qw-lib/src/lib/shared/services/data-transformer.service.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-application-list/queue-application-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-application-list/queue-application-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/queue-admin/queue-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/state/admin-action.store.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/state/admin-action.service.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-list/admin-action-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-list/admin-action-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/action-admin/models/admin-action.model.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-form/admin-action-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/action-admin/components/admin-action-form/admin-action-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/action-admin/action-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/models/dictionary.model.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/state/dictionary.store.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/state/dictionary.service.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/state/dictionary.query.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/models/dd-attribute-sidebar-view.model.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-item-form/dd-admin-item-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-item-form/dd-admin-item-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/dd-admin/dd-admin.module.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/models/template.model.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/state/template-admin.store.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/state/template-admin.service.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/state/template-admin.query.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-form/template-admin-form.component.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-form/template-admin-form.component.html","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-list/template-admin-list.component.ts","../../../projects/cat-qw-lib/src/lib/admin/template-admin/components/template-admin-list/template-admin-list.component.html","../../../projects/cat-qw-lib/src/lib/admin/template-admin/template-admin.module.ts","../../../projects/cat-qw-lib/src/lib/widget/state/widget.store.ts","../../../projects/cat-qw-lib/src/lib/widget/state/widget.query.ts","../../../projects/cat-qw-lib/src/lib/widget/state/widget.service.ts","../../../projects/cat-qw-lib/src/lib/shared/services/style-builder.service.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-header/widget-header.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-header/widget-header.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-footer/widget-footer.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-footer/widget-footer.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-item/widget-item.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-item/widget-item.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-body/widget-body.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-body/widget-body.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-main/widget-main.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-main/widget-main.component.html","../../../projects/cat-qw-lib/src/lib/shared/services/custom-widget.service.ts","../../../projects/cat-qw-lib/src/lib/widget/components/custom-widget/custom-widget.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/custom-widget/custom-widget.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu/widget-menu.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu/widget-menu.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-row-tile/widget-row-tile.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-row-tile/widget-row-tile.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-container/widget-container.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-container/widget-container.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-header/widget-menu-header.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-header/widget-menu-header.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-item/widget-menu-item.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-item/widget-menu-item.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-body/widget-menu-body.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-body/widget-menu-body.component.html","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-container/widget-menu-container.component.ts","../../../projects/cat-qw-lib/src/lib/widget/components/widget-menu-container/widget-menu-container.component.html","../../../projects/cat-qw-lib/src/lib/widget/widget.module.ts","../../../projects/cat-qw-lib/src/lib/queue/state/queue.service.ts","../../../projects/cat-qw-lib/src/lib/queue/services/queue-record-table-builder.service.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-search/queue-search.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-search/queue-search.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-item/queue-item.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-item/queue-item.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-list/queue-list.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-list/queue-list.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-record-table/queue-record-table.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-record-table/queue-record-table.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-filter-dropdown/queue-filter-dropdown.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-filter-dropdown/queue-filter-dropdown.component.html","../../../projects/cat-qw-lib/src/lib/queue/components/queue-container/queue-container.component.ts","../../../projects/cat-qw-lib/src/lib/queue/components/queue-container/queue-container.component.html","../../../projects/cat-qw-lib/src/lib/queue/queue-routing.module.ts","../../../projects/cat-qw-lib/src/lib/queue/queue.module.ts","../../../projects/cat-qw-lib/src/public-api.ts","../../../projects/cat-qw-lib/src/cat-qw-lib.ts"],"sourcesContent":["export class SHARED {\n static EMPTY = \"\";\n static REQUIRED_ERROR = \"Field Required\";\n static EMPTYARRAY = [];\n static NULL = \"NULL\";\n static SOLICITORID = \"Solicitor Id\";\n static HIPHEN = \"-\";\n static SLASH = \"/\";\n static USERROLE = \"role\"\n static SESSIONKEY = \"userData\";\n static SUCCESS = \"success\";\n static WARNING = \"warning\";\n static ERROR = \"error\";\n static DEFAULT = \"default\";\n static VULNERABLE = \"vulnerable\";\n static ERROR_MESSAGE = \"Success Message\";\n static SUCCESS_MESSAGE = \"Success Message\";\n static DICTIONARY = \"Dictionary\";\n static TITLE = 'title';\n static DICTIONARY_ITEM = 'dictionaryItem';\n static DICTIONARY_ITEM_MAPPER = 'dictionaryItemMapper';\n static SIDEBAR_MASK = '.p-sidebar-mask';\n static CUSTOMSIDEBAROVERLAY = 'custom-sidebar-overlay';\n static ID = 'id';\n static _ID = '_id';\n static DATE_FORMAT = \"DD/MM/YYYY\";\n static DATE_FORMAT_TYPE2 = \"DD-MM-YYYY\";\n static DATE_FORMAT_TYPE3 = \"YY-MM-DD\";\n static DATE_FORMAT_TYPE4 = \"YYYY-MM-DD\";\n static INVALIDDATE = \"Invalid Date\";\n static __V = '__v';\n static CREATEDAT = 'createdAt';\n static UPDATEDAT = 'updatedAt';\n static ZERO = 0\n static TYPE_OBJECT = 'object'\n static DICTIONARYITEMS = 'dictionaryItems';\n static GET_DATA_MESSAGE = [{ severity: 'success', detail: 'Data has been fetched successfully.', life:3000 }]\n static PRIMARY = 'primary';\n static mappingInfo = 'mappingInfo';\n static YES = 'Yes';\n static NO = 'No';\n static selectedQueue = 'selectedQueue';\n static DASH = \"-\"\n static selectedApplication = 'selectedApplication';\n static selectedApplicationNumber = 'selectedApplicationNumber';\n static GREEN = \"green\"\n static RED = \"red\"\n static FROM_EMAIL = \"neeraj.kumar@catura.co.uk\";\n static to_EMAIL = \"shubham.prajapati@dynamatix.com\";\n static EMAIL = 'email';\n static token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxOTI2ZjcyN2RkZWI0MDAxMWE2ZDZmNyIsIm5hbWUiOiJKb2huIERvZSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNjQyNzQ5MzYyLCJleHAiOjE2NDI4MzU3NjJ9.4fBQqP2_6z0H4Ow7J-R27XEdIgl2MrMoIXCgD_qZFlA';\n static null = 'null';\n static undefined = 'undefined';\n static rationale = 'rationale';\n static accepted = 'Accepted';\n static application = 'Application';\n static INVALID_API_PATH = 'Please enter the API path.';\n static WIDTH_AUTO = 'w-auto';\n static TRUE = true;\n static FALSE = false;\n static STRING_TRUE = \"true\";\n static STRING_FALSE = \"false\";\n static AND = 'AND';\n static STRING = 'string';\n static OPERATORS = [\"=\", \"<>\", \">\", \"<\", \">=\", \"<=\"];\n static STATUS_ACTIVE = 'active';\n static TODAY = 'Today';\n static YESTERDAY = 'Yesterday';\n static ALL = 'All';\n static UK = 'UK';\n static INTERNATIONAL = 'International';\n static QUEUE1 = 'Q1';\n static QUEUE2 = 'Q2';\n static QUEUE3 = 'Q3';\n static SELECTED_QUEUE = 'Selected Queue:';\n static QUEUEID = \"queueId\";\n static QUESTION_MARK = \"?\";\n static EQUALS = \"=\";\n static AMPERSAND = \"&\";\n static RECORDID = \"recordId\";\n static MISSING_WIDGETNAME = \"Missing widgetName\";\n static MISSING_QUEUE_ID = \"Missing queueId\";\n static MISSING_RECORD_ID = \"Missing recordId\";\n static EMPTY_STRING = \" \";\n static SELECTED_QUEUE_ID = \"selectedQueueId\";\n static ISITEMEXPRESSION = \"isItemExpression\";\n static DT2 = \"dt2\";\n static TEXTBOXFIELD = \"textboxField\";\n static DROPDOWN = \"dropdown\";\n static TEXTAREA = \"textArea\";\n static DATAITEMS = \"dataItems\";\n static ASC = \"asc\";\n static DESC = \"desc\";\n static ACTIVE = \"Active\";\n static IN_ACTIVE = \"InActive\";\n static SEMICOLON_STRING = \";\"\n static COLON_STRING = \":\";\n static PAGINATOR = \"paginator\";\n static BROWSER_WARNING = 'You have unsaved changes. Do you really want to leave?'\n static DIRECT_DEBITID = 'Direct DebitId'\n static DIRECT_DEBIT = 'directdebit'\n static SOLICITOR = 'solicitor'\n static PRODUCT = 'product'\n static COMMITMENTS = 'commitments'\n static PRODUCT_ID = 'ProductId'\n static EXPENDITURE = 'expenditure'\n static INCOME = 'income'\n static VALUATION = 'valuation'\n static VALUATIONID = 'ValuationId'\n static BROKERCOMPANY_NAME='brokerCompanyName'\n static WIDGET_NAME = 'widgetName'\n static IS_MENU = 'isMenu'\n static ON_WIDGET_UPDATE = 'onWidgetUpdate';\n static selectedApplicationType = \"applicationType\";\n static APPLICANTS = 'applicants';\n static BROKER_NAME = 'brokerName';\n static SECURITY_ADDRESS = 'securityAddress';\n static SLA = 'sla';\n static REFERRED_DATE = 'referredDate';\n static REFERRED = 'referred';\n static FINANCE = 'finance';\n static VALUATION_STATUS = 'valuationStatus';\n static TASKS = 'tasks';\n static TASK_BROKER_LABEL = 'B';\n static TASK_UNDERWRITER_LABEL = 'UW';\n static APP_ID = 'appId';\n static COMPANY_NAME = 'companyName';\n static APPLICATION_TYPE = 'applicationType';\n static ASSIGNED_TO = 'assignedTo';\n static TASK_COMPLETION_PERCENT = 'taskCompletionPercent';\n static RISK_RATING = 'riskRating';\n static LENDING = 'lending';\n static UNASSIGNED_UNDERWRITER_ID = 'unassigned';\n}\n\nexport const widgetLayoutTypeList = [\n { name: 'Row', value: 'row' },\n {name: 'Tile', value: 'tile' } \n];\n\nexport const statusList = [\n {name: 'All'},\n {name: 'Active'},\n {name: 'InActive'}\n]\n\nexport const msgTemplateTypeList = [\n { id: 1, value: 'email' },\n { id: 2, value: 'whatsapp' },\n { id: 3, value: 'sms' }\n]\n\nexport const textEditorToolbar = [\n ['bold', 'italic', 'underline', 'strike'], \n [{ list: 'ordered' }, { list: 'bullet' }],\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\n ['link']\n]\n\nexport const TemplateTabType = ['all-template', 'email','sms', 'whatsapp'];\n\nexport const MESSAGE_TYPES = ['SMS', 'WhatsApp', 'Email'];\n\nexport const delimiters = ['|', '/', '-'];\n\nexport const dictionaryItemList = [];\n\nexport const dictionaryItemMapperList = [];\n\nexport const dictionaryApiFieldList = {\n title: 'Property data',\n data: [ { name: 'First name' },\n { name: 'Last name' },\n { name: 'Email' },\n { name: 'Address' },\n { name: 'Gender' },\n { name: 'Dob' }\n ]\n}\n\nexport const FolderPanel = [\n {\n _id: 'folder1',\n fileCount: 10,\n text: 'Documents',\n missingFiles: 3,\n pendingFiles: 2\n },\n {\n _id: 'folder2',\n fileCount: 5,\n text: 'Images',\n missingFiles: 0,\n pendingFiles: 1\n },\n {\n _id: 'folder3',\n fileCount: 20,\n text: 'Reports',\n missingFiles: 5,\n pendingFiles: 0\n },\n {\n _id: 'folder4',\n fileCount: 8,\n text: 'Videos',\n missingFiles: 0,\n pendingFiles: 0\n },\n {\n _id: 'folder5',\n fileCount: 15,\n text: 'Archives',\n missingFiles: 1,\n pendingFiles: 3\n }\n];\n\nexport const DocumentList = [\n {\n id: 1,\n fileName: 'Document 1',\n status: 'pending',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n {\n id: 2,\n fileName: 'Document 2',\n status: 'verified',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n {\n id: 3,\n fileName: 'Document 3',\n status: 'sentReminder',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n {\n id: 4,\n fileName: 'Document 4',\n status: 'pending',\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\n },\n];\n\n\nexport const widgetLinkList = [\n { name: 'https://dummy-url.com/NY', code: 'NY' },\n { name: 'https://dummy-url.com/RM', code: 'RM' },\n { name: 'https://dummy-url.com/LDN', code: 'LDN' },\n { name: 'https://dummy-url.com/IST', code: 'IST' },\n { name: 'https://dummy-url.com/PRS', code: 'PRS' }\n];\n\nexport const dictionaryList = [\n {\"id\": 1 ,\"Name\": \"John Doe\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 2 ,\"Name\": \"Jane Smith\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 3 ,\"Name\": \"David Lee\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 4 ,\"Name\": \"Emma Wilson\", \"API\": \"Dynamatix.com/getfinance\" },\n {\"id\": 5 ,\"Name\": \"Michael Brown\", \"API\": \"Dynamatix.com/getfinance\" }\n]\n\nexport const SEQUENTIAL_MESSAGE = [\n \"Your case is under review.\",\n \"We have received your application.\",\n \"A new update is available for your case.\",\n \"Please verify your contact details.\",\n \"Your case is pending further action.\",\n \"We are processing your request.\",\n \"Your case has been escalated.\",\n \"Thank you for reaching out.\",\n \"Your documents have been received.\",\n \"Our team will contact you shortly.\"\n];\n\nexport const apiHiddenHeaderList = ['credentials','createdAt','updatedAt','__v','properties', '_id', 'authHeaderName', 'authToken']\n\nexport const dictionaryHiddenHeaderList = ['dictionaryItems', '_id', '__v', 'updatedAt', 'createdAt']\n\nexport const widgetHiddenHeaderList = ['_id','dataItems','__v','createdAt','updatedAt','headerDictionaryID', 'headerDictionaryItemID', 'order', 'subHeaderDictionaryID', 'subHeaderDictionaryItemID', 'badges', 'isEmptyLabelHidden', 'widgetStatusIconClass', 'widgetStatusIconClassExpression', 'widgetStatusIconStyle', 'widgetStatusIconStyleExpression']\n\nexport const templateHiddenHeaderList = ['_id','__v','updatedAt','description'];\n\nexport const hiddenHeaderList = ['status','actions']\n\nexport const expectedRoutes = ['apiManagement','queue', 'dictionary', 'widget']\n\nexport const mileList = [\n { name: '0.5 Mile', value: 0.5 },\n { name: '1 Mile', value: 1 }\n];\n\nexport const messageType = [\n { name: 'Email', icon: 'pi pi-envelope' },\n { name: 'WhatsApp', icon: 'pi pi-whatsapp' },\n { name: 'SMS', icon: 'pi pi-comment' },\n]\n\nexport const propertyDataList = [\n {\n key: '0',\n label: 'Documents',\n data: 'Documents Folder',\n icon: 'pi pi-fw pi-inbox',\n children: [\n {\n key: '0-0',\n label: 'Work',\n data: 'Work Folder',\n icon: 'pi pi-fw pi-cog',\n children: [\n { key: '0-0-0', label: 'Expenses.doc', icon: 'pi pi-fw pi-file', data: 'Expenses Document' },\n { key: '0-0-1', label: 'Resume.doc', icon: 'pi pi-fw pi-file', data: 'Resume Document' }\n ]\n },\n {\n key: '0-1',\n label: 'Home',\n data: 'Home Folder',\n icon: 'pi pi-fw pi-home',\n children: [{ key: '0-1-0', label: 'Invoices.txt', icon: 'pi pi-fw pi-file', data: 'Invoices for this month' }]\n }\n ]\n },\n{\n key: '1',\n label: 'Events',\n data: 'Events Folder',\n icon: 'pi pi-fw pi-calendar',\n children: [\n { key: '1-0', label: 'Meeting', icon: 'pi pi-fw pi-calendar-plus', data: 'Meeting' },\n { key: '1-1', label: 'Product Launch', icon: 'pi pi-fw pi-calendar-plus', data: 'Product Launch' },\n { key: '1-2', label: 'Report Review', icon: 'pi pi-fw pi-calendar-plus', data: 'Report Review' }\n ]\n},\n{\n key: '2',\n label: 'Movies',\n data: 'Movies Folder',\n icon: 'pi pi-fw pi-star-fill',\n children: [\n {\n key: '2-0',\n icon: 'pi pi-fw pi-star-fill',\n label: 'Al Pacino',\n data: 'Pacino Movies',\n children: [\n { key: '2-0-0', label: 'Scarface', icon: 'pi pi-fw pi-video', data: 'Scarface Movie' },\n { key: '2-0-1', label: 'Serpico', icon: 'pi pi-fw pi-video', data: 'Serpico Movie' }\n ]\n },\n {\n key: '2-1',\n label: 'Robert De Niro',\n icon: 'pi pi-fw pi-star-fill',\n data: 'De Niro Movies',\n children: [\n { key: '2-1-0', label: 'Goodfellas', icon: 'pi pi-fw pi-video', data: 'Goodfellas Movie' },\n { key: '2-1-1', label: 'Untouchables', icon: 'pi pi-fw pi-video', data: 'Untouchables Movie', selectable: false }\n ]\n }\n ]\n}\n];\n\nexport const actionHiddenHeaderList = ['_id', 'createdAt','updatedAt', '__v', 'formFields'];\n\nexport const actionList = [\n { action: 'Valuation Fee', \n prompt: `The following conversation includes references to various addresses. Based on the selected form \"Valuation Fee\",\n identify and extract the most recent address provided (in descending order of appearance in the text) and map it to the following schema::\n {\n \"Line1\": string,\n \"Line2\": string,\n \"town\": string,\n \"postcode\": string\n }.\n \n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\n \n Data:`, queueId: '674f1c645dafa6a66511c8fb', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\n },\n { action: 'UK Resident', \n prompt: `\n The following conversation involves information related to UK residency. Based on the selected form \"UK Resident\",\n extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\n {\n \"Line1\": string,\n \"Line2\": string,\n \"town\": string,\n \"postcode\": string\n }.\n \n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\n \n Data:`, queueId: '676e4b27ee779eafc72b11b9', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Disable'\n },\n { action: 'Address Update', \n prompt: `\n The following conversation contains updates related to address changes. Based on the selected form \"Address Update\",\n identify and extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\n {\n \"Line1\": string,\n \"Line2\": string,\n \"town\": string,\n \"postcode\": string\n }.\n \n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\n \n Data:`, queueId: '67332cf2f9439e97c47a3c43', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\n }\n]\n\nexport const offerWidgetList = [\n {\n title: 'Offer',\n badge: 'Pending',\n badgeIcon: 'pi pi-clock',\n statusList: [\n { description: 'Application(HS) Condition was added on 10th Sep 2023', status: 'active' },\n { description: 'Property Condition was added on 10th Sep 2023', status: 'active' },\n { description: 'Mandate Approval Requested on 14th Sep 2024', status: 'pending' },\n { title: 'Waiting for Mandate Approval', description: 'Existing Mandate: 100,000', status: 'pending', textColor: '#FB392D' },\n { description: 'Generate Offer', status: 'pending' }\n ],\n viewAll: 'View All Details'\n },\n {\n title: 'Valuation',\n badge: 'Pending',\n badgeIcon: 'pi pi-clock',\n statusList: [\n { description: 'Valuation Requested on 10th October 2024', status: 'active' },\n { description: 'Fees Paid £400 on 10th October 2024', status: 'active' },\n { description: 'Valuation Scheduled on 10th October 2024', status: 'active' },\n { title: 'Report Received on 13th October 2024', description: 'Value: £450,000.<br>Bedroom mismatch (3 vs. 2)<br>Valuation mismatch<br>(£450,000 vs. £500,000)', status: 'active', textColor: '#FB392D' },\n { description: 'PVQ Raised on 14th October 2024', status: 'active' },\n { description: 'PVQ Response received on 14th October 2024', status: 'active' },\n { description: 'Waiting for Valuation Report to be accepted', status: 'pending' }\n ]\n }\n ]\n\nexport const actionTableColumnWidthList = {name: 'w-3', apiConfigId: 'w-3', queueId: 'w-3', prompt: 'w-4', isActive: 'w-2'}\n\nexport const queuePriorityOrder = [\"All Applications\", \"Assigned To Me\", \"Unassigned\"];\n\nexport const QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST = {\n brokerName: 'w-3', \n securityAddress: 'w-3', \n applicants: 'w-3',\n finance: 'w-3',\n valuationStatus: 'w-2',\n sla: 'w-3',\n referredDate: 'w-3',\n appId: 'w-2',\n tasks: 'w-2'\n}\n\nexport const FIELD_DISPLAY_NAMES: { [key: string]: string } = {\n riskRating: 'Risk Rating',\n appId: 'App. ID',\n applicants: 'Company & Applicant(s)',\n brokerName: 'Broker',\n finance: 'Finance Amount',\n securityAddress: 'Security',\n valuationStatus: 'Val status',\n sla: 'SLA',\n referredDate: 'Date referred',\n pending: 'Age',\n lending: 'Type',\n tasks: 'Tasks'\n};\n\n// ...existing code...\n\nexport const QUEUE_RECORD_TABLE_COLUMN_ORDER = [\n 'riskRating',\n 'appId', // App. ID\n 'applicants', // Company & Applicant(s)\n 'brokerName',\n 'finance',\n 'securityAddress',\n 'pending',\n 'sla',\n 'valuationStatus',\n 'lending',\n 'tasks'\n];\n\n// ...existing code...","import { Component, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport { SHARED } from '../../constant/SHARED';\n@Component({\n selector: 'sidebar',\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss',\n standalone : false\n})\nexport class SidebarComponent {\n @Input() isSidebarVisible!: boolean;\n @Input() title!: string;\n @Output() onClose = new EventEmitter<any>();\n\n constructor(private renderer: Renderer2) {}\n\n onSidebarShow() {\n const overlay = document.querySelector(SHARED.SIDEBAR_MASK);\n if (overlay) {\n this.renderer.addClass(overlay, SHARED.CUSTOMSIDEBAROVERLAY);\n }\n }\n\n handleSidebarClose() {\n this.onClose.emit(false);\n }\n}\n","<div *ngIf=\"isSidebarVisible\" class=\"backdrop-shadow\" (click)=\"handleSidebarClose()\"></div>\n<div>\n<p-sidebar class=\"sidebar-panel-wrapper\" [(visible)]=\"isSidebarVisible\" (onShow)=\"onSidebarShow()\" (onHide)=\"handleSidebarClose()\" [position]=\"'right'\">\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center\">\n <h2 class=\"sidebar-title-wrapper text-color mb-0\">\n {{title}}\n </h2>\n </div>\n </ng-template>\n <p-divider class=\"sidebar-devider\"></p-divider>\n <ng-content></ng-content>\n</p-sidebar>","import { Injectable } from '@angular/core';\nimport { EntityState, EntityStore, StoreConfig } from '@datorama/akita';\nimport { BaseState } from './base.state';\nimport { BehaviorSubject } from 'rxjs';\nimport { BaseModel } from '../models/base.model';\nimport { SHARED } from '../constant/SHARED';\nexport interface BaseEntityState<T> extends BaseState, EntityState<T> {\n \n}\n\n\n/**\n * BaseStore is a generic class that extends EntityStore from Akita.\n */\n@StoreConfig({ name: 'base' })\n@Injectable({ providedIn: 'root' })\nexport class BaseStore<T extends BaseModel> extends EntityStore<BaseEntityState<T>, T> {\n static storeName = 'base';\n missingFields: string[] = [];\n public recordChange$: BehaviorSubject<any>;\n public onDocumentAccept$: BehaviorSubject<any>;\n public onDailogClose$: BehaviorSubject<any>;\n public openDocument$: BehaviorSubject<any>;\n public alertMessage$: BehaviorSubject<any>;\n public queueList$: BehaviorSubject<any>;\n\n constructor() {\n super({ records: [], lists: [], attributeModelList: [], isFormSubmitted: SHARED.EMPTY, isApiValidated: null, selectedTemplate: SHARED.EMPTY, updatedData: null, isAllRowSelected: false, isExcludedApplicationIds: [], selectedQueueId: SHARED.EMPTY }, { name: BaseStore.storeName }); \n this.recordChange$ = new BehaviorSubject<any>([]);\n this.onDocumentAccept$ = new BehaviorSubject<any>({});\n this.onDailogClose$ = new BehaviorSubject<boolean>(false);\n this.openDocument$ = new BehaviorSubject<any>({});\n this.alertMessage$ = new BehaviorSubject<string>('');\n this.queueList$ = new BehaviorSubject<any>([]);\n }\n\n setList(data: T[]) {\n this.update({ lists: data });\n }\n\n setAttributeModelList(data: T[]) {\n this.update({ attributeModelList: data });\n }\n\n setIsFormSubmitted(data: any) {\n this.update({ isFormSubmitted: data });\n }\n\n setIsApiValidated(data: any) {\n this.update({ isApiValidated: data });\n }\n\n setIsShowMessage(data: any) {\n this.update({ isShowMessage: data });\n }\n\n setSelectedTemplate(data: any) {\n this.update({ selectedTemplate: data });\n }\n\n setRecordChange(value: any) {\n this.recordChange$.next(value);\n }\n\n setOnDocumentAccept(value: any) {\n this.onDocumentAccept$.next(value);\n }\n\n setOnDailogClose(value: any) {\n this.onDailogClose$.next(value);\n }\n\n setOpenDocument(value: any) {\n this.openDocument$.next(value);\n }\n\n setAlertMessage(value: any) {\n this.alertMessage$.next(value);\n }\n\n setQueueList(value: any) {\n this.queueList$.next(value);\n }\n\n setUpdatedData(value: any) {\n this.update({ updatedData: value });\n }\n\n setIsAllRowSelected(data: any) {\n this.update({ isAllRowSelected: data });\n }\n\n setIsExcludedApplicationIds(data: any) {\n this.update({ isExcludedApplicationIds: data });\n }\n\n}\n","import { QueryEntity } from '@datorama/akita';\nimport { BaseEntityState, BaseStore } from './base.store';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { BaseModel } from '../models/base.model';\n\n/**\n * BaseQuery is a generic class that extends QueryEntity from Akita.\n * It provides methods to interact with the state of entities managed by the BaseStore.\n */\n@Injectable({ providedIn: 'root' })\nexport class BaseQuery<T extends BaseModel> extends QueryEntity<BaseEntityState<T>, T> {\n constructor(protected override store: BaseStore<T>) {\n super(store);\n }\n\n selectAllEntities() {\n return this.selectAll();\n }\n\n selectEntityById(id: string) {\n return this.selectEntity(id);\n }\n\n getLists(): Observable<any> {\n return this.select(state => state.lists);\n }\n\n getAttributeModelList(): Observable<any> {\n return this.select(state => state.attributeModelList);\n }\n\n getIsFormSubmitted(): Observable<any> {\n return this.select(state => state.isFormSubmitted);\n }\n\n getIsApiValidated(): Observable<any> {\n return this.select(state => state.isApiValidated);\n }\n\n getIsShowMessage(): Observable<any> {\n return this.select(state => state.isShowMessage);\n }\n\n getSelectedTemplate(): Observable<any> {\n return this.select(state => state.selectedTemplate);\n }\n\n getIsAllRowSelected(): Observable<any> {\n return this.select(state => state.isAllRowSelected);\n }\n\n getExcludedApplicationIds() : Observable<any> {\n return this.select(state => state.isExcludedApplicationIds);\n }\n\n\n getRecordChange() {\n return this.store.recordChange$.asObservable();\n }\n\n getOnDocumentAccept() {\n return this.store.onDocumentAccept$.asObservable();\n }\n\n getonDailogClose() {\n return this.store.onDailogClose$.asObservable();\n }\n\n getOpenDocument() {\n return this.store.openDocument$.asObservable();\n }\n\n getAlertMessage() {\n return this.store.alertMessage$.asObservable();\n }\n\n selectPage(): Observable<any> {\n return this.select(state => state['page']);\n }\n\n}\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AttributeModel } from '../../models/attribute.model';\nimport { BaseQuery } from '../../state/base.query';\nimport { BaseStore } from '../../state/base.store';\nimport { NgModel } from '@angular/forms';\nimport { SHARED } from '../../constant/SHARED';\nimport { Subject, takeUntil } from 'rxjs';\n\n@Component({\n selector: 'app-base-control',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './base-control.component.html',\n styleUrl: './base-control.component.scss',\n providers : [BaseStore]\n})\nexport class BaseControlComponent implements OnInit,OnChanges,OnDestroy {\n constructor(public baseStore: BaseStore<any>, public baseQuery: BaseQuery<any>) {}\n @Input() store !: BaseStore<any> | null;\n @Input() record: any;\n @Input() attributeModel! : AttributeModel;\n @Input() error : string = SHARED.EMPTY;\n @Output() onInput = new EventEmitter();\n @Output() onEnterKeydown = new EventEmitter();\n @Output() onBtnClick = new EventEmitter();\n @ViewChild(SHARED.TEXTBOXFIELD) textboxField!: NgModel;\n @ViewChild(SHARED.DROPDOWN) dropdown!: NgModel;\n @ViewChild(SHARED.TEXTAREA) textArea!: NgModel;\n static allAttributes: AttributeModel[] = [];\n query !: BaseQuery<any>\n private destroy$ = new Subject<void>();\n private attributeDestroy$ = new Subject<void>();\n\n ngOnInit(): void {\n this.addToAttributeList();\n this.baseQuery.getIsFormSubmitted()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if(res) {\n [this.textboxField, this.dropdown, this.textArea]\n .filter(control => control && control.control)\n .forEach(control => control.control.markAsTouched());\n this.baseStore.setIsFormSubmitted(false);\n }\n })\n\n }\n\n ngOnChanges(){\n if(this.store) {\n this.query = new BaseQuery(this.store)\n }\n }\n handleModelChange(event:any, valid: boolean|null, val?:any) { \n if (this.attributeModel?.name) {\n this.record[this.attributeModel?.name] = event;\n this.onInput.emit(event);\n }\n }\n\n private addToAttributeList() {\n if (this.attributeModel) {\n if (!BaseControlComponent.allAttributes.some(attr => (attr.name === this.attributeModel.name && attr.displayText === this.attributeModel.displayText))) {\n BaseControlComponent.allAttributes.push(this.attributeModel);\n }\n this.baseStore.setAttributeModelList(BaseControlComponent.allAttributes);\n }\n }\n\n // handleEnterKey(event:any, valid: boolean|null) {\n // if (this.attributeModel?.name) {\n // this.record[this.attributeModel?.name] = event;\n // this.onEnterKeydown.emit(event);\n // this.record[this.attributeModel?.name] = SHARED.EMPTY;\n // }\n // }\n\n handleButtonClick(event:MouseEvent){\n this.onBtnClick.emit(event);\n }\n\n getValue() : string | null | undefined {\n return this.record[this.attributeModel.name]\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<p>base-control works!</p>\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\n\n/**\n * CheckBoxComponent\n */\n@Component({\n selector: 'check-box',\n templateUrl: './check-box.component.html',\n styleUrl: './check-box.component.scss',\n standalone : true,\n imports : [CommonModule,FormsModule, CheckboxModule]\n})\nexport class CheckBoxComponent extends BaseControlComponent {\n \n}\n","<div class=\"checkBoxContainer\">\n \n <div class=\"checkBox\">\n <p-checkbox\n [disabled]=\"attributeModel.readonly ?? false\"\n [binary]=\"true\"\n inputId=\"binary\"\n [label]=\"attributeModel.displayText ?? ''\"\n class=\"dynamic-checkbox\"\n #checkBox=\"ngModel\"\n [ngModel]=\"this.record[this.attributeModel.name]\"\n [style]=\"{\n '--checkbox-size': attributeModel.customColumnWidth || '20px',\n '--checkbox-height': attributeModel.customHeight || '20px'\n }\"\n [required]=\"attributeModel.isRequired ?? false\" \n (ngModelChange)=\"handleModelChange($event, checkBox.valid)\"\n >\n </p-checkbox>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n</div>","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { ButtonModule } from 'primeng/button';\n\n@Component({\n selector: 'lib-button',\n standalone: true,\n imports : [CommonModule,InputTextModule, FormsModule, ButtonModule],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n})\nexport class ButtonComponent extends BaseControlComponent{}\n","<ng-container>\n <div class=\"btn-control\">\n <p-button\n type=\"button\"\n [label]=\"attributeModel.buttonLabel ?? 'Click Me'\"\n [disabled]=\"attributeModel.isDisabled ?? false\"\n [style]=\"{\n width: attributeModel.customButtonWidth\n ? attributeModel.customButtonWidth\n : 'auto',\n padding: attributeModel.customPadding\n ? attributeModel.customPadding\n : '0.5rem' \n }\"\n [icon]=\"attributeModel.icon ? attributeModel.icon : ''\"\n [iconPos]=\"attributeModel.iconPosition ?? 'left'\" \n [ngClass]=\"{\n 'p-button-primary': attributeModel.isPrimary ?? true,\n 'p-button-secondary': !attributeModel.isPrimary\n }\"\n (onClick)=\"handleButtonClick($event)\"\n></p-button>\n\n </div>\n </ng-container>","\nimport { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'text-box',\n templateUrl: './text-box.component.html',\n styleUrl: './text-box.component.scss',\n standalone : true,\n imports : [CommonModule,InputTextModule, FormsModule, TooltipModule]\n})\nexport class TextBoxComponent extends BaseControlComponent {\n override getValue() {\n if(this.record[this.attributeModel.name] == false){\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\n }else if( this.record[this.attributeModel.name] == true){\n return \"Yes\"\n }else{\n return this.record[this.attributeModel.name] ?? \"-\"\n }\n }\n}\n","<ng-container >\n <div class=\"\">\n\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"inputTextBox\">\n\n <input\n pInputText\n type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"attributeModel.placeholder ?? ''\"\n class=\"block p-inputtext w-full\"\n [pTooltip]=\"attributeModel.tooltip ?? ''\"\n [tooltipPosition]=\"attributeModel.toolTipPosition ?? '' \"\n [ngModel]=\"record?.[attributeModel.name] ?? ''\"\n [disabled]=\"attributeModel.disable ?? false\" \n [readonly]=\"attributeModel.readonly ?? false\"\n [name]=\"attributeModel.name ?? 'textBox'\"\n [id]=\"attributeModel.name ?? 'textBox'\"\n [required]=\"attributeModel.isRequired ?? false\" \n [ngStyle]=\"{\n width: attributeModel.customColumnWidth\n ? attributeModel.customColumnWidth\n : '',\n padding: attributeModel.customPadding ? attributeModel.customPadding : ''\n }\"\n #textboxField=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, textboxField.valid)\"\n [ngClass]=\"{'ng-dirty ng-invalid': (!textboxField.valid && textboxField.dirty)}\"\n />\n <div *ngIf=\"textboxField.errors?.['required'] && (textboxField.dirty || textboxField.touched)\" class=\"error-message\">\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\n </div>\n </div>\n </div>\n</ng-container>\n","export class ERROR {\n static ERROR = \"Error\";\n static VALIDATE_API_FAILED = \"API validation failed. Please review the input and try again.\";\n static VALIDATE_ACTION_API_FAILED = \"Validation action failed. Please check the configuration or try again later.\";\n static API_CONFIG_FAILED = \"Error loading app config:\";\n static API_CONFIG_LOADING_FAILED = \"App configuration not loaded. Ensure loadAppConfig() is called before accessing properties.\";\n static API_NAME_NOT_SET = \"API name is not set.\";\n static ERROR_FETCHING_DATA = \"Error fetching data:\";\n static UNABLE_TO_FETCH_QUEUE_LIST = \"Unable to fetch queue list.\";\n static NO_QUEUE_FOUND_WITH_ID = \"No queue found with the provided ID.\";\n static ERROR_FETCHING_WIDGET_DATA = \"Error fetching record widget data:\";\n static ERROR_MISSING_PARAMETERS = \"Required parameters are missing:\";\n static INVALID_INDEX = \"Invalid index:\";\n static ERROR_DELETE_DICTIONARY_ITEM = \"Failed to delete dictionary item with ID:\";\n static MISSING_REQUIRED_FIELD = \"Missing required fields:\";\n static API_VALIDATE_REQURIED = \"Api validation required\";\n}","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\nimport { ToastModule } from 'primeng/toast';\nimport { ConfirmationService, Message, MessageService } from 'primeng/api';\nimport { MessagesModule } from 'primeng/messages';\nimport { ButtonComponent } from '../../controls/button/button.component';\nimport { TextBoxComponent } from '../../controls/text-box/text-box.component';\nimport { SHARED } from '../../constant/SHARED';\nimport { BaseQuery } from '../../state/base.query';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BaseStore } from '../../state/base.store';\nimport { ERROR } from '../../constant/ERROR';\n\n@Component({\n selector: \"form-container\",\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n ConfirmDialogModule,\n ToastModule,\n MessagesModule,\n ButtonComponent,\n TextBoxComponent,\n ],\n templateUrl: \"./form-container.component.html\",\n styleUrl: \"./form-container.component.scss\",\n providers: [MessageService, ConfirmationService],\n encapsulation: ViewEncapsulation.None,\n})\nexport class FormContainerComponent implements OnInit, OnDestroy {\n @Input() messages: Message[] = [];\n @Input() record: any;\n @Input() headerText: string | undefined;\n @Input() showSave:boolean = SHARED.FALSE\n @Input() disableSaveButton!: {isValid: boolean, data: string}\n @Output() onSave = new EventEmitter();\n @Output() onCancel = new EventEmitter();\n private destroy$ = new Subject<void>();\n \n constructor(private baseQuery: BaseQuery<any>, private baseStore: BaseStore<any>){}\n\n ngOnInit(): void {\n this.baseQuery.getIsShowMessage()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n console.log(res);\n if (res) {\n console.log(res);\n this.messages = [{ severity: SHARED.ERROR, detail: ERROR.API_VALIDATE_REQURIED }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n this.baseStore.setIsShowMessage(false);\n }, 3000);\n }\n });\n }\n \n handleSaveClick(){\n this.onSave.emit()\n }\n handleCancelClick(){\n this.onCancel.emit()\n\n }\n\n handleCreateBtnClick() {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div class=\"form-container\">\n <div class=\"text-900 font-bold text-xl form-header m-0 p-0\">\n <div class=\"form-header-container w-full mr-0\">\n <div class=\"form-header-title\"[innerHTML]=\"this.headerText\">\n </div>\n <div class=\"form-header-messege w-full\">\n <p-messages class=\"message-wrapper\" [(value)]=\"messages\" [enableService]=\"false\" />\n </div>\n </div>\n\n <div class=\"btn-wrapper\">\n <ng-content select=\"[headerButtons]\"></ng-content>\n @if(showSave){\n <button\n pButton\n pRipple\n label=\"Cancel\"\n (click)=\"handleCancelClick()\"\n class=\"p-button-outlined mr-2\"\n ></button>\n\n <button\n pButton\n class=\"p-button-success\"\n label=\"Save\"\n type=\"button\"\n tooltipPosition=\"bottom\"\n (click)=\"handleSaveClick()\"\n ></button>\n }\n <ng-content select=\"[headerButtons]\"></ng-content>\n </div>\n </div>\n \n \n <p-toast></p-toast>\n\n <div>\n <p-confirmDialog>\n <ng-template pTemplate=\"message\" let-message>\n <div class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\">\n <i class=\"pi pi-exclamation-circle text-6xl text-primary-500\"></i>\n <p>{{ message.message }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n </div> \n <div class=\"grid m-0 mt-3\">\n <div class=\"col-12 p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n ","\n/**\n * This class is used to store the API Paths for the application\n */\nexport class DATASOURCES{\n static QUEUES = \"Queues\"\n static DICTIONARY = \"DataDictionaries\"\n static ACTIONS = \"ActionConfigurations\"\n static WIDGET = \"Widgets\"\n static APIMANAGEMENT = \"ApiConfigurations\"\n static APPLICATION = \"Applications\"\n static DOCUMETS = \"Documents\"\n static RATIONALE = \"Rationales\"\n static Template = \"MessageTemplates\"\n static QUEUESAPICONFIG = \"ApiConfigurations/getChildParentFields\"\n static DELETEDICTIONARYITEM = \"DataDictionaries/dictionaryItems\"\n static APPLICATION_QUEUE_SEARCH = \"Applications/search/\"\n \n}","\n/**\n * URLS\n */\nexport class URLS{\n static CONFIGFILEURL = \"assets/config/api.config.json\"\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { URLS } from '../constant/URLS';\nimport { ERROR } from '../constant/ERROR';\n\n/**\n * This service is used to get the app configuration from the config file.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AppConfigService {\n\n private appConfig: any;\n private isConfigLoaded = false;\n\n constructor(private http: HttpClient) {}\n loadAppConfig(): Promise<void> {\n return firstValueFrom(this.http.get(URLS.CONFIGFILEURL))\n .then(config => {\n this.appConfig = config;\n this.isConfigLoaded = true;\n })\n .catch(err => {\n console.error(ERROR.API_CONFIG_FAILED, err);\n throw err;\n });\n }\n\n private ensureConfigLoaded(): void {\n if (!this.isConfigLoaded) {\n throw new Error(ERROR.API_CONFIG_LOADING_FAILED);\n }\n }\n\n get apiBaseUrl() {\n this.ensureConfigLoaded();\n return this.appConfig?.catQwUrl;\n }\n\n get apiUrl() {\n this.ensureConfigLoaded();\n return this.appConfig?.apiUrl;\n }\n\n get interactBaseApi() {\n this.ensureConfigLoaded();\n return this.appConfig?.interactBaseApi;\n }\n\n get visibilityOptions() {\n this.ensureConfigLoaded();\n return this.appConfig?.visibilityOption;\n }\n\n get swaggerUrl() {\n this.ensureConfigLoaded();\n return this.appConfig?.swaggerUrl;\n }\n}\n","import { SelectItem } from \"primeng/api\";\n\nexport class List {\n dataSource?: string;\n records: any[];\n label: string;\n value: string;\n forProperty!: string;\n items: SelectItem[];\n allItems: SelectItem[];\n\n constructor(dataSource: string, records: any[] = [], label: string, value: string, forProperty?: string) {\n this.dataSource = dataSource\n this.records = records;\n this.label = label;\n this.value = value;\n this.dataSource = dataSource;\n this.forProperty = forProperty ?? \"\"\n this.items = records?.map((i) => {\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\n });\n this.allItems = this.records?.map((i) => {\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\n });\n }\n\n}\n","import { firstValueFrom } from \"rxjs\";\nimport { List } from \"../models/list.model\";\nimport { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { AppConfigService } from \"./app-config.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListService {\n constructor(public http: HttpClient, public configService: AppConfigService) {}\n\n async getLists(models: any[]) {\n const lists: List[] = [];\n\n for (const model of models) {\n if (model.dataSource) {\n try {\n const response = await firstValueFrom(\n this.getbyPathName<{ data: any[] }>(model.dataSource)\n );\n const listData = response.data || response;\n const list = new List(\n model.dataSource,\n listData,\n model.listLabelProperty as string,\n model.listValueProperty as string,\n model.dataSource\n );\n list.forProperty = model.name;\n lists.push(list);\n } catch (error) {\n console.error(`Error fetching data from ${model.dataSource}:`, error);\n }\n } \n else if (model.options) {\n const list = new List(\n model.dataSource,\n model.options as any[],\n model.listLabelProperty as string,\n model.listValueProperty as string,\n undefined\n );\n list.forProperty = model.name;\n lists.push(list);\n }\n }\n return lists;\n }\n\n getbyPathName<T>(data: string) {\n return this.http.get<T>(this.configService.apiBaseUrl + data);\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { BaseStore } from './base.store';\nimport { SHARED } from '../constant/SHARED';\nimport { BaseModel } from '../models/base.model';\nimport { AppConfigService } from '../services/app-config.service';\nimport { ListService } from '../services/list.service';\nimport { DATASOURCES } from '../constant/DATASOURCES';\n\n@Injectable({providedIn:'root'})\nexport class BaseService<T extends BaseModel> {\n public _pathName: string | undefined = SHARED.EMPTY;\n protected lists!:string[];\n protected http: HttpClient;\n protected list!:[]\n constructor(http: HttpClient, private store: BaseStore<T>, private appConfigService: AppConfigService, protected listService : ListService) {\n \n this.http = http;\n }\n \n\n get apiUrl(): string {\n return this.appConfigService.apiBaseUrl;\n }\n\n get interactBaseApi(): string {\n return this.appConfigService.interactBaseApi;\n }\n\n set pathName(value: string) {\n this._pathName = value;\n }\n\n async initList() {\n if(this.list){\n let response = await this.listService.getLists(this.list)\n if (response && response.length > 0) {\n this.store.setList(response as any)\n }\n }\n \n } \n\n create(entity: T): Observable<T> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.post<T>(baseUrl + this._pathName, entity).pipe(\n tap((newEntity: T) => this.store.add(newEntity))\n );\n }\n\n getAll(): Observable<T[]> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n const url = `${baseUrl}${this._pathName}`;\n return this.http.get<T[]>(url).pipe(\n tap((entities: T[]) => this.store.set(entities))\n );\n }\n \n getPaginatedList( search: string = SHARED.EMPTY, page: number = 1, limit: number = 10, sortBy: string = SHARED.UPDATEDAT, order: string = SHARED.DESC, type: string = SHARED.EMPTY, isActive: any = SHARED.EMPTY, pathName?:string): Observable<T[]> {\n this._pathName = (!!pathName ? pathName : this._pathName);\n const paramsObj: Record<string, string> = Object.fromEntries(\n Object.entries({\n searchKey: search,\n page: page ? page.toString() : SHARED.EMPTY,\n limit: limit ? limit.toString() : SHARED.EMPTY,\n sortBy: sortBy || SHARED.UPDATEDAT,\n order: order || SHARED.EMPTY,\n type: type || SHARED.EMPTY,\n isActive: isActive\n }).filter(([_, value]) => value !== SHARED.EMPTY)\n );\n \n const params = new URLSearchParams(paramsObj);\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n const url = `${baseUrl}${this._pathName}${params.toString() ? SHARED.QUESTION_MARK + params.toString() : SHARED.EMPTY}`;\n return this.http.get<T[]>(url).pipe(\n tap((entities: T[]) => this.store.set(entities))\n );\n }\n\n getById(id: string): Observable<T> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.get<T>(`${baseUrl}${this._pathName}/${id}`).pipe(\n tap((entity: T) => this.store.upsert(id, entity))\n );\n }\n\n update(id: string, entity: T): Observable<T> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.put<T>(`${baseUrl}${this._pathName}/${id}`, entity).pipe(\n tap((updatedEntity: T) => this.store.update(id, updatedEntity))\n );\n }\n\n delete(id: string): Observable<void> {\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\n return this.http.delete<void>(`${baseUrl}${this._pathName}/${id}`).pipe(\n tap(() => this.store.remove(id))\n );\n }\n \n}\n","import { SHARED } from \"../../constant/SHARED\";\n\nexport class TablePrimaryModel{\n name!: string;\n headers!: any[];\n records!: any[];\n editPermission : string = SHARED.EMPTY \n deletePermission : string = SHARED.EMPTY \n}\n\nexport interface tableSortOrderModel{\n [key: string]: string;\n}","import { AttributeModel } from \"../../models/attribute.model\";\n\nexport class TablePrimaryHeaderModel{\n name!: string;\n attributes!: AttributeModel;\n width!: string;\n}","import { Injectable } from \"@angular/core\";\nimport { TablePrimaryModel } from \"../table-primary/models/table-primary.model\";\nimport { SHARED } from \"../constant/SHARED\";\nimport { TablePrimaryHeaderModel } from \"../table-primary/models/table-primary-header.model\";\n\n\n/**\n * TableBuilder\n */\n@Injectable({\n providedIn:'root'\n})\nexport class TableBuilder{\n\n public hiddenHeaders: string[] = [];\n buildTable(records: any[], headerWidths?: { [key: string]: string }, editPermission?:string ,deletePermission?:string): TablePrimaryModel {\n const table = new TablePrimaryModel();\n table.records = records;\n if (records && records.length > 0) {\n table.headers = this.buildHeaders(Object.keys(records[0]),headerWidths);\n } else {\n table.headers = [];\n }\n table.editPermission = editPermission ?? SHARED.EMPTY\n table.deletePermission = deletePermission ?? SHARED.EMPTY\n return table;\n }\n \n private buildHeaders(keys: string[], headerWidths: { [key: string]: string } | undefined): TablePrimaryHeaderModel[] {\n \n const headers: TablePrimaryHeaderModel[] = [];\n const filteredKeys = keys.filter(\n key => key !== SHARED.ID && !this.hiddenHeaders.includes(key) // hide headers\n );\n for (const key of filteredKeys) {\n const header = new TablePrimaryHeaderModel();\n header.name = key;\n if(headerWidths) header.width = headerWidths[key] || SHARED.WIDTH_AUTO;\n headers.push(header);\n }\n return headers;\n }\n}","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseModel } from '../../models/base.model';\nimport { TableBuilder } from '../../services/table.builder';\nimport { BaseService } from '../../state/base.service';\nimport { TablePrimaryModel } from '../../table-primary/models/table-primary.model';\nimport { MetaDataModel } from '../../models/meta-data.model';\nimport { SHARED } from '../../constant/SHARED';\n\n/**\n * BaseListComponent is a generic class that provides a base implementation for a list component.\n */\n@Component({\n selector: 'lib-base-list',\n templateUrl: './base-list.component.html',\n styleUrl: './base-list.component.scss',\n})\nexport class BaseListComponent<T extends BaseModel> implements OnChanges {\n @Input() refreshTable : boolean = false;\n table!: TablePrimaryModel;\n metaData!: MetaDataModel;\n deletePermission :string = SHARED.EMPTY\n editPermission : string = SHARED.EMPTY\n constructor(protected service: BaseService<T>, protected builder: TableBuilder){}\n\n ngOnChanges(){\n if(this.refreshTable){\n this.handleRefreshTable()\n }\n }\n init(dynamicWidth?:any){\n this.service.getPaginatedList().subscribe((res:any)=>{\n this.table = this.builder.buildTable(res.data, dynamicWidth, this.editPermission, this.deletePermission);\n this.metaData = res.metadata;\n\n this.afterTableBuild() \n });\n }\n\n afterTableBuild(){\n\n }\n\n handleRefreshTable(){\n this.init()\n }\n}\n","<p>base-list works!</p>\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { FormsModule } from '@angular/forms';\nimport { SelectItem } from 'primeng/api';\nimport { ListService } from '../../services/list.service';\nimport { List } from '../../models/list.model';\nimport { BaseQuery } from '../../state/base.query';\nimport { BaseStore } from '../../state/base.store';\n\n/**\n * DropdownComponent\n */\n@Component({\n selector: 'dropdown',\n standalone: true,\n imports: [CommonModule, DropdownModule, FormsModule],\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DropdownComponent extends BaseControlComponent{\n options: SelectItem[] | undefined = [];\n list!: List | undefined;\n childListRecords: any[] = [];\n @Input() isStaticDropdown = false;\n\n constructor(baseStore: BaseStore<any>,public listService: ListService, baseQuery: BaseQuery<any>) {\n super(baseStore, baseQuery);\n }\n\n override ngOnChanges() {\n if(this.store) {\n this.query = new BaseQuery(this.store);\n }\n if (this.attributeModel.options) {\n this.options = this.attributeModel.options;\n }\n if (!this.isStaticDropdown) {\n this.handleGetAndSetList();\n }else{\n this.options = this.attributeModel.options?.map((x: any) => {\n return { label: x[this.attributeModel?.listLabelProperty || 0], value: x[this.attributeModel?.listValueProperty || 0] };\n });\n }\n }\n\n handleGetAndSetList() {\n try {\n this.query.getLists().subscribe((response: List[]) => {\n if (response) {\n this.mapResponseToOptions(response);\n }\n });\n } catch (error) {\n console.error('Error fetching data:', error);\n }\n }\n\n private mapResponseToOptions(lists: List[]): SelectItem[] {\n if (lists && lists.length > 0) {\n const clonedLists = JSON.parse(JSON.stringify(lists));\n this.list = clonedLists.find((x: any) => x.forProperty === this.attributeModel.name);\n if (this.list) {\n this.options = this.list?.items ?? [];\n }\n }\n if (!this.options || this.options.length === 0) {\n this.options = this.attributeModel.options ?? [];\n }\n return this.options;\n }\n\n\n override handleModelChange(event: any, valid: boolean | null, val?: any): void {\n super.handleModelChange(event, valid);\n }\n}\n","<ng-container>\n <div class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"dropdownbox\">\n\n <p-dropdown \n \n [options]=\"options\" \n [disabled]=\"attributeModel.readonly ?? false\"\n [showClear]=\"true\"\n [name]=\"attributeModel.name ?? 'testSingleSelect'\" \n [ngModel]=\"record[attributeModel.name]\" \n [placeholder]=\"attributeModel.placeholder ?? ''\" \n [required]=\"attributeModel.isRequired ?? false\"\n filterBy=\"label\" \n [filter]=\"attributeModel.filter ?? false\" \n class=\"dropdownFeild\"\n #dropdown=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, dropdown.valid)\" \n [ngClass]=\"{'ng-dirty ng-invalid': (!dropdown.valid && dropdown.dirty)}\"\n appendTo=\"body\" \n optionLabel=\"label\" \n optionValue=\"value\">\n</p-dropdown>\n<div *ngIf=\"dropdown.errors?.['required'] && (dropdown.dirty || dropdown.touched)\" class=\"error-message\">\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\n</div>\n</div>\n\n</ng-container>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValidatorService {\n\n constructor() { }\n\n handleValidateRecords(record:any){\n return true\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormStateService {\n private formChangesSubject$: BehaviorSubject<boolean>;\n private isFormNavigating$: BehaviorSubject<boolean>;\n private isShowConfirmation$: BehaviorSubject<boolean>;\n constructor() {\n this.formChangesSubject$ = new BehaviorSubject<boolean>(false)\n this.isFormNavigating$ = new BehaviorSubject<boolean>(false)\n this.isShowConfirmation$ = new BehaviorSubject<boolean>(false)\n }\n\n setIsFormNavigating(isNavigation: boolean) {\n this.isFormNavigating$.next(isNavigation)\n }\n\n getIsFormNavigating() {\n return this.isFormNavigating$.getValue()\n }\n \n selectIsFormNavigating() {\n return this.isFormNavigating$.asObservable()\n }\n\n setIsFormSaved(hasChanges: boolean) {\n this.formChangesSubject$.next(hasChanges);\n }\n\n getIsFormSaved(): boolean {\n return this.formChangesSubject$.getValue();\n }\n\n selectIsFormSaved() {\n return this.formChangesSubject$.asObservable()\n }\n\n setShowConfirmation(value : boolean){\n return this.isShowConfirmation$.next(value)\n }\n\n selectShowConfirmation(){\n return this.isShowConfirmation$.asObservable()\n }\n\n \n}\n","import { Component, EventEmitter, HostListener, inject, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, takeUntil } from 'rxjs';\nimport { ValidatorService } from '../../services/validator.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { SHARED } from '../../constant/SHARED';\nimport { AttributeModel } from '../../models/attribute.model';\nimport { BaseModel } from '../../models/base.model';\nimport { BaseStore } from '../../state/base.store';\nimport { BaseService } from '../../state/base.service';\nimport { BaseQuery } from '../../state/base.query';\nimport { ERROR } from '../../constant/ERROR';\nimport { FormStateService } from '../../services/form-state.service';\nimport { ConfirmationService } from 'primeng/api';\n\n/**\n * BaseFormComponent \n */\n@Component({\n selector: 'base-form',\n templateUrl: './base-form.component.html',\n styleUrls: ['./base-form.component.scss'],\n providers : [ValidatorService]\n})\nexport class BaseFormComponent<T extends BaseModel> {\n protected formStateService = inject(FormStateService)\n protected subscriptions: Subscription[];\n record!: T;\n initialRecord!: T;\n public recordChange = new BehaviorSubject<any>({});\n public destroy$ = new Subject<void>();\n @Output() onSave = new EventEmitter<any>();\n @Output() onFormNavigate = new EventEmitter<any>();\n @Output() onCancel = new EventEmitter<any>();\n sanitizedInitialRecord: any\n sanitizedCurrentRecord: any\n constructor( protected service: BaseService<T>, protected validatorService?: ValidatorService, protected router?: Router, protected activatedRoute?: ActivatedRoute, protected baseStore?: BaseStore<T>, protected baseQuery?: BaseQuery<T>,\n ) {\n this.subscriptions = [];\n this.record = {} as T;\n }\n\n message:any[] = []\n attributeMode!:AttributeModel;\n\n get currentState() {\n return this.baseQuery?.getValue();\n }\n\n\n init(): void {\n this.service.initList();\n this.baseStore?.setRecordChange(SHARED.EMPTY);\n let id = this.activatedRoute ? this.activatedRoute.snapshot.params[SHARED.ID] : '';\n if ((id !== SHARED.ZERO.toString()) && id) {\n this.service.getById(id).subscribe((res: any) => {\n this.record = JSON.parse(JSON.stringify(res));\n this.baseStore?.setRecordChange(res);\n this.initialRecord = JSON.parse(JSON.stringify(res));\n this.recordChange.next(res);\n })\n } else {\n this.initialRecord = structuredClone(this.record);\n }\n this.formStateService.selectIsFormNavigating()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.checkUnsavedChanges()\n }\n });\n }\n\n @HostListener('window:beforeunload', ['$event'])\n handleBeforeUnload(event: BeforeUnloadEvent) {\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\n const isSaved = this.formStateService.getIsFormSaved();\n if (hasChanges && !isSaved) {\n event.preventDefault();\n event.returnValue = SHARED.BROWSER_WARNING;\n }\n }\n\n checkUnsavedChanges() {\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\n const isSaved = this.formStateService.getIsFormSaved();\n this.formStateService.setShowConfirmation(hasChanges && !isSaved);\n }\n\n private normalizeRecord(record: any): Record<string, any> {\n if (!record) return {};\n return Object.keys(record).reduce((acc, key) => {\n let value = record[key];\n if (value === undefined || value === SHARED.EMPTY) {\n value = null;\n }\n acc[key] = value;\n return acc;\n }, {} as Record<string, any>);\n }\n\n handleSubmit() {\n const validateRecords = this.validatorService \n ? this.validatorService.handleValidateRecords(this.record) \n : true;\n \n if(!this.record || Object.keys(this.record).length === 0) return;\n if(this.baseStore) this.baseStore.missingFields = [];\n if (this.baseQuery) {\n this.baseQuery.getAttributeModelList()\n .pipe(takeUntil(this.destroy$))\n .subscribe((attributeModels: AttributeModel[]) => {\n attributeModels.forEach(attr => {\n const handleCheckAndAddMissingField = (value: any) => {\n if (attr.isRequired &&\n (value === undefined || value === null || (typeof value === SHARED.STRING && value.trim() === SHARED.EMPTY))\n ) {\n if(this.baseStore) this.baseStore.missingFields.push(attr.displayText || attr.name);\n }\n };\n \n if (attr.isRequired && attr.name in this.record) {\n handleCheckAndAddMissingField(this.record[attr.name]);\n }\n \n [SHARED.DICTIONARYITEMS, SHARED.DATAITEMS].forEach(key => {\n this.record[key]?.forEach((val: any) => {\n if(val.hasOwnProperty(attr.name)) {\n handleCheckAndAddMissingField(val[attr.name])\n }\n });\n });\n });\n if (this.baseStore && this.baseStore.missingFields.length > 0) {\n if(this.baseStore) this.baseStore.setIsFormSubmitted(true);\n console.error(ERROR.MISSING_REQUIRED_FIELD, this.baseStore.missingFields);\n } else {\n if(!this.currentState?.isApiValidated && this.currentState?.isApiValidated !== null) {\n this.baseStore?.setIsShowMessage(!this.currentState?.isApiValidated);\n }\n else if(validateRecords) {\n if(!this.record || Object.keys(this.record).length === 0) return;\n if (this.record._id) {\n this.handleUpdateRecord();\n } else {\n this.handleAddRecord();\n }\n }\n }\n });\n }\n }\n\n handleUpdateRecord(){\n if(!this.record._id || Object.keys(this.record).length === 0) return;\n this.service.update(this.record._id, this.record).subscribe({\n next: (response: T) => {\n console.log('Record updated:', response);\n this.record = {} as T;\n this.baseStore?.setIsApiValidated(null);\n this.onFormNavigate.emit(response);\n },\n error: (error) => {\n console.error('Error updating record:', error);\n }\n })\n }\n\n handleAddRecord() {\n if (!this.record || Object.keys(this.record).length === 0) return;\n this.service.create(this.record).subscribe({\n next: (response: T) => {\n console.log('Record created:', response);\n this.record = {} as T;\n this.baseStore?.setIsApiValidated(null);\n this.onFormNavigate.emit(response); \n },\n error: (error) => {\n console.error('Error creating record:', error);\n }\n })\n }\n\n handleCancel(){\n if(this.baseStore) this.baseStore.missingFields = [];\n this.onCancel.emit();\n }\n\n ngOnDestroy(): void {\n if(this.baseStore) {\n this.baseStore.setAttributeModelList([]);\n this.baseStore.setIsApiValidated(null);\n this.baseStore?.setIsShowMessage(null);\n } \n this.destroy$.next();\n this.destroy$.complete();\n this.formStateService.setIsFormNavigating(false)\n this.formStateService.setIsFormSaved(false)\n }\n}\n","<p>base-form works!</p>\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport { SHARED } from '../constant/SHARED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DateParserService {\n\n constructor() { }\n\n parseDate(date:any) {\n\n\t\tif (\n\t\t\tmoment(date, SHARED.DATE_FORMAT_TYPE2, true).isValid()\n\t\t) {\n\t\t\tconst date1 = date.toString().split(SHARED.HIPHEN)[0];\n\t\t\tconst month = date.toString().split(SHARED.HIPHEN)[1];\n\t\t\tconst year = date.toString().split(SHARED.HIPHEN)[2];\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\n\t\t}\n\t\telse if (\n\t\t\tmoment(date, SHARED.DATE_FORMAT, true).isValid()\n\t\t) {\n\t\t\tconst date1 = date.toString().split(SHARED.SLASH)[0];\n\t\t\tconst month = date.toString().split(SHARED.SLASH)[1];\n\t\t\tconst year = date.toString().split(SHARED.SLASH)[2];\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\n\t\t}\n\t\telse if (moment(date, SHARED.DATE_FORMAT_TYPE3, true).isValid()) {\n\t\t\tconst dateParts = date.toString().split(SHARED.HIPHEN);\n\t\t\tconst year = dateParts[0];\n\t\t\tconst month = dateParts[1];\n\t\t\tconst day = dateParts[2];\n\t\t\treturn moment.utc(`${year}-${month}-${day}`).toDate();\n\t\t}\n else if (\n \n\t\t\tdate instanceof Date ||\n\t\t\tnew Date(date).toString() != SHARED.INVALIDDATE\n\t\t) {\n\n\t\t\tconst result = new Date(date);\n\t\t\tresult.setHours(0, 0, 0, 0);\n\t\t\treturn moment.utc(`${result.getFullYear()}-${result.getMonth()+1}-${result.getDate()}`).toDate();\n\t\t}\n\t\telse {\n\t\t\tthrow new Error(SHARED.INVALIDDATE);\n\t\t}\n\n\t\treturn SHARED.INVALIDDATE\n\t}\n\n}\n","import { Component, OnChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { DateParserService } from '../../services/date-parser.service';\nimport { CalendarModule } from 'primeng/calendar';\nimport { FormsModule } from '@angular/forms';\nimport { SHARED } from '../../constant/SHARED';\nimport moment from 'moment';\nimport { BaseStore } from '../../state/base.store';\nimport { BaseQuery } from '../../state/base.query';\n\n@Component({\n selector: 'date',\n standalone: true,\n imports: [CommonModule, CalendarModule, FormsModule],\n templateUrl: './date.component.html',\n styleUrl: './date.component.scss',\n})\nexport class DateComponent extends BaseControlComponent implements OnChanges{\n constructor(baseStore: BaseStore<any>, public dateService : DateParserService, baseQuery: BaseQuery<any>){\n super(baseStore, baseQuery)\n }\n override ngOnChanges(): void {\n if(this.attributeModel.readonly){\n this.getValue()\n }else{\n\n this.record[this.attributeModel.name] = this.dateService.parseDate(this.record[this.attributeModel?.name]) ??\n new Date();\n }\n }\n override getValue() {\n if (this.record[this.attributeModel.name]) {\n const formattedDate = moment(this.record[this.attributeModel.name]).format('DD/MM/YYYY');\n if(formattedDate == \"Invalid date\"){\n return SHARED.HIPHEN\n }else{\n return formattedDate\n }\n }\n return SHARED.EMPTY\n }\n \n}\n","@if (attributeModel && record) {\n<div class=\"\">\n <div class=\"mb-2\">\n <label>{{\n attributeModel?.displayText\n ? attributeModel?.displayText\n : attributeModel?.name\n }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n @if (attributeModel.readonly) {\n <div class=\"mb-2\" [ngStyle]=\"{ 'font-size': '14px', color: '#0F1729', 'font-weight':'600' }\">\n <label>{{ getValue() }}</label>\n </div>\n } @else {\n <div>\n <p-calendar\n [showIcon]=\"attributeModel.showCalenderIcon ?? true\"\n inputId=\"icon\"\n [disabled]=\"attributeModel?.readonly ?? false\"\n [required]=\"attributeModel?.isRequired ?? false\"\n [name]=\"attributeModel?.name ? attributeModel?.name : 'testDatePicker'\"\n [placeholder]=\"\n attributeModel.placeholder ? attributeModel.placeholder : ''\n \"\n [yearRange]=\"attributeModel.yearRange ?? '1950 : 2050'\"\n [title]=\"attributeModel.title ? attributeModel.title : ''\"\n [(ngModel)]=\"record[attributeModel?.name]\"\n #dateField=\"ngModel\"\n [dateFormat]=\"'dd/mm/yy'\"\n appendTo=\"body\"\n (ngModelChange)=\"handleModelChange($event, dateField.valid)\"\n [ngClass]=\"{\n 'ng-dirty ng-invalid': !dateField.valid && error == attributeModel?.name\n }\"\n [hourFormat]=\"attributeModel?.hourFormat ? '24' : ''\"\n >\n </p-calendar>\n </div>\n }\n</div>\n\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { FormsModule } from '@angular/forms';\nimport { FileUploadModule } from 'primeng/fileupload';\n\n@Component({\n selector: 'file-upload',\n standalone: true,\n imports: [CommonModule, FormsModule, FileUploadModule],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.scss',\n})\nexport class FileUploadComponent extends BaseControlComponent {\n\n handleSingleUpload(event:any){\n console.log(event)\n }\n}\n","<ng-container class=\"documentContainer\">\n @if(!attributeModel.hideLabelOnForm){\n <div class=\"mb-2\">\n <label class=\"form-header-label\">{{ attributeModel?.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n }\n<div class=\"card flex justify-content-center\">\n <p-fileUpload \n mode=\"basic\" \n [chooseLabel]=\"record[attributeModel.name] ? attributeModel.displayText : 'No Files'\"\n chooseIcon=\"pi pi-plus\"\n [name]=\"attributeModel?.name\"\n accept=\"image/*,application/pdf\" \n [maxFileSize]=\"209715200\" class=\"fileUploader\"\n (onSelect)=\"handleSingleUpload($event)\" />\n</div>\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'capitalizeWords',\n standalone: true,\n})\nexport class CapitalizeWordsPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) return value;\n return value\n .split(' ')\n .map(word => \n word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n )\n .join(' ');\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\n\n@Component({\n selector: 'text-area',\n templateUrl: './text-area.component.html',\n styleUrl: './text-area.component.scss',\n standalone : true,\n imports : [CommonModule ,InputTextareaModule, FormsModule]\n})\nexport class TextAreaComponent extends BaseControlComponent {\n @Input() rowspan : number = 0\n override getValue() {\n if(this.record[this.attributeModel.name] == false){\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\n }else if( this.record[this.attributeModel.name] == true){\n return \"Yes\"\n }else{\n return this.record[this.attributeModel.name] ?? \"-\"\n }\n}\n}\n","<ng-container class=\"textAreaContainer\">\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n @if (attributeModel.readonly) {\n <div class=\"mb-2\" [ngStyle]=\"{'font-size':'14px', 'color':'#0F1729', 'font-weight':'600' }\">\n <label class=\"text-value-wrapper\" [ngStyle]=\"{color: attributeModel.textColorOnReadonly}\">{{ getValue() }}</label>\n </div>\n } @else {\n <div class=\"textAreaControl\">\n <textarea\n pInputTextarea\n [rows]=\"rowspan ?? 3\"\n cols=\"30\"\n [disabled]=\"attributeModel?.readonly ?? false\"\n [ngModel]=\"record[attributeModel.name]\"\n [name]=\"attributeModel.name ?? 'textArea'\"\n [required]=\"attributeModel?.isRequired ?? false\"\n [ngStyle]=\"{\n width: attributeModel.customColumnWidth\n ? attributeModel.customColumnWidth\n : ''\n }\"\n #textArea=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, textArea.valid)\"\n [ngClass]=\"{\n 'ng-dirty ng-invalid':\n (!textArea.valid && error == attributeModel?.name)\n \n }\"\n ></textarea>\n <div *ngIf=\"textArea.errors?.['required'] && (textArea.dirty || textArea.touched)\" class=\"error-message\">\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\n </div>\n </div>\n }\n</ng-container>\n","import { Component } from '@angular/core';\nimport { SHARED } from '../../constant/SHARED';\n\n@Component({\n selector: 'queue-search-customer',\n standalone: false,\n templateUrl: './queue-search-customer.component.html',\n styleUrl: './queue-search-customer.component.scss',\n})\nexport class QueueSearchCustomerComponent {\n\n constructor() {}\n\n queues: any[] = [\n { name: SHARED.ALL, code: SHARED.QUEUE1 },\n { name: SHARED.UK, code: SHARED.QUEUE2 },\n { name: SHARED.INTERNATIONAL, code: SHARED.QUEUE3 }\n ];\n queueData :any[]=[]\n selectedQueue: any;\n\n onSearch() {\n console.log(SHARED.SELECTED_QUEUE, this.selectedQueue);\n }\n}\n","<div class=\"flex mt-5 xl:mt-0 xl:justify-content-between xl:align-items-center vh-100\">\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\">\n <div class=\"p-inputgroup border-round-left bg-white\">\n <span class=\"p-inputgroup-addon bg-white\">\n <i class=\"pi pi-search\"></i>\n </span>\n <input type=\"text\" class=\"border-none h-44 border-noround-right bg-white\" pInputText placeholder=\"Search with Applicaiton no., Name or Address\" />\n </div>\n </div>\n <div class=\"p-field m-0 p-0 py-2 border-round-right border-noround-left\">\n <p-dropdown \n [styleClass]=\"'bg-white font-bold'\"\n [options]=\"queues\" \n [(ngModel)]=\"selectedQueue\" \n placeholder=\"All queue\"\n optionLabel=\"name\"\n class=\"left-arrow-dropdown\"\n ></p-dropdown>\n </div>\n <div class=\"p-field p-0 m-0 ml-3\">\n <button class=\"py-3 border-none\" pButton type=\"button\" label=\"Search\" (click)=\"onSearch()\"></button>\n </div>\n </div>\n ","export class ROUTES {\n static RECORD = 'record/';\n static QUEUE_FORM = \"/admin/queue/\";\n static DICTIONARY_CREATE_FORM = '/DataDictionaries';\n static DICTIONARY = '/DataDictionaries/';\n static APIMANAGEMENT = '/apiManagement/';\n static APICONFIG = 'apiConfig';\n static VALIDATEAPI = 'ApiConfigurations/validateApi';\n static APPLICATION = \"application/\";\n static APIPROPERTIES = \"ApiConfigurations/get-parent\";\n static APPLICATION_WIDGET_CACHE = \"Widgets/evaluateFromCache\";\n static APPLICATION_WIDGET = \"Widgets/evaluate\";\n static DOCUMENTALERT = \"alerts/documentId\";\n static VALIDATE_ACTIONS = 'ActionConfigurations/validateApi';\n static EVALUATE_BY_WIDGETNAME = \"Widgets/evaluateByWidgetName\";\n static GET_ALL_UNDERWRITER_TEAMLEAD = \"ApplicationAssignments/getAllUnderwriterTeamlead/\";\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RippleModule } from 'primeng/ripple';\nimport { ButtonModule } from 'primeng/button';\nimport { Router, RouterModule } from '@angular/router';\nimport { ROUTES } from '../../constant/ROUTES';\nimport { SHARED } from '../../constant/SHARED';\nimport { BadgeModule } from 'primeng/badge';\n\n@Component({\n selector: 'block-list',\n standalone: true,\n imports: [CommonModule, RippleModule, ButtonModule, RouterModule, BadgeModule],\n templateUrl: './block-list.component.html',\n styleUrls: ['./block-list.component.scss'], // Fixed the typo: styleUrl -> styleUrls\n})\nexport class BlockListComponent {\n // @Input() list!: any;\n @Input() queueData!: any[];\n @Input() showQueueDataForm : boolean = true\n @Output() queueDataById: EventEmitter<any> =\n new EventEmitter<any>();\n\n selectedQueueId: any;\n constructor(public router : Router){}\n\n ngOnChanges(){\n this.queueData = this.queueData.map((queue) => {\n if (queue.name === SHARED.UK) {\n return { ...queue, itemCount: 5 };\n } else if (queue.name === SHARED.INTERNATIONAL) {\n return { ...queue, itemCount: 2 }; \n }\n return queue;\n });\n this.queueDataById.emit(this.queueData[0]?._id)\n this.selectedQueueId=this.queueData[0]?._id;\n // this.handleQueueClick(this.list[0]._id, this.showQueueDataForm);\n }\n\n\n\n insertQueue(){\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO])\n }\n\n\n handleQueueClick(queueId:any, showQueueDataForm:any){\n this.selectedQueueId=queueId;\n if(showQueueDataForm){\n this.router.navigateByUrl(ROUTES.QUEUE_FORM+queueId);\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\n }else{\n this.queueDataById.emit(queueId)\n }\n }\n}\n","<div class=\"card p-4 pr-3 mb-0\">\n <!-- <div class=\"px-4 w-full flex\">\n <button pButton pRipple label=\"Add New Queue\" routerLinkActive=\"router-link-active\" icon=\"pi pi-plus font-semibold\" class=\"py-3 justify-content-center font-semibold w-full border-round\" (click)=\"insertQueue()\"></button>\n </div> -->\n <div class=\"queues overflow-y-scroll scrollable\">\n\n @for(queue of queueData; let i = $index; track queue){\n <div class=\"flex flex-column gap-5 overflow-y-auto scrollable kanban-list\" [ngClass]=\"i !== 0 ? 'mt-2 pt-1' : ''\" #listEl style=\"min-height:2rem\" (click)=\"handleQueueClick(queue._id, false)\" >\n <div class=\"flex flex-column py-4 px-3 cursor-pointer queue-list-wrapper\" [ngClass]=\"{'active-queue-wrapper': queue._id === this.selectedQueueId}\">\n <div class=\"flex text-center justify-content-between flex align-items-center\">\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\n <span class=\"text-color queue-name font-semibold\"\n [ngClass]=\"{'active-title-wrapper': queue._id === this.selectedQueueId}\"\n >{{queue.name}}</span>\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" />\n </div>\n </div>\n </div>\n }\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\n <div class=\"flex text-center justify-content-between flex align-items-center\">\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\n <span class=\"text-color queue-name font-semibold\"\n >Total Loss</span>\n <p-badge [value]=\"11\" severity=\"primary\" />\n </div>\n </div>\n </div>\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\n <div class=\"flex text-center justify-content-between flex align-items-center\">\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\n <span class=\"text-color queue-name font-semibold\"\n >Repair</span>\n <p-badge [value]=\"7\" severity=\"primary\" />\n </div>\n </div>\n </div>\n </div>\n</div> ","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SHARED } from '../constant/SHARED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionService {\n\n constructor(public router : Router) {\n\n }\n\n getUserRole() {\n const role = sessionStorage.getItem('role');\n return role;\n }\n\n setUserSession(data: any): void {\n sessionStorage.setItem(SHARED.SESSIONKEY, JSON.stringify(data));\n }\n\n getUserPermissions(){\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\n const permissionData = sessionData ? JSON.parse(sessionData).permissions : null;\n return permissionData\n }\n \n\n getUserSession(): any {\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\n return sessionData ? JSON.parse(sessionData) : null;\n }\n\n getAllUserRole() {\n const userSession = this.getUserSession();\n return userSession?.roles;\n }\n\n getSessionID(){\n return 1;\n }\n\n clearSession(): void {\n sessionStorage.clear();\n localStorage.clear();\n }\n}\n","import { Directive, Input, ElementRef, Renderer2, SimpleChanges, OnChanges } from '@angular/core';\nimport { SessionService } from '../services/session.service';\n\n@Directive({\n selector: '[permission]',\n standalone: false\n})\nexport class HasPermissionDirective implements OnChanges {\n @Input() permission?: string | string[];\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n public sessionService: SessionService\n ) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['permission']) {\n this.checkPermission();\n }\n }\n private checkPermission() {\n const userPermissionsObjects = this.sessionService.getUserPermissions();\n if (userPermissionsObjects) {\n const userPermissionNames = userPermissionsObjects.map((perm: any) => perm.name);\n const requiredPermissions = Array.isArray(this.permission)\n ? this.permission\n : [this.permission];\n const permission = requiredPermissions.some(permission =>\n userPermissionNames.includes(permission)\n );\n if (!permission) {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n } else {\n this.renderer.removeStyle(this.el.nativeElement, 'display');\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { ButtonModule } from 'primeng/button';\nimport { CardModule } from 'primeng/card';\nimport { SidebarModule } from 'primeng/sidebar';\nimport { SidebarComponent } from './components/sidebar/sidebar.component';\nimport { CheckBoxComponent } from './controls/check-box/check-box.component';\nimport { DragDropModule } from 'primeng/dragdrop';\nimport { FormContainerComponent } from './components/form-container/form-container.component';\nimport { BaseListComponent } from './_base/base-list/base-list.component';\nimport { DropdownComponent } from './controls/dropdown/dropdown.component'\nimport { BaseFormComponent } from './_base/base-form/base-form.component';\nimport { TextBoxComponent } from './controls/text-box/text-box.component';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { DividerModule } from 'primeng/divider';\nimport { DateComponent } from './controls/date/date.component';\nimport { DialogModule } from 'primeng/dialog';\nimport { TimelineModule } from 'primeng/timeline';\nimport { ListboxModule } from 'primeng/listbox';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { FileUploadComponent } from './controls/file-upload/file-upload.component';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { CapitalizeWordsPipe } from './pipe/capitalize-words.pipe';\nimport { TextAreaComponent } from './controls/text-area/text-area.component';\nimport { QueueSearchCustomerComponent } from './components/queue-search-customer/queue-search-customer.component';\nimport { BlockListComponent } from './components/list/block-list.component';\nimport { HasPermissionDirective } from './directives/permission.directive';\n\n@NgModule({\n \n declarations: [ SidebarComponent, QueueSearchCustomerComponent,HasPermissionDirective],\n imports: [\n CommonModule,\n FormsModule,\n InputTextModule,\n ButtonModule,\n DropdownModule,\n InputGroupModule,\n CardModule,\n SidebarModule,\n CheckBoxComponent,\n DragDropModule,\n FormContainerComponent,\n BaseListComponent,\n DropdownComponent,\n BaseListComponent,\n TextBoxComponent,\n InputTextareaModule,\n DividerModule,\n DateComponent,\n DialogModule,\n TimelineModule,\n ListboxModule,\n CheckboxModule,\n FileUploadComponent,\n FileUploadModule,\n CapitalizeWordsPipe,\n TextAreaComponent,\n BaseFormComponent,\n BlockListComponent\n ],\n exports: [ HasPermissionDirective,CapitalizeWordsPipe,TextBoxComponent,FormsModule,ListboxModule,DialogModule,CheckboxModule,DropdownComponent,FormContainerComponent, BaseListComponent, SidebarComponent, DividerModule, CardModule, QueueSearchCustomerComponent, BlockListComponent]\n})\nexport class SharedModule { }\n","export class HEADERS{\n static API_MANAGEMENT = \"Api Management\";\n static DICTIONARY_FORM = \"Dictionary Form\";\n}","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: 'username',\n standalone: true,\n imports: [CommonModule, InputTextModule,FormsModule],\n templateUrl: './username.component.html',\n styleUrls: ['./username.component.scss'],\n})\nexport class UsernameComponent extends BaseControlComponent {\n\n \n}\n","<ng-container>\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"username-control\">\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-envelope\"></i>\n <input pInputText type=\"text\"\n autocomplete=\"off\"\n [placeholder]=\"attributeModel.placeholder ?? ''\" \n [ngModel]=\"record[attributeModel.name]\"\n [required]=\"attributeModel.isRequired ?? false\" \n [disabled]=\"attributeModel.readonly ?? false\"\n #usernameField=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, usernameField.valid)\" \n />\n </span>\n </div>\n </ng-container>","import { Component , OnInit} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\nimport { FormsModule } from '@angular/forms';\nimport { BaseStore } from '../../state/base.store';\nimport { BaseQuery } from '../../state/base.query';\n\n@Component({\n selector: 'password',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './password.component.html',\n styleUrl: './password.component.scss',\n})\nexport class PasswordComponent extends BaseControlComponent {\n invalidPasswordErrorMsg: string | undefined\n \n constructor(baseStore: BaseStore<any>, baseQuery: BaseQuery<any>){\n super(baseStore, baseQuery)\n }\n\n ngOninit():void{\n this.invalidPasswordErrorMsg = \"Invalid Password\";\n }\n\n}\n","<ng-container>\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\n <label>{{ attributeModel.displayText }}</label>\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\n </div>\n <div class=\"password-control\">\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-key\"></i>\n <input type=\"password\" autocomplete=\"off\" pInputText [placeholder]=\"attributeModel.placeholder ?? ''\"\n [ngModel]=\"record[attributeModel.name]\" [required]=\"attributeModel.isRequired ?? false\" #passwordField=\"ngModel\"\n (ngModelChange)=\"handleModelChange($event, passwordField.valid)\" [ngClass]=\"{\n 'ng-dirty ng-invalid': !passwordField.valid && error == attributeModel.name\n }\" class=\"block p-inputtext\" />\n\n </span>\n </div>\n @if (!passwordField.valid && passwordField.dirty) {\n <div>\n <small id=\"password-help\" class=\"p-error\">{{\n invalidPasswordErrorMsg\n }}</small>\n </div>\n }\n\n</ng-container>","export class CSS {\n static DIALOGUE_BREAKPOINTS = {\n '960px': '75vw',\n '640px': '90vw'\n }\n static DIALOGUE_OVERFLOW = { overflow: 'auto' }\n static DIALOGUE_WIDTH = '100vw'\n static DIALOGUE_HIGHT = '100vh'\n}","import { SelectItem } from \"primeng/api\";\n\nexport class AttributeModel {\n displayText ?: string;\n readonly ?: boolean;\n name ?: any;\n isRequired?: boolean;\n placeholder?: string;\n maxLength?: number;\n infoText?: string;\n buttonLabel?: string;\n isDisabled?: boolean;\n customButtonWidth?: string;\n isPrimary?: number;\n title?: string;\n customColumnWidth?: string;\n customHeight?: string;\n icon?: string;\n iconPosition?: 'left' | 'right';\n customPadding?: string;\n dataSource?: string;\n listValueProperty?: string;\n listLabelProperty?: string;\n options?: SelectItem[];\n childListName?: any;\n childListKey?:any;\n inputId?:string;\n allowFraction?:string = 'Y'\n numberMode?:string;\n currency?:string;\n locale ?: 'en-GB';\n tooltip?:string;\n toolTipPosition?:string\n hourFormat?:string\n yearRange?:string\n showCalenderIcon ?: boolean\n additionalFilterList?:string\n additionalFilterKey?:string\n lookupName?:any\n textColorOnReadonly ?: any\n hideLabelOnForm?:boolean = false;\n disable ?: boolean = false;\n filter ?: boolean = false\n}","export class BaseModel{\n _id ?: any\n [key: string]: any;\n}","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { SessionService } from '../session.service';\nimport { map, Observable, of, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n constructor(public _sessionService : SessionService,private _router: Router) {}\n\n canActivate(\n next: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> {\n return of(this._sessionService.getSessionID()).pipe(\n tap((sessionID) => {\n if (!sessionID) {\n this._router.navigateByUrl(\"auth/login\" + \"?returnUrl=\" + state.url);\n }\n }),\n map((sessionID) => !!sessionID)\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseService } from '../../state/base.service';\nimport { BaseModel } from '../../models/base.model';\n\n@Component({\n selector: 'lib-base-container',\n templateUrl: './base-container.component.html',\n styleUrl: './base-container.component.scss',\n})\nexport class BaseContainerComponent<T extends BaseModel>{\n constructor(protected service : BaseService<T>){\n\n }\n init(){\n this.service.initList()\n }\n\n}\n","<p>base-container works!</p>\n","export class LOOKUPS{\n static DOCUMENTTYPE = 'DocumentType'\n}","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Table, TableModule } from 'primeng/table';\nimport { TablePrimaryModel, tableSortOrderModel } from '../models/table-primary.model';\nimport { ButtonModule } from 'primeng/button';\nimport { ToggleButtonModule } from 'primeng/togglebutton';\nimport { FormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { Router } from '@angular/router';\nimport { SHARED, statusList } from '../../constant/SHARED';\nimport { BaseService } from '../../state/base.service';\nimport { TableBuilder } from '../../services/table.builder';\nimport { MetaDataModel } from '../../models/meta-data.model';\nimport { ERROR } from '../../constant/ERROR';\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\nimport { BaseQuery } from '../../state/base.query';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { HasPermissionDirective } from '../../directives/permission.directive';\nimport { SharedModule } from '../../shared.module';\n@Component({\n selector: 'lib-table-primary',\n standalone: true,\n imports: [CommonModule, SharedModule,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, RadioButtonModule, PaginatorModule, DropdownModule ],\n templateUrl: './table-primary.component.html',\n styleUrl: './table-primary.component.scss',\n})\nexport class TablePrimaryComponent implements OnInit, OnDestroy {\n @Input() table!: TablePrimaryModel;\n @Input() metaData!: MetaDataModel;\n @Input() title!: string;\n \n @Input() showStatus = true;\n @Input() showActions = true;\n @Input() showSearchBar = true;\n @Input() showNewRecordButton = true;\n @Input() showRefreshButton = true;\n @Input() pathName!: string;\n @ViewChild(SHARED.DT2) dt2: Table | undefined;\n @ViewChild(SHARED.PAGINATOR) paginator!: Paginator;\n globalFilter: string = SHARED.EMPTY;\n page!: number;\n limit!: number;\n recordNumber!: number;\n columnName!: string;\n sortOrders: tableSortOrderModel = {};\n currentSortOrder!: string;\n isDataActive: any;\n statusList: any = statusList;\n isActive!: boolean | string;\n private searchSubject$ = new Subject<string>();\n private destroy$ = new Subject<void>();\n private templateDestroy$ = new Subject<void>();\n\n constructor(private _router: Router, private service: BaseService<any>, protected builder: TableBuilder, private baseQuery: BaseQuery<any>) {}\n\n ngOnInit(): void {\n this.isDataActive = this.statusList[0];\n if (this.table.headers.length === 0) {\n console.error('Table headers are missing.');\n }\n\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\n\n this.baseQuery.getSelectedTemplate()\n .pipe(takeUntil(this.templateDestroy$))\n .subscribe((type: string) => {\n this.fetchTableData(type)\n })\n\n this.searchSubject$.pipe(\n debounceTime(500), \n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(value => {\n this.globalFilter = value;\n this.fetchData(value);\n });\n }\n\n handleRadioChange(newValue: string) {\n if (newValue === SHARED.ALL) {\n this.isActive = SHARED.EMPTY;\n } else if (newValue === SHARED.ACTIVE) {\n this.isActive = true;\n } else if (newValue === SHARED.IN_ACTIVE) {\n this.isActive = false;\n }\n this.fetchTableData(); \n }\n\n onSearchChange(value: string) {\n this.searchSubject$.next(value);\n }\n \n fetchData(value: string) {\n if(value === null) return;\n this.page = 1;\n if (this.paginator) {\n this.paginator.first = 0;\n this.paginator.changePage(0);\n }\n return this.fetchTableData();\n }\n\n onStatusChange(event:any){\n let status = event.value.name;\n if (status === SHARED.ALL) {\n this.isActive = SHARED.EMPTY;\n } else if (status === SHARED.ACTIVE) {\n this.isActive = true;\n } else if (status === SHARED.IN_ACTIVE) {\n this.isActive = false;\n }\n this.fetchTableData(); \n }\n\n private fetchTableData(type?: string) {\n this.service.getPaginatedList(this.globalFilter, this.page, this.limit, this.columnName, this.currentSortOrder, type, this.isActive, this.pathName).subscribe({\n next: (res: any) => {\n this.table.records = res.data;\n this.metaData = res.metadata;\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\n },\n error: (err) => {\n console.error(ERROR.ERROR_FETCHING_DATA, err);\n }\n });\n }\n\n clearSearch(table: any) {\n this.globalFilter = SHARED.EMPTY;\n table.clear(); \n }\n\n refreshTable() {\n }\n\n handleCreate() {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\n }\n\n handleEditClick(id: number) {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\n }\n\n handleSortColumn(columnName: string) {\n this.columnName = columnName; \n this.sortOrders[columnName] = this.sortOrders[columnName] === SHARED.ASC ? SHARED.DESC : SHARED.ASC;\n this.currentSortOrder = this.sortOrders[columnName];\n this.fetchTableData();\n }\n\n editRow(rowData: any) {\n console.log('Edit Row:', rowData);\n }\n\n deleteRow(rowData: any) {\n console.log('Delete Row:', rowData);\n }\n\n viewRow(rowData: any) {\n console.log('Delete Row:', rowData);\n }\n\n decodeHtml(html: string): string {\n try {\n return JSON.parse(html);\n } catch (e) {\n return html;\n }\n }\n\n handleLoadRecords(event: any) {\n this.page = (event.first / event.rows) + 1;\n this.limit = event.rows; \n this.fetchTableData();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.templateDestroy$.next();\n this.templateDestroy$.complete();\n }\n}\n","<p-table #dt2 [lazy]=\"true\" \n [paginator]=\"false\"\n [rows]=\"metaData.itemsPerPage\"\n [totalRecords]=\"metaData.totalItems\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n (onPage)=\"handleLoadRecords($event)\"\n [ngClass]=\"{'no-pagination': metaData.totalItems <= 10}\"\n [columns]=\"table.headers\" class=\"table-primary-container\" [value]=\"table.records\">\n <ng-template pTemplate=\"caption\">\n <div class=\"table-header-wrapper flex align-items-center justify-content-between\">\n <h3 class=\"text-color table-title-wrapper text-color m-0\">{{title}}</h3>\n <div class=\"flex align-items-center w-full\" *ngIf=\"showSearchBar\">\n <div class=\"grid m-0 flex align-items-center w-full\">\n <div class=\"col-8 pl-0\">\n <input pInputText type=\"text\" [(ngModel)]=\"globalFilter\" (ngModelChange)=\"onSearchChange($event)\"\n [placeholder]=\"'Search ...'\" class=\"search-input-wrapper w-full\" />\n </div>\n <div class=\"col-4 pr-0 flex align-items-center justify-content-end gap-2 filter-dropdown-wrapper\">\n <p-dropdown \n [options]=\"statusList\" \n [(ngModel)]=\"isDataActive\" \n optionLabel=\"name\" \n placeholder=\"Status\"\n (onChange)=\"onStatusChange($event)\"\n />\n <p-button icon=\"pi pi-cog\" class=\"setting-icon-wrapper ml-3\"></p-button>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n\n <!-- Header Template -->\n <ng-template pTemplate=\"header\" let-columns>\n <tr *ngIf=\"table.headers.length > 0\">\n <th *ngFor=\"let col of table.headers\" class=\"p-4\" [ngClass]=\"col.width ? col.width : 'w-full'\">\n <h4 class=\"flex align-items-center table-header-title capitalize text-color font-semibold m-0\" [pSortableColumn]=\"col.name\" (click)=\"handleSortColumn(col.name)\">\n <span class=\"table-title-wrapper text-overflow-wrapper p-0 mt-1\">{{ col.name }}</span>\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\n </h4>\n </th>\n <th *ngIf=\"showActions\" [permission]=\"this.table.editPermission ?? this.table.deletePermission\" class=\"table-action-title p-4\" [ngClass]=\"table.headers[0]?.width ? 'w-2' : 'w-full'\">\n <h4 class=\"text-color font-semibold table-title-wrapper text-overflow-wrapper capitalize m-0\">Actions</h4></th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template pTemplate=\"body\" let-rowData>\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\n <td class=\"text-left p-4\" *ngFor=\"let col of table.headers\">\n <div class=\"table-text-wrapper text-overflow-wrapper p-0\" \n [ngClass]=\"{\n 'enable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Enable',\n 'disable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Disable',\n 'w-8': col.name.toLowerCase() === 'status',\n 'text-primary font-semibold': col.name.toLowerCase() === 'action' || col.name.toLowerCase() === 'name'\n }\"\n >\n <span *ngIf=\"col.name.toLowerCase() === 'body'; else normalText\" [innerHTML]=\"decodeHtml(rowData[col.name])\"></span>\n <ng-template #normalText>\n {{ rowData[col.name] }}\n </ng-template>\n <p *ngIf=\"col.name.toLowerCase() === 'action'\" class=\"text-color font-normal\">{{rowData['apiEndPoint']}}</p>\n </div>\n </td>\n\n <!-- Actions -->\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left p-4\">\n <div class=\"flex align-items-center\">\n <p-button icon=\"pi pi-pencil\" [permission]=\"this.table.editPermission\" (click)=\"handleEditClick(rowData._id)\" class=\"edit-icon-wrapper mr-3\"></p-button>\n <p-button icon=\"pi pi-trash\" [permission]=\"this.table.deletePermission\" (click)=\"deleteRow(rowData)\" class=\"delete-icon-wrapper mr-3\"></p-button>\n </div>\n </td>\n <!-- <p-button icon=\"pi pi-eye\" (click)=\"viewRow(rowData)\" class=\"view-icon-wrapper icon-position-wrapper table-group-wrapper-hover:visible\"></p-button> -->\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0)\" class=\"text-center text-color font-semibold p-4\">\n No records found\n </td>\n </tr>\n </ng-template>\n</p-table>\n\n<div *ngIf=\"metaData.totalItems > 10\" class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper bg-white\">\n <div class=\"pagination-text text-color\">\n Showing {{ (metaData.currentPage - 1) * metaData.itemsPerPage + 1 }} to {{ recordNumber }} of {{ metaData?.totalItems || 0 }} entries\n </div>\n \n <p-paginator\n #paginator\n [rows]=\"metaData.itemsPerPage\"\n [totalRecords]=\"metaData.totalItems\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n (onPageChange)=\"handleLoadRecords($event)\"\n ></p-paginator>\n </div>","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { TableModule } from 'primeng/table';\n\n@Component({\n selector: 'lib-skeleton',\n standalone: true,\n imports: [CommonModule, SkeletonModule, TableModule],\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.scss'\n})\nexport class SkeletonComponent implements OnInit {\n products: any[] = [];\n @Input() count: number = 1;\n @Input() columns: any;\n @Input() width: string = '100%';\n @Input() height: string = '2rem';\n @Input() isAllowCard: boolean = false;\n\n ngOnInit() {\n this.products = Array.from({ length: this.count }).map((_, i) => `Item #${i}`);\n }\n}\n","<div [ngClass]=\"{'card': isAllowCard}\">\n <div *ngFor=\"let col of products\" class=\"mb-5\">\n <p-skeleton [width]=\"width\" [height]=\"height\" />\n </div>\n</div>","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, Subject } from 'rxjs';\nimport { catchError, map, debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport { BaseService, AppConfigService, ROUTES, SHARED, BaseStore } from '../../shared';\nimport { ListService } from '../../shared/services/list.service';\n\nexport type RiskRating = 'Low' | 'Medium' | 'High';\nexport type ApplicationType = 'BTL' | 'HPP';\nexport type PurchaseType = 'Purchase' | 'Refinance';\nexport type TaskStatus = 'Not Started' | 'In-progress' | 'Completed';\nexport type Category = 'UK' | 'Ex-Pat' | 'Intl';\nexport type EPC = 'A or B (Green)';\n\nexport interface QueueFilter {\n riskRating: RiskRating[];\n applicationType: ApplicationType[];\n purchaseType: PurchaseType[];\n taskStatus: TaskStatus[];\n category: Category[];\n epc: EPC[];\n vulnerableCustomer: boolean | null;\n financeMin: number | null;\n financeMax: number | null;\n pendingDays: number | null;\n assignedUnderwriter: string[];\n}\nexport interface UnderwriterOption {\n id: string;\n name: string;\n}\n\n/**\n *\n */\n@Injectable({ providedIn: 'root' })\nexport class QueueFilterDropdownService extends BaseService<any> {\n private searchSubject = new Subject<string>();\n\n constructor(\n http: HttpClient,\n private configService: AppConfigService,\n store: BaseStore<any>,\n listService: ListService\n ) {\n super(http, store, configService, listService);\n }\n\n /**\n * Override apiUrl to use the main API URL instead of catQwUrl\n */\n override get apiUrl(): string {\n return this.configService.apiUrl || SHARED.EMPTY;\n }\n\n private filter: QueueFilter = {\n riskRating: [],\n applicationType: [],\n purchaseType: [],\n taskStatus: [],\n category: [],\n epc: [],\n vulnerableCustomer: null,\n financeMin: null,\n financeMax: null,\n pendingDays: null,\n assignedUnderwriter: []\n };\n\n setRiskRating(rating: RiskRating) {\n const arr = this.filter.riskRating;\n const idx = arr.indexOf(rating);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(rating);\n }\n setApplicationType(type: ApplicationType) {\n const arr = this.filter.applicationType;\n const idx = arr.indexOf(type);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(type);\n }\n setPurchaseType(type: PurchaseType) {\n const arr = this.filter.purchaseType;\n const idx = arr.indexOf(type);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(type);\n }\n setTaskStatus(status: TaskStatus) {\n const arr = this.filter.taskStatus;\n const idx = arr.indexOf(status);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(status);\n }\n setCategory(category: Category) {\n const arr = this.filter.category;\n const idx = arr.indexOf(category);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(category);\n }\n setEpc(epc: EPC) {\n const arr = this.filter.epc;\n const idx = arr.indexOf(epc);\n if (idx > -1) arr.splice(idx, 1);\n else arr.push(epc);\n }\n setVulnerableCustomer(value: boolean | null) {\n this.filter.vulnerableCustomer = value;\n }\n setFinanceMin(min: number | null) {\n this.filter.financeMin = min;\n }\n setFinanceMax(max: number | null) {\n this.filter.financeMax = max;\n }\n setPendingDays(days: number | null) {\n this.filter.pendingDays = days;\n }\n\n setAssignedUnderwriter(ids: string[]) {\n this.filter.assignedUnderwriter = Array.isArray(ids) ? ids : [];\n }\n\n setAllFilters(filters: QueueFilter) {\n this.filter = {\n riskRating: [...(filters.riskRating || [])],\n applicationType: [...(filters.applicationType || [])],\n purchaseType: [...(filters.purchaseType || [])],\n taskStatus: [...(filters.taskStatus || [])],\n category: [...(filters.category || [])],\n epc: [...(filters.epc || [])],\n vulnerableCustomer: filters.vulnerableCustomer,\n financeMin: filters.financeMin,\n financeMax: filters.financeMax,\n pendingDays: filters.pendingDays,\n assignedUnderwriter: [...(filters.assignedUnderwriter || [])]\n };\n }\n\n getFilters(): QueueFilter {\n return {\n riskRating: [...this.filter.riskRating],\n applicationType: [...this.filter.applicationType],\n purchaseType: [...this.filter.purchaseType],\n taskStatus: [...this.filter.taskStatus],\n category: [...this.filter.category],\n epc: [...this.filter.epc],\n vulnerableCustomer: this.filter.vulnerableCustomer,\n financeMin: this.filter.financeMin,\n financeMax: this.filter.financeMax,\n pendingDays: this.filter.pendingDays,\n assignedUnderwriter: [...this.filter.assignedUnderwriter]\n };\n }\n\n hasFilters(): boolean {\n return (\n this.filter.riskRating.length > 0 ||\n this.filter.applicationType.length > 0 ||\n this.filter.purchaseType.length > 0 ||\n this.filter.taskStatus.length > 0 ||\n this.filter.category.length > 0 ||\n this.filter.epc.length > 0 ||\n this.filter.vulnerableCustomer !== null ||\n this.filter.financeMin !== null ||\n this.filter.financeMax !== null ||\n this.filter.pendingDays !== null ||\n this.filter.assignedUnderwriter.length > 0\n );\n }\n\n getFilterCount(): number {\n let count = 0;\n count += this.filter.riskRating.length;\n count += this.filter.applicationType.length;\n count += this.filter.purchaseType.length;\n count += this.filter.taskStatus.length;\n count += this.filter.category.length;\n count += this.filter.epc.length;\n if (this.filter.vulnerableCustomer !== null) count++;\n if (this.filter.financeMin !== null) count++;\n if (this.filter.financeMax !== null) count++;\n if (this.filter.pendingDays !== null) count++;\n count += this.filter.assignedUnderwriter.length;\n return count;\n }\n\n clearAll() {\n this.filter = {\n riskRating: [],\n applicationType: [],\n purchaseType: [],\n taskStatus: [],\n category: [],\n epc: [],\n vulnerableCustomer: null,\n financeMin: null,\n financeMax: null,\n pendingDays: null,\n assignedUnderwriter: []\n };\n }\n\n /**\n * Builds a query string for API calls based on the current filter values.\n * Maps UI filter values to API parameters.\n */\n public buildFilterQueryString(filters: QueueFilter): string {\n if (!filters || Object.keys(filters).length === 0) {return '';}\n const filterParams: Record<string, string> = {};\n \n // Map filter properties to API parameters\n if (filters.riskRating && filters.riskRating.length > 0) {\n filterParams['risk'] = filters.riskRating.join(',');}\n if (filters.applicationType && filters.applicationType.length > 0) {\n filterParams['lendingType'] = filters.applicationType.join(',');}\n if (filters.purchaseType && filters.purchaseType.length > 0) {\n filterParams['purchaseType'] = filters.purchaseType.join(',');}\n if (filters.category && filters.category.length > 0) {\n // Map category UI values to API values\n const categoryMap: Record<string, string> = {\n 'UK': 'UK',\n 'Ex-Pat': 'Ex-pat',\n 'Intl': 'International'\n };\n filterParams['appCategory'] = filters.category.map(cat => categoryMap[cat] || cat).join(',');}\n if (filters.epc && filters.epc.length > 0) {\n filterParams['epc'] = filters.epc.join(',');}\n if (filters.vulnerableCustomer !== null && filters.vulnerableCustomer !== undefined) {\n filterParams['vulnerable'] = String(filters.vulnerableCustomer);\n }\n // Add mapping for taskStatus UI values to API values\n const taskStatusMap: Record<string, string> = {\n 'Not Started': 'notStarted','In-progress': 'inProgress','Completed': 'completed'};\n if (filters.taskStatus && filters.taskStatus.length > 0) {\n filterParams['taskStatus'] = filters.taskStatus.map(status => taskStatusMap[status] || status).join(',');}\n if (filters.financeMin !== null && filters.financeMin !== undefined) {\n filterParams['minFinanace'] = filters.financeMin.toString(); } \n if (filters.financeMax !== null && filters.financeMax !== undefined) {\n filterParams['maxFinanace'] = filters.financeMax.toString();}\n if (filters.pendingDays !== null && filters.pendingDays !== undefined) {\n filterParams['pendingDays'] = filters.pendingDays.toString(); }\n if (filters.assignedUnderwriter && filters.assignedUnderwriter.length > 0) {\n // Separate approach: Use unassigned boolean param and underwriterId for actual IDs\n const hasUnassigned = filters.assignedUnderwriter.includes(SHARED.UNASSIGNED_UNDERWRITER_ID);\n const realUnderwriterIds = filters.assignedUnderwriter.filter(id => id !== SHARED.UNASSIGNED_UNDERWRITER_ID);\n \n // Set unassigned parameter if \"unassigned\" is selected\n if (hasUnassigned) {\n filterParams['unassigned'] = 'true';\n } else {\n filterParams['unassigned'] = 'false';\n }\n \n // Set underwriterId parameter only if there are real IDs (excluding \"unassigned\")\n if (realUnderwriterIds.length > 0) {\n filterParams['underwriterId'] = realUnderwriterIds.join(',');\n }\n }\n\n return new URLSearchParams(filterParams).toString();}\n\n /**\n * Fetches underwriter options from the API based on search key\n * @param {string} searchKey - The search term to filter underwriters\n * @returns {Observable<UnderwriterOption[]>} Observable of underwriter options array\n */\n getUnderwritersList(searchKey: string = SHARED.EMPTY): Observable<UnderwriterOption[]> {\n const url = `${this.apiUrl}${ROUTES.GET_ALL_UNDERWRITER_TEAMLEAD}${SHARED.QUESTION_MARK}searchKey${SHARED.EQUALS}${encodeURIComponent(searchKey)}`;\n return this.http.get<Array<{ _id: string; fullName: string }>>(url).pipe(\n map((response: any) => {\n // Transform API response to match component's expected format\n const underwriters = Array.isArray(response) ? response : (response?.data || []);\n return underwriters.map((uw: any) => ({\n id: uw._id,\n name: uw.fullName || SHARED.EMPTY\n }));\n }),\n catchError(error => {\n console.error('Error fetching underwriters:', error);\n return of([]);\n })\n );\n }\n\n /**\n * Triggers a search for underwriters with debounce\n * @param {string} searchKey - The search term to filter underwriters\n */\n searchUnderwriters(searchKey: string = SHARED.EMPTY): void {\n this.searchSubject.next(searchKey);\n }\n\n /**\n * Returns an Observable that emits underwriter options with debounce and distinctUntilChanged\n * @returns {Observable<UnderwriterOption[]>} Observable of underwriter options array\n */\n getUnderwritersSearchObservable(): Observable<UnderwriterOption[]> {\n return this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap((searchKey: string) => {\n return this.getUnderwritersList(searchKey || SHARED.EMPTY);\n })\n );\n }\n} ","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\nimport { ROUTES } from '../../shared/constant/ROUTES';\nimport { queuePriorityOrder, SHARED } from '../../shared/constant/SHARED';\nimport { SessionService } from '../../shared/services/session.service';\nimport { QueueFilterDropdownService } from './queue-filter-dropdown.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class QueueBusinessService {\n private destroy$ = new Subject<void>();\n\n constructor(\n private router: Router,\n private sessionService: SessionService,\n private queueFilterDropdownService: QueueFilterDropdownService\n ) {}\n\n filterQueuesByStatus(queues: any[], status: string): any[] {\n if (!queues) return [];\n switch (status) {\n case 'inactive':\n return queues.filter(queue => !queue.isActive);\n case 'active':\n return queues.filter(queue => queue.isActive);\n default:\n return [...queues];\n }\n }\n\n /**\n * The rest follow in their original order.\n */\n orderQueuesByPriority(queues: any[]): any[] {\n const desiredOrder = queuePriorityOrder;\n const orderMap = new Map(desiredOrder.map((name, idx) => [name, idx]));\n return [...queues].sort((a, b) => {\n const aIdx = orderMap.has(a.name) ? orderMap.get(a.name)! : Number.POSITIVE_INFINITY;\n const bIdx = orderMap.has(b.name) ? orderMap.get(b.name)! : Number.POSITIVE_INFINITY;\n return aIdx - bIdx;\n });\n }\n\n getFirstQueueId(filteredQueues: any[]): string | null {\n return filteredQueues.length > 0 ? filteredQueues[0]._id : null;\n }\n\n navigateToQueue(queueId: string, showQueueDataForm: boolean): void {\n if (showQueueDataForm) {\n this.router.navigateByUrl(ROUTES.QUEUE_FORM + queueId);\n }\n }\n\n navigateToInsertQueue(): void {\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO]);\n }\n\n getUserRole(): boolean {\n const userSession = this.sessionService.getUserSession();\n return userSession?.roles?.includes('EnterpriseAdmins') || false;\n }\n\n storeSelectedQueue(queueId: string): void {\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\n }\n\n storeApplicationData(record: any): void {\n localStorage.setItem(SHARED.selectedApplicationType, record.applicationType);\n }\n\n createDebouncedSearch(delay: number = 500) {\n const searchSubject = new Subject<string>();\n return searchSubject.pipe(\n debounceTime(delay),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n );\n }\n\n buildQueryString(record: any): string {\n const queryParams: Record<string, string> = {\n type: record.type ?? SHARED.EMPTY,\n status: record.status ?? SHARED.EMPTY\n };\n const filteredQueryParams = Object.fromEntries(\n Object.entries(queryParams).filter(([_, value]) => value)\n );\n return new URLSearchParams(filteredQueryParams).toString();\n }\n\n calculatePagination(event: any): { page: number; limit: number } {\n return {\n page: (event.first / event.rows) + 1,\n limit: event.rows\n };\n }\n\n mapApiMetadata(res: any, targetPage: number, targetLimit: number): any {\n return {\n totalItems: res?.metadata?.total || res?.data?.length || 0,\n currentPage: res?.metadata?.page || targetPage,\n itemsPerPage: res?.metadata?.limit || targetLimit,\n totalPages: res?.metadata?.totalPages || \n Math.ceil((res?.metadata?.total || res?.data?.length || 0) / targetLimit)\n };\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n} ","import { Injectable } from \"@angular/core\";\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\nimport { createInitialState, QueueState } from \"./queue.state\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { BaseStore } from \"../../shared/state/base.store\";\n\n@Injectable({ providedIn: \"root\" })\n@StoreConfig({ name: \"queues\" })\nexport class QueueStore extends BaseStore<QueueModel> {\n constructor() {\n super();\n }\n\n setSelectedQueueId(data: any) {\n this.update({ selectedQueueId: data });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BaseQuery } from '../../shared';\nimport { Observable } from 'rxjs';\nimport { QueueModel } from '../models/queue.model';\nimport { QueueStore } from './queue.store';\n\n\n/**\n * Widget Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class QueueQuery extends BaseQuery<QueueModel> {\n\n constructor(protected override store: QueueStore) {\n super(store);\n }\n\n getSelectedQueueId() : Observable<any> {\n return this.select(state => state['selectedQueueId']);\n }\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableModule } from 'primeng/table';\nimport { ButtonModule } from 'primeng/button';\nimport { ToggleButtonModule } from 'primeng/togglebutton';\nimport { FormsModule } from '@angular/forms';\nimport { InputSwitchModule } from 'primeng/inputswitch';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BaseService } from '../../state/base.service';\nimport { BaseStore } from '../../state/base.store';\nimport { TableBuilder } from '../../services/table.builder';\nimport { MetaDataModel } from '../../models/meta-data.model';\nimport { BaseQuery } from '../../state/base.query';\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\nimport { SHARED } from '../../constant/SHARED';\nimport { ERROR } from '../../constant/ERROR';\nimport { TableSecondaryModel } from '../models/table-secondary.model';\nimport { Subject, takeUntil } from 'rxjs';\nimport * as columnStylesJson from '../../../queue/constants/column-styles.json';\nimport {RoundProgressModule} from 'angular-svg-round-progressbar';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SessionService } from '../../services/session.service';\nimport { QueueBusinessService } from '../../../queue/services/queue-business.service';\nimport { QueueQuery } from '../../../queue/state/queue.query';\nimport { SkeletonComponent } from '../../components/skeleton/skeleton.component';\n\n/**\n * A reusable table component that displays dynamic data using PrimeNG's Table.\n * Supports features like pagination, search, row actions, selection, and routing.\n */\n@Component({\n selector: 'lib-table-secondary',\n standalone: true,\n imports: [CommonModule, SkeletonComponent,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, PaginatorModule, RoundProgressModule, CheckboxModule],\n templateUrl: './table-secondary.component.html',\n styleUrl: './table-secondary.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableSecondaryComponent implements OnInit, OnChanges, OnDestroy {\n @Input() table!: TableSecondaryModel;\n @Input() metaData: MetaDataModel = {\n totalItems: 0,\n currentPage: 1,\n itemsPerPage: 10,\n totalPages: 0\n };\n @Input() title!: string;\n @Input() builder : any\n @Input() showStatus = true;\n @Input() showActions = true;\n @Input() showSearchBar = true;\n @Input() showNewRecordButton = true;\n @Input() showRefreshButton = true;\n @Input() isShowSkeleton: boolean = false; // Flag to control skeleton display\n isSelectAll: boolean = false;\n @Input() pathName!: string;\n @Input() selectionMode: 'single' | 'multiple' | undefined;\n @Input() selection: any;\n @Input() usePagination = true; // ✅ Pagination control\n @Input() scrollHeight!: string;\n @Output() selectionChange = new EventEmitter<any>();\n @Input() rowSelection: any;\n @Output() rowSelectionChange = new EventEmitter<any>();\n @Output() sortChanged = new EventEmitter<any>();\n @Input() enableSelection = true;\n @Input() noRecordsMessage: string = 'No records found';\n recordNumber!: number;\n page: number = 1;\n limit: number = 10;\n first : number = 0\n globalFilter: string = SHARED.EMPTY;\n @Input() sortField: string = '';\n @Input() sortOrder: number = 1;\n private destroy$ = new Subject<void>();\n @ViewChild('paginator') paginator!: Paginator;\n @Output() onDeleteRow = new EventEmitter<any>();\n @Input() searchTerm: string = SHARED.EMPTY;\n @Input() filterQuery: string = SHARED.EMPTY;\n @Output() onPage = new EventEmitter<any>();\n tableNgClassExpression: string = '';\n excludedApplicationIds: any[] = [];\n userRole: Array<string> | null = [];\n isUwLogin: boolean = false;\n allQueueList: any;\n selectedQueueName!: string;\n columnStyles: any = (columnStylesJson as any).columnStyles;\n \n // Memoization cache for compiled expression functions\n private expressionCache = new Map<string, Function>();\n\n constructor(private _router: Router, private service: BaseService<any>, private sessionService : SessionService, private baseQuery : BaseQuery<any>,private baseStore: BaseStore<any>, private queueBusinessService: QueueBusinessService, private queueQuery: QueueQuery) { }\n\n /**\n * Lifecycle hook that is called after data-bound properties are initialized.\n * Initializes the record count and validates table headers.\n */\n ngOnInit(): void {\n if (this.table && this.table.headers && this.table.headers.length === 0) {\n console.error('Table headers are missing.');}\n this.updateRecordNumber();\n this.baseQuery.selectPage().pipe(takeUntil(this.destroy$)).subscribe((res) => {\n if (this.paginator) {\n this.paginator.first = 0;}});\n\n const userRole = this.sessionService.getAllUserRole();\n const roles: string[] = Array.isArray(userRole) ? userRole : [];\n this.isUwLogin = roles.includes('Underwriter User') && !roles.includes('TeamLeader');\n // Load tableStyles ngClass expression from config\n const tableStyles = (columnStylesJson as any).tableStyles;\n if (tableStyles && tableStyles.ngClass) {\n this.tableNgClassExpression = tableStyles.ngClass;}\n\n this.baseStore.queueList$.pipe(takeUntil(this.destroy$)).subscribe((res) => {\n this.allQueueList = res;})\n\n this.queueQuery.getSelectedQueueId().pipe(takeUntil(this.destroy$)).subscribe((res) => {\n const selectedQueue = this.allQueueList.filter((val:any) => val._id === res);\n this.isSelectAll = false;\n this.excludedApplicationIds = [];\n if(selectedQueue && selectedQueue.length > 0) {\n this.selectedQueueName = selectedQueue[0].name;}})}\n\n /**\n * Lifecycle hook called when any data-bound property changes.\n * Resets pagination if page is changed.\n */\n ngOnChanges(): void {\n this.updateRecordNumber();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.expressionCache.clear();\n }\n\n private updateRecordNumber(): void {\n const currentPage = this.metaData?.currentPage ?? 1;\n const itemsPerPage = this.metaData?.itemsPerPage ?? 10;\n const totalItems = this.metaData?.totalItems ?? 0;\n this.recordNumber = Math.min(currentPage * itemsPerPage, totalItems);\n }\n\n /**\n * Returns the unique key used to identify each row in the table.\n * @returns {string} The data key used for identifying rows, or an empty string if not set.\n */\n get validDataKey(): string {\n return this.table?.dataKey ?? SHARED.EMPTY;\n }\n\n /**\n * Clears the global search filter and resets the table.\n * @param {any} table - The PrimeNG table instance.\n */\n clearSearch(table: any) {\n this.globalFilter = SHARED.EMPTY;\n table.clear();\n }\n\n /**\n * Navigates to the route for creating a new record.\n */\n handleCreate() {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\n }\n\n /**\n * Navigates to the edit page for the given record ID.\n * @param {number} id - The ID of the record to edit.\n */\n handleEditClick(id: number) {\n const currentRouteURL = this._router.url;\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\n }\n\n get isAllCurrentPageSelected(): boolean {\n if (!this.table?.records?.length || !this.selection?.length) return false;\n const dataKey = this.validDataKey || '_id';\n return this.table.records.every(\n row => this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\n );\n }\n\n handleSelectAllRowData(checked: boolean) {\n this.isSelectAll = checked;\n this.excludedApplicationIds = [];\n const dataKey = this.validDataKey || '_id';\n if (checked) {\n // Add all current page rows to selection, avoiding duplicates\n const newSelection = [\n ...this.selection,\n ...this.table.records.filter(\n row => !this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\n ),\n ];\n this.selection = newSelection;\n } else {\n // Remove current page rows from selection\n const currentPageIds = this.table.records.map(row => row[dataKey]);\n this.selection = this.selection.filter(\n (sel: any) => !currentPageIds.includes(sel[dataKey])\n );}\n this.baseStore.setIsAllRowSelected(this.isSelectAll);\n this.selectionChange.emit(this.selection);\n }\n \n /**\n * Handles the deletion of a row by emitting the row data and preventing event propagation.\n * @param {Event} event - The DOM event triggered by the delete action.\n * @param {any} rowData - The data object of the row to be deleted.\n */\n deleteRow(event: Event, rowData: any) {\n this.baseStore.setUpdatedData(true);\n event.stopPropagation();\n this.onDeleteRow.emit(rowData);\n }\n\n /**\n * Returns CSS class for a table cell based on its content.\n * @param {any} col - The column definition.\n * @param {any} rowData - The data for the row.\n * @returns {string} A space-separated list of CSS classes for the cell.\n */\n getRowClass(col: any, rowData: any): string {\n if (!col || !col.name) return '';\n let classes: string[] = [];\n if (rowData[col.name]?.class) {\n classes.push(rowData[col.name]?.class);\n }\n return classes.join(' '); // Return space-separated class names\n }\n\n \n /**\n * Handles pagination and data reload on paginator event.\n * @param {object} event - The PrimeNG paginator event.\n * @param {number} event.first - The index of the first record in the current page.\n * @param {number} event.rows - The number of records per page.\n */\n handleLoadRecords(event: any) {\n this.page = (event.first / event.rows) + 1;\n this.limit = event.rows;\n this.isShowSkeleton = true;\n \n // Emit the pagination event to parent components\n this.onPage.emit(event);\n \n // If pathName is provided, use the default service method\n if (this.pathName) {\n this.service.getPaginatedList(this.searchTerm, this.page, this.limit, SHARED.UPDATEDAT, SHARED.DESC, SHARED.EMPTY, SHARED.EMPTY, this.pathName).subscribe({\n /**\n * Handles the successful response from the paginated list API.\n * @param {any} res - The API response containing data and metadata.\n */\n next: (res: any) => {\n this.table = this.builder.buildTable(res.data);\n this.metaData = res.metadata;\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems);\n this.isShowSkeleton = false; // Hide skeleton when data is loaded\n },\n /**\n * Handles any error encountered while fetching the paginated list.\n * @param {any} err - The error object.\n */\n error: (err) => {\n console.error(ERROR.ERROR_FETCHING_DATA, err);\n this.isShowSkeleton = false; // Hide skeleton on error\n }\n });\n }\n }\n\n /**\n * Emits the updated selection when user changes selection in the table.\n * @param {any} event - The new selection data.\n */\n onSelectionChange(event: any) {\n this.selection = event;\n this.selectionChange.emit(this.selection);\n if(this.isSelectAll) {\n this.excludedApplicationIds.push(event[0]._id);}}\n\n getProgressColor(percent: number): string {\n if (percent === 100) {return '#22c55e';\n } else if (percent > 0 && percent < 100) {return '#f59e0b';\n } else {return 'black';}}\n\n // eslint-disable-next-line max-lines\n getProgressBackground(percent: number): string {\n if (percent === 100) {return '#C5F7D7';\n } else if (percent > 0 && percent < 100) {return '#ffeadc';\n } else {return '#F9FAFB';}}\n\n /**\n * Emits the selected row when a row is clicked.\n * @param {any} rowData - The data of the clicked row.\n */\n onRowClick(rowData: any) {\n this.baseStore.setUpdatedData(true);\n this.rowSelection = rowData;\n this.rowSelectionChange.emit(this.rowSelection);}\n\n /**\n * Handles the click event on a table row.\n * If row selection is enabled (`enableSelection` is true), \n * it delegates the event to the `onRowClick` method with the provided row data.\n * @param {any} rowData - The data object for the clicked table row.\n */\n handleRowClick(rowData: any): void {\n if (this.enableSelection) {\n this.onRowClick(rowData);}}\n\n /**\n * Checks if a given row is currently selected.\n * @param {any} rowData - The row data to check.\n * @returns {boolean} `true` if the row is selected, else `false`.\n */\n isRowSelected(rowData: any): boolean {\n return this.rowSelection?.[this.validDataKey] === rowData[this.validDataKey];}\n\n onSort(event: any) {\n this.sortField = event.field;\n this.sortOrder = event.order;\n this.sortChanged.emit(event);}\n\n /**\n * Utility: Check if value is array (for template use)\n * @param {any} val - The value to check if it is an array.\n * @returns {boolean} True if the value is an array, otherwise false.\n */\n isArray(val: any): boolean {\n return Array.isArray(val);\n }\n\n /**\n * Utility: Check if value is task items array (for template use)\n * @param {any} val - The value to check if it is a task items array.\n * @returns {boolean} True if the value is a task items array, otherwise false.\n */\n isTaskItemsArray(val: any): boolean {\n return Array.isArray(val) && val.length > 0 && val[0]?.type && val[0]?.count !== undefined;\n }\n\n shouldShowValue(col: any, rowData: any): boolean {\n const value = rowData[col.name];\n if (Array.isArray(value) && value.length && value[0]?.initials) {\n return false;\n }\n if (this.isTaskItemsArray(value)) {\n return false;\n }\n // Handle enriched status objects (e.g., valuationStatus with icon/text)\n if (value && typeof value === 'object' && value.text) {\n return true;\n }\n return typeof value === 'string' || typeof value === 'number';\n }\n\n /**\n * Memoized expression evaluator - compiles and caches Function objects\n * @param {string} expression - The expression to evaluate\n * @param {any} rowData - The row data to use in evaluation\n * @returns {any} The evaluated result\n */\n private evaluateExpression(expression: string, rowData: any): any {\n if (!expression) return null;\n \n // Fast path: Simple expressions (no conditionals) - return as-is\n if (!expression.includes('?') && !expression.includes(':')) {\n return expression;\n }\n \n // Memoized path: Cache compiled Function objects\n let compiledFn = this.expressionCache.get(expression);\n if (!compiledFn) {\n compiledFn = new Function('rowData', `return ${expression};`);\n this.expressionCache.set(expression, compiledFn);\n }\n \n return compiledFn(rowData);\n }\n\n /**\n * Evaluates ngClass expression for dynamic styling with memoization\n * @param {string} expression - The ngClass expression to evaluate\n * @param {any} rowData - The row data to use in evaluation\n * @returns {string} The evaluated CSS classes\n */\n evaluateNgClass(expression: string, rowData: any): string {\n try {\n const result = this.evaluateExpression(expression, rowData);\n return result || '';\n } catch (error) {\n console.error('Error evaluating ngClass expression:', error);\n return '';\n }\n }\n\n /**\n * Evaluates ngStyle expression for dynamic inline styles with memoization\n * @param {string} expression - The ngStyle expression to evaluate\n * @param {any} rowData - The row data to use in evaluation\n * @returns {any} The evaluated style object\n */\n evaluateNgStyle(expression: string, rowData: any): any {\n try {\n return this.evaluateExpression(expression, rowData);\n } catch (error) {\n console.error('Error evaluating ngStyle expression:', error);\n return null;\n }\n }\n\n getLine1DisplayClasses(col: any, rowData: any): string {\n const classes: string[] = [];\n const customClasses = col?.line1NgClassExpression ? this.evaluateNgClass(col.line1NgClassExpression, rowData) : '';\n if (customClasses) {\n classes.push(customClasses);\n }\n if (this.shouldRenderChip(col, rowData)) {\n classes.push('queue-chip');\n const variantClass = this.getChipVariantClass(col, rowData);\n if (variantClass) {\n classes.push(variantClass);\n }\n }\n return classes.join(' ').trim();\n }\n\n private shouldRenderChip(col: any, rowData: any): boolean {\n if (!col || !rowData) {\n return false;\n }\n if (rowData[col.name]?.chipVariant) {\n return true;\n }\n if (col.line1IsChip) {\n return true;\n }\n if (col.line1ChipVariantExpression) {\n const evaluated = this.evaluateGenericExpression(col.line1ChipVariantExpression, rowData);\n return Boolean(evaluated);\n }\n return false;\n }\n\n private getChipVariantClass(col: any, rowData: any): string {\n const variant = this.resolveChipVariant(col, rowData);\n return variant ? `queue-chip--${variant}` : '';\n }\n\n private resolveChipVariant(col: any, rowData: any): string {\n if (rowData[col.name]?.chipVariant) {\n return rowData[col.name].chipVariant;\n }\n if (col.line1ChipVariantExpression) {\n const evaluated = this.evaluateGenericExpression(col.line1ChipVariantExpression, rowData);\n return typeof evaluated === 'string' ? evaluated : '';\n }\n return '';\n }\n\n private evaluateGenericExpression(expression: string, rowData: any): any {\n try {\n const result = this.evaluateExpression(expression, rowData);\n return result || '';\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return '';\n }\n }\n\n /**\n * Generic method to get column class (container or text) from config\n * @param {string} columnName - The column name (e.g., 'lending', 'riskRating')\n * @param {string} value - The value to evaluate\n * @param {'container' | 'text'} type - The type of class to retrieve\n * @returns {string} The evaluated CSS class\n */\n getColumnClass(columnName: string, value: string, type: 'container' | 'text'): string {\n const expr = this.columnStyles?.[columnName]?.[`${type}NgClass`];\n return expr ? this.evaluateNgClass(expr, { [columnName]: value }) : '';\n }\n\n // Legacy methods for backward compatibility\n getTypeContainerClass(typeValue: string): string {\n return this.getColumnClass('lending', typeValue, 'container');\n }\n\n getTypeTextClass(typeValue: string): string {\n return this.getColumnClass('lending', typeValue, 'text');\n }\n\n getRiskContainerClass(riskValue: string): string {\n return this.getColumnClass('riskRating', riskValue, 'container');\n }\n\n getRiskTextClass(riskValue: string): string {\n return this.getColumnClass('riskRating', riskValue, 'text');\n }\n\n getColumnAlignment(columnName: string): string {\n if (columnName === 'applicants' || columnName === 'brokerName' || columnName === 'appId' || columnName === 'finance' || columnName === 'securityAddress') {\n return 'justify-content-start';\n }\n return 'justify-content-center';\n }\n\n getSwitchCase(rowData: any, col: any): string {\n if (this.isTaskItemsArray(rowData[col.name])) {\n return 'taskItems';\n }\n if (col.name === 'finance' && rowData[col.name]?.isFinance) {\n return 'finance';\n }\n if (col.name === 'appId' && typeof rowData[col.name] === 'object') {\n return 'appId';\n }\n if (col.name === 'brokerName' && typeof rowData[col.name] === 'object' && rowData[col.name]?.brokerName !== undefined) {\n return 'broker';\n }\n if (col.isTwoLine) {\n return 'twoLine';\n }\n if (col.isShowProgressbar) {\n return 'progress';\n }\n return 'default';\n }\n} "," <lib-skeleton *ngIf=\"isShowSkeleton\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\n <p-table\n *ngIf=\"table && table.headers && !isShowSkeleton\"\n #dt2\n [lazy]=\"true\"\n (onSort)=\"onSort($event)\"\n [paginator]=\"false\"\n [rows]=\"metaData?.itemsPerPage ?? 10\"\n [totalRecords]=\"metaData?.totalItems ?? 0\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\n [columns]=\"table.headers\"\n class=\"table-secondary-container\"\n [value]=\"table.records\"\n [sortField]=\"sortField\"\n [sortOrder]=\"sortOrder\"\n [dataKey]=\"table.dataKey\"\n [selectionMode]=\"selectionMode\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [ngClass]=\"tableNgClassExpression ? evaluateNgClass(tableNgClassExpression, {}) : ''\"\n >\n <!-- Header -->\n <ng-template pTemplate=\"header\" let-columns>\n <tr *ngIf=\"table.headers.length > 0\">\n <th\n *ngFor=\"let col of table.headers; let i = index\"\n class=\"table-header-wrapper bg-white\"\n [pSortableColumn]=\"col.name\"\n [pSortableColumnDisabled]=\"!(table.isSortingAllow && col.isShowSortIcon)\"\n [ngClass]=\"[col.width ? col.width : 'w-full', (!showActions && selectionMode !== 'multiple' && (i === table.headers.length - 1)) ? 'table-action-title' : '']\"\n style=\"min-width: 100px\"\n > \n <h4\n [ngClass]=\"[\n col.class || '', \n getColumnAlignment(col.name) === 'justify-content-start' ? 'justify-content-start text-left' : 'justify-content-center text-center'\n ]\"\n class=\"flex align-items-center table-header-title font-semibold m-0\">\n {{ col.displayName || col.name }}\n @if(table.isSortingAllow && col.isShowSortIcon){\n <p-sortIcon [field]=\"col.name\" />\n }\n </h4>\n </th>\n \n <th *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" \n class=\"table-header-wrapper text-right table-action-title\" style=\"width: 6rem;\">\n <h4 class=\"flex align-items-center justify-content-end gap-2 table-header-title capitalize font-semibold m-0\">\n <span *ngIf=\"selection?.length && !isSelectAll\">\n ({{ selection.length }})\n </span>\n <p-checkbox\n [binary]=\"true\"\n [ngModel]=\"isAllCurrentPageSelected\"\n (ngModelChange)=\"handleSelectAllRowData($event)\"></p-checkbox>\n </h4>\n </th>\n \n <th\n *ngIf=\"showActions\"\n class=\"table-action-title table-header-wrapper\"\n [ngClass]=\"table.headers[0]?.width ? 'w-2' : 'w-2'\"\n >\n </th>\n \n </tr>\n </ng-template>\n \n <!-- Body -->\n<ng-template pTemplate=\"body\" let-rowData>\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\n <!-- one TD per column -->\n <td *ngFor=\"let col of table.headers; let j = index\" class=\"p-0 border-none bg-none table-body-row-wrapper\"\n (click)=\"handleRowClick(rowData)\"\n [ngClass]=\"[rowData._columnWidths ? rowData._columnWidths?.[col.name] : col.width]\">\n <div class=\"table-body-wrapper table-row-card-wrapper\"\n [ngClass]=\"[\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\n isRowSelected(rowData) ? 'row-selected' : '',\n selection?.includes(rowData) ? 'green-highlight' : ''\n ]\">\n \n <div class=\"flex align-items-center h-full\" [ngClass]=\"getColumnAlignment(col.name)\">\n <!-- your existing inner column wrapper -->\n <div class=\"row-wrapprt flex align-items-center\" [ngClass]=\"getColumnAlignment(col.name)\">\n <ng-container [ngSwitch]=\"getSwitchCase(rowData, col)\">\n <!-- task items - check this first -->\n <ng-container *ngSwitchCase=\"'taskItems'\">\n <div class=\"col-tasks\">\n <ng-container *ngFor=\"let taskItem of rowData[col.name]\">\n <div class=\"task-item\" [ngClass]=\"taskItem.status === 'warning' ? 'task-warning' : (taskItem.status === 'default' ? 'task-default' : 'task-success')\">\n <span>{{ taskItem.type }}</span>\n <span *ngIf=\"taskItem.count !== null && taskItem.count !== undefined\" class=\"task-badge\">{{ taskItem.count }}</span>\n </div>\n </ng-container>\n </div>\n </ng-container>\n \n <!-- Finance amount with special styling -->\n <ng-container *ngSwitchCase=\"'finance'\">\n <div class=\"text-black font-semibold\">\n {{ rowData[col.name].amount }}\n </div>\n </ng-container>\n \n <!-- App ID with type and risk tags -->\n <ng-container *ngSwitchCase=\"'appId'\">\n <div class=\"w-full text-left\">\n <div class=\"font-semibold\">{{ rowData[col.name].appId }}</div>\n <div class=\"flex gap-2 justify-content-start app-id-tags\">\n <!-- Type chip using style config (lending) -->\n <div *ngIf=\"rowData[col.name].type\" [ngClass]=\"getTypeContainerClass(rowData[col.name].type)\">\n <p class=\"mb-0\" [ngClass]=\"getTypeTextClass(rowData[col.name].type)\">\n {{ rowData[col.name].type }}\n </p>\n </div>\n <!-- Risk chip using style config (riskRating) -->\n <div *ngIf=\"rowData[col.name].risk && rowData[col.name].risk.toLowerCase() !== 'unknown'\"\n [ngClass]=\"getRiskContainerClass(rowData[col.name].risk)\">\n <p class=\"mb-0\" [ngClass]=\"getRiskTextClass(rowData[col.name].risk)\">\n {{ rowData[col.name].risk }}\n </p>\n </div>\n </div>\n </div>\n </ng-container>\n \n <!-- Broker with name and company name -->\n <ng-container *ngSwitchCase=\"'broker'\">\n <div class=\"w-full text-left\">\n <div class=\"font-medium\">{{ rowData[col.name].brokerName }}</div>\n <div *ngIf=\"rowData[col.name].brokerCompanyName\" class=\"text-gray-700\">\n {{ rowData[col.name].brokerCompanyName }}\n </div>\n </div>\n </ng-container>\n <!--Render two lines with dynamic classes for any two-line column -->\n <ng-container *ngSwitchCase=\"'twoLine'\">\n <div class=\"w-full\" [ngClass]=\"[\n getColumnAlignment(col.name) === 'justify-content-start' ? 'text-left' : 'text-center',\n rowData[col.name]?.containerClass || (col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : '')\n ]\">\n <div class=\"row-multi-line-wrapper flex align-items-center justify-content-center\">\n <i\n *ngIf=\"rowData[col.name]?.iconClass && rowData[col.name]?.addressLine1\"\n class=\"pi\"\n [ngClass]=\"[rowData[col.name].addressLine1, rowData[col.name].iconClass]\"\n ></i>\n <span\n *ngIf=\"!rowData[col.name]?.iconClass\"\n [ngClass]=\"getLine1DisplayClasses(col, rowData)\"\n >\n {{ rowData[col.name]?.addressLine1 }}\n </span>\n </div>\n <div class=\"row-multi-line-wrapper\"\n [ngClass]=\"rowData[col.name]?.textClass || (col.line2NgClassExpression ? evaluateNgClass(col.line2NgClassExpression, rowData) : '')\">\n {{ rowData[col.name]?.postCode }}\n </div>\n </div>\n </ng-container>\n <!-- progress bar -->\n <ng-container *ngSwitchCase=\"'progress'\">\n <div class=\"progress-wrapper\">\n <round-progress [current]=\"rowData['taskCompletionPercent']\" [max]=\"100\"\n [color]=\"getProgressColor(rowData['taskCompletionPercent'])\"\n [background]=\"getProgressBackground(rowData['taskCompletionPercent'])\" [radius]=\"125\" [stroke]=\"20\"\n [semicircle]=\"false\" [rounded]=\"true\" [clockwise]=\"true\" [responsive]=\"false\" [duration]=\"800\"\n [animation]=\"'easeInOutQuart'\" [animationDelay]=\"0\">\n </round-progress>\n <div class=\"progress-title\" [ngStyle]=\"{color: getProgressColor(rowData['taskCompletionPercent'])}\">\n {{ rowData[col.name] }}\n </div>\n </div>\n \n </ng-container>\n <!-- Default cell rendering for other columns -->\n <ng-container *ngSwitchDefault>\n <!-- Don't render default content if we have task items -->\n <ng-container *ngIf=\"!isTaskItemsArray(rowData[col.name])\">\n <div\n class=\"table-text-wrapper text-center p-0 flex align-items-center\"\n [ngClass]=\"[\n getRowClass(col, rowData),\n j === 0 ? 'justify-content-start' : 'justify-content-center'\n ]\"\n [ngStyle]=\"{ 'font-weight': col.name === table.showDecriptionFor ? 'bold' : 'normal' }\"\n >\n <div *ngIf=\"!col.skipParentNgClass\" [ngClass]=\"rowData[col.name]?.containerClass || (col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : '')\">\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\n </div>\n <ng-container *ngIf=\"col.skipParentNgClass\">\n <div class=\"w-full text-left\">\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\n </div>\n </ng-container>\n <ng-template #bubbleOrFallback>\n <ng-container *ngIf=\"isArray(rowData[col.name]) && rowData[col.name].length && rowData[col.name][0]?.fullName\">\n <div class=\"flex flex-column gap-1\">\n <ng-container *ngFor=\"let bubble of rowData[col.name]; let i = index\">\n <div\n *ngIf=\"bubble.isCustomerVulnerable\"\n class=\"px-2 py-1 border-round-2xl inline-block bg-red-600 text-white\"\n >\n {{ bubble.fullName }}\n </div>\n <div\n *ngIf=\"!bubble.isCustomerVulnerable\"\n class=\"text-gray-700\"\n >\n {{ bubble.fullName }}\n </div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"shouldShowValue(col, rowData)\">\n <div class=\"flex align-items-center gap-2\">\n <i\n *ngIf=\"rowData[col.name]?.icon\"\n class=\"pi\"\n [ngClass]=\"[rowData[col.name].icon, rowData[col.name].iconClass]\"\n ></i>\n <p class=\"mb-0\" [ngClass]=\"rowData[col.name]?.textClass || (col.textNgClassExpression ? evaluateNgClass(col.textNgClassExpression, rowData) : '')\">\n {{ rowData[col.name]?.text || rowData[col.name] }}\n </p>\n </div>\n </ng-container>\n </ng-template>\n <div\n *ngIf=\"col.name === table.showDecriptionFor && rowData[table.descriptionColumnName]\"\n class=\"text-black-500 text-sm mt-1\"\n style=\"font-weight: 600;\"\n >\n {{ rowData[table.descriptionColumnName] }}\n </div>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </td>\n <!-- Checkbox column -->\n <td *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" class=\"text-right p-0 border-none bg-none table-body-row-wrapper\"\n style=\"width: 4rem\" (click)=\"$event.stopPropagation()\">\n <div class=\"table-body-wrapper table-select-row-wrapper flex align-items-center justify-content-end\"\n [ngClass]=\"[\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\n isRowSelected(rowData) ? 'row-selected' : '',\n selection?.includes(rowData) ? 'green-highlight' : ''\n ]\">\n <p-tableCheckbox [value]=\"rowData\" [disabled]=\"!enableSelection\"></p-tableCheckbox>\n </div>\n </td>\n\n <!-- Actions column -->\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left table-body-wrapper\">\n <div *ngIf=\"(rowData.isRowDelete !== null || rowData.canDelete !== undefined) ? (showActions && rowData.isRowDelete) : showActions\" class=\"flex align-items-center justify-content-center\">\n <p-button\n icon=\"pi pi-trash\"\n (click)=\"deleteRow($event, rowData)\"\n class=\"delete-icon-wrapper mr-3\"\n [disabled]=\"!enableSelection\"\n ></p-button>\n </div>\n </td>\n </tr>\n</ng-template>\n \n <!-- Empty Message -->\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td\n [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0) + (selectionMode === 'multiple' ? 1 : 0)\"\n class=\"text-center text-color font-semibold p-4\"\n >\n {{ noRecordsMessage }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n<!-- Paginator -->\n <div class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper\" *ngIf=\"usePagination\">\n <div class=\"pagination-text text-color\">\n Showing {{ (metaData?.totalItems ?? 0) > 0 ? (((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10) + 1) : 0 }} to {{ recordNumber }} of {{ metaData?.totalItems ?? 0 }} entries\n </div>\n\n <p-paginator\n #paginator\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\n [rows]=\"metaData?.itemsPerPage ?? 10\"\n [totalRecords]=\"metaData?.totalItems ?? 0\"\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\n (onPageChange)=\"handleLoadRecords($event)\"\n ></p-paginator>\n</div> ","import { SHARED } from \"../../constant/SHARED\";\n\nexport class TableSecondaryModel {\n name!: string;\n headers!: any[];\n records!: any[];\n columnStyles?: StyleClass;\n sortField?:string\n dataKey?:string\n groupRowsBy?:string;\n showDecriptionFor ?: string\n descriptionColumnName : string = SHARED.EMPTY\n isSortingAllow : boolean = SHARED.TRUE\n rows: any;\n}\n\nexport class StyleClass{\n class : string = SHARED.EMPTY\n value : string = SHARED.EMPTY\n} ","import { AttributeModel } from \"../../models/attribute.model\";\n\nexport class TableSecondaryHeaderModel{\n name!: string;\n attributes!: AttributeModel;\n width!: string;\n} ","import { BaseModel } from \"../../../shared\";\n\nexport class ApiConfigModel extends BaseModel{\n name ?: string;\n path?: string;\n isActive!: boolean;\n parentapiConfigId!: string;\n parentKey!: string;\n description?:string;\n getByIDPath?:string;\n idProperty?:string;\n authHeaderName?: string;\n authToken?: string;\n}","export class MESSAGE {\n static VALIDATE_SUCCESS_MESSAGE = \"API validation completed successfully! Your API is now ready for use.\";\n static VALIDATE_ACTION_SUCCESS_MESSAGE = \"Validation action was successful. The configuration is valid.\"\n static QUERY_CHANGE_EVENT = \"Query Change Event:\";\n static DELETE_DICTIONARY_ITEM_SUCCESS = \"Dictionary item deleted successfully.\";\n static DATA_FETCH_SUCCESS = \"Data has been fetched successfully.\"\n}","import { DATASOURCES } from \"./DATASOURCES\";\n\nexport class LISTCONFIG {\n private static createConfig(name: string, dataSource: string): object {\n return {\n name: name,\n dataSource: dataSource,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\"\n };\n }\n \n static APICONFIG = [\n LISTCONFIG.createConfig(\"parentapiConfigId\", DATASOURCES.APIMANAGEMENT)\n ];\n \n static QUEUECONFIG = [\n LISTCONFIG.createConfig(\"queueID\", \"Queues\")\n ];\n\n static ACTIONQUEUECONFIG = [\n LISTCONFIG.createConfig(\"queueId\", \"Queues\")\n ];\n\n static QUEUEAPICONFIG = [\n LISTCONFIG.createConfig(\"apiConfigId\", DATASOURCES.APIMANAGEMENT)\n ];\n }","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared';\nimport { ApiConfigModel } from '../models/api-config.model';\n\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'apiManagementStore' })\n\nexport class ApiAdminStore extends BaseStore<ApiConfigModel> {\n constructor() {\n super();\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ApiAdminStore } from './api-admin.store';\nimport { Observable, tap } from 'rxjs';\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { ApiConfigModel } from '../models/api-config.model';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\n\n/**\n * Service for managing API configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class ApiAdminService extends BaseService<ApiConfigModel> {\n\n constructor(\n http: HttpClient,\n protected apiManagementStore: ApiAdminStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, apiManagementStore, configService, listService);\n this._pathName = DATASOURCES.APIMANAGEMENT;\n }\n\n protected override list : any= LISTCONFIG.APICONFIG\n\n checkApiByPathName(name:string, record:any): Observable<ApiConfigModel[]> {\n return this.http.post<ApiConfigModel[]>(this.apiUrl+name, record).pipe(\n tap((entities: ApiConfigModel[]) => this.apiManagementStore.set(entities))\n );\n }\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Message, SelectItem } from 'primeng/api';\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED } from '../../../../shared';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { ROUTES } from '../../../../shared/constant/ROUTES';\nimport { ApiAdminService } from '../../state/api-admin.service';\nimport { ApiAdminStore } from '../../state/api-admin.store';\nimport { ApiConfigModel } from '../../models/api-config.model';\nimport { Subscription } from 'rxjs';\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\n\n\n/**\n * Form component for creating and updating API configurations.\n */\n@Component({\n selector: 'lib-api-admin-form',\n templateUrl: './api-admin-form.component.html',\n styleUrl: './api-admin-form.component.scss',\n standalone: false,\n encapsulation:ViewEncapsulation.None\n})\nexport class ApiAdminFormComponent extends BaseFormComponent<ApiConfigModel> implements OnInit , OnDestroy{\n messages: Message[] = SHARED.EMPTYARRAY;\n name: string = SHARED.EMPTY;\n selectedParentId!: string;\n filteredRecords: string[] = SHARED.EMPTYARRAY;\n dropdownOptions: any[] = SHARED.EMPTYARRAY;\n apiPropertyList!: SelectItem[];\n\n constructor(public apiAdminService: ApiAdminService, override validatorService: ValidatorService, override router: Router, override activatedRoute: ActivatedRoute, public apiAdminStore: ApiAdminStore,override baseStore: BaseStore<ApiConfigModel>, override baseQuery: BaseQuery<ApiConfigModel>) {\n super(apiAdminService, validatorService, router, activatedRoute)\n this.record = new ApiConfigModel();\n this.record.isActive = true;\n }\n\n ngOnInit() {\n this.init();\n console.log(this.record);\n this.recordChange.asObservable().subscribe((record) => {\n if(record.parentapiConfigId){\n this.parentApiProperties(record.parentapiConfigId);\n }\n });\n this.baseStore.setIsApiValidated(false);\n }\n\n hanldeValidateApi() {\n const payload = {\n path: this.record.path,\n getByIDPath : this.record.getByIDPath,\n idProperty : this.record.idProperty,\n authHeaderName : this.record.authHeaderName,\n authToken : this.record.authToken\n }\n if (this.record.path) {\n this.apiAdminService.checkApiByPathName(ROUTES.VALIDATEAPI, payload).subscribe({\n next: (res: any) => {\n if (res && res.isValid) {\n this.handleErrorAndSuccess(res.isValid, res.message)\n }else{\n this.handleErrorAndSuccess(res.isValid, SHARED.EMPTY)\n }\n },\n error: (error: any) => {\n this.handleErrorAndSuccess(false, error.message)\n },\n });\n } else {\n this.handleErrorAndSuccess(false, ERROR.VALIDATE_API_FAILED)\n }\n }\n\n handleModelChange(event: string) {\n this.parentApiProperties(event);\n }\n\n parentApiProperties(event:string) {\n if (event) {\n this.apiAdminService.getById(event).subscribe((res: any) => {\n this.apiPropertyList = res.properties.map((property: string) => ({\n label: property,\n value: property\n }));\n })\n } else {\n this.record.parentKey = SHARED.EMPTY;\n this.apiPropertyList = SHARED.EMPTYARRAY;\n }\n }\n\n handleErrorAndSuccess(isValid:boolean, error:any){\n if(isValid){\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_SUCCESS_MESSAGE }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n this.baseStore.setIsApiValidated(SHARED.TRUE);\n }else{\n this.baseStore.setIsApiValidated(SHARED.FALSE);\n }\n }\n\n override ngOnDestroy(): void {\n this.record = {} as ApiConfigModel;\n super.ngOnDestroy();\n }\n}\n\n","<form-container\n [record]=\"record\"\n [headerText]=\"'Api Management Form'\"\n [messages]=\"messages\"\n (onSave)=\"handleSubmit()\"\n [showSave]=\"true\" \n (onCancel)=\"handleCancel()\"\n>\n <div class=\"card p-fluid p-formgrid grid m-0 mb-6\">\n <h4 class=\"font-bold col-12 md:col-12\">Api Management Form</h4>\n <div class=\"col-12 md:col-5\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Name',\n placeholder: 'Enter Name'\n }\"\n ></text-box>\n </div>\n <div class=\"col-12 md:col-5\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'path',\n isRequired: true,\n displayText: 'Path',\n placeholder: 'Enter Path'\n }\"\n ></text-box>\n </div>\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"apiAdminStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'getByIDPath',\n isRequired: false,\n displayText: 'Get By ID Path',\n placeholder: 'Enter getByID Path'\n }\"\n ></text-box>\n </div>\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'idProperty',\n isRequired: true,\n displayText: 'Id Property',\n placeholder: 'Enter Id Property'\n }\"\n ></text-box>\n </div>\n\n <div class=\"w-full px-2 mt-2 flex justify-content-end\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Validate\"\n (click)=\"hanldeValidateApi()\"\n class=\"p-button-raised validate-btn-wrapper\"\n ></button>\n </div>\n </div>\n <div class=\"card p-fluid p-formgrid grid \">\n <h4 class=\"font-bold col-12 md:col-12\">Other Details</h4>\n <div class=\"col-12 md:col-12 p-0 m-0 flex align-items-center\">\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'authHeaderName',\n isRequired: false,\n displayText: 'Auth Header',\n placeholder: 'Enter Auth Header'\n }\"\n ></text-box>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'authToken',\n isRequired: false,\n displayText: 'Token',\n placeholder: 'Enter token'\n }\"\n ></text-box>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name: 'parentapiConfigId',\n dataSource: 'api-configurations',\n listLabelProperty: 'name',\n listValueProperty: '_id', \n displayText: 'Select Parent',\n placeholder: 'Select Parent API',\n childListName: 'parentKey',\n childListKey: 'name'\n }\"\n (onInput)=\"handleModelChange($event)\"\n ></dropdown>\n\n </div>\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name:'parentKey',\n displayText : 'Property',\n placeholder: 'Select Property',\n options: apiPropertyList\n }\"></dropdown>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <text-area\n [store]=\"apiAdminStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'description',\n isRequired: false,\n displayText: 'Description',\n placeholder: 'Enter Description'\n }\"\n ></text-area>\n </div>\n </div>\n</form-container>","export class PERMISSION {\n static ACTIONCONFIG_PUT = 'ActionConfigurations-PUT'\n static ACTIONCONFIG_DELETE = 'ActionConfigurations-DELETE'\n static API_CONFIG_PUT = 'ApiConfigurations-PUT'\n static API_CONFIG_DELETE = 'ApiConfigurations-DELETE'\n static DD_ADMIN_PUT = 'DataDictionaries-PUT'\n static DD_ADMIN_DELETE = 'DataDictionaries-DELETE'\n static MESSAGE_TEMPLATE_PUT = 'MessageTemplates-PUT'\n static MESSAGE_TEMPLATE_DELETE = 'MessageTemplates-DELETE'\n static WIDGETS_PUT = 'Widgets-PUT'\n static WIDGETS_DELETE = 'Widgets-DELETE'\n static WIDGETS_EVALUATE = 'Widgets-evaluate'\n static QUEUES_GET = 'Queues-GET'\n static QUEUES_POST = 'Queues-POST'\n static QUEUES_PUT = 'Queues-PUT'\n}","import { Component, OnInit } from '@angular/core';\nimport { BaseListComponent, DATASOURCES, TableBuilder, apiHiddenHeaderList } from '../../../../shared';\nimport { ApiConfigModel } from '../../models/api-config.model';\nimport { ApiAdminService } from '../../state/api-admin.service';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n\n/**\n * ApiAdminListComponent\n */\n@Component({\n selector: 'lib-api-admin-list',\n templateUrl: './api-admin-list.component.html',\n styleUrl: './api-admin-list.component.scss',\n standalone : false\n})\nexport class ApiAdminListComponent extends BaseListComponent<ApiConfigModel> implements OnInit {\n\n override editPermission: string = PERMISSION.API_CONFIG_PUT\n override deletePermission: string = PERMISSION.API_CONFIG_DELETE\n pathName:string = DATASOURCES.APIMANAGEMENT;\n constructor(apiAdminService : ApiAdminService, private tableBuilder : TableBuilder ){\n super(apiAdminService, tableBuilder)\n this.tableBuilder.hiddenHeaders = apiHiddenHeaderList;\n }\n ngOnInit() {\n this.init()\n }\n}","\n@if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\n </lib-table-primary>\n}","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ApiAdminFormComponent } from './components/api-admin-form/api-admin-form.component';\nimport { ApiAdminListComponent } from './components/api-admin-list/api-admin-list.component';\nimport { FormsModule } from '@angular/forms';\nimport { AppConfigService, CheckBoxComponent, PasswordComponent, SharedModule, TablePrimaryComponent, UsernameComponent } from '../../shared';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ButtonModule } from 'primeng/button';\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\n\n\n@NgModule({\n declarations: [ApiAdminFormComponent ,ApiAdminListComponent],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n HttpClientModule,\n ButtonModule,\n UsernameComponent,\n PasswordComponent,\n TextAreaComponent,\n TablePrimaryComponent,\n CheckBoxComponent\n ],\n exports : [ApiAdminFormComponent, ApiAdminListComponent],\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: (configService: AppConfigService) => () =>\n configService.loadAppConfig(),\n deps: [AppConfigService],\n multi: true,\n },\n ],\n})\nexport class ApiAdminModule { }\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared';\nimport { WidgetModel } from '../models/widget.model';\n\n/**\n * Widget Admin Store\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'widgetStore' })\nexport class WidgetAdminStore extends BaseStore<WidgetModel> {\n constructor() {\n super();\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\nimport { WidgetAdminStore } from './widget-admin.store';\nimport { WidgetModel } from '../models/widget.model';\n\n/**\n * Service for managing widget configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetAdminService extends BaseService<WidgetModel> {\n\n constructor(\n http: HttpClient,\n protected apiManagementStore: WidgetAdminStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, apiManagementStore, configService, listService);\n this._pathName = DATASOURCES.WIDGET;\n }\n\n protected override list: any = [\n {\n name: \"apiConfigId\",\n dataSource: DATASOURCES.APIMANAGEMENT,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryID\",\n dataSource: DATASOURCES.DICTIONARY,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryItemID\",\n dataSource: \"DataDictionaries/dictionaryItems\",\n listValueProperty: \"_id\",\n listLabelProperty: \"key\",\n },\n {\n name: \"linkedWidgetID\",\n dataSource: DATASOURCES.WIDGET,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n\n ]\n\n /**\n * Cleans and parses a malformed style JSON string\n * @param {string} rawStyleStr - The raw style string from API or DB\n * @returns {Record<string, any> | null} - Parsed style object or null if parsing fails\n */\n sanitizeStyleString(rawStyleStr: string): Record<string, any> | null {\n try {\n if (!rawStyleStr) return {};\n rawStyleStr = rawStyleStr.replace(/\"\"/g, '\"');\n rawStyleStr = rawStyleStr.replace(/([{,]\\s*)([a-zA-Z0-9_]+)\\s*:/g, '$1\"$2\":');\n const parsed = JSON.parse(rawStyleStr);\n return typeof parsed === 'object' && parsed !== null ? parsed : null;\n } catch (err) {\n console.error('Failed to parse style string:', rawStyleStr, err);\n return null;\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { BaseListComponent, DATASOURCES, TableBuilder, widgetHiddenHeaderList } from '../../../../shared';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetAdminService } from '../../state/widget-admin.service';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n/**\n * Widget Admin List Component\n */\n@Component({\n selector: 'lib-widget-admin-list',\n standalone: false,\n templateUrl: './widget-admin-list.component.html',\n styleUrl: './widget-admin-list.component.scss'\n})\nexport class WidgetAdminListComponent extends BaseListComponent<WidgetModel> {\n \n pathName:string = DATASOURCES.WIDGET;\n override editPermission: string = PERMISSION.WIDGETS_PUT\n override deletePermission: string = PERMISSION.WIDGETS_DELETE\n constructor(widgetAdminService: WidgetAdminService, private tableBuilder: TableBuilder) {\n super(widgetAdminService, tableBuilder);\n this.tableBuilder.hiddenHeaders = widgetHiddenHeaderList;\n }\n\n ngOnInit() {\n this.init()\n }\n}","@if(table){\n<lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\n\n</lib-table-primary>\n}","import { BaseModel } from \"../../../shared\";\nimport { StyleConfig, WidgetStyleConfig } from \"../../../widget/models/widget.model\";\n\n/**\n * WidgetModel class represents the model of a widget.\n */\nexport class WidgetModel extends BaseModel {\n name!: string;\n apiConfigId!: string;\n dataItems: WidgetItemModel[] = [];\n badges: BadgeModel[] = [];\n order?: number;\n headerDictionaryID!: string;\n subHeaderDictionaryID!: string;\n headerDictionaryItemID!: string;\n subHeaderDictionaryItemID!: string;\n style?: any;\n layoutType?: string;\n isActive!: boolean;\n}\n\n/**\n * WidgetItemModel class represents the model of a widget item.\n */\nexport class WidgetItemModel extends BaseModel{\n name!: string;\n dictionaryItemID!: string;\n dictionaryID!: string;\n style?: any;\n isActive: boolean = true;\n}\n\n/**\n * BadgeModel class represents the model of a badge.\n */\nexport class BadgeModel {\n dictionaryItemID!: string;\n dictionaryID!: string;\n style?: any;\n}\n\nexport interface WidgetLayoutTypeModel {\n name: string;\n value: string;\n}","import { Injectable } from '@angular/core';\nimport { BaseQuery } from '../../../shared';\nimport { WidgetModel } from '../models/widget.model';\nimport { WidgetAdminStore } from './widget-admin.store';\n\n\n/**\n * Widget Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetAdminQuery extends BaseQuery<WidgetModel> {\n\n constructor(protected override store: WidgetAdminStore) {\n super(store);\n }\n\n}\n","\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BadgeModel, WidgetItemModel, WidgetLayoutTypeModel, WidgetModel } from '../../models/widget.model';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED, widgetLayoutTypeList } from '../../../../shared';\nimport { WidgetAdminService } from '../../state/widget-admin.service';\nimport { WidgetAdminQuery } from '../../state/widget-admin.query';\nimport { WidgetAdminStore } from '../../state/widget-admin.store';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { List } from '../../../../shared/models/list.model';\nimport { SelectItem } from 'primeng/api';\n\n/**\n * WidgetAdminFormComponent\n */\n@Component({\n selector: 'lib-widget-admin-form',\n standalone: false,\n templateUrl: './widget-admin-form.component.html',\n styleUrl: './widget-admin-form.component.scss',\n})\nexport class WidgetAdminFormComponent extends BaseFormComponent<WidgetModel> implements OnInit, OnDestroy {\n\n widgetItem!: WidgetItemModel;\n widgetItems: WidgetItemModel[] = [];\n dictionaries: any[] = [];\n headerDictionaryItems: any[]=[];\n subHeaderDictionaryItems: any[] = [];\n dictionaryItemArray: any[][] = [];\n badgeDictionaryItemArray: any[][] = [];\n widgetOptionsArray: SelectItem[] = [];\n widgetLayoutTypeList: WidgetLayoutTypeModel[] = widgetLayoutTypeList;\n\n constructor(\n override service: WidgetAdminService,\n override validatorService: ValidatorService,\n public widgetStore: WidgetAdminStore,\n private query: WidgetAdminQuery,\n override router: Router,\n override activatedRoute: ActivatedRoute,\n override baseStore: BaseStore<WidgetModel>,\n override baseQuery: BaseQuery<WidgetModel>\n ) {\n super(service, validatorService, router, activatedRoute);\n this.record = new WidgetModel();\n this.record.isActive = true;\n this.record.dataItems = this.record.dataItems || [];\n this.record.badges = this.record.badges || [];\n this.widgetItem = new WidgetItemModel();\n }\n\n ngOnInit(): void {\n super.init();\n this.baseStore.setIsApiValidated(null);\n this.recordChange.asObservable().subscribe((record) => {\n // Ensure arrays are initialized\n if (!record.dataItems) record.dataItems = [];\n if (!record.badges) record.badges = [];\n \n this.handleAPIChange(record.queueID);\n this.handleHeaderDictionarySelect(record.headerDictionaryID);\n this.handleSubHeaderDictionarySelect(record.subHeaderDictionaryID);\n if(record?.dataItems?.length > 0) {\n record.dataItems.forEach((item:WidgetItemModel, index:number) => {\n this.handleWidgetItemDictionarySelect(item.dictionaryID, index);\n });\n }\n if(record?.badges?.length > 0) {\n record.badges.forEach((badge:BadgeModel, index:number) => {\n this.handleBadgeDictionarySelect(badge.dictionaryID, index);\n });\n }\n });\n }\n\n handleWidgetItemAddBtnClick() {\n if(!(this.record.name && this.record.apiConfigId)) return;\n if (Array.isArray(this.record.dataItems)) {\n const hasEmptyItem = this.record.dataItems.some((item: WidgetItemModel) => {\n const isItemNameEmpty = !item.name || item.name.trim() === SHARED.EMPTY;\n const isDictionaryEmpty = !item.dictionaryID || item.dictionaryID.trim() === SHARED.EMPTY;\n const isDictionaryItemEmpty = !item.dictionaryItemID || item.dictionaryItemID.trim() === SHARED.EMPTY;\n return isItemNameEmpty && isDictionaryItemEmpty && isDictionaryEmpty;\n });\n \n if (hasEmptyItem) {\n return;\n }\n } else {\n this.record.dataItems = [];\n }\n this.record.dataItems = [...this.record.dataItems, new WidgetItemModel()];\n }\n\n handleAPIChange(event:any){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\n this.dictionaries = allDictionaryRecords?.filter((item) => item.apiConfigId === event) || [];\n });\n }\n\n handleHeaderDictionarySelect(dictionaryId:string){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.headerDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleSubHeaderDictionarySelect(dictionaryId: any) {\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.subHeaderDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleWidgetItemDictionarySelect(dictionaryId: any, index: number) {\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.dictionaryItemArray[index] = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleBadgeAddBtnClick() {\n if(!(this.record.name && this.record.apiConfigId)) return;\n if (Array.isArray(this.record.badges)) {\n const hasEmptyBadge = this.record.badges.some((badge: BadgeModel) => {\n const isDictionaryEmpty = !badge.dictionaryID || badge.dictionaryID.trim() === SHARED.EMPTY;\n const isDictionaryItemEmpty = !badge.dictionaryItemID || badge.dictionaryItemID.trim() === SHARED.EMPTY;\n return isDictionaryItemEmpty && isDictionaryEmpty;\n });\n \n if (hasEmptyBadge) {\n return;\n }\n } else {\n this.record.badges = [];\n }\n this.record.badges = [...this.record.badges, new BadgeModel()];\n }\n\n handleBadgeDictionarySelect(dictionaryId: any, index: number) {\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.badgeDictionaryItemArray[index] = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n handleDeleteBadge(index: number) {\n if (this.record.badges && index >= 0 && index < this.record.badges.length) {\n this.record.badges = this.record.badges.filter((_, i) => i !== index);\n } else {\n console.error(ERROR.INVALID_INDEX, index);\n }\n }\n\n handleDeleteRecord(index: number) {\n if (this.record.dataItems && index >= 0 && index < this.record.dataItems.length) {\n this.record.dataItems = this.record.dataItems.filter((_, i) => i !== index);\n } else {\n console.error(ERROR.INVALID_INDEX, index);\n }\n }\n\n override handleSubmit(): void {\n if (typeof this.record.style === 'string') {\n const parsedStyle = this.service.sanitizeStyleString(this.record.style);\n this.record.style = parsedStyle ? parsedStyle : {};\n }\n\n this.record.dataItems = this.record.dataItems.map((item) => {\n if (typeof item.style === 'string') {\n const parsed = this.service.sanitizeStyleString(item.style);\n item.style = parsed ? parsed : {};\n }\n return item;\n });\n\n if (this.record.badges && Array.isArray(this.record.badges)) {\n this.record.badges = this.record.badges.map((badge) => {\n if (typeof badge.style === 'string') {\n const parsed = this.service.sanitizeStyleString(badge.style);\n badge.style = parsed ? parsed : {};\n }\n return badge;\n });\n } else {\n this.record.badges = [];\n }\n super.handleSubmit();\n }\n\n override ngOnDestroy(): void {\n this.record = {} as WidgetModel;\n super.ngOnDestroy();\n }\n}","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\n (onCancel)=\"handleCancel()\">\n <div class=\"card p-fluid p-formgrid\">\n <h4 class=\"font-bold col-12 md:col-12\">Widget Form</h4>\n <div class=\"col-12 md:col-12 mt-2 mb-2 flex\">\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Name',\n placeholder: 'Enter Widget Name'\n }\"></text-box>\n </div>\n\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\n <dropdown [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n name:'apiConfigId',\n displayText : 'Select API',\n isRequired:true,\n }\" (onInput)=\"handleAPIChange($event)\">\n </dropdown>\n </div>\n\n <div class=\"col-4 md:col-4 mt-2 mb-2\">\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'style',\n isRequired: false,\n displayText: 'Style',\n placeholder: 'Enter Widget Style'\n }\"></text-box>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n <div class=\"grid align-items-center m-0\">\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'headerDictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n options: dictionaries\n }\" (onInput)=\"handleHeaderDictionarySelect($event)\">\n </dropdown>\n </div>\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'headerDictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select Header Item',\n options: headerDictionaryItems\n }\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'subHeaderDictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n options: dictionaries\n }\" (onInput)=\"handleSubHeaderDictionarySelect($event)\">\n </dropdown>\n </div>\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'subHeaderDictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select SubHeader Item',\n options: subHeaderDictionaryItems\n }\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-6 md:col-2 mt-2 mb-2 flex\">\n <div class=\"field col-12 pl-2 pb-0 mb-2 md:mr-2 md:col-12\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name:'layoutType',\n listLabelProperty:'name',\n listValueProperty:'value',\n displayText : 'Select Layout Type',\n options: widgetLayoutTypeList\n }\">\n </dropdown>\n </div>\n </div>\n </div>\n\n <div class=\"field p-0 pr-2 col-12 md:col-12 flex gap-2\">\n <div class=\"col-6 md:col-2\">\n <div class=\"card m-0 p-0 mb-2\">\n <div class=\"mt-3 w-full flex\">\n <button pButton pRipple routerLinkActive=\"router-link-active\"\n icon=\"pi pi-plus font-semibold\"\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\n (click)=\"handleBadgeAddBtnClick()\">\n <span class=\"ml-3\">Add Badge </span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-6 md:col-2\">\n <div class=\"card m-0 p-0 mb-2\">\n <div class=\"mt-3 w-full flex\">\n <button pButton pRipple routerLinkActive=\"router-link-active\"\n icon=\"pi pi-plus font-semibold\"\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\n (click)=\"handleWidgetItemAddBtnClick()\">\n <span class=\"ml-3\">Add Widget Item </span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Badges Section -->\n <div class=\"field p-0 pr-2 col-12 md:col-12 mb-3\">\n <h5 *ngIf=\"(record?.badges?.length ?? 0) > 0\" class=\"font-bold col-12 md:col-12 mb-2\">Badges</h5>\n <div class=\"feild-card col-12 md:col-12 flex\" *ngFor=\"let badge of (record?.badges || []); let i = index;\">\n <div class=\"field col-3 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"badge\" [attributeModel]=\"{\n name:'dictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n isRequired:true,\n options: dictionaries\n }\" (onInput)=\"handleBadgeDictionarySelect($event, i)\">\n </dropdown>\n </div>\n <div class=\"field col-3 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"badge\" [attributeModel]=\"{\n name:'dictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select Properties',\n isRequired:true,\n options: badgeDictionaryItemArray[i]\n }\">\n </dropdown>\n </div>\n <div class=\"field col-4 col-sm-6\">\n <text-box [store]=\"widgetStore\" [record]=\"badge\" [attributeModel]=\"{\n name : 'style',\n readonly : false,\n displayText : 'Style',\n isRequired : false,\n }\"></text-box>\n </div>\n <div class=\"field col-2 m-0 flex justify-content-start md:col-2 mt-5\">\n <div class=\"ml-4 delete-icon-container\">\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\" (click)=\"handleDeleteBadge(i)\"></i>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Widget Items -->\n <h5 *ngIf=\"(record?.dataItems?.length ?? 0) > 0\" class=\"font-bold col-12 md:col-12 mb-2\">Widget Items</h5>\n <div class=\"feild-card col-12 md:col-12 flex\" *ngFor=\"let widgetItem of (record?.dataItems || []); let i = index;\">\n <div class=\"field col-2 col-sm-6\">\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\n name : 'name',\n readonly : false,\n displayText : 'Item Label',\n isRequired : true,\n }\"></text-box>\n </div>\n <div class=\"field col-2 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\n name:'dictionaryID',\n listLabelProperty:'name',\n listValueProperty:'_id',\n displayText : 'Select Dictionary',\n isRequired:true,\n options: dictionaries\n }\" (onInput)=\"handleWidgetItemDictionarySelect($event, i)\">\n </dropdown>\n </div>\n <div class=\"field col-2 col-sm-6\">\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\n name:'dictionaryItemID',\n listLabelProperty:'itemName',\n listValueProperty:'_id',\n displayText : 'Select Properties',\n isRequired:true,\n options: dictionaryItemArray[i]\n }\">\n </dropdown>\n </div>\n <div class=\"field col-4 col-sm-6\">\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\n name : 'style',\n readonly : false,\n displayText : 'Item Style',\n isRequired : false,\n }\"></text-box>\n </div>\n <div class=\"field col-4 m-0 flex justify-content-center md:col-2 mt-5\">\n <div class=\"m-0\">\n <check-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Is Active ?',\n }\">\n </check-box>\n </div>\n <div class=\"ml-4 delete-icon-container\">\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\" (click)=\"handleDeleteRecord(i)\"></i>\n </div>\n </div>\n </div>\n </div>\n</form-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent } from '../../shared';\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\nimport { WidgetAdminListComponent } from './components/widget-admin-list/widget-admin-list.component';\nimport { WidgetAdminFormComponent } from './components/widget-admin-form/widget-admin-form.component';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\n\n\n\n/**\n * Module for managing widgets.\n */\n@NgModule({\n declarations: [WidgetAdminListComponent, WidgetAdminFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n TablePrimaryComponent,\n DropdownComponent,\n CheckBoxComponent,\n ButtonComponent,\n ButtonModule,\n TextBoxComponent\n ],\n exports: [WidgetAdminListComponent, WidgetAdminFormComponent]\n})\nexport class QWWidgetAdminModule { }\n","import { BaseModel } from \"../../../shared\";\n\nexport class QueueModel extends BaseModel {\n name?: string;\n description?: string;\n apiConfigId!: string;\n rules?: any;\n properties?: any;\n itemCount?: any;\n apiConfigUrl: string = \"\";\n detailsApiConfigUrl?: string;\n header?: string;\n subHeader?: string;\n isActive?: boolean;\n}\n","import { Injectable } from \"@angular/core\";\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\nimport { createInitialState, QueueState } from \"./queue.state\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { BaseStore } from \"../../../shared\";\n\n@Injectable({ providedIn: \"root\" })\n@StoreConfig({ name: \"queues\" })\nexport class QueueStore extends BaseStore<QueueModel> {\n constructor() {\n super();\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { QueueStore } from \"./queue.store\";\nimport { BaseQuery } from \"../../../shared/state/base.query\";\nimport { QueueModel } from \"../models/queue.model\";\n\n@Injectable({ providedIn: \"root\" })\nexport class QueueQuery extends BaseQuery<QueueModel> {\n constructor(protected override store: QueueStore) {\n super(store);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { AppConfigService, BaseService, DATASOURCES, URLS } from \"../../../shared\";\nimport { QueueStore } from \"./queue.store\";\nimport { ListService } from \"../../../shared/services/list.service\";\nimport { Observable, tap } from \"rxjs\";\nimport { LISTCONFIG } from \"../../../shared/constant/LIST-CONFIG\";\n\n@Injectable({ providedIn: \"root\" })\nexport class QueueService extends BaseService<QueueModel> {\n constructor(\n public queueStore: QueueStore,\n http: HttpClient,\n appConfigService: AppConfigService,\n listService: ListService\n ) {\n super(http, queueStore, appConfigService, listService);\n this._pathName = DATASOURCES.QUEUES;\n }\n\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG;\n getbyApiPath(id: string): Observable<QueueModel[]> {\n return this.http\n .get<QueueModel[]>(`${this.apiUrl}${DATASOURCES.APIMANAGEMENT}/${id}`)\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\n }\n\n getCaseById(url: string): Observable<any> {\n return this.http\n .get<QueueModel[]>(url)\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\n }\n}\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport { QueryBuilderConfig } from \"@kerwin612/ngx-query-builder\";\nimport { QueueQuery } from \"../../state/queue.query\";\nimport { QueueModel } from \"../../models/queue.model\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { BaseFormComponent, SHARED, ERROR, BaseStore, BaseQuery } from \"../../../../shared\";\nimport { QueueStore } from \"../../state/queue.store\";\nimport { ValidatorService } from \"../../../../shared/services/validator.service\";\nimport { QueueService } from \"../../state/queue.service\";\nimport { MESSAGE } from \"../../../../shared/constant/MESSAGES\";\nimport { Message } from \"primeng/api\";\nimport { takeUntil } from \"rxjs\";\n\n@Component({\n selector: \"lib-queue-admin-form\",\n standalone: false,\n templateUrl: \"./queue-admin-form.component.html\",\n styleUrl: \"./queue-admin-form.component.scss\",\n encapsulation: ViewEncapsulation.None,\n})\nexport class QueueAdminFormComponent\n extends BaseFormComponent<QueueModel>\n implements OnInit, OnDestroy\n{\n constructor(\n public queueQuery: QueueQuery,\n public queueService: QueueService,\n override activatedRoute: ActivatedRoute,\n public queueStore: QueueStore,\n override validatorService: ValidatorService,\n override router: Router,\n override baseStore: BaseStore<QueueModel>, \n override baseQuery: BaseQuery<QueueModel>\n ) {\n super(queueService, validatorService, router, activatedRoute);\n this.record = new QueueModel();\n this.record.isActive = true;\n }\n\n messages: Message[] = SHARED.EMPTYARRAY;\n fetchedProperties: any;\n config: QueryBuilderConfig = { fields: {} };\n apiPropertyList: any;\n\n query = {\n condition: SHARED.AND,\n rules: [],\n };\n\n ngOnInit(): void {\n this.baseStore.setIsApiValidated(false);\n this.service.initList();\n const id = this.activatedRoute\n ? this.activatedRoute.snapshot.params[SHARED.ID]\n : \"\";\n if (id && id !== SHARED.ZERO.toString()) {\n this.service.getById(id).subscribe((res: any) => {\n if (res) {\n this.record = res;\n this.getApiProperties(res?.apiConfigId, res);\n this.query = res.rules ? structuredClone(res.rules) : { condition: SHARED.AND, rules: [] };\n this.fetchedProperties = res.properties;\n this.initialRecord = JSON.parse(JSON.stringify(res));\n if (this.fetchedProperties) {\n this.setupQueryBuilderConfig(this.fetchedProperties);\n }\n }\n else {\n this.initialRecord = structuredClone(this.record);\n }\n });\n } \n this.formStateService.selectIsFormNavigating()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.checkUnsavedChanges()\n }\n });\n }\n \n getApiProperties(id: string, res: any): void {\n this.fetchApiProperties(id, { setValidated: false, showToast: false }, res);\n }\n\n setupQueryBuilderConfig(properties: string[]): void {\n if (!properties || properties.length === 0) {\n console.warn(\"Properties list is empty. Query Builder config might be invalid.\");\n return;\n }\n \n const fieldsConfig: { [key: string]: any } = {};\n \n properties.forEach((prop) => {\n fieldsConfig[prop] = {\n name: prop,\n type: SHARED.STRING, // Ensure type is valid\n operators: SHARED.OPERATORS,\n options: [], // Add any default options if needed\n };\n });\n \n this.config = { fields: fieldsConfig };\n console.log(\"Query Builder Config:\", this.config);\n }\n \n\n onQueryChange(event: any) {\n console.log(MESSAGE.QUERY_CHANGE_EVENT, event);\n }\n\n private fetchApiProperties(apiConfigId: string, options: { setValidated?: boolean; showToast?: boolean } = {}, response:any): void {\n if (apiConfigId) {\n this.queueService.getbyApiPath(apiConfigId).subscribe({\n next: (res: any) => {\n if (res) {\n this.fetchedProperties = res.properties;\n const updatedPropertyList = res.properties.map((value:any) => ({ value }));\n this.apiPropertyList = updatedPropertyList;\n this.setupQueryBuilderConfig(res.properties);\n if(response) {\n this.record.header = response?.header;\n this.record.subHeader = response?.subHeader;\n }\n if (options.setValidated) {\n this.baseStore.setIsApiValidated(SHARED.TRUE);\n }\n }\n },\n error: (error: any) => {\n if (options.setValidated) {\n this.baseStore.setIsApiValidated(SHARED.FALSE);\n }\n console.error(ERROR.ERROR_FETCHING_DATA, error);\n },\n complete: () => {\n if (options.showToast) {\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.DATA_FETCH_SUCCESS }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n }\n },\n });\n } else {\n console.warn(ERROR.API_NAME_NOT_SET);\n }\n }\n\n handleGetData(): void {\n this.fetchApiProperties(this.record.apiConfigId, { setValidated: true, showToast: true }, null);\n }\n\n handleQueueChange(queueId: string) {\n if(queueId) {\n this.apiPropertyList = [];\n this.record.header = SHARED.EMPTY;\n this.record.subHeader = SHARED.EMPTY;\n }\n }\n\n override handleSubmit(): void {\n this.convertStringToBoolean(this.query.rules);\n this.record.rules = this.query;\n this.record.properties = this.fetchedProperties;\n super.handleSubmit();\n }\n\n convertStringToBoolean(rules: any[]): void {\n rules.forEach(rule => {\n if (rule.rules) {\n this.convertStringToBoolean(rule.rules);\n } else if (rule.value === SHARED.STRING_TRUE) {\n rule.value = true;\n } else if (rule.value === SHARED.STRING_FALSE) {\n rule.value = false;\n }\n });\n }\n\n override ngOnDestroy(): void {\n this.record = {} as QueueModel;\n super.ngOnDestroy();\n }\n}\n","<div class=\"grid m-0\">\n <div class=\"col-12\">\n <div>\n <form-container\n [record]=\"record\"\n [headerText]=\"'Queue / Create Queue'\"\n (onSave)=\"handleSubmit()\"\n (onCancel)=\"handleCancel()\"\n [showSave]=\"true\"\n [messages]=\"messages\"\n >\n <div class=\"card m-0\">\n <div class=\"p-fluid p-formgrid grid m-0\">\n <h4 class=\"font-bold col-12 md:col-12\">Create Queue</h4>\n <div class=\"col-12 md:col-5\">\n <text-box\n [record]=\"record\"\n [store]=\"queueStore\"\n [attributeModel]=\"{\n name : 'name',\n displayText:'Queue Name',\n readonly : false,\n isRequired : true,\n }\"\n >\n </text-box>\n </div>\n <div class=\"col-12 md:col-5\">\n <dropdown\n [record]=\"record\"\n [store]=\"queueStore\"\n [attributeModel]=\"{\n name: 'apiConfigId',\n readonly: false,\n isRequired: true,\n dataSource: 'apiConfig',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n displayText: 'Api'\n }\" (onInput)=\"handleQueueChange($event)\"\n >\n </dropdown>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"queueStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n\n <div class=\"w-full px-2 mt-2 flex justify-content-end mb-2\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Validate\"\n (click)=\"handleGetData()\"\n class=\"p-button-raised validate-btn-wrapper\"\n ></button>\n </div>\n\n <div class=\"p-fluid p-formgrid grid m-0\">\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"queueStore\"\n [record]=\"record\"\n [isStaticDropdown]=\"true\"\n [attributeModel]=\"{\n name:'header',\n displayText : 'Header',\n placeholder: 'Select Header',\n listValueProperty: 'value',\n listLabelProperty: 'value',\n readonly : false,\n isRequired : true,\n options: apiPropertyList\n }\"></dropdown>\n </div>\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"queueStore\"\n [record]=\"record\"\n [isStaticDropdown]=\"true\"\n [attributeModel]=\"{\n name:'subHeader',\n displayText : 'SubHeader',\n placeholder: 'Select SubHeader',\n listValueProperty: 'value',\n listLabelProperty: 'value',\n readonly : false,\n isRequired : false,\n options: apiPropertyList\n }\"></dropdown>\n </div>\n </div>\n </div>\n\n <div class=\"card m-0\">\n <div class=\"p-fluid p-formgrid grid m-0 mb-2\">\n <h4 class=\"font-bold col-12 md:col-12\">Queue Details</h4>\n </div>\n <ngx-query-builder\n class=\"p-2\"\n [(ngModel)]=\"query\"\n [config]=\"config\"\n (queryChange)=\"onQueryChange($event)\"\n ></ngx-query-builder>\n </div>\n </form-container>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { QueueAdminFormComponent } from './components/queue-admin-form/queue-admin-form.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: QueueAdminFormComponent,\n children: [],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class QueueRoutingModule {}","import { Injectable } from '@angular/core';\nimport { SHARED } from '../constant/SHARED';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataTransformerService {\n\n constructor() { }\n flattenObject(data: any, result: any[] = [], additionalFields: any = {}): any[] {\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n if (typeof data[key] === SHARED.TYPE_OBJECT && data[key] !== null && !Array.isArray(data[key])) {\n this.flattenObject(data[key], result);\n } else {\n result.push({\n label: this.transformLabel(key),\n value: data[key]\n });\n }\n }\n }\n if (additionalFields._id) {\n result.push({\n _id: additionalFields._id\n });\n }\n\n if (additionalFields.QueueID) {\n result.push({\n QueueID: additionalFields.QueueID\n });\n }\n\n return result;\n }\n\n transformLabel(key: string): string {\n return key.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\n }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { QueueModel } from '../../models/queue.model';\nimport { ROUTES, SEQUENTIAL_MESSAGE, SHARED, MESSAGE_TYPES } from '../../../../shared';\nimport { DataTransformerService } from '../../../../shared/services/data-transformer.service';\nimport { Router } from '@angular/router';\nimport { QueueService } from '../../state/queue.service';\nimport { QueueStore } from '../../state/queue.store';\n\n@Component({\n selector: 'queue-application-list',\n standalone: false,\n templateUrl: './queue-application-list.component.html',\n styleUrls: ['./queue-application-list.component.scss'],\n})\nexport class QueueApplicationListComponent implements OnChanges {\n @Input() queueData!: QueueModel;\n\n selectedStatus: string = SHARED.STATUS_ACTIVE;\n isAscending: boolean = true;\n associateQueueList: any;\n\n constructor(\n public queueService: QueueService,\n public dataTransformService: DataTransformerService,\n public router: Router,\n public queueStore : QueueStore\n ) {}\n\n ngOnChanges() {\n if (this.queueData) {\n this.loadAssociatedList();\n }\n }\n loadAssociatedList(): void {\n if (this.queueData && this.queueData._id) {\n this.queueService.getCaseById(this.queueData.apiConfigUrl).subscribe((application: any) => {\n if (application) {\n const messages = SEQUENTIAL_MESSAGE;\n this.associateQueueList = application.map((item: any, index: number) => ({\n ...item,\n initials: this.getInitials(item.FullName),\n message: {\n content: messages[index % messages.length],\n type: this.getTypeByIndex(index),\n day: index % 2 === 0 ? SHARED.TODAY : SHARED.YESTERDAY,\n count: this.getRandomCount(),\n },\n }));\n }\n });\n } else {\n this.associateQueueList = [];\n }\n }\n getRandomCount(): number {\n return Math.floor(Math.random() * 10) + 1;\n }\n \n getInitials(fullName: string): string {\n if (!fullName) return '';\n const nameParts = fullName?.split(' ')?.filter(Boolean);\n const initials = nameParts?.length > 1\n ? nameParts[0][0] + nameParts[nameParts?.length - 1][0]\n : nameParts[0][0];\n return initials?.toUpperCase();\n } \n \n getTypeByIndex(index: number): string {\n const types = MESSAGE_TYPES;\n return types[index % types.length];\n }\n \n\n getRandomType(): string {\n const types = MESSAGE_TYPES;\n return types[Math.floor(Math.random() * types.length)];\n }\n \n \n\n handleApplicationClick(application: any) {\n this.router.navigate([ROUTES.APPLICATION + application.CaseId]);\n }\n\n onStatusChange(selectedStatus: any): any {\n this.selectedStatus = selectedStatus.target.value;\n }\n}\n","<div class=\"grid m-0\">\n <div class=\"col-12\">\n <div class=\"p-fluid p-formgrid grid p-2\">\n <div class=\"card col-12 md:col-12 flex flex-column border-bottom align-items-start p-4 pb-3\" style=\"\n border-bottom: 1px solid var(--surface-border);\n border-radius: 0px;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n \">\n <h4 class=\"text-color m-0 queue-name font-semibold margin\">\n {{ queueData.name }}\n </h4>\n </div>\n\n <div class=\"col-12 md:col-12 p-0 flex scrollable flex-column\" [ngClass]=\"\n selectedStatus === 'active' ? 'surface-card' : 'inactive-card-wrapper'\n \">\n @for(record of associateQueueList; track record; let i = $index) {\n @if(record){\n <div class=\"col-12 md:col-12 border-bottom-1 p-0 surface-border gap-2 hover:surface-ground cursor-pointer\"\n (click)=\"handleApplicationClick(record)\">\n\n <div class=\"col-12 md:col-12 flex align-items-center py-3 px-4 userInfo\">\n <div class=\"col-12 md:col-2 p-0 userImage\">\n <div\n class=\"mainimg flex align-items-center justify-content-center circleColor w-3rem h-3rem border-circle\">\n <span class=\"font-bold\" style=\"font-weight: 600; font-size: 13.5; font-family: inherit;\">\n {{ record.initials }}\n </span>\n </div>\n </div>\n <div class=\"col-12 md:col-10 p-0\">\n <div class=\"flex justify-content-between align-items-center col-12 md:col-12 p-0\">\n <div class=\"userName\" style=\"font-weight: 600; font-size: 15px; \">\n {{ record.FullName | capitalizeWords }} \n </div>\n <div class=\"dayAndtime flex\">\n @if(record.message.type == \"Email\"){\n <span class=\"pi pi-envelope mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\n }\n @else if(record.message.type == \"SMS\") {\n <span class=\"pi pi-comments mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\n }@else if(record.message.type == \"WhatsApp\"){\n <span class=\"pi pi-whatsapp mr-2\" style=\"color: #676B89;font-size: 17px;\"></span>\n\n }\n <span style=\"color: #676B89; font-family: inherit;\"> {{record.message.day}}</span>\n </div>\n </div>\n <div class=\"flex align-items-center justify-content-between mt-1\">\n <div class=\"email col-12 md:col-12 p-0\" style=\"color: #8A8EA6;\">\n {{ record.message.content }}\n </div>\n \n <div class=\"countOfMessages\">\n <span>{{record.message.count}}</span>\n </div>\n \n </div>\n </div>\n </div>\n </div>\n }\n }\n\n </div>\n </div>\n </div>\n</div>","import { Component } from '@angular/core';\nimport { QueueModel } from '../../models/queue.model';\nimport { QueueService } from '../../state/queue.service';\nimport { BaseContainerComponent, ERROR, SHARED } from '../../../../shared';\nimport { QueueStore } from '../../state/queue.store';\n\n@Component({\n selector: 'lib-queue-admin-list',\n standalone: false,\n templateUrl: './queue-admin-list.component.html',\n styleUrl: './queue-admin-list.component.scss'\n})\nexport class QueueAdminListComponent extends BaseContainerComponent<QueueModel> {\n constructor(public queueStore:QueueStore ,private queueService: QueueService) {\n super(queueService);\n }\n\n queueList: QueueModel[] = [];\n selectedQueue: any;\n queueId: any;\n ngOnInit() {\n this.init();\n this.getAllQueueList();\n }\n\n getAllQueueList() {\n this.queueService.getAll().subscribe({\n next: (res) => {\n this.queueList = res;\n this.selectedQueue = res[0];\n },\n error: (err) => {\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\n }\n });\n }\n\n handleQueueData(event: any) {\n this.selectedQueue = this.queueList.find((i) => i._id == event);\n if (this.selectedQueue) {\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\n } else {\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\n }\n }\n}","<div class=\"container grid m-0\">\n <div class=\"col-12 xl:col-3 md:col-12\">\n <block-list\n [queueData]=\"queueList\"\n (queueDataById)=\"handleQueueData($event)\"\n ></block-list>\n </div>\n <div class=\"col-12 xl:col-3 md:col-12\">\n @if(selectedQueue){\n <div class=\"animation-duration-500 associated-list\">\n <queue-application-list\n [queueData]=\"selectedQueue\"\n ></queue-application-list>\n </div>\n }\n </div>\n \n <div class=\"xl:col-6 md:col-12\">\n <div class=\"searchbar-wrapper\">\n <queue-search-customer></queue-search-customer>\n </div>\n </div>\n </div>\n ","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { QueueAdminFormComponent } from \"./components/queue-admin-form/queue-admin-form.component\";\nimport { SharedModule } from \"../../shared/shared.module\";\nimport { QueueRoutingModule } from \"./queue-admin-routing.module\";\nimport { FormsModule } from \"@angular/forms\";\nimport { QueryBuilderModule } from \"@kerwin612/ngx-query-builder\";\nimport { ButtonModule } from \"primeng/button\";\nimport { QueueAdminListComponent } from \"./components/queue-admin-list/queue-admin-list.component\";\nimport { QueueApplicationListComponent } from \"./components/queue-application-list/queue-application-list.component\";\nimport { CheckBoxComponent } from \"../../shared\";\n\n@NgModule({\n declarations: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\n imports: [\n CommonModule,\n SharedModule,\n QueueRoutingModule,\n FormsModule,\n QueryBuilderModule,\n ButtonModule,\n CheckBoxComponent\n ],\n exports: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\n})\nexport class QueueAdminModule {}\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared/state/base.store';\nimport { AdminActionModel } from '../models/admin-action.model';\n\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'action' })\nexport class AdminActionStore extends BaseStore<AdminActionModel> {\n\n constructor() {\n super();\n }\n\n}","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AdminActionModel } from '../models/admin-action.model';\nimport { AdminActionStore } from './admin-action.store';\nimport { DATASOURCES } from '../../../shared/constant/DATASOURCES';\nimport { BaseService } from '../../../shared/state/base.service';\nimport { AppConfigService } from '../../../shared/services/app-config.service';\nimport { ListService } from '../../../shared/services/list.service';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\nimport { Observable, tap } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AdminActionService extends BaseService<AdminActionModel> {\n\n protected override list : any= [...LISTCONFIG.QUEUEAPICONFIG, ...LISTCONFIG.ACTIONQUEUECONFIG];\n\n constructor(protected actionStore: AdminActionStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\n super(http, actionStore, appConfigService,listService);\n this._pathName = DATASOURCES.ACTIONS;\n }\n\n handleValidateAction(name:string, id: string, record:any): Observable<AdminActionModel[]> {\n const apiUrl = `${this.apiUrl}${name}/${encodeURIComponent(id)}`;\n return this.http.post<AdminActionModel[]>(`${apiUrl}`, record).pipe(\n tap((entities: AdminActionModel[]) => this.actionStore.set(entities))\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\nimport { AdminActionModel } from '../../models/admin-action.model';\nimport { TableBuilder } from '../../../../shared/services/table.builder';\nimport { AdminActionService } from '../../state/admin-action.service';\nimport { actionHiddenHeaderList, actionList, actionTableColumnWidthList } from '../../../../shared/constant/SHARED';\nimport { DATASOURCES } from '../../../../shared';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n\n/**\n * Admin Action List Component\n */\n@Component({\n selector: 'lib-admin-action-list',\n standalone : false,\n templateUrl: './admin-action-list.component.html',\n styleUrl: './admin-action-list.component.scss'\n})\nexport class AdminActionListComponent extends BaseListComponent<AdminActionModel>{\n \n pathName:string = DATASOURCES.ACTIONS;\n override editPermission: string = PERMISSION.ACTIONCONFIG_PUT\n override deletePermission: string = PERMISSION.ACTIONCONFIG_DELETE\n constructor(service: AdminActionService, private tableBuilder: TableBuilder){\n super(service, tableBuilder)\n this.tableBuilder.hiddenHeaders = actionHiddenHeaderList;\n } \n\n ngOnInit() {\n this.init(actionTableColumnWidthList);\n }\n \n}","<div class=\"dicitonary-list-wrapper\">\n @if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\n }\n</div>","import { BaseModel } from \"../../../shared/models/base.model\";\n\nexport class AdminActionModel extends BaseModel {\n name!: string;\n apiConfigId!: string;\n prompt!: string;\n queueId!: string;\n formFields!: string;\n status!: StatusType;\n isActive!: boolean;\n apiDocsUrl!: string;\n}\n\nexport type StatusType = \"Enable\" | \"Disable\";","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BaseFormComponent } from '../../../../shared/_base/base-form/base-form.component';\nimport { AdminActionModel } from '../../models/admin-action.model';\nimport { Message } from 'primeng/api';\nimport { SHARED } from '../../../../shared/constant/SHARED';\nimport { AdminActionService } from '../../state/admin-action.service';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AdminActionStore } from '../../state/admin-action.store';\nimport { AppConfigService, BaseQuery, BaseStore, ROUTES } from '../../../../shared';\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\n\n@Component({\n selector: 'lib-admin-action-form',\n standalone : false,\n templateUrl: './admin-action-form.component.html',\n styleUrl: './admin-action-form.component.scss'\n})\nexport class AdminActionFormComponent extends BaseFormComponent<AdminActionModel> implements OnInit, OnDestroy{\n messages: Message[] = SHARED.EMPTYARRAY;\n apiConfigList: any[] = [];\n queueList: any[] = [];\n\n constructor(public adminActionService: AdminActionService, override validatorService: ValidatorService, override router: Router, override activatedRoute: ActivatedRoute, public adminActionStore: AdminActionStore, private appConfigService: AppConfigService, override baseStore: BaseStore<AdminActionModel>, override baseQuery: BaseQuery<AdminActionModel>) {\n super(adminActionService, validatorService, router, activatedRoute)\n this.record = new AdminActionModel();\n this.record.isActive = true;\n }\n\n ngOnInit() {\n this.init();\n this.baseStore.setIsApiValidated(null);\n }\n\n handleValidateAction() {\n const payload = {path: this.record.apiDocsUrl};\n this.adminActionService.handleValidateAction(ROUTES.VALIDATE_ACTIONS,this.record.apiConfigId,payload)\n .subscribe({\n next: (res: any) => {\n if (res) {\n if (typeof res !== SHARED.STRING) {\n this.record.formFields = JSON.stringify(res);\n } else {\n this.record.formFields = res;\n }\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_ACTION_SUCCESS_MESSAGE }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n // this.baseStore.setIsApiValidated(SHARED.TRUE);\n }\n },\n error: (error: any) => {\n // this.baseStore.setIsApiValidated(SHARED.FALSE);\n },\n });\n }\n\n override handleSubmit(): void {\n if (typeof this.record.formFields !== SHARED.STRING && !this.isValidJSONArray(this.record.formFields)) {\n this.record.formFields = JSON.stringify(this.record.formFields);\n }\n super.handleSubmit();\n }\n \n private isValidJSONArray(value: string): boolean {\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed);\n } catch (e) {\n return false;\n }\n }\n\n override ngOnDestroy(): void {\n this.record = {} as AdminActionModel;\n super.ngOnDestroy();\n }\n}\n","<form-container\n [record]=\"record\"\n [headerText]=\"'Actions / Actions Form'\"\n [messages]=\"messages\"\n (onSave)=\"handleSubmit()\"\n [showSave]=\"true\"\n (onCancel)=\"handleCancel()\"\n>\n <div class=\"card p-fluid p-formgrid grid \">\n <h4 class=\"font-bold col-12 md:col-12\">Actions Form</h4>\n <div class=\"col-12 md:col-5\">\n <text-box\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Action Name',\n placeholder: 'Enter Action Name'\n }\"\n ></text-box>\n </div>\n \n <div class=\"col-12 md:col-5\">\n <dropdown\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name: 'apiConfigId',\n readonly: false,\n isRequired: true,\n displayText: 'End Point',\n placeholder: 'Select End Point'\n }\"></dropdown>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"adminActionStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <dropdown\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n name:'queueId',\n isRequired: true,\n displayText : 'Queue',\n placeholder: 'Select Queue',\n readonly: false\n }\"></dropdown>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <text-box\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'apiDocsUrl',\n isRequired: false,\n displayText: 'API Docs URL',\n placeholder: 'Enter API Docs URL'\n }\"\n ></text-box>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <text-area\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'prompt',\n isRequired: true,\n displayText: 'Prompt',\n placeholder: 'Enter prompt'\n }\"\n ></text-area>\n </div>\n\n <div class=\"w-full flex justify-content-end px-2 mt-2\">\n <button\n pButton\n pRipple\n type=\"button\"\n label=\"Validate\"\n class=\"p-button-raised validate-btn-wrapper\"\n (click)=\"handleValidateAction()\"\n ></button>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <text-area\n [store]=\"adminActionStore\"\n [record]=\"record\"\n [attributeModel]=\"{\n readonly: false,\n name: 'formFields',\n isRequired: true,\n displayText: 'Form Configuration',\n placeholder: 'Enter form fields'\n }\"\n ></text-area>\n </div>\n </div>\n \n</form-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AdminActionListComponent } from './components/admin-action-list/admin-action-list.component';\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\nimport { AdminActionFormComponent } from './components/admin-action-form/admin-action-form.component';\nimport { FormsModule } from '@angular/forms';\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\nimport { ButtonModule } from 'primeng/button';\n\n\n\n@NgModule({\n declarations: [AdminActionListComponent, AdminActionFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n TablePrimaryComponent,\n TextAreaComponent,\n ButtonModule,\n CheckBoxComponent\n ],\n exports: [AdminActionListComponent, AdminActionFormComponent]\n})\nexport class ActionAdminModule { }\n","import { SHARED } from \"../../../shared\";\nimport { BaseModel } from \"../../../shared/models/base.model\";\n\nexport class DdAdminModel extends BaseModel {\n name?: string\n apiConfigId?: string\n dictionaryItems: DdItemModel[] = [];\n message?: string;\n isActive!: boolean;\n}\nexport class DdItemModel extends BaseModel {\n itemName?: string\n itemExpression?: string\n styleExpression?: string\n isActive: boolean = true;\n}\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { DdAdminModel } from '../models/dictionary.model';\nimport { BaseStore } from '../../../shared/state/base.store';\nimport { ApiPropertyModel } from '../models/api-property.model';\n\n/**\n * DictionaryStore\n * @description Store for managing dictionary state\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'dictionary' })\nexport class DictionaryStore extends BaseStore<DdAdminModel> {\n\n setPropertiesData(value : ApiPropertyModel){\n this.update({propertyData : value})\n }\n\n setSidebarVisible(value:boolean){\n this.update({isSideBarVisible:value})\n }\n}","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DictionaryStore } from './dictionary.store';\nimport { DdAdminModel } from '../models/dictionary.model';\nimport { catchError, Observable, of, tap } from 'rxjs';\nimport { BaseService, AppConfigService, DATASOURCES, ERROR } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { ApiPropertyModel } from '../models/api-property.model';\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\n\n@Injectable({ providedIn: 'root' })\nexport class DictionaryService extends BaseService<DdAdminModel> {\n\n constructor(public dictionaryStore: DictionaryStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\n super(http, dictionaryStore, appConfigService,listService);\n this._pathName = DATASOURCES.DICTIONARY;\n }\n\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG\n\n getAllApiProperties(name:string, id: string): Observable<ApiPropertyModel> {\n return this.http.get<ApiPropertyModel>(`${this.apiUrl+name}/${id}`).pipe(\n tap((propertiesData: ApiPropertyModel) => this.dictionaryStore.setPropertiesData(propertiesData))\n );\n }\n\n deleteDictionaryItemById(name:string, dictionaryItemId: string) : Observable<DdAdminModel | any> {\n const Url = `${this.apiUrl+name}/${dictionaryItemId}`;\n return this.http.delete<DdAdminModel>(Url).pipe(\n catchError((error:any) => {\n console.error(ERROR.ERROR_DELETE_DICTIONARY_ITEM, error);\n return of({ error: true, message: ERROR.ERROR_DELETE_DICTIONARY_ITEM });\n })\n )\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DictionaryStore } from './dictionary.store';\nimport { DdAdminModel } from '../models/dictionary.model';\nimport { BaseQuery } from '../../../shared/state/base.query';\nimport { Observable } from 'rxjs';\nimport { ApiPropertyModel } from '../models/api-property.model';\n\n/**\n * DictionaryQuery\n * @description Query for managing dictionary state\n */\n@Injectable({ providedIn: 'root' })\nexport class DictionaryQuery extends BaseQuery<DdAdminModel> {\n constructor(protected override store: DictionaryStore) {\n super(store);\n }\n\n selectPropertyData():Observable<ApiPropertyModel>{\n return this.select((state) => state['propertyData'])\n }\n getPropertyData(): ApiPropertyModel{\n return this.getValue()['propertyData']\n }\n selectSidebarVisible(){\n return this.select((state)=>state['isSideBarVisible'])\n }\n getSidebarVisible(){\n return this.getValue()['isSideBarVisible']\n }\n}\n","import { SHARED } from \"../../../shared\";\n\nexport class DdAttributeSidebarViewModel {\n mappingInfo: string = SHARED.EMPTY;\n propertyList : string = SHARED.EMPTY\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DictionaryStore } from '../../state/dictionary.store';\nimport { DdAttributeSidebarViewModel } from '../../models/dd-attribute-sidebar-view.model';\nimport { BaseQuery, BaseStore, SHARED } from '../../../../shared';\nimport { DictionaryQuery } from '../../state/dictionary.query';\nimport { SelectItem } from 'primeng/api';\nimport { DdItemModel } from '../../models/dictionary.model';\nimport { Subscription } from 'rxjs';\n\n/**\n * DdAdminItemFormComponent\n * This component is used to create and edit item expressions and style expressions.\n */\n@Component({\n selector: 'lib-dd-admin-item-form',\n standalone: false,\n templateUrl: './dd-admin-item-form.component.html',\n styleUrl: './dd-admin-item-form.component.scss'\n})\nexport class DdAdminItemFormComponent implements OnChanges, OnDestroy {\n @Input() ddItemRecord: DdItemModel = { itemName: SHARED.EMPTY, itemExpression: SHARED.EMPTY, styleExpression: SHARED.EMPTY, isActive: SHARED.FALSE }\n @Input() isItemExpression?: boolean\n @Input() isSidebarVisible?: boolean\n @Output() saveClick = new EventEmitter<any>()\n attributeRecord!: DdAttributeSidebarViewModel\n dictionaryItemName: string = SHARED.EMPTY\n condition: string = SHARED.EMPTY\n propertyOptions: SelectItem[] = []\n private subscriptions: Subscription = new Subscription();\n\n constructor(public dictionaryStore: DictionaryStore, public dictionaryQuery: DictionaryQuery, private baseStore: BaseStore<any>) {\n this.attributeRecord = new DdAttributeSidebarViewModel()\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes[SHARED.ISITEMEXPRESSION]) {\n this.attributeRecord.mappingInfo = (this.isItemExpression ? this.ddItemRecord.itemExpression : this.ddItemRecord.styleExpression) ?? SHARED.EMPTY\n }\n this.loadPropertyOption()\n }\n\n loadPropertyOption() {\n this.subscriptions.add(\n this.dictionaryQuery.selectPropertyData().subscribe((res: any) => {\n this.propertyOptions = []\n if (res) {\n this.mapProperties(res)\n }\n })\n )\n }\n\n private mapProperties(res: any) {\n if (res?.properties?.length) {\n this.propertyOptions.push(...res.properties.map((property: string) => ({\n label: `${res.name}.${property}`,\n value: `${res.name}.${property}`\n })))\n }\n if (res?.childApis?.length) {\n res.childApis.forEach((childApi: any) => {\n this.propertyOptions.push(...childApi.properties.map((property: string) => ({\n label: `${res.name}.${childApi.name}.${property}`,\n value: `${res.name}.${childApi.name}.${property}`\n })))\n })\n }\n }\n\n handleSaveBtnClick(event: any) {\n if (this.isItemExpression) {\n if (this.baseStore) this.baseStore.setIsFormSubmitted(true);\n if (!this.attributeRecord.mappingInfo) return;\n this.ddItemRecord.itemExpression = this.attributeRecord.mappingInfo\n } else {\n this.ddItemRecord.styleExpression = this.attributeRecord.mappingInfo\n }\n this.attributeRecord.propertyList = SHARED.EMPTY\n this.saveClick.emit(false)\n }\n\n handleAddExpressionClick(event: any) {\n if (this.attributeRecord.propertyList) {\n const formattedProperty = `\\${${this.attributeRecord.propertyList}}`;\n this.attributeRecord.mappingInfo += this.attributeRecord.mappingInfo\n ? `${formattedProperty}`\n : formattedProperty;\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe()\n this.propertyOptions = []\n this.attributeRecord = new DdAttributeSidebarViewModel()\n }\n}\n","<div class=\"dicitonary-edit-action px-3\">\n <div class=\"flex align-items-center justify-content-end mt-3\">\n <lib-button\n [store]=\"dictionaryStore\"\n [record]=\"attributeRecord\"\n [attributeModel]=\"{\n buttonLabel: 'Save',\n isDisabled: false,\n }\"\n (onBtnClick)=\"handleSaveBtnClick($event)\"\n >\n </lib-button>\n </div>\n\n <div class=\"col-12 md:col-12 mt-5\">\n <label *ngIf=\"!isItemExpression\" for=\"styleInput\" class=\"text-gray-600 text-sm mb-2 block\">\n Hint: Use key-value pairs for styles.\n <br/>\n Example:<code>\n 'background-color': 'lightgray',\n 'font-size': '16px',<br>\n 'padding': '10px'\n </code>\n </label>\n <text-area\n [store]=\"dictionaryStore\"\n [record]=\"attributeRecord\"\n [attributeModel]=\"{\n displayText: 'Expression',\n readonly : false,\n name : 'mappingInfo',\n isRequired : isItemExpression ? true : false,\n placeholder : 'Enter Text',\n customPadding: '12px',\n }\"\n ></text-area>\n </div>\n <div class=\"col-12 md:col-12\">\n <div class=\"p-field queue-list-wrapper\">\n <dropdown [store]=\"dictionaryStore\" [isStaticDropdown]=\"true\" [record]=\"attributeRecord\" [attributeModel]=\"{\n name:'propertyList',\n displayText : 'Select properties',\n isRequired:false,\n listLabelProperty: 'label',\n listValueProperty: 'value',\n options : propertyOptions,\n filter : true\n }\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-12 md:col-3\">\n <lib-button\n [store]=\"dictionaryStore\"\n [record]=\"attributeRecord\"\n [attributeModel]=\"{\n buttonLabel: 'Add to expression',\n isDisabled: false,\n }\"\n (onBtnClick)=\"handleAddExpressionClick($event)\"\n >\n </lib-button>\n </div>\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { BaseFormComponent, BaseQuery, BaseStore, DATASOURCES, ERROR, SHARED } from '../../../../shared';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { DictionaryQuery } from '../../state/dictionary.query';\nimport { DictionaryService } from '../../state/dictionary.service';\nimport { DictionaryStore } from '../../state/dictionary.store';\nimport { DdAdminModel, DdItemModel } from '../../models/dictionary.model';\nimport { Message } from 'primeng/api';\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\n\n/**\n * DdAdminFormComponent\n * @description Component for managing dictionary form\n */\n@Component({\n selector: 'lib-dd-admin-form',\n templateUrl: './dd-admin-form.component.html',\n styleUrl: './dd-admin-form.component.scss',\n standalone: false\n})\nexport class DdAdminFormComponent extends BaseFormComponent<DdAdminModel> implements OnInit, OnDestroy {\n sidebarVisibility: boolean[] = [];\n messages: Message[] = SHARED.EMPTYARRAY;\n dictionaryItem !: DdItemModel\n dictionaryName: string = SHARED.EMPTY;\n isItemExpression : boolean = SHARED.FALSE;\n constructor(override service: DictionaryService, public dictionaryQuery: DictionaryQuery, override validatorService: ValidatorService, override router: Router, override activatedRoute: ActivatedRoute, public ddAdminStore: DictionaryStore, override baseStore: BaseStore<DdAdminModel>, override baseQuery: BaseQuery<DdAdminModel>) {\n super(service, validatorService, router, activatedRoute);\n this.record = new DdAdminModel()\n this.record.isActive = true;\n this.dictionaryItem = new DdItemModel()\n }\n\n ngOnInit() {\n this.baseStore.setIsApiValidated(null);\n this.init()\n this.sidebarVisibility = new Array(this.record.dictionaryItems.length).fill(false);\n setTimeout(() => {\n if (this.record.apiConfigId) {\n this.handleGetProperties(this.record.apiConfigId);\n }\n }, 2000);\n }\n \n handleDictionaryItemAddBtnClick() {\n if (!(this.record.name && this.record.apiConfigId)) return;\n if (Array.isArray(this.record.dictionaryItems)) {\n const hasEmptyItem = this.record.dictionaryItems.some((item: DdItemModel) => {\n const isItemNameEmpty = !item.itemName || item.itemName.trim() === SHARED.EMPTY;\n const isItemExpressionEmpty = !item.itemExpression || item.itemExpression.trim() === SHARED.EMPTY;\n return isItemNameEmpty && isItemExpressionEmpty;\n });\n \n if (hasEmptyItem) {\n return;\n }\n } else {\n this.record.dictionaryItems = [];\n }\n this.record.dictionaryItems = [...this.record.dictionaryItems, new DdItemModel()];\n }\n\n handleItemExpression(i?:any , event?:any) {\n this.sidebarVisibility[i] = true;\n this.isItemExpression = SHARED.TRUE;\n }\n \n handleStyleExpression(i:any, event:any) {\n this.sidebarVisibility[i] = true;\n this.isItemExpression = SHARED.FALSE\n }\n \n handleGetProperties(event : any){\n if(event){\n this.service.getAllApiProperties(DATASOURCES.QUEUESAPICONFIG,event).subscribe()\n }\n }\n \n onSidebarClose(isVisible:boolean){\n this.sidebarVisibility = this.sidebarVisibility.map(() => isVisible);\n }\n\n handleDeleteRecord(index: number, dictionaryItemId: string) {\n if (index >= 0 && index < this.record.dictionaryItems.length) {\n this.record.dictionaryItems = this.record.dictionaryItems.filter((_, i) => i !== index);\n if(dictionaryItemId) {\n this.service.deleteDictionaryItemById(DATASOURCES.DELETEDICTIONARYITEM, dictionaryItemId).subscribe(\n (res) => {\n this.messages = [{ severity: SHARED.SUCCESS, detail: res?.message || MESSAGE.DELETE_DICTIONARY_ITEM_SUCCESS }];\n setTimeout(() => {\n this.messages = SHARED.EMPTYARRAY;\n }, 3000);\n })\n }\n } else {\n console.error(ERROR.INVALID_INDEX, index);\n }\n }\n \n override ngOnDestroy(): void {\n this.record = {} as DdAdminModel;\n super.ngOnDestroy();\n }\n}\n","<form-container [messages]=\"messages\" [record]=\"record\" [headerText]=\"'Dictionary Form'\" [showSave]=\"true\"\n (onCancel)=\"handleCancel()\" (onSave)=\"handleSubmit()\">\n <div class=\"card p-fluid p-formgrid grid m-0\">\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\">\n <div class=\"col-12 md:col-5 p-field\">\n <div class=\"dictionary-name\">\n <text-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\n readonly : false,\n name : 'name',\n isRequired : true,\n displayText: 'Dictionary Name',\n placeholder : 'Enter Text',\n }\"></text-box>\n </div>\n </div>\n <div class=\"col-12 md:col-5\">\n <div class=\"p-field queue-list-wrapper\">\n <dropdown [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\n name: 'apiConfigId',\n dataSource: 'apiconfigs',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n displayText: 'API ',\n placeholder: 'Select API',\n isRequired: true\n }\" (onInput)=\"handleGetProperties($event)\">\n </dropdown>\n </div>\n </div>\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n\n <div class=\"field p-0 pr-2 ml-3 col-12 md:col-2\">\n <div class=\"card m-0 p-0 mb-2\">\n <div class=\"mt-3 w-full flex\">\n <button pButton pRipple routerLinkActive=\"router-link-active\"\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\n (click)=\"handleDictionaryItemAddBtnClick()\">\n Add New Item\n </button>\n </div>\n </div>\n </div>\n\n <!-- dictionary Items -->\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\"\n *ngFor=\"let ddItem of record.dictionaryItems; let i = index\">\n <div class=\"field col-12 md:col-3 pr-0\">\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name : 'itemName',\n readonly : false,\n displayText : 'Item Name',\n isRequired : true,\n }\"></text-box>\n </div>\n <div class=\"field flex align-items-center justify-content-between col-12 md:col-3 pr-0\">\n <div class=\"flex align-items-center w-full\">\n <div class=\"w-full mr-3\">\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name : 'itemExpression',\n readonly : true,\n displayText : 'Item Expression',\n isRequired : true,\n }\">\n </text-box>\n </div>\n <span class=\"pi pi-cog mt-4 cursor-pointer text-xl\"\n (click)=\"handleItemExpression(i, $event )\"></span>\n </div>\n </div>\n\n <div class=\"field col-12 md:col-3 flex align-items-center justify-content-between pr-0\">\n <div class=\"flex align-items-center w-full\">\n <div class=\"w-full mr-3\">\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name : 'styleExpression',\n readonly : false,\n disable : true,\n displayText : 'Style Expression',\n isRequired : false,\n }\">\n </text-box>\n </div>\n <span class=\"pi pi-cog mt-4 text-xl cursor-pointer text-color\"\n (click)=\"handleStyleExpression(i, $event)\"></span>\n </div>\n </div>\n\n <div class=\"field col-12 md:col-2 flex align-items-center justify-content-center mt-4\">\n <check-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Is Active',\n }\">\n </check-box>\n\n <div class=\"ml-6 delete-icon-container\">\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\"\n (click)=\"handleDeleteRecord(i, ddItem?._id)\"></i>\n </div>\n </div>\n <sidebar [isSidebarVisible]=\"sidebarVisibility[i]\" [title]=\"'Edit Expression'\"\n (onClose)=\"onSidebarClose($event)\">\n <lib-dd-admin-item-form [ddItemRecord]=\"ddItem\" [isItemExpression]=\"isItemExpression\"\n (saveClick)=\"onSidebarClose($event)\"></lib-dd-admin-item-form>\n </sidebar>\n </div>\n\n </div>\n</form-container>","import { Component, OnInit } from '@angular/core';\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\nimport { TableBuilder } from '../../../../shared/services/table.builder';\nimport { DictionaryService } from '../../state/dictionary.service';\nimport { DdAdminModel } from '../../models/dictionary.model';\nimport { DATASOURCES, dictionaryHiddenHeaderList } from '../../../../shared';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n@Component({\n selector: 'lib-dd-admin-list',\n templateUrl: './dd-admin-list.component.html',\n styleUrl: './dd-admin-list.component.scss',\n standalone : false\n})\nexport class DdAdminListComponent extends BaseListComponent<DdAdminModel> implements OnInit{\n\n pathName:string = DATASOURCES.DICTIONARY;\n override editPermission: string = PERMISSION.DD_ADMIN_PUT\n override deletePermission: string = PERMISSION.DD_ADMIN_DELETE\n constructor(service: DictionaryService, private tableBuilder: TableBuilder){\n super(service, tableBuilder);\n this.tableBuilder.hiddenHeaders = dictionaryHiddenHeaderList;\n }\n\n ngOnInit(){\n this.init()\n }\n}","<div class=\"dicitonary-list-wrapper\">\n @if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DdAdminFormComponent } from './components/dd-admin-form/dd-admin-form.component';\nimport { DdAdminListComponent } from './components/dd-admin-list/dd-admin-list.component';\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DdAdminItemFormComponent } from './components/dd-admin-item-form/dd-admin-item-form.component';\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\nimport { FormContainerComponent } from '../../shared/components/form-container/form-container.component';\n\n\n\n@NgModule({\n declarations: [DdAdminFormComponent, DdAdminListComponent, DdAdminItemFormComponent ],\n imports: [\n CommonModule,\n SharedModule,\n DropdownModule,\n ButtonComponent,\n InputTextareaModule,\n ReactiveFormsModule,\n FormsModule,\n TablePrimaryComponent,\n CheckBoxComponent,\n ButtonModule,\n TextAreaComponent,\n FormContainerComponent\n ],\n exports : [DdAdminFormComponent, DdAdminListComponent]\n})\nexport class DdAdminModule { }\n","import { BaseModel } from \"../../../shared\";\n\nexport class TemplateModel extends BaseModel {\n name!: string;\n type!: string;\n queueId!: string;\n isActive!: boolean;\n subject?: string;\n body!: string;\n dictionaryID?: string;\n dictionaryItemID?: string;\n}","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { BaseStore } from '../../../shared';\nimport { TemplateModel } from '../models/template.model';\n\n/**\n * Template Admin Store\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'templateStore' })\nexport class TemplateAdminStore extends BaseStore<TemplateModel> {\n constructor() {\n super();\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\nimport { ListService } from '../../../shared/services/list.service';\nimport { TemplateModel } from '../models/template.model';\nimport { TemplateAdminStore } from './template-admin.store';\n\n/**\n * Service for managing template configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class TemplateAdminService extends BaseService<TemplateModel> {\n\n constructor(\n http: HttpClient,\n protected templateAdminStore: TemplateAdminStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, templateAdminStore, configService, listService);\n this._pathName = DATASOURCES.Template;\n }\n\n protected override list: any = [\n {\n name: \"queueId\",\n dataSource: DATASOURCES.QUEUES,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryID\",\n dataSource: DATASOURCES.DICTIONARY,\n listValueProperty: \"_id\",\n listLabelProperty: \"name\",\n },\n {\n name: \"dictionaryItemID\",\n dataSource: DATASOURCES.DELETEDICTIONARYITEM,\n listValueProperty: \"_id\",\n listLabelProperty: \"key\",\n }\n ]\n}\n","import { Injectable } from '@angular/core';\nimport { BaseQuery } from '../../../shared';\nimport { TemplateModel } from '../models/template.model';\nimport { TemplateAdminStore } from './template-admin.store';\n\n\n/**\n * Template Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class TemplateAdminQuery extends BaseQuery<TemplateModel> {\n\n constructor(protected override store: TemplateAdminStore) {\n super(store);\n }\n\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TemplateModel } from '../../models/template.model';\nimport { TemplateAdminService } from '../../state/template-admin.service';\nimport { ValidatorService } from '../../../../shared/services/validator.service';\nimport { BaseFormComponent, BaseQuery, BaseStore, msgTemplateTypeList, SHARED } from '../../../../shared';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TemplateAdminStore } from '../../state/template-admin.store';\nimport { SelectItem } from 'primeng/api';\nimport { TemplateAdminQuery } from '../../state/template-admin.query';\nimport { List } from '../../../../shared/models/list.model';\n\n@Component({\n selector: 'lib-template-admin-form',\n standalone: false,\n templateUrl: './template-admin-form.component.html',\n styleUrl: './template-admin-form.component.scss'\n})\nexport class TemplateAdminFormComponent extends BaseFormComponent<TemplateModel> implements OnInit, OnDestroy{\n\n templateTypeList: SelectItem<any>[] = msgTemplateTypeList;\n dictionaries: any[] = [];\n dictionaryItems: any[] = [];\n messageContent!: string;\n isFormSubmitted: boolean = false;\n\n constructor(\n override service: TemplateAdminService,\n override validatorService: ValidatorService,\n override router: Router,\n override activatedRoute: ActivatedRoute,\n private query: TemplateAdminQuery,\n public templateStore: TemplateAdminStore,\n override baseStore: BaseStore<TemplateModel>,\n override baseQuery: BaseQuery<TemplateModel>\n ) {\n super(service, validatorService, router, activatedRoute);\n this.record = new TemplateModel();\n this.record.isActive = true;\n }\n \n ngOnInit(): void {\n super.init();\n this.baseStore.setIsApiValidated(null);\n this.recordChange.asObservable().subscribe((record) => {\n this.messageContent = this.decodeHtml(record.body);\n });\n }\n\n handleQueueChange(event:any){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\n this.dictionaries = allDictionaryRecords?.filter((item) => item.queueID === event) || [];\n });\n }\n \n handleDictionarySelect(dictionaryId:string){\n this.query.getLists().subscribe((allLists: List[]) => {\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\n this.dictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\n });\n }\n\n decodeHtml(html: string): string {\n try {\n return JSON.parse(html);\n } catch (e) {\n return html;\n }\n }\n\n override handleSubmit(): void {\n this.isFormSubmitted = true;\n if(!this.messageContent) return;\n this.record.body = JSON.stringify(this.messageContent);\n super.handleSubmit();\n };\n\n override ngOnDestroy(): void {\n this.record = {} as TemplateModel;\n super.ngOnDestroy();\n }\n}\n","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\n (onCancel)=\"handleCancel()\">\n <div class=\"card p-fluid p-formgrid\">\n <h4 class=\"font-bold col-12 md:col-12\">Template Form</h4>\n <div class=\"col-12 md:col-12 flex px-0\">\n <div class=\"col-12 md:col-5\">\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'name',\n isRequired: true,\n displayText: 'Name',\n placeholder: 'Enter Template Name'\n }\"></text-box>\n </div>\n\n <div class=\"col-12 md:col-5\">\n <div class=\"p-field queue-list-wrapper\">\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name: 'type',\n displayText: 'Type',\n listLabelProperty: 'value',\n listValueProperty: 'value',\n placeholder: 'Select Type',\n isRequired: true,\n options: templateTypeList\n }\">\n </dropdown>\n </div>\n </div>\n\n <div class=\"col-2 md:col-2 mt-5\">\n <check-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n name:'isActive',\n displayText : 'Active',\n }\">\n </check-box>\n </div>\n </div>\n\n <div class=\"col-12 md:col-12 flex px-0\">\n <div class=\"col-12 md:col-6\">\n <dropdown [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n name:'queueId',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n displayText : 'Select Queue',\n placeholder: 'Select Queue',\n isRequired:true\n }\" (onInput)=\"handleQueueChange($event)\">\n </dropdown>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name: 'dictionaryID',\n displayText: 'Select Dictionary',\n listLabelProperty: 'name',\n listValueProperty: '_id',\n placeholder: 'Select Dictionary',\n options: dictionaries\n }\" (onInput)=\"handleDictionarySelect($event)\">\n </dropdown>\n </div>\n </div>\n\n <div class=\"col-12 md:col-12 flex px-0\">\n <div *ngIf=\"record.type === 'email'\" class=\"col-12 md:col-6\">\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\n readonly: false,\n name: 'subject',\n isRequired: true,\n displayText: 'Subject',\n placeholder: 'Enter Subject'\n }\"></text-box>\n </div>\n\n <div class=\"col-12 md:col-6\">\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\n name: 'dictionaryItemID',\n displayText: 'Select Dictionary Item',\n listLabelProperty: 'itemName',\n listValueProperty: '_id',\n placeholder: 'Select Dictionary Item',\n options: dictionaryItems\n }\">\n </dropdown>\n </div>\n </div>\n\n <div class=\"col-12 md:col-12\">\n <label>Message</label>\n <span class=\"asterisk ml-1\">*</span>\n <quill-editor [(ngModel)]=\"messageContent\" class=\"w-full mt-2\"></quill-editor>\n <div *ngIf=\"isFormSubmitted && !messageContent\" class=\"error-message\">\n <small class=\"p-error\">Message is required</small>\n </div>\n </div>\n </div>\n</form-container>","import { Component } from '@angular/core';\nimport { TemplateModel } from '../../models/template.model';\nimport { BaseListComponent, BaseStore, DATASOURCES, SHARED, TableBuilder, templateHiddenHeaderList, TemplateTabType } from '../../../../shared';\nimport { TemplateAdminService } from '../../state/template-admin.service';\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\n\n@Component({\n selector: 'lib-template-admin-list',\n standalone: false,\n templateUrl: './template-admin-list.component.html',\n styleUrl: './template-admin-list.component.scss'\n})\nexport class TemplateAdminListComponent extends BaseListComponent<TemplateModel>{\n\n pathName:string = DATASOURCES.Template;\n activeTabIndex: number = 0;\n selectedType!: string;\n override editPermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\n override deletePermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\n constructor(templateAdminService: TemplateAdminService, private tableBuilder: TableBuilder, private baseStore: BaseStore<TemplateModel>) {\n super(templateAdminService, tableBuilder);\n this.tableBuilder.hiddenHeaders = templateHiddenHeaderList;\n }\n \n ngOnInit() {\n this.init()\n }\n\n onTabChange(event: any) {\n this.activeTabIndex = event.index;\n this.selectedType = TemplateTabType[this.activeTabIndex] ?? SHARED.EMPTY;\n this.baseStore.setSelectedTemplate(this.activeTabIndex === 0 ? SHARED.EMPTY : this.selectedType);\n }\n}\n","<div class=\"template-tab-wrapper\">\n <p-tabView class=\"application-tabs-wrapper h-full\" [(activeIndex)]=\"activeTabIndex\" (onChange)=\"onTabChange($event)\">\n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <span class=\"font-semibold\">All Templates</span>\n </ng-template>\n </p-tabPanel>\n \n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center font-semibold\">\n <i class=\"pi pi-envelope mr-3 message-type-wrapper\"></i>\n <span class=\"mr-1\">Email</span>\n </div>\n </ng-template>\n </p-tabPanel>\n \n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center font-semibold\">\n <i class=\"pi pi-comment mr-3 message-type-wrapper\"></i>\n <span>SMS</span>\n </div>\n </ng-template>\n </p-tabPanel>\n\n <p-tabPanel>\n <ng-template pTemplate=\"header\">\n <div class=\"flex align-items-center font-semibold\">\n <i class=\"pi pi-whatsapp mr-3 message-type-wrapper\"></i>\n <span>WhatsApp</span>\n </div>\n </ng-template>\n </p-tabPanel>\n </p-tabView>\n</div>\n\n@if(table){\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\n </lib-table-primary>\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TemplateAdminFormComponent } from './components/template-admin-form/template-admin-form.component';\nimport { TemplateAdminListComponent } from './components/template-admin-list/template-admin-list.component';\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent, textEditorToolbar } from '../../shared';\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\nimport { FormsModule } from '@angular/forms';\nimport { TabViewModule } from 'primeng/tabview';\nimport { QuillConfigModule, QuillModule } from 'ngx-quill';\nimport hljs from 'highlight.js';\n\n@NgModule({\n declarations: [\n TemplateAdminFormComponent,\n TemplateAdminListComponent\n ],\n imports: [\n CommonModule,\n TablePrimaryComponent,\n TextBoxComponent,\n DropdownComponent,\n SharedModule,\n FormsModule,\n TabViewModule,\n CheckBoxComponent,\n QuillModule.forRoot(),\n QuillConfigModule.forRoot({\n modules: {\n syntax: {\n hljs: hljs\n },\n toolbar: textEditorToolbar\n }\n })\n ],\n exports: [\n TemplateAdminFormComponent, TemplateAdminListComponent\n ]\n})\nexport class TemplateAdminModule { }\n","import { Injectable } from '@angular/core';\nimport { StoreConfig } from '@datorama/akita';\nimport { WidgetModel } from '../models/widget.model';\nimport { BaseStore, SHARED } from '../../shared';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Widget Admin Store\n */\n@Injectable({ providedIn: 'root' })\n@StoreConfig({ name: 'widgetStore' })\nexport class WidgetStore extends BaseStore<WidgetModel> {\n public onViewAllDetails$: BehaviorSubject<any>;\n public onViewPropertyDetails$: BehaviorSubject<any>;\n public onEventClickDetails$: BehaviorSubject<any>;\n public onItemClick$ : BehaviorSubject<any>;\n public getWidgetData$: BehaviorSubject<any>;\n\n constructor() {\n super();\n this.onViewAllDetails$ = new BehaviorSubject<string>(SHARED.EMPTY_STRING);\n this.onViewPropertyDetails$ = new BehaviorSubject<string>(SHARED.EMPTY);\n this.onEventClickDetails$ = new BehaviorSubject<string>(SHARED.EMPTY);\n this.onItemClick$ = new BehaviorSubject({});\n this.getWidgetData$ = new BehaviorSubject({});\n }\n\n setEventClickDetails(value: any) {\n this.onEventClickDetails$.next(value);\n }\n\n setOnViewPropertyDetails(value: any) {\n this.onViewPropertyDetails$.next(value);\n }\n\n setOnViewAllDetails(value: any) {\n this.onViewAllDetails$.next(value);\n }\n\n resetOnViewAllDetails() {\n this.onViewAllDetails$.next(null);\n }\n\n setOnWidgetItemClick(value: any) {\n this.onItemClick$.next(value);\n }\n\n setWidgetItem(widgetItem: any) {\n this.update({widgetItem : widgetItem});\n }\n\n setIsMenu(isMenu: boolean) {\n this.update({isMenu : isMenu});\n }\n\n setWidgetData(value: any) {\n this.getWidgetData$.next(value);\n }\n \n setWidgetsList(widgetsList: any) {\n this.update({widgetsList : widgetsList});\n }\n}\n","import { Injectable } from '@angular/core';\nimport { WidgetModel } from '../models/widget.model';\nimport { WidgetStore } from './widget.store';\nimport { BaseQuery } from '../../shared';\nimport { Observable } from 'rxjs';\n\n\n/**\n * Widget Admin Query\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetQuery extends BaseQuery<WidgetModel> {\n\n constructor(protected override store: WidgetStore, private widgetStore: WidgetStore) {\n super(store);\n }\n\n getOnViewAllDetails() {\n return this.widgetStore.onViewAllDetails$.asObservable();\n }\n\n getViewPropertyDetails() {\n return this.widgetStore.onViewPropertyDetails$.asObservable();\n }\n\n getEventClickDetails() {\n return this.widgetStore.onEventClickDetails$.asObservable();\n }\n\n getOnWidgetItemClick() {\n return this.widgetStore.onItemClick$.asObservable();\n }\n\n getWidgetItem():Observable<any> {\n return this.select(state => state['widgetItem']);\n }\n \n getIsMenu():Observable<any> {\n return this.select(state => state['isMenu']);\n }\n\n getWidgetData(): Observable<any> {\n return this.widgetStore.getWidgetData$.asObservable();\n }\n\n getWidgetList():Observable<any> {\n return this.select(state => state['widgetsList']);\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { WidgetModel } from '../models/widget.model';\nimport { WidgetStore } from './widget.store';\nimport { AppConfigService, BaseService, DATASOURCES, ROUTES, SHARED } from '../../shared';\nimport { ListService } from '../../shared/services/list.service';\nimport { Observable, tap } from 'rxjs';\n\n/**\n * Service for managing widget configurations.\n */\n@Injectable({ providedIn: 'root' })\nexport class WidgetService extends BaseService<WidgetModel> {\n\n constructor(\n http: HttpClient,\n protected widgetStore: WidgetStore,\n private configService: AppConfigService,\n listService: ListService\n ) {\n super(http, widgetStore, configService, listService);\n this._pathName = DATASOURCES.WIDGET;\n }\n\n getAllWidgets(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\n const url = `${this.apiUrl}${ROUTES.APPLICATION_WIDGET}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\n return this.http.get<WidgetModel[]>(url).pipe(\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\n );\n }\n\n getEvaluateFromCache(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\n const url = `${this.apiUrl}${ROUTES.APPLICATION_WIDGET_CACHE}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\n return this.http.get<WidgetModel[]>(url).pipe(\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\n );\n }\n\n getEvaluateByWidgetName(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\n const url = `${this.apiUrl}${ROUTES.EVALUATE_BY_WIDGETNAME}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\n return this.http.get<WidgetModel[]>(url).pipe(\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SHARED } from '../constant/SHARED';\nimport { StyleConfig } from '../../widget/models/widget.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StyleBuilderService {\n\n constructor() { }\n\n getStyle(style: any): { [key: string]: string } {\n if (!style) return {};\n\n if (typeof style === 'string') style = this.parseStyleObject(style);\n\n const itemStyle = typeof style.itemStyle === 'string'\n ? this.parseStyleObject(style.itemStyle)\n : (style.itemStyle || {});\n\n const styleExpression = typeof style.styleExpression === 'string'\n ? this.parseStyleObject(style.styleExpression)\n : (style.styleExpression || {});\n\n return {\n ...this.normalizeStyleObject(itemStyle),\n ...this.normalizeStyleObject(styleExpression),\n };\n }\n\n parseStyleObject(styleStr?: string): Record<string, any> {\n if (!styleStr) return {};\n\n let toParse = styleStr.trim();\n toParse = toParse.replace(/^['\"]+/, \"\").replace(/['\"]+$/, \"\").trim();\n try {\n return JSON.parse(toParse);\n } catch (e) {\n console.warn(\"Failed to parse style:\", styleStr, \"→ tried:\", toParse);\n return {};\n }\n }\n \n private normalizeStyleObject(obj: { [key: string]: any }): { [key: string]: string } {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n if (value !== undefined && value !== '') {\n acc[key.trim()] = value.toString().trim();\n }\n return acc;\n }, {} as { [key: string]: string }); // 👈 this line avoids the error\n }\n\n getItemStyle(style: any | undefined): { [key: string]: string } {\n if (!style) return {};\n \n return Object.entries(style).reduce((acc: any, [key, value]) => {\n if (value) acc[key.trim()] = value.toString().trim();\n return acc;\n }, {});\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { WidgetModel, WidgetBadge, BadgeStyleConfig, ProcessedBadgeConfig } from '../../models/widget.model';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n@Component({\n selector: 'lib-widget-header',\n standalone: false,\n templateUrl: './widget-header.component.html',\n styleUrl: './widget-header.component.scss'\n})\nexport class WidgetHeaderComponent implements OnChanges {\n @Input() widget!: WidgetModel;\n headerStyle: { [key: string]: any } = {};\n subHeaderStyle: { [key: string]: any } = {};\n headerIconStyle: { [key: string]: any } = {};\n headerIconClass!: string;\n processedBadges: ProcessedBadgeConfig[] = [];\n widgetStatusIconClass!: string;\n widgetStatusIconClassExpression!: string;\n widgetStatusIconStyle: { [key: string]: any } = {};\n widgetStatusIconStyleExpression: { [key: string]: any } = {};\n mergedWidgetStatusIconStyle: { [key: string]: any } = {};\n\n constructor(private styleBulderService: StyleBuilderService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.widget && this.widget.style) {\n const parsedHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerStyle);\n const parsedSubHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.subHeaderStyle);\n const parsedHeaderIconStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerIconStyle);\n this.headerStyle = this.styleBulderService.getItemStyle(parsedHeaderStyle);\n this.subHeaderStyle = this.styleBulderService.getItemStyle(parsedSubHeaderStyle);\n this.headerIconStyle = this.styleBulderService.getItemStyle(parsedHeaderIconStyle);\n this.headerIconClass = this.widget.style.headerIconClass;\n }\n\n // Process widget status icon\n this.processWidgetStatusIcon();\n\n // Process badges\n this.processBadges();\n }\n\n private processWidgetStatusIcon(): void {\n // Process widget status icon class (static)\n this.widgetStatusIconClass = this.widget?.widgetStatusIconClass || '';\n\n // Process widget status icon class expression (dynamic)\n this.widgetStatusIconClassExpression = this.widget?.widgetStatusIconClassExpression \n ? this.widget.widgetStatusIconClassExpression.replace(/^['\"]+|['\"]+$/g, '') \n : '';\n\n // Process widget status icon style (static)\n if (this.widget?.widgetStatusIconStyle) {\n const parsedWidgetStatusIconStyle = this.styleBulderService.parseStyleObject(this.widget.widgetStatusIconStyle);\n this.widgetStatusIconStyle = this.styleBulderService.getItemStyle(parsedWidgetStatusIconStyle);\n } else {\n this.widgetStatusIconStyle = {};\n }\n\n // Process widget status icon style expression (dynamic)\n if (this.widget?.widgetStatusIconStyleExpression) {\n const parsedWidgetStatusIconStyleExpression = this.styleBulderService.parseStyleObject(this.widget.widgetStatusIconStyleExpression);\n this.widgetStatusIconStyleExpression = this.styleBulderService.getItemStyle(parsedWidgetStatusIconStyleExpression);\n } else {\n this.widgetStatusIconStyleExpression = {};\n }\n\n // Merge icon styles\n this.mergedWidgetStatusIconStyle = {\n ...this.widgetStatusIconStyle,\n ...this.widgetStatusIconStyleExpression\n };\n }\n\n private processBadges(): void {\n this.processedBadges = [];\n \n if (this.widget && this.widget.badges && Array.isArray(this.widget.badges)) {\n this.processedBadges = this.widget.badges.map((badge: WidgetBadge) => {\n const badgeStyle: BadgeStyleConfig = badge.style || {};\n const processedBadge: ProcessedBadgeConfig = {\n value: badge.value || '',\n valueClass: badgeStyle.valueClass || '',\n badgeStyle: {},\n valueIconClass: badgeStyle.valueIconClass,\n valueIconStyle: {},\n valueIconClassExpression: badgeStyle.valueIconClassExpression,\n valueIconStyleExpression: {},\n mergedValueIconStyle: {}\n };\n\n // Parse and apply badge styles\n if (badgeStyle.value) {\n const parsedValueStyle = this.styleBulderService.parseStyleObject(badgeStyle.value);\n processedBadge.badgeStyle = this.styleBulderService.getItemStyle(parsedValueStyle);\n }\n\n // Parse style expression if present\n if (badgeStyle.styleExpression) {\n const parsedStyleExpression = this.styleBulderService.parseStyleObject(badgeStyle.styleExpression);\n const styleExpressionObj = this.styleBulderService.getItemStyle(parsedStyleExpression);\n processedBadge.badgeStyle = { ...processedBadge.badgeStyle, ...styleExpressionObj };\n }\n\n // Parse item style if present\n if (badgeStyle.itemStyle) {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(badgeStyle.itemStyle);\n const itemStyleObj = this.styleBulderService.getItemStyle(parsedItemStyle);\n processedBadge.badgeStyle = { ...processedBadge.badgeStyle, ...itemStyleObj };\n }\n\n // Parse value icon style\n if (badgeStyle.valueIconStyle) {\n const parsedValueIconStyle = this.styleBulderService.parseStyleObject(badgeStyle.valueIconStyle);\n processedBadge.valueIconStyle = this.styleBulderService.getItemStyle(parsedValueIconStyle);\n }\n\n // Parse value icon style expression\n if (badgeStyle.valueIconStyleExpression) {\n const parsedValueIconStyleExpression = this.styleBulderService.parseStyleObject(badgeStyle.valueIconStyleExpression);\n processedBadge.valueIconStyleExpression = this.styleBulderService.getItemStyle(parsedValueIconStyleExpression);\n }\n\n // Merge icon styles\n processedBadge.mergedValueIconStyle = {\n ...processedBadge.valueIconStyle,\n ...processedBadge.valueIconStyleExpression\n };\n\n return processedBadge;\n });\n }\n }\n}\n","@if (widget.header || widget.subHeader) {\n<div class=\"grid m-0 align-items-center justify-content-between px-3 pt-3\">\n <div class=\"col-12 p-0\">\n <div class=\"flex align-items-center justify-content-between\">\n <div class=\"flex align-items-center\">\n <i [class]=\"headerIconClass\" [ngStyle]=\"headerIconStyle\"></i>\n <h3 [ngStyle]=\"headerStyle\" class=\"m-0 application-title-wrapper\">\n {{ (widget.header) }}\n </h3>\n\n <!-- Badges -->\n @if (processedBadges && processedBadges.length > 0) {\n <div class=\"flex align-items-center gap-1 ml-2\">\n @for (badge of processedBadges; track $index) {\n @if (badge.value && badge.value !== 'null') {\n <span class=\"px-2 py-1 rounded font-semibold badge\"\n [ngClass]=\"badge.valueClass\"\n [ngStyle]=\"badge.badgeStyle\">\n @if (badge.valueIconClass) {\n <i [ngClass]=\"badge.valueIconClass\" \n [ngStyle]=\"badge.mergedValueIconStyle\"\n class=\"mr-1\"></i>\n }\n @if (badge.valueIconClassExpression) {\n <i [ngClass]=\"badge.valueIconClassExpression\" \n [ngStyle]=\"badge.mergedValueIconStyle\"\n class=\"mr-1\"></i>\n }\n {{ badge.value }}\n </span>\n }\n }\n </div>\n }\n </div>\n\n <!-- Widget Status Icon -->\n <div class=\"flex align-items-center\">\n @if (widgetStatusIconClass) {\n <i [ngClass]=\"widgetStatusIconClass\" [ngStyle]=\"mergedWidgetStatusIconStyle\"></i>\n }\n @if (widgetStatusIconClassExpression) {\n <i [ngClass]=\"widgetStatusIconClassExpression\" [ngStyle]=\"mergedWidgetStatusIconStyle\"></i>\n }\n </div>\n </div>\n @if (widget?.subHeader) {\n <div class=\"flex align-items-center mt-2\">\n <span [ngStyle]=\"subHeaderStyle\" class=\"mr-3 font-semibold\">{{ widget.subHeader }}</span>\n </div>\n }\n </div>\n</div>\n}","import { Component, Input } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetStore } from '../../state/widget.store';\nimport { PERMISSION } from '../../../shared/constant/PERMISSION';\n\n/**\n * Widget Footer Component\n */\n@Component({\n selector: 'lib-widget-footer',\n standalone: false,\n templateUrl: './widget-footer.component.html',\n styleUrl: './widget-footer.component.scss'\n})\nexport class WidgetFooterComponent {\n @Input() widget!: WidgetModel;\n\n constructor(private widgetStore: WidgetStore) {}\n PERMISSION = PERMISSION\n viewAllDetails(event : any) {\n if(event){\n this.widgetStore.setOnViewAllDetails(this.widget);\n }\n }\n }\n","<div *ngIf=\"widget.isFormEnabled\" class=\"col-12 p-0 mt-3 flex justify-content-center\">\n <a class=\"p-button p-button-link text-primary-500\">\n @if(widget.isFormEnabled){\n <span class=\"underline font-semibold\" [permission]=\"PERMISSION.WIDGETS_EVALUATE\"\n (click)=\"viewAllDetails($event)\">View\n All Details</span>\n <i class=\"pi pi-arrow-up-right arrow-up-icon ml-2\"></i>\n }\n </a>\n</div>","import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { WidgetItem, WidgetModel } from '../../models/widget.model';\nimport { SHARED } from '../../../shared';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\nimport { WidgetStore } from '../../state/widget.store';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { Subject, takeUntil } from 'rxjs';\nimport moment from 'moment';\n\n@Component({\n selector: 'lib-widget-item',\n standalone: false,\n templateUrl: './widget-item.component.html',\n styleUrl: './widget-item.component.scss'\n})\nexport class WidgetItemComponent implements OnInit, OnChanges, OnDestroy {\n @Input() widgetItem!: WidgetItem;\n @Input() widget!: WidgetModel;\n @Input() application: any;\n widgetKey!: string;\n isEmptyValueHidden: boolean = false;\n keyClass!: string;\n valueClass!: string;\n fieldKeyStyle: { [key: string]: any } = {};\n fieldValueStyle: { [key: string]: any } = {};\n keyIconClass: string | undefined = SHARED.EMPTY;\n keyIconStyle: { [key: string]: any } = {};\n valueIconClass: string | undefined = SHARED.EMPTY;\n valueIconStyle: { [key: string]: any } = {};\n valueStyleExpression: { [key: string]: any } = {};\n mergedValueStyle: { [key: string]: any } = {};\n hasSeparator: boolean | undefined = false;\n isConfirmed: boolean | undefined = false;\n valueIconExpression!: string;\n valueIconStyleExpression: { [key: string]: any } = {};\n mergedValueIconStyle: { [key: string]: any } = {};\n isMenu: boolean = false;\n valueIconClassExpression!: string;\n private destroy$ = new Subject<void>();\n \n // Computed properties for template (performance optimization)\n shouldShowItem: boolean = true;\n hasContent: boolean = false;\n isDateValue: boolean = false;\n formattedDateValue: string = '';\n hasHtmlContentValue: boolean = false;\n\n constructor(private styleBulderService: StyleBuilderService, private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) { }\n\n ngOnInit(): void {\n this.handleIsMenu();\n this.handleIsEmptyValueHidden();\n }\n\n ngOnChanges(): void {\n // Handle isEmptyLabelHidden from widget model changes\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\n }\n \n if (this.widgetItem && this.widgetItem.style) {\n this.keyClass = this.widgetItem.style.keyClass;\n this.valueClass = this.widgetItem.style.valueClass;\n this.widgetKey = this.widgetItem.key.replace(/^['\"]+|['\"]+$/g, '').trim();\n const parsedValueStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.value);\n const parsedKeyStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.key);\n const parsedKeyIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.keyIconStyle);\n const parsedValueIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyle);\n const parsedValueStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.styleExpression);\n const parsedValueIconStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyleExpression);\n\n this.fieldValueStyle = this.styleBulderService.getItemStyle(parsedValueStyle);\n this.fieldKeyStyle = this.styleBulderService.getItemStyle(parsedKeyStyle);\n this.valueStyleExpression = this.widgetItem.style.styleExpression ? this.styleBulderService.getItemStyle(parsedValueStyleExpression) : {};\n this.mergedValueStyle = { ...this.fieldValueStyle, ...this.valueStyleExpression };\n this.keyIconClass = this.widgetItem.style.keyIconClass;\n this.keyIconStyle = this.widgetItem.style.keyIconStyle ? this.styleBulderService.getItemStyle(parsedKeyIconStyle) : {};\n this.valueIconClass = this.widgetItem.style.valueIconClass;\n this.valueIconClassExpression = this.widgetItem.style.valueIconClassExpression ? this.widgetItem.style.valueIconClassExpression.replace(/^['\"]+|['\"]+$/g, \"\") : '';\n this.valueIconStyle = this.widgetItem.style.valueIconStyle ? this.styleBulderService.getItemStyle(parsedValueIconStyle) : {};\n this.valueIconStyleExpression = this.widgetItem.style.valueIconStyleExpression ? this.styleBulderService.getItemStyle(parsedValueIconStyleExpression) : {};\n this.mergedValueIconStyle = { ...this.valueIconStyle, ...this.valueIconStyleExpression };\n this.hasSeparator = this.widgetItem.style.hasSeparator;\n this.isConfirmed = this.widgetItem.style.isConfirmed === SHARED.STRING_TRUE ? true : false;\n \n // Compute values once for performance\n this.computeValueProperties();\n }\n }\n\n /**\n * Computes all value-related properties once to avoid function calls in template\n */\n private computeValueProperties(): void {\n // Check if value has content\n this.hasContent = this.hasValueContent(this.widgetItem.value, this.widgetItem.isHtml);\n \n // Determine if item should be shown based on isEmptyValueHidden\n this.shouldShowItem = this.isEmptyValueHidden ? this.hasContent : true;\n \n // Check if value is a date\n this.isDateValue = this.isDate(this.widgetItem.value);\n \n // Format date if it's a date value\n this.formattedDateValue = this.isDateValue ? this.formatDate(this.widgetItem.value) : '';\n \n // Check if HTML has content\n this.hasHtmlContentValue = this.widgetItem.isHtml ? this.hasHtmlContent(this.widgetItem.value) : false;\n }\n\n handleIsMenu() {\n this.widgetQuery.getIsMenu()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.isMenu = res;\n }\n });\n }\n\n handleIsEmptyValueHidden() {\n // Use isEmptyLabelHidden directly from widget model\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\n }\n \n if (this.widgetItem && this.widgetItem.style) {\n this.computeValueProperties();\n }\n }\n\n handleDynamicEvent(recordId: string) {\n this.widgetStore.setEventClickDetails({ recordId: recordId, isDailogShow: true });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.widgetStore.setOnWidgetItemClick(null);\n this.widgetStore.setEventClickDetails({ recordId: null, isDailogShow: false });\n }\n\n isDate(value: any): boolean {\n if (!value || typeof value !== 'string') return false;\n\n // Require separators like '/' or '-' to confirm it's a real date format\n if (!/[\\/\\-]/.test(value)) {\n return false; // e.g. \"1983\" will fail here\n }\n\n const validFormats = ['DD/MM/YYYY', 'YYYY/MM/DD', moment.ISO_8601];\n return moment(value, validFormats, true).isValid();\n}\n\n\n handleWidgetItemClick(widgetItem: WidgetItem) {\n const updatedItem = { ...widgetItem };\n const applicantId = this.widget.recordId;\n switch (updatedItem.route) {\n case SHARED.DIRECT_DEBIT:\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\n updatedItem.value = directDebit[0].value;\n break;\n case SHARED.SOLICITOR:\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\n updatedItem.value = solicitor[0].value;\n break;\n case SHARED.PRODUCT:\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\n updatedItem.value = product[0].value;\n break;\n case SHARED.COMMITMENTS:\n updatedItem.value = applicantId;\n break;\n case SHARED.INCOME:\n updatedItem.value = applicantId;\n break;\n case SHARED.EXPENDITURE:\n updatedItem.value = applicantId;\n break;\n }\n this.widgetStore.setWidgetData(this.widget);\n this.widgetStore.setOnWidgetItemClick(updatedItem);\n }\n\n\n /**\n * Checks if the HTML value has actual content after parsing\n * @param value - The HTML string to check\n * @returns true if there's meaningful content, false otherwise\n */\n hasHtmlContent(value: string): boolean {\n if (!value || value === 'null' || value === 'undefined') {\n return false;\n }\n\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = value;\n\n const textContent = tempDiv.textContent || tempDiv.innerText || '';\n\n return textContent.replace(/[,.]/g, '').trim().length > 0;\n }\n\n /**\n * Checks if the value has meaningful content (for both HTML and non-HTML values)\n * @param value - The value to check\n * @param isHtml - Whether the value is HTML content\n * @returns true if there's meaningful content, false otherwise\n */\n hasValueContent(value: string, isHtml: boolean): boolean {\n if (!value || value === 'null' || value === 'undefined') {\n return false;\n }\n\n if (isHtml) {\n return this.hasHtmlContent(value);\n } else {\n return value.trim().length > 0;\n }\n }\n\n\n formatDate(value: string): string {\n if (this.isDate(value)) {\n return moment(value, [\"DD/MM/YYYY\", \"YYYY/MM/DD\", moment.ISO_8601]).format(\"DD/MM/YYYY\");\n }\n return value;\n }\n\n}\n","<div class=\"widget-container px-3 overflow-hidden\" *ngIf=\"shouldShowItem\">\n <div class=\"widget-content widget-wrapper\" [class.border-top]=\"hasSeparator\" [ngClass]=\"{\n 'layout-row': widget.layoutType === 'row',\n 'layout-tile m-0': widget.layoutType === 'tile'\n }\">\n <div class=\"flex align-items-center justify-content-between\"\n [ngClass]=\"widget.layoutType === 'row' ? 'w-7' : 'w-full'\">\n <div class=\"flex align-items-center\">\n <i *ngIf=\"keyIconClass\" class=\"mr-2\" [ngClass]=\"keyIconClass\" [ngStyle]=\"keyIconStyle\"></i>\n <p *ngIf=\"!isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\n <p *ngIf=\"isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" (click)=\"handleDynamicEvent(widget.recordId)\"\n class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\n </div>\n <div class=\"flex justify-content-end\" *ngIf=\"isConfirmed\">\n <img src=\"assets/icons/confirm-icon.svg\" alt=\"confirm icon\" width=\"18\" height=\"18\" />\n </div>\n </div>\n\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-full\" \n [ngClass]=\"widget.layoutType === 'row' ? 'flex align-items-center justify-content-end w-5': 'w-full'\">\n <i *ngIf=\"valueIconClass\" [ngClass]=\"valueIconClass\" [ngStyle]=\"mergedValueIconStyle\"></i>\n <i *ngIf=\"valueIconClassExpression\" [ngClass]=\"valueIconClassExpression\" [ngStyle]=\"mergedValueIconStyle\"></i>\n <ng-container *ngIf=\"widgetItem.isEvent; else notEvent\">\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\n (click)=\"handleDynamicEvent(widget.recordId)\">\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\n </a>\n </ng-container>\n\n <ng-template #notEvent>\n <ng-container *ngIf=\"widgetItem.isLink; else plainText\">\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\n (click)=\"handleWidgetItemClick(widgetItem)\">\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\n </a>\n </ng-container>\n </ng-template>\n\n <ng-template #plainText>\n @if(widgetItem.isHtml && hasHtmlContentValue) {\n <div class=\"key-field-wrapper\" [innerHTML]=\"widgetItem.value !== 'null' ? widgetItem.value : ''\"\n [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"></div>\n }\n @else if(!widgetItem.isHtml) {\n <p class=\"mb-0\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\">\n\n <ng-container *ngIf=\"isDateValue; else normalText\">\n {{ formattedDateValue }}\n </ng-container>\n <ng-template #normalText>\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\n </ng-template>\n </p>\n }\n </ng-template>\n </div>\n </div>\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n@Component({\n selector: 'lib-widget-body',\n templateUrl: './widget-body.component.html',\n styleUrl: './widget-body.component.scss',\n standalone : false\n})\nexport class WidgetBodyComponent implements OnChanges{\n\n constructor(private styleBulderService: StyleBuilderService) {}\n @Input() widget!: WidgetModel;\n hasBackgroundColor: Array<boolean> = [];\n widgetItemStyle: Array<{ [key: string]: any }> = [];\n isConfirmed: Array<boolean> = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.widget && this.widget.dataItems) {\n this.widgetItemStyle = this.widget.dataItems.map((item, i) => {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(item?.style?.itemStyle);\n const itemStyleObject = this.styleBulderService.getItemStyle(parsedItemStyle);\n\n if (parsedItemStyle?.['backgroundColor']) {\n this.hasBackgroundColor[i] = true;\n }\n\n return { ...itemStyleObject };\n });\n\n this.isConfirmed = (this.widget.dataItems)\n .filter(item => item.style != null)\n .map(item =>\n item.style.isConfirmed === 'true' ? true : false\n ) || [];\n }\n }\n}\n","<div class=\"widget-body-container grid m-0\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\" [ngClass]=\"[widget.style.width, widget.style.width === 'col-12' ? 'p-0' : '']\">\n @if(!dataItem.isHidden){\n <div class=\"h-full\" [ngStyle]=\"widgetItemStyle[i]\" \n [ngClass]=\"{\n 'widget-confirm-wrapper': isConfirmed[i]\n }\">\n <div>\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\n </div>\n </div>\n }\n </div>\n</div>","import { Component, Input, OnChanges } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n@Component({\n selector: 'lib-widget-main',\n standalone: false,\n templateUrl: './widget-main.component.html',\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-main.component.scss']\n})\nexport class WidgetMainComponent implements OnChanges {\n constructor(private styleBulderService: StyleBuilderService) {}\n\n @Input() widget!: WidgetModel;\n @Input() index!: number;\n @Input() isFullHeight = false;\n widgetStyle: { [key: string]: any } = {};\n styleExpression: { [key: string]: any } = {};\n widgetCombinedStyle: { [key: string]: any } = {};\n\n ngOnChanges(): void {\n if(this.widget && this.widget.style) {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(this.widget.style.widgetStyle);\n const styleExpression = this.styleBulderService.parseStyleObject(this.widget.style.styleExpression);\n this.widgetStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\n this.styleExpression = this.widget.style.styleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\n console.log(styleExpression);\n this.widgetCombinedStyle = { ...this.widgetStyle, ...this.styleExpression };\n }\n }\n}","<div [ngStyle]=\"widgetCombinedStyle\" class=\"widget-container-wrapper h-full\" [ngClass]=\"{'h-full': isFullHeight, 'mt-4': index !== 0}\">\n <div class=\"widget-container-wrapper\">\n <lib-widget-header [widget]=\"widget\"></lib-widget-header>\n <div [ngClass]=\"[(widget.header || widget.subHeader) ? 'widget-content-wrapper' : '', widget.style.width === 'col-6' ? 'px-2' : '']\" class=\"py-3\">\n <lib-widget-body [widget]=\"widget\"></lib-widget-body>\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\n </div>\n </div>\n</div>","import { Injectable } from '@angular/core';\nimport { CustomWidgetModel, StatusItem } from \"../models/custom-widget.model\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CustomWidgetService {\n constructor() {}\n\n isLastIndex(event: StatusItem, widgetData: CustomWidgetModel): boolean {\n if (!widgetData.statusList) {\n return false;\n }\n const index = widgetData.statusList.indexOf(event);\n return index === widgetData.statusList.length - 1;\n }\n\n getNextEventStatus(event: StatusItem, widgetData: CustomWidgetModel): string | null {\n const index = this.getEventIndex(event, widgetData);\n if (widgetData.statusList && index >= 0 && index + 1 < widgetData.statusList.length) {\n return widgetData.statusList[index + 1].status;\n }\n return null;\n }\n\n getEventIndex(event: StatusItem, widgetData: CustomWidgetModel): number {\n return widgetData.statusList ? widgetData.statusList.indexOf(event) : -1;\n }\n}\n","import { Component, Input } from \"@angular/core\";\nimport { CustomWidgetModel, StatusItem } from \"../../models/custom-widget.model\";\nimport { CustomWidgetService } from \"../../../shared/services/custom-widget.service\";\n\n@Component({\n selector: \"lib-custom-widget\",\n templateUrl: \"./custom-widget.component.html\",\n styleUrl: \"./custom-widget.component.scss\",\n standalone: false,\n})\nexport class CustomWidgetComponent {\n @Input() widgetData!: CustomWidgetModel;\n\n constructor(private widgetUtilService: CustomWidgetService) {}\n\n isLastIndex(event: StatusItem): boolean {\n return this.widgetUtilService.isLastIndex(event, this.widgetData);\n }\n\n getNextEventStatus(event: StatusItem): string | null {\n return this.widgetUtilService.getNextEventStatus(event, this.widgetData);\n }\n\n getEventIndex(event: StatusItem): number {\n return this.widgetUtilService.getEventIndex(event, this.widgetData);\n }\n}\n","@if(widgetData){\n<div class=\"custom-widget\">\n\n <div class=\" ml-3\" style=\"display: flex; flex-direction: row; align-items: center;\">\n <h3 class=\"mb-0 font-bold mr-3 widgetData-title-wrapper\">\n {{ (widgetData.title) }}\n </h3>\n \n <span class=\"px-2 py-1 rounded text-white font-semibold badge\" [ngClass]=\"{\n 'bg-yellow-500': widgetData.badge === 'Pending',\n 'bg-green-500': widgetData.badge === 'Verified'\n }\">\n <i class=\"{{ widgetData.badgeIcon }}\"></i> {{ widgetData.badge }}\n </span>\n \n </div>\n <div class=\"widget-body-wrapper\">\n\n <p-timeline class=\"widget-timeline-wrapper\" [value]=\"widgetData?.statusList\">\n <ng-template pTemplate=\"marker\" let-event let-i=\"index\">\n <div class=\"p-timeline-event-marker\" [ngStyle]=\"{\n 'background-color': event.status === 'active' ? '#0F8BFD' :\n event.status === 'pending' ? '#676B89' :\n event.status === 'removed' ? '#FF0000' :\n '#0F8BFD',\n 'border-color': event.status === 'active' ? '#0F8BFD' :\n event.status === 'pending' ? '#676B89' :\n event.status === 'removed' ? '#FF0000' :\n '#0F8BFD',\n 'outline': event.status === 'active' ? '4px solid #0f8bfd33' :\n event.status === 'pending' ? '4px solid #676b8933' :\n event.status === 'removed' ? '4px solid #FF0000' :\n '4px solid #0F8BFD',\n }\"></div>\n\n <div class=\"p-timeline-event-connector-border\" *ngIf=\"!isLastIndex(event)\" [ngStyle]=\"{\n border:\n getNextEventStatus(event) === 'active'\n ? '2px solid #0F8BFD'\n : getNextEventStatus(event) === 'pending'\n ? '2px solid #44486d33'\n : getNextEventStatus(event) === 'removed'\n ? '2px solid #FF0000'\n : '2px solid #0F8BFD',\n height: 'calc(100% - 18px)'\n }\"></div>\n </ng-template>\n\n <ng-template pTemplate=\"content\" let-event>\n <div class=\"p-timeline-event-content mb-2\"\n [ngClass]=\"{ 'mb-4': widgetData.title === 'Valuation' && event.title }\">\n\n <p *ngIf=\"!(widgetData.title === 'Valuation') && event.title\" class=\"event-title mb-2\"\n [innerHTML]=\"event.title\">\n </p>\n\n <p *ngIf=\"widgetData.title === 'Valuation' && event.title\" class=\"event-title mb-2\">\n <span style=\"color: #0f8bfd; text-decoration: underline; font-weight: bold\">{{ event.title?.split(' ')[0]\n }}</span>\n {{ event.title?.substring(event.title.indexOf(' ') + 1) }}\n </p>\n \n <span class=\"font-medium event-description\" [ngClass]=\"{ 'font-bold': event.textColor }\"\n [ngStyle]=\"{ color: event.textColor }\" [innerHTML]=\"event.description\"></span>\n </div>\n </ng-template>\n </p-timeline>\n </div>\n</div>\n\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { WidgetModel } from '../../models/widget.model';\nimport { ERROR, SHARED } from '../../../shared';\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\nimport { WidgetService } from '../../state/widget.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { WidgetStore } from '../../state/widget.store';\n\n@Component({\n selector: 'lib-widget-menu',\n standalone: false,\n templateUrl: './widget-menu.component.html',\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-menu.component.scss']\n})\nexport class WidgetMenuComponent implements OnInit, OnChanges, OnDestroy {\n constructor(\n private widgetService: WidgetService,\n public activatedRoute: ActivatedRoute,\n private widgetQuery: WidgetQuery,\n private widgetStore: WidgetStore,\n private cdr: ChangeDetectorRef\n ) { }\n\n private destroy$ = new Subject<void>();\n widgets: WidgetModel[] = [];\n private subscriptions :Subscription[]=[];\n isLoading: boolean = true;\n\n @Output() onViewAllDetails = new EventEmitter<any>();\n @Output() onWidgetEventClick = new EventEmitter<any>();\n @Output() onWidgetItemClick = new EventEmitter<any>();\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\n @Input() offerWidgetData!: CustomWidgetModel;\n @Input() valuationWidgetData!: CustomWidgetModel;\n\n ngOnInit(): void {\n this.handleEventClickDetails();\n this.handleOnViewAllDetails();\n const queueId = localStorage.getItem(SHARED.selectedQueue);\n const recordId = this.activatedRoute.snapshot.params[SHARED.ID];\n\n if (!queueId || !recordId) {\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\n queueId: queueId || SHARED.MISSING_QUEUE_ID,\n recordId: recordId || SHARED.MISSING_RECORD_ID\n });\n this.isLoading = false;\n return;\n }\n\n this.getWidgetFromCacheList(queueId, recordId);\n this.getAllWidgetList(queueId, recordId);\n this.handleWidgetItemClick();\n }\n\n handleWidgetItemClick() {\n this.widgetQuery.getOnWidgetItemClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n if (res) {\n this.onWidgetItemClick.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnWidgetItemClick subscription:', error);\n }\n );\n }\n\n handleEventClickDetails() {\n this.widgetQuery.getEventClickDetails()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.onWidgetEventClick.next(res);\n }\n })\n }\n\n handleOnViewAllDetails() {\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\n (res) => {\n if (res) {\n this.onViewAllDetails.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnViewAllDetails subscription:', error);\n }\n ));\n }\n\n getAllWidgetList(queueId: string, recordId: string) {\n this.widgetService.getAllWidgets(queueId, recordId)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.cdr.detectChanges();\n },\n (error) => {\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.cdr.detectChanges();\n }\n )\n }\n\n getWidgetFromCacheList(queueId: string, recordId: string) {\n this.widgetService.getEvaluateFromCache(queueId, recordId)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.isLoading = false;\n },\n (error) => {\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.isLoading = false;\n }\n )\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.isSidebarVisible) {\n this.widgetStore.setEventClickDetails({recordId: null, isDailogShow: false});\n }\n }\n\n ngOnDestroy(): void {\n this.widgets = [];\n this.widgetStore.resetOnViewAllDetails();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<p-card class=\"widget-block-wrapper block\">\n <div class=\"widget-section-wrapper custom-scroll pt-2\">\n <!-- Loading state -->\n <ng-container *ngIf=\"isLoading; else widgetContent\">\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\n </ng-container>\n\n <!-- Content after API call -->\n <ng-template #widgetContent>\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\n <lib-widget-main [widget]=\"widget\" [index]=\"i\"></lib-widget-main>\n </ng-container>\n <ng-container *ngIf=\"offerWidgetData\">\n <lib-custom-widget [widgetData]=\"offerWidgetData\"></lib-custom-widget>\n </ng-container>\n <ng-container *ngIf=\"valuationWidgetData\">\n <lib-custom-widget [widgetData]=\"valuationWidgetData\"></lib-custom-widget>\n </ng-container>\n </ng-container>\n\n <!-- No widget configured state -->\n <ng-template #noWidgets>\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\n </ng-template>\n </ng-template>\n </div>\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges,ChangeDetectorRef } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetService } from '../../state/widget.service';\nimport { SHARED } from '../../../shared';\nimport { WidgetStore } from '../../state/widget.store';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\n\n\n/**\n * WidgetRowTileComponent is a component that displays a row of widgets in a tile format.\n * It fetches the widgets based on the provided record ID and widget name.\n */\n@Component({\n selector: 'lib-widget-row-tile',\n standalone: false,\n templateUrl: './widget-row-tile.component.html',\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-row-tile.component.scss']\n})\nexport class WidgetRowTileComponent implements OnInit, OnChanges, OnDestroy {\n\n private destroy$ = new Subject<void>();\n widgets!: WidgetModel[];\n isLoading: boolean = true;\n @Input() recordId!: string;\n @Input() widgetName!: string;\n @Input() onWidgetUpdate: any;\n @Input() isFullHeight = false;\n @Output() onWidgetItemClick = new EventEmitter<any>();\n widgetCardStyle: { [key: string]: any } = {};\n widgetCardStyleExpression: { [key: string]: any } = {};\n widgetCombinedStyle: { [key: string]: any } = {};\n constructor(private widgetService: WidgetService, private widgetStore: WidgetStore, private styleBulderService: StyleBuilderService, private cdr: ChangeDetectorRef,private widgetQuery: WidgetQuery) {}\n\n ngOnInit(): void {\n this.getWidgetItemList();\n this.handleWidgetItemClick();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes[SHARED.ON_WIDGET_UPDATE]) {\n this.isLoading = true;\n this.getWidgetItemList();\n }\n }\n\n getWidgetItemList() {\n this.widgetService.getEvaluateByWidgetName(this.recordId, this.widgetName)\n .pipe(takeUntil(this.destroy$))\n .subscribe((res: WidgetModel[]) => {\n this.widgets = res;\n this.widgetStore.setWidgetsList(this.widgets);\n this.updateWidgetStyles(this.widgets[0]);\n this.isLoading = false;\n },\n (error) => {\n this.isLoading = false;\n }\n )\n }\n\n handleWidgetItemClick() {\n this.widgetQuery.getOnWidgetItemClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n if (res) {\n this.onWidgetItemClick.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnWidgetItemClick subscription:', error);\n }\n );\n }\n\n private updateWidgetStyles(widget: any): void {\n if (widget.style) {\n const parsedItemStyle = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyle);\n const styleExpression = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyleExpression);\n this.widgetCardStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\n this.widgetCardStyleExpression = widget.style.widgetCardStyleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\n this.widgetCombinedStyle = { ...this.widgetCardStyle, ...this.widgetCardStyleExpression };\n this.cdr.detectChanges();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<p-card [style]=\"widgetCombinedStyle\" class=\"widget-block-wrapper block\" [ngClass]=\"{'h-full': isFullHeight}\">\n <div class=\"widget-section-wrapper\" [ngClass]=\"{'h-full': isFullHeight}\">\n <!-- Loading state -->\n @if (isLoading) {\n @for (n of [1, 2, 3]; track $index) {\n <div style=\"padding: 6px;\">\n <p-skeleton width=\"100%\" height=\"45px\" styleClass=\"mb-3\"></p-skeleton>\n </div>\n }\n } @else {\n\n <!-- Widgets Exist -->\n @if (widgets && widgets.length > 0) {\n @for (widget of widgets; let i = $index; track i) {\n <lib-widget-main \n [widget]=\"widget\" \n [index]=\"i\" \n [isFullHeight]=\"isFullHeight\"\n ></lib-widget-main>\n }\n } @else {\n <!-- No Widgets -->\n <p class=\"text-color ml-3 font-semibold\">\n No Widgets Configured\n </p>\n }\n }\n </div>\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { SHARED } from '../../../shared';\nimport { WidgetStore } from '../../state/widget.store';\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { Subject, takeUntil } from 'rxjs';\n\n/**\n * Widget Container Component\n */\n@Component({\n selector: 'lib-widget-container',\n standalone: false,\n templateUrl: './widget-container.component.html',\n styleUrl: './widget-container.component.scss'\n})\nexport class WidgetContainerComponent implements OnInit,OnChanges, OnDestroy{ \n\n constructor(private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) {}\n\n @Input() isMenu = false;\n @Input() offerWidgetData!: CustomWidgetModel;\n @Input() valuationWidgetData!: CustomWidgetModel;\n @Input() widgetName!: string;\n @Input() recordId!: string;\n @Input() onWidgetUpdate: any;\n @Input() isFullHeight = false;\n @Output() onViewAllDetails = new EventEmitter<any>();\n @Output() onWidgetEventClick = new EventEmitter<any>();\n @Output() onWidgetItemClick = new EventEmitter<any>();\n @Output() onUpdatedWidgetList = new EventEmitter<any>();\n private destroy$ = new Subject<void>();\n \n ngOnInit(): void {\n this.widgetQuery.getWidgetList()\n .pipe(takeUntil(this.destroy$))\n .subscribe((data) => {\n if (data) {\n this.onUpdatedWidgetList.emit(data);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[SHARED.IS_MENU]) {\n this.isMenu = changes[SHARED.IS_MENU].currentValue;\n this.widgetStore.setIsMenu(this.isMenu);\n }\n }\n\n handleViewAllDetails(event: any) {\n this.onViewAllDetails.emit(event);\n }\n\n handleWidgetEventClick(event: any) {\n this.onWidgetEventClick.emit(event);\n }\n\n handleWidgetItemClick(event: any) {\n this.onWidgetItemClick.emit(event);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div class=\"widget-container-wrapper\" [ngClass]=\"{'h-full': isFullHeight}\">\n @if(isMenu) {\n <div class=\"bg-white widget-menu-container\">\n <lib-widget-menu \n [offerWidgetData]=\"offerWidgetData\"\n [valuationWidgetData]=\"valuationWidgetData\"\n (onViewAllDetails)=\"handleViewAllDetails($event)\"\n (onWidgetEventClick)=\"handleWidgetEventClick($event)\"\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\n ></lib-widget-menu>\n </div>\n } @else {\n <div class=\"bg-white widget-menu-container\" [ngClass]=\"{'h-full': isFullHeight}\">\n <lib-widget-row-tile\n [recordId]=\"recordId\"\n [widgetName]=\"widgetName\"\n [onWidgetUpdate]=\"onWidgetUpdate\"\n [isFullHeight]=\"isFullHeight\"\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\n ></lib-widget-row-tile>\n </div>\n }\n</div>","import { Component, Input } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\nimport { ProgressChartModel } from '../../models/progress-chart.model';\n\n@Component({\n selector: 'lib-widget-menu-header',\n standalone: false,\n templateUrl: './widget-menu-header.component.html',\n styleUrl: './widget-menu-header.component.scss'\n})\nexport class WidgetMenuHeaderComponent {\n @Input() widget!: WidgetModel;\n @Input() progressChartData!: ProgressChartModel;\n}\n","<div class=\"grid m-0 align-items-center justify-content-between px-3\">\n <div class=\"col-10 p-0\">\n <div class=\"flex align-items-center\">\n <h3 class=\"mb-0 application-title-wrapper font-bold mr-3\">\n {{ (widget.header) }}\n </h3>\n </div>\n <div *ngIf=\"widget?.subHeader\" class=\"flex align-items-center mt-2\">\n <span class=\"mr-1\">Risk Rating:</span>\n <span class=\"mr-3 font-semibold\" [ngClass]=\"{\n 'text-red-500': widget.subHeader === 'High',\n 'text-green-500': widget.subHeader === 'Low',\n 'text-yellow-500': widget.subHeader === 'Medium'\n }\">{{ widget.subHeader }}</span>\n </div>\n </div>\n @if(widget.predefinedName == \"ApplicationWidget\") {\n <div class=\"chart-container\">\n <p-chart type=\"pie\" [data]=\"progressChartData\" height=\"50px\" width=\"50px\"></p-chart>\n <p class=\"percentage-label text-green-500 text-lg\">{{ progressChartData.datasets[0].data[0] }}%</p>\n </div>\n }\n \n</div>","import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { StyleConfig, WidgetItem, WidgetModel } from '../../models/widget.model';\nimport { SHARED } from '../../../shared';\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\nimport { WidgetStore } from '../../state/widget.store';\n\n@Component({\n selector: 'lib-widget-menu-item',\n standalone: false,\n templateUrl: './widget-menu-item.component.html',\n styleUrl: './widget-menu-item.component.scss'\n})\nexport class WidgetMenuItemComponent implements OnChanges, OnDestroy {\n @Input() widgetItem!:WidgetItem;\n @Input() widget!: WidgetModel;\n @Input() application: any;\n isShowExclamation: boolean = false;\n constructor(private styleBulderService : StyleBuilderService, private widgetStore: WidgetStore){}\n\n getStyle(style: StyleConfig){\n return this.styleBulderService.getStyle(style)\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // if(this.widgetItem && this.widgetItem.style && this.widgetItem.style.styleExpression && this.widgetItem.style.styleExpression.co) {\n // this.widgetItem.style.styleExpression.color\n // exclamation\n // }\n }\n\n onHandleSidebar(propertyId: string) {\n this.widgetStore.setOnViewPropertyDetails({propertyId: propertyId, isDailogShow: true});\n }\n \n ngOnDestroy(): void {\n this.widgetStore.setOnWidgetItemClick(null);\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\n }\n\n handleWidgetItemClick(widgetItem: WidgetItem){\n const updatedItem = { ...widgetItem };\n const applicantId = this.widget.recordId;\n switch (updatedItem.route) {\n case SHARED.DIRECT_DEBIT:\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\n updatedItem.value = directDebit[0].value;\n break;\n case SHARED.SOLICITOR:\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\n updatedItem.value = solicitor[0].value;\n break;\n case SHARED.PRODUCT:\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\n updatedItem.value = product[0].value;\n break;\n case SHARED.COMMITMENTS:\n updatedItem.value = applicantId;\n break;\n case SHARED.INCOME:\n updatedItem.value = applicantId;\n break;\n case SHARED.EXPENDITURE:\n updatedItem.value = applicantId;\n break;\n }\n this.widgetStore.setWidgetData(this.widget);\n this.widgetStore.setOnWidgetItemClick(updatedItem);\n }\n}\n","<div class=\"widget-container\">\n <div class=\"flex justify-content-between\"\n [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\n \n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\n <i *ngIf=\"false\" class=\"pi pi-exclamation-triangle text-red-500 mr-1\"\n style=\"font-size: 1.3rem\"></i>\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\"\n [ngStyle]=\"getStyle(widgetItem.style)\">\n <ng-container *ngIf=\"widgetItem?.isLink; else plainText\">\n <a class=\"cursor-pointer\" (click)=\"handleWidgetItemClick(widgetItem)\">\n {{ (widgetItem.value && widgetItem.value !== 'null') ? widgetItem.value : '' }}\n </a>\n </ng-container>\n <ng-template #plainText>\n <a (click)=\"handleWidgetItemClick(widgetItem)\"> {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : '' }} </a>\n </ng-template>\n </p>\n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\n </div>\n </div>\n \n \n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\n class=\"address-title-wrapper cursor-pointer\" [ngStyle]=\"getStyle(widgetItem.style)\" (click)=\"onHandleSidebar(widget.recordId)\">\n {{ widgetItem?.value }}\n </div>\n</div>","import { Component, Input } from '@angular/core';\nimport { WidgetModel } from '../../models/widget.model';\n\n@Component({\n selector: 'lib-widget-menu-body',\n standalone: false,\n templateUrl: './widget-menu-body.component.html',\n styleUrl: './widget-menu-body.component.scss'\n})\nexport class WidgetMenuBodyComponent {\n @Input() widget!: WidgetModel;\n}\n","<div class=\"widget-body-container\">\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\n @if(!dataItem.isHidden){\n <div [ngClass]=\"i !== ((widget.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\n <div [ngClass]=\"\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\n ? 'vulnerability-title-wrapper'\n : ( i !== ((widget.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\n \" class=\"px-3\">\n <lib-widget-menu-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-menu-item>\n </div>\n </div>\n }\n </div>\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ERROR, ROUTES, SHARED } from '../../../shared';\nimport { WidgetService } from '../../state/widget.service';\nimport { WidgetModel } from '../../models/widget.model';\nimport { WidgetQuery } from '../../state/widget.query';\nimport { Subject, Subscription, takeUntil } from 'rxjs';\nimport { WidgetStore } from '../../state/widget.store';\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\nimport { ProgressChartModel } from '../../models/progress-chart.model';\n\n/**\n * Widget Container Component\n */\n@Component({\n selector: 'lib-widget-menu-container',\n standalone: false,\n templateUrl: './widget-menu-container.component.html',\n styleUrl: './widget-menu-container.component.scss'\n})\nexport class WidgetMenuContainerComponent implements OnInit, OnChanges, OnDestroy {\n constructor(\n private widgetService: WidgetService,\n public activatedRoute: ActivatedRoute,\n private widgetQuery: WidgetQuery,\n private widgetStore: WidgetStore,\n private cdr: ChangeDetectorRef\n ) { }\n\n private destroy$ = new Subject<void>();\n widgets: WidgetModel[] = [];\n private subscriptions :Subscription[]=[];\n isLoading: boolean = true;\n \n @Input() widgetName!: string | null;\n @Input() recordId!: string | null;\n @Output() onViewAllDetails = new EventEmitter<any>();\n @Output() onViewAllProperties = new EventEmitter<any>();\n @Output() onWidgetItemClick = new EventEmitter<any>();\n @Output() getWidgetData = new EventEmitter<any>();\n @Output() onDirectDebitClick = new EventEmitter<any>();\n @Output() onWidgetLoaded = new EventEmitter<any>();\n @Input() isRouteChanged: string = SHARED.EMPTY;\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\n @Input() offerWidgetData!: CustomWidgetModel;\n @Input() valuationWidgetData!: CustomWidgetModel;\n @Input() progressChartData!: ProgressChartModel;\n\n ngOnInit(): void {\n this.handleEventFromPropertyDetails();\n this.handleOnViewAllDetails();\n\n if (!this.widgetName || !this.recordId) {\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\n widgetName: this.widgetName || SHARED.MISSING_WIDGETNAME,\n recordId: this.recordId || SHARED.MISSING_RECORD_ID\n });\n this.isLoading = false;\n return;\n }\n\n this.getWidgetFromCacheList(this.recordId, this.widgetName);\n this.getAllWidgetList(this.recordId, this.widgetName);\n this.handleGetWidgetData()\n this.handleWidgetItemClick();\n }\n\n handleWidgetItemClick() {\n this.widgetQuery.getOnWidgetItemClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n if (res) {\n this.onWidgetItemClick.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnWidgetItemClick subscription:', error);\n }\n );\n\n }\n\n handleGetWidgetData() {\n this.widgetQuery.getWidgetData()\n .pipe(takeUntil(this.destroy$)) \n .subscribe(\n (res) => {\n if (res) {\n this.getWidgetData.emit(res);\n }\n },\n (error) => {\n console.error('Error in getWidgetData subscription:', error);\n }\n );\n }\n\n handleEventFromPropertyDetails() {\n this.widgetQuery.getViewPropertyDetails()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.onViewAllProperties.next(res);\n }\n })\n }\n\n handleOnViewAllDetails() {\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\n (res) => {\n if (res) {\n this.onViewAllDetails.emit(res);\n }\n },\n (error) => {\n console.error('Error in getOnViewAllDetails subscription:', error);\n }\n ));\n }\n\n getAllWidgetList(recordId: string, widgetName: string) {\n this.widgetService.getAllWidgets(recordId, widgetName)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.onWidgetLoaded.emit(this.widgets);\n this.cdr.detectChanges();\n },\n (error) => {\n this.onWidgetLoaded.emit(true);\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.cdr.detectChanges();\n }\n )\n }\n\n getWidgetFromCacheList(recordId: string, widgetName: string) {\n this.widgetService.getEvaluateFromCache(recordId, widgetName)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (res) => {\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\n this.isLoading = false;\n },\n (error) => {\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\n this.isLoading = false;\n }\n )\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.isSidebarVisible) {\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\n }\n if(changes['isRouteChanged'] && this.widgetName && this.recordId) {\n console.log(this.isRouteChanged);\n this.getAllWidgetList(this.recordId, this.widgetName);\n }\n }\n\n ngOnDestroy(): void {\n this.widgets = [];\n this.widgetStore.resetOnViewAllDetails();\n this.onWidgetLoaded.emit(SHARED.EMPTY);\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.destroy$.next();\n this.destroy$.complete();\n }\n}","<p-card class=\"widget-block-wrapper block\">\n <div class=\"widget-section-wrapper pt-2\">\n <!-- Loading state -->\n <ng-container *ngIf=\"isLoading; else widgetContent\">\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\n </ng-container>\n \n <!-- Content after API call -->\n <ng-template #widgetContent>\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\n <div class=\"widget-container-wrapper pl-1\" [ngClass]=\"i !== 0 ? 'mt-4' : ''\">\n <lib-widget-menu-header [widget]=\"widget\" [progressChartData]=\"progressChartData\"></lib-widget-menu-header>\n <div class=\"widget-content-wrapper mt-3 py-3\">\n <lib-widget-menu-body [widget]=\"widget\"></lib-widget-menu-body>\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\n </div>\n </div>\n </ng-container>\n </ng-container>\n \n <!-- No widget configured state -->\n <ng-template #noWidgets>\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\n </ng-template>\n </ng-template>\n </div>\n </p-card>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { CardModule } from 'primeng/card';\nimport { SidebarModule } from 'primeng/sidebar';\nimport { SharedModule } from '../shared';\nimport { WidgetContainerComponent } from './components/widget-container/widget-container.component';\nimport { WidgetHeaderComponent } from './components/widget-header/widget-header.component';\nimport { WidgetFooterComponent } from './components/widget-footer/widget-footer.component';\nimport { WidgetBodyComponent } from './components/widget-body/widget-body.component';\nimport { WidgetItemComponent } from './components/widget-item/widget-item.component';\nimport { TimelineModule } from 'primeng/timeline';\nimport { ChartModule } from 'primeng/chart';\nimport { WidgetMainComponent } from './components/widget-main/widget-main.component';\nimport { WidgetMenuComponent } from './components/widget-menu/widget-menu.component';\nimport { WidgetRowTileComponent } from './components/widget-row-tile/widget-row-tile.component';\nimport { WidgetMenuContainerComponent } from './components/widget-menu-container/widget-menu-container.component';\nimport { WidgetMenuHeaderComponent } from './components/widget-menu-header/widget-menu-header.component';\nimport { WidgetMenuBodyComponent } from './components/widget-menu-body/widget-menu-body.component';\nimport { WidgetMenuItemComponent } from './components/widget-menu-item/widget-menu-item.component';\nimport { CustomWidgetComponent } from './components/custom-widget/custom-widget.component';\nimport { SkeletonModule } from 'primeng/skeleton';\n\n\n@NgModule({\n declarations: [WidgetContainerComponent, WidgetMenuComponent, WidgetMainComponent, WidgetHeaderComponent, WidgetFooterComponent, WidgetBodyComponent, WidgetItemComponent, WidgetRowTileComponent, WidgetMenuContainerComponent, WidgetMenuHeaderComponent, WidgetMenuBodyComponent, WidgetMenuItemComponent, CustomWidgetComponent],\n imports: [\n CommonModule,\n ButtonModule,\n DividerModule,\n CardModule,\n SharedModule,\n SidebarModule,\n TimelineModule,\n ChartModule,\n SkeletonModule\n ],\n exports: [WidgetContainerComponent, WidgetMenuContainerComponent, CustomWidgetComponent]\n})\nexport class WidgetModule { }","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { QueueModel } from \"../models/queue.model\";\nimport { QueueStore } from \"./queue.store\";\nimport { Observable, tap } from \"rxjs\";\nimport { DATASOURCES } from \"../../shared/constant/DATASOURCES\";\nimport { BaseService } from \"../../shared/state/base.service\";\nimport { AppConfigService } from \"../../shared/services/app-config.service\";\nimport { ListService } from \"../../shared/services/list.service\";\nimport { SHARED } from \"../../shared/constant/SHARED\";\n\n/**\n * Service for managing queue-related operations such as retrieving,\n * searching, and storing queue data in the QueueStore.\n */\n@Injectable({ providedIn: \"root\" })\nexport class QueueService extends BaseService<QueueModel> {\n\n /**\n * Creates an instance of QueueService.\n * @param {QueueStore} queueStore - The store that manages the QueueModel state\n * @param {HttpClient} http - Angular HttpClient for making HTTP requests\n * @param {AppConfigService} appConfigService - Service for accessing application configuration\n * @param {ListService} listService - Service for handling list-related operations\n */\n constructor(\n public queueStore: QueueStore,\n http: HttpClient,\n appConfigService: AppConfigService,\n listService: ListService\n ) {\n super(http, queueStore, appConfigService, listService);\n this._pathName = DATASOURCES.QUEUES;\n }\n\n /**\n * Fetches queue records using the provided apiConfig URL and optional params.\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\n * @param {any} [params] - Optional query parameters as an object\n * @returns {Observable<any>} Observable emitting the queue records\n */\n getQueueRecordsByApiConfig(apiConfig: string, params?: any): Observable<any> {\n let url = apiConfig;\n if (params && typeof params === 'object') {\n const queryString = new URLSearchParams(params).toString();\n if (queryString) {\n url += (url.includes('?') ? '&' : '?') + queryString;\n }\n }\n return this.http.get<any>(url).pipe(\n tap((response: any) => {\n if (response && response.data) {\n this.queueStore.set(response.data);\n } else if (Array.isArray(response)) {\n this.queueStore.set(response);\n }\n })\n );\n }\n\n /**\n * Fetches paginated queue records using the provided apiConfig URL with search and pagination support.\n * This is the unified method used for both initial data loading and search functionality.\n * Uses POST method with underwriterIds and unassigned in body, other params in query string.\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\n * @param {string} [searchKey] - Optional search term\n * @param {number} [page] - Page number (default: 1)\n * @param {number} [limit] - Number of records per page (default: 10)\n * @param {string} [query] - Optional query string for filtering\n * @param {string} [sortBy] - Optional sort field\n * @param {string} [sortOrder] - Optional sort order ('asc' or 'desc')\n * @returns {Observable<any>} Observable emitting the paginated queue records\n */\n getPaginatedQueueRecords(apiConfig: string, searchKey?: string, page: number = 1, limit: number = 10, query?: string, sortBy?: string, sortOrder?: string): Observable<any> {\n let url = apiConfig;\n const params: any = {\n page: page.toString(),\n limit: limit.toString(),\n ...(searchKey ? { searchKey } : {}),\n ...(sortBy ? { sortBy } : {}),\n ...(sortOrder ? { sortOrder } : {})\n };\n \n // Prepare body for POST request - underwriterIds and unassigned go in body\n const body: any = {};\n \n // Add query parameters if they exist\n if (query) {\n const queryParams = new URLSearchParams(query);\n queryParams.forEach((value, key) => {\n // Extract underwriterIds and unassigned for body, keep others in params\n if (key === 'underwriterId') {\n // Convert comma-separated string to array for body\n const underwriterIds = value.split(',').filter(id => id.trim() !== '');\n if (underwriterIds.length > 0) {\n body.underwriterIds = underwriterIds;\n }\n } else if (key === 'unassigned') {\n // Convert string to boolean for body\n body.unassigned = value === 'true';\n } else {\n // Keep all other params in query string (including 'all' flag)\n params[key] = value;\n }\n });\n }\n \n const paramsString = new URLSearchParams(params).toString();\n url += (url.includes('?') ? '&' : '?') + paramsString;\n \n // Use POST method with body containing underwriterIds and unassigned\n return this.http.post<any>(url, body).pipe(\n tap((response: any) => {\n if (response && response.data) {\n this.queueStore.set(response.data);\n } else if (Array.isArray(response)) {\n this.queueStore.set(response);\n }\n })\n );\n }\n\n /**\n * Fetches all queue entities from the configured data source.\n * The entities are stored in the queueStore upon retrieval.\n * @returns {Observable<any>} Observable emitting the fetched queue entities\n */\n getAllQueue(): Observable<any> {\n return this.http.get<any>(this.apiUrl + this._pathName).pipe(\n tap((entities: any) => { this.queueStore.set(entities); })\n );\n }\n}\n","\nimport { Injectable } from '@angular/core';\nimport { TableBuilder } from '../../shared/services/table.builder';\nimport { TableSecondaryModel } from '../../shared/table-secondary/models/table-secondary.model';\nimport { QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST, SHARED, FIELD_DISPLAY_NAMES, QUEUE_RECORD_TABLE_COLUMN_ORDER } from '../../shared/constant/SHARED';\nimport * as columnStylesJson from '../constants/column-styles.json';\nimport { logAction } from '@datorama/akita';\n\nconst CHIP_VARIANTS = {\n DANGER: 'danger',\n WARNING: 'warning',\n NEUTRAL: 'neutral',\n SUCCESS: 'success',\n INFO: 'info',\n LIGHT_GREEN_SUCCESS: 'light-green-success',\n LIGHT_AMBER_WARNING: 'light-amber-warning',\n LIGHT_RED_DANGER: 'light-red-danger',\n LIGHT_NEUTRAL: 'light-neutral'\n} as const;\n\ntype ChipVariant = (typeof CHIP_VARIANTS)[keyof typeof CHIP_VARIANTS];\n\n/**\n *\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class QueueRecordTableBuilderService extends TableBuilder {\n private columnStyles: any = (columnStylesJson as any).columnStyles;\n\n private deriveChipVariantFromDays(days: number | null): ChipVariant {\n if (days === null || days === undefined) {\n return CHIP_VARIANTS.NEUTRAL;\n }\n if (days < 0) {\n return CHIP_VARIANTS.DANGER;\n }\n if (days <= 1) {\n return CHIP_VARIANTS.WARNING;\n }\n return CHIP_VARIANTS.SUCCESS;\n }\n\n /**\n * Maps valuation status to icon and color configuration\n */\n private getValuationStatusConfig(status: string | null): { icon: string; iconClass: string; textClass: string } | null {\n if (!status) return null;\n \n const statusLower = status.toLowerCase();\n const configMap: Record<string, { icon: string; iconClass: string; textClass: string }> = {\n 'received': {\n icon: 'pi pi-image',\n iconClass: 'text-green-600',\n textClass: 'text-green-700 text-sm font-medium'\n },\n 'not paid': {\n icon: 'pi pi-times-circle',\n iconClass: 'text-red-600',\n textClass: 'text-red-700 text-sm font-medium'\n },\n 'instructed': {\n icon: 'pi pi-file',\n iconClass: 'text-blue-600',\n textClass: 'text-blue-700 text-sm font-medium'\n },\n 'outstanding pvq': {\n icon: 'pi pi-star',\n iconClass: 'text-purple-600',\n textClass: 'text-purple-700 text-sm font-medium'\n },\n 'paid': {\n icon: 'pi pi-pound',\n iconClass: 'text-green-500',\n textClass: 'text-green-600 text-sm font-medium'\n },\n 'reviewing': {\n icon: 'pi pi-clock',\n iconClass: 'text-orange-600',\n textClass: 'text-orange-700 text-sm font-medium'\n },\n 'complete': {\n icon: 'pi pi-check-circle',\n iconClass: 'text-green-600',\n textClass: 'text-green-700 text-sm font-medium'\n },\n 'scheduled': {\n icon: 'pi pi-calendar',\n iconClass: 'text-blue-600',\n textClass: 'text-blue-700 text-sm font-medium'\n },\n 'requested': {\n icon: 'pi pi-send',\n iconClass: 'text-indigo-600',\n textClass: 'text-indigo-700 text-sm font-medium'\n },\n 'ready to instruct': {\n icon: 'pi pi-check',\n iconClass: 'text-teal-600',\n textClass: 'text-teal-700 text-sm font-medium'\n }\n };\n\n return configMap[statusLower] || {\n icon: 'pi pi-info-circle',\n iconClass: 'text-gray-600',\n textClass: 'text-gray-700 text-sm'\n };\n }\n\n /**\n * Truncates text to specified length with ellipsis\n * @param {string} text - Text to truncate\n * @param {number} maxLength - Maximum length before truncation\n * @returns {string} Truncated text\n */\n private truncateText(text: string, maxLength: number = 15): string {\n if (!text) return '';\n return text.length > maxLength ? `${text.substring(0, maxLength - 3)}...` : text;\n }\n\n private getColumnOrder(isReferredQueue?: boolean): string[] {\n if (!isReferredQueue) { return QUEUE_RECORD_TABLE_COLUMN_ORDER.filter(field => field !== SHARED.REFERRED_DATE); }\n return QUEUE_RECORD_TABLE_COLUMN_ORDER.map(field => field === SHARED.SLA ? SHARED.REFERRED_DATE : field );\n }\n\n buildSecondaryTable(records: any[], headerWidths?: { [key: string]: string; }, editPermission?: string, deletePermission?: string, options?: { isReferredQueue?: boolean } ): TableSecondaryModel {\n const table = new TableSecondaryModel();\n table.headers = [];\n table.records = [];\n\n if (records.length === 0) {\n return table;\n }\n\n // Get the first record to determine available fields\n const firstRecord = records[0];\n const excludedFields = [\n SHARED._ID,\n SHARED.COMPANY_NAME,\n SHARED.APPLICATION_TYPE,\n SHARED.ASSIGNED_TO,\n SHARED.TASK_COMPLETION_PERCENT,\n SHARED.RISK_RATING,\n SHARED.LENDING,\n SHARED.BROKERCOMPANY_NAME\n\n ]; // Fields to exclude from table columns\n\n // Get all fields from the first record, excluding specified fields\n const columnOrder = this.getColumnOrder(options?.isReferredQueue);\n let availableFields = columnOrder\n .filter(field => !excludedFields.includes(field) && firstRecord.hasOwnProperty(field));\n\n const columnWidths: { [key: string]: string } = QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST;\n\n table.records = records.map((apiRecord, index) => {\n const record: any = {\n recordData: {\n recordId: apiRecord._id, // The nested recordData expected by table-secondary.component.ts\n ...apiRecord\n },\n ...apiRecord\n };\n\n // Add column widths for row alignment\n record._columnWidths = {};\n availableFields.forEach(field => {\n record._columnWidths[field] = columnWidths[field] || 'w-2';\n });\n\n // Add formatted values for each field\n availableFields.forEach(field => {\n let value = apiRecord[field];\n let cellValue: any = value;\n\n // Format specific fields\n if (field === SHARED.APPLICANTS && Array.isArray(value)) {\n const companyName = apiRecord.companyName || '';\n const bubbles = [];\n\n // If we have both company and applicants, show only company name\n if (companyName && value.length > 0) {\n bubbles.push({\n fullName: this.truncateText(companyName),\n isCompany: true\n });\n } else if (companyName) {\n // Only company, no applicants\n bubbles.push({\n fullName: this.truncateText(companyName),\n isCompany: true\n });\n } else {\n // Only applicants, show full names\n value.forEach((applicant) => {\n if (applicant.fullName) {\n bubbles.push({\n fullName: this.truncateText(applicant.fullName),\n isCompany: false,\n riskRating: applicant.riskRating,\n isCustomerVulnerable: applicant.isCustomerVulnerable\n });\n }\n });\n }\n cellValue = bubbles;\n }\n else if (field === SHARED.TASKS) {\n // Format tasks as task items with badges\n const taskItems = [];\n\n // Parse the string format \"brokerTasks/underwriterTasks\" (e.g., \"2/0\", \"0/3\", \"2/3\")\n if (typeof value === SHARED.STRING && value.includes(SHARED.SLASH)) {\n const [brokerTasksStr, underwriterTasksStr] = value.split(SHARED.SLASH);\n const brokerTasks = parseInt(brokerTasksStr) || 0;\n const underwriterTasks = parseInt(underwriterTasksStr) || 0;\n\n // Always show both badges, even if count is 0\n taskItems.push({\n type: SHARED.TASK_BROKER_LABEL,\n count: brokerTasks,\n status: SHARED.WARNING\n });\n taskItems.push({\n type: SHARED.TASK_UNDERWRITER_LABEL,\n count: underwriterTasks,\n status: SHARED.SUCCESS\n });\n }\n\n cellValue = taskItems;\n }\n else if (field === SHARED.APP_ID) {\n // Format App ID with type and risk tags below\n cellValue = {\n appId: value,\n type: apiRecord.lending || apiRecord.applicationType || undefined,\n risk: apiRecord.riskRating || undefined\n };\n }\n else if (field === SHARED.BROKER_NAME) {\n // Format broker with name and company name in multi-line format\n const brokerCompanyName = apiRecord[SHARED.BROKERCOMPANY_NAME];\n cellValue = {\n brokerName: this.truncateText(value),\n brokerCompanyName: brokerCompanyName || ''\n };\n }\n else if (field === SHARED.FINANCE) {\n // Remove decimal part from finance amount\n if (value && typeof value === 'string') {\n cellValue = {\n amount: value.replace(/\\.\\d{2}$/, ''),\n isFinance: true\n };\n } else {\n cellValue = value;\n }\n }\n else if (field === SHARED.SECURITY_ADDRESS && value) {\n const line1 = value.addressLine1 || '';\n cellValue = {\n addressLine1: this.truncateText(line1),\n postCode: value.postCode || ''\n };\n }\n else if (field === SHARED.SLA || field === SHARED.REFERRED_DATE) {\n const extractDays = (val: any): number | null => {\n if (typeof val === 'number') {\n return val;\n }\n if (val && typeof val === 'object') {\n if (typeof val.days === 'number') {\n return val.days;\n }\n if (typeof val.days === 'string') {\n const parsed = Number(val.days);\n return Number.isFinite(parsed) ? parsed : null;\n }\n }\n return null;\n };\n const extractTask = (val: any): string => {\n if (val && typeof val === 'object' && val.task) {\n return String(val.task);\n }\n if (typeof val === 'string') {\n return val;\n }\n return SHARED.EMPTY;\n };\n\n const daysValue = extractDays(value);\n const taskText = extractTask(value);\n const isReferredDate = field === SHARED.REFERRED_DATE;\n\n if (isReferredDate) {\n // Single-line format for referredDate (like Age column)\n cellValue = daysValue !== null ? `${daysValue} days` : SHARED.EMPTY;\n } else {\n // Two-line format for SLA with color-coded chip\n const chipVariant = this.deriveChipVariantFromDays(daysValue);\n cellValue = {\n addressLine1: daysValue !== null ? `${daysValue} days` : SHARED.EMPTY,\n postCode: taskText,\n days: daysValue,\n chipVariant\n };\n }\n }\n else if (field === SHARED.VALUATION_STATUS) {\n // Enrich valuation status with icon and color configuration\n // Use two-line format: icon on top (addressLine1), text below (postCode)\n const statusConfig = this.getValuationStatusConfig(value);\n if (statusConfig) {\n cellValue = {\n addressLine1: statusConfig.icon, // Icon class for first line\n postCode: value, // Status text for second line\n iconClass: statusConfig.iconClass,\n textClass: statusConfig.textClass\n };\n } else {\n cellValue = {\n addressLine1: '',\n postCode: value || ''\n };\n }\n }\n else if (!value || value === 'null') {\n cellValue = SHARED.EMPTY;\n }\n\n record[field] = cellValue;\n });\n\n // Attach row-level ngClass expression for dynamic row styling\n const rowStyles = (columnStylesJson as any).rowStyles;\n if (rowStyles && rowStyles.ngClass) {\n record.rowNgClassExpression = rowStyles.ngClass;\n }\n return record;\n });\n\n\n\n table.headers = availableFields.map(field => {\n const header: any = {\n name: field,\n displayName: FIELD_DISPLAY_NAMES[field] || field,\n width: columnWidths[field] || 'w-2' // Default width for all columns\n };\n if (field === SHARED.SECURITY_ADDRESS || field === SHARED.VALUATION_STATUS || field === SHARED.SLA) {\n header.isTwoLine = true;\n }\n\n if (field === SHARED.APPLICANTS) {\n header.skipParentNgClass = true;\n }\n if (field) {\n // Add containerNgClass and textNgClass expressions for dynamic styling\n if (this.columnStyles[field]) {\n if (this.columnStyles[field].containerNgClass) {\n header.containerNgClassExpression = this.columnStyles[field].containerNgClass;\n }\n if (this.columnStyles[field].containerNgStyle) {\n header.containerNgStyleExpression = this.columnStyles[field].containerNgStyle;\n }\n if (this.columnStyles[field].isShowSortIcon) {\n header.isShowSortIcon = this.columnStyles[field].isShowSortIcon;\n }\n if (this.columnStyles[field].textNgClass) {\n header.textNgClassExpression = this.columnStyles[field].textNgClass;\n }\n if (this.columnStyles[field].line1NgClass) {\n header.line1NgClassExpression = this.columnStyles[field].line1NgClass;\n }\n if (this.columnStyles[field].line2NgClass) {\n header.line2NgClassExpression = this.columnStyles[field].line2NgClass;\n }\n if (this.columnStyles[field].line1IsChip !== undefined) {\n header.line1IsChip = this.columnStyles[field].line1IsChip;\n }\n if (this.columnStyles[field].line1ChipVariant) {\n header.line1ChipVariantExpression = this.columnStyles[field].line1ChipVariant;\n }\n }\n }\n return header;\n });\n\n // Set TableSecondaryModel specific properties\n table.isSortingAllow = SHARED.TRUE;\n return table;\n }\n\n}","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, OnInit } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * `QueueSearchComponent` is responsible for displaying a search input and emitting\n * search terms to parent components for handling API calls with proper pagination.\n * Selector: `queue-search`\n * Template: `./queue-search.component.html`\n * Styles: `./queue-search.component.scss`\n */\n@Component({\n selector: 'queue-search',\n standalone: false,\n templateUrl: './queue-search.component.html',\n styleUrl: './queue-search.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueSearchComponent implements OnInit, OnDestroy {\n @Input() searchText: string = '';\n @Input() placeholder: string = '';\n @Input() debounceTime: number = 400;\n @Output() searchInputChanged = new EventEmitter<string>();\n @Output() searchRequested = new EventEmitter<string>();\n @Output() searchCleared = new EventEmitter<void>();\n\n private searchUpdate = new Subject<string>();\n private subscription!: Subscription;\n\n ngOnInit(): void {\n this.subscription = this.searchUpdate.pipe(\n debounceTime(this.debounceTime),\n distinctUntilChanged()\n ).subscribe(value => {\n this.searchRequested.emit(value);\n });\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n onSearchInputChange(): void {\n this.searchInputChanged.emit(this.searchText);\n this.searchUpdate.next(this.searchText);\n }\n\n onSearch(): void {\n this.searchRequested.emit(this.searchText);\n }\n\n onClearSearch(): void {\n this.searchCleared.emit();\n }\n\n get hasSearchText(): boolean {\n return !!this.searchText;\n }\n}","<div class=\"flex xl:mt-0 xl:justify-content-between align-items-center bg-white\" style=\"border: 1px solid #e0e4ea; border-radius: 8px; height: 44px;\">\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\" >\n <div class=\"p-inputgroup border-round bg-white\" style=\"height: 100%;\">\n <span class=\"p-inputgroup-addon bg-white\" style=\"height: 100%; display: flex; align-items: center;\">\n <i class=\"pi pi-search\"></i>\n </span>\n <input \n type=\"text\" \n [(ngModel)]=\"searchText\" \n class=\"border-none p-0 border-noround-right bg-white w-full outline-none\" \n style=\"height: 100%;\" \n pInputText \n [placeholder]=\"placeholder\" \n (input)=\"onSearchInputChange()\"\n (keydown.enter)=\"onSearch()\" \n />\n <button \n *ngIf=\"hasSearchText\" \n type=\"button\" \n class=\"p-inputgroup-addon bg-white border-none cursor-pointer\" \n (click)=\"onClearSearch()\"\n pButton \n icon=\"pi pi-times\"\n [text]=\"true\"\n style=\"height: 100%; display: flex; align-items: center; border-radius: 8px;\"\n ></button>\n </div>\n </div>\n </div>\n ","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\nimport { QueueStore } from '../../state/queue.store';\n\n@Component({\n selector: 'app-queue-item',\n standalone: false,\n templateUrl: './queue-item.component.html',\n styleUrls: ['./queue-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueItemComponent {\n @Input() filteredQueueData: any[] = [];\n @Input() selectedQueueId: string | null = null;\n @Input() selectedStatus: string = 'active';\n @Input() userRole: boolean = false;\n @Input() showQueueDataForm: boolean = true;\n @Output() queueSelected = new EventEmitter<string>();\n @Output() statusChanged = new EventEmitter<string>();\n @Output() insertQueueRequested = new EventEmitter<void>();\n\n constructor(private queueStore: QueueStore) {}\n\n onQueueClick(queueId: string): void {\n this.queueSelected.emit(queueId);\n this.queueStore.setSelectedQueueId(queueId);\n }\n\n onStatusChange(event: any): void {\n this.statusChanged.emit(event.target.value);\n }\n\n onInsertQueue(): void {\n this.insertQueueRequested.emit();\n }\n\n isQueueActive(queue: any): boolean {\n return queue.isActive;\n }\n\n isQueueSelected(queueId: string): boolean {\n return queueId === this.selectedQueueId;\n }\n}","<div class=\"p-4 pt-3 mb-0\">\n <div class=\"queues overflow-x-hidden queue-item-wrapper\">\n <h4 class=\"queue-title-wrapper m-0 mb-3 pb-1\">Queues</h4>\n @for(queue of filteredQueueData; let i = $index; track queue){\n\n <div class=\"flex m-0 kanban-list\" [ngClass]=\"{'mt-2 pt-1': i !== 0}\" #listEl style=\"min-height:2rem\" (click)=\"onQueueClick(queue._id)\" >\n <div class=\"flex align-items-center p-0 w-full\">\n <div class=\"py-4 px-3 cursor-pointer w-full\" [ngClass]=\"{\n 'active-queue-wrapper': isQueueSelected(queue._id),\n 'inActiveQueue': !isQueueActive(queue),\n 'queue-list-wrapper': isQueueActive(queue)\n }\"\n >\n <div class=\"flex justify-content-between flex align-items-center\">\n <span class=\"text-color queue-name font-semibold\"\n [ngClass]=\"{'active-title-wrapper': isQueueSelected(queue._id)}\"\n >{{queue.name}}</span>\n <div class=\"elipsesWithCount flex align-items-center\">\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" [ngClass]=\"{\n 'inActiveBadgeColor': !isQueueActive(queue),\n }\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- <div *ngIf=\"userRole\" class=\"w-full mt-4\">\n <p-button class=\"add-queue-btn-wrapper\" (onClick)=\"onInsertQueue()\">\n <div class=\"flex align-items-center justify-content-between\">\n <i class=\"pi pi-plus mr-2\"></i>\n <p class=\"mb-0\">Add Queue</p>\n </div>\n </p-button>\n </div> -->\n </div> ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'app-queue-list',\n standalone: false,\n templateUrl: './queue-list.component.html',\n styleUrls: ['./queue-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueListComponent {\n @Input() queueData: any[] = [];\n @Input() selectedQueueId: string | null = null;\n @Input() selectedStatus: string = 'active';\n @Input() userRole: boolean = false;\n @Input() showQueueDataForm: boolean = true;\n @Output() queueSelected = new EventEmitter<string>();\n @Output() statusChanged = new EventEmitter<string>();\n @Output() insertQueueRequested = new EventEmitter<void>();\n\n onQueueSelected(queueId: string): void {\n this.queueSelected.emit(queueId);\n }\n\n onStatusChanged(status: string): void {\n this.statusChanged.emit(status);\n }\n\n onInsertQueue(): void {\n this.insertQueueRequested.emit();\n }\n}\n","<app-queue-item\n [filteredQueueData]=\"queueData\"\n [selectedQueueId]=\"selectedQueueId\"\n [selectedStatus]=\"selectedStatus\"\n [userRole]=\"userRole\"\n [showQueueDataForm]=\"showQueueDataForm\"\n (queueSelected)=\"onQueueSelected($event)\"\n (statusChanged)=\"onStatusChanged($event)\"\n (insertQueueRequested)=\"onInsertQueue()\"\n></app-queue-item>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, OnChanges, SimpleChanges } from '@angular/core';\nimport { QueueModel } from '../../models/queue.model';\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\n\n@Component({\n selector: 'app-queue-record-table',\n standalone: false,\n templateUrl: './queue-record-table.component.html',\n styleUrls: ['./queue-record-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class QueueRecordTableComponent implements OnChanges{\n public sortField: string = '';\n public sortOrder: number = 1;\n\n @Input() table!: TableSecondaryModel;\n @Input() metaData!: MetaDataModel;\n @Input() loading: boolean = false;\n @Input() selectedRows: any[] = [];\n @Input() resetSort!: boolean;\n @Input() isShowSkeleton: boolean = false;\n @Input() selectedQueue: any;\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() selectedRowsData = new EventEmitter<any[]>();\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\n @Output() rowClick = new EventEmitter<any>();\n @Output() paginationChanged = new EventEmitter<any>();\n @Output() filterApplied = new EventEmitter<any>();\n @Output() sortApplied = new EventEmitter<any>();\n\n onSelectionChange(selection: any[]): void {\n this.selectionChange.emit(selection);\n this.selectedRowsData.emit(selection);\n }\n\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['resetSort']){\n this.sortField = '';\n this.sortOrder = 1;\n } \n }\n\n onRowClick(record: any): void {\n this.rowClick.emit(record);\n }\n\n onPaginationChange(event: any): void {\n this.paginationChanged.emit(event);\n }\n\n onFilterApplied(record: any): void {\n this.filterApplied.emit(record);\n }\n\n onSort(event: any): void {\n this.sortField = event.field;\n this.sortOrder = event.order;\n this.sortApplied.emit(event);\n }\n\n get hasData(): boolean {\n return this.table?.records && this.table.records.length > 0;\n }\n\n get selectedCount(): number {\n return this.selectedRows?.length || 0;\n }\n} ","<div class=\"bg-white queue-table-wrapper border-round-xl\">\n <lib-table-secondary \n [table]=\"table\" \n [metaData]=\"metaData\"\n [enableSelection]=\"true\"\n [selectionMode]=\"'multiple'\"\n [isShowSkeleton]=\"isShowSkeleton\"\n [selection]=\"selectedRows\"\n [showActions]=\"false\"\n [noRecordsMessage]=\"selectedQueue?.name === 'Assigned To Me' ? 'No applications are currently assigned.' : 'No Records Found'\"\n (onPage)=\"onPaginationChange($event)\"\n (selectionChange)=\"onSelectionChange($event)\"\n (rowSelectionChange)=\"onRowClick($event)\"\n (sortChanged)=\"onSort($event)\"\n [sortField]=\"sortField\"\n [sortOrder]=\"sortOrder\">\n </lib-table-secondary>\n</div>","import { Component, ElementRef, HostListener, ViewChild, Output, EventEmitter, Input, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { QueueFilterDropdownService, RiskRating, ApplicationType, PurchaseType, TaskStatus, QueueFilter, EPC } from '../../services/queue-filter-dropdown.service';\nimport { SHARED } from '../../../shared';\n\n/**\n *\n */\n@Component({\n selector: 'lib-queue-filter-dropdown',\n standalone: false,\n templateUrl: './queue-filter-dropdown.component.html',\n styleUrl: './queue-filter-dropdown.component.scss'\n})\nexport class QueueFilterDropdownComponent implements OnChanges, OnDestroy {\n showDropdown = false;\n @ViewChild('dropdownPanel', { static: false }) dropdownPanel!: ElementRef;\n skipNextDocumentClick = false;\n private originalFilters: QueueFilter | null = null;\n private filtersApplied = false; // Track if filters have been applied\n underwriterOptions: Array<{ id: string; name: string }> = [];\n loadingUnderwriters = false;\n // Cache filters for template bindings to avoid repeated object creation\n public filters!: QueueFilter;\n private searchSubscription?: Subscription;\n\n @Input() appliedFilters: any = {}; // Input to sync with container's applied filters\n @Output() filterApplied = new EventEmitter<any>();\n @Output() filtersCleared = new EventEmitter<void>();\n\n constructor(public filterService: QueueFilterDropdownService) {\n this.filters = this.filterService.getFilters();\n this.setupSearchSubscription();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['appliedFilters'] && !changes['appliedFilters'].firstChange) {\n this.syncWithAppliedFilters(this.appliedFilters);\n }\n }\n\n private setupSearchSubscription(): void {\n this.searchSubscription = this.filterService.getUnderwritersSearchObservable()\n .subscribe((underwriters) => {\n // Update options for search/filter - preserve \"Unassigned\" option if it exists\n const unassignedOption = this.underwriterOptions.find(opt => opt.id === SHARED.UNASSIGNED_UNDERWRITER_ID);\n if (unassignedOption) {\n this.underwriterOptions = [unassignedOption, ...underwriters];\n } else {\n this.underwriterOptions = underwriters;\n }\n this.loadingUnderwriters = false;\n });\n }\n\n onUnderwriterFilter(event: any): void {\n const searchKey = event?.filter || SHARED.EMPTY;\n this.loadingUnderwriters = true;\n this.filterService.searchUnderwriters(searchKey);\n }\n\n get filterCount(): number {\n return this.filterService.getFilterCount();\n }\n\n onFilterBtnClick() {\n if (!this.showDropdown) {\n // Store current state when opening dropdown (this will be the applied filters)\n this.originalFilters = this.filterService.getFilters();\n // Reset loading state and reload underwriter list every time dropdown opens\n this.loadingUnderwriters = false;\n this.loadUnderwriterOptions();\n } else {\n // Reset loading state when closing dropdown\n this.loadingUnderwriters = false;\n }\n this.showDropdown = !this.showDropdown;\n this.skipNextDocumentClick = true;\n this.filters = this.filterService.getFilters();\n }\n\n private loadUnderwriterOptions(): void {\n this.loadingUnderwriters = true;\n this.filterService.getUnderwritersList(SHARED.EMPTY).subscribe((underwriters) => {\n // Add \"Unassigned\" option at the beginning of the list\n const unassignedOption = { id: SHARED.UNASSIGNED_UNDERWRITER_ID, name: 'Unassigned' };\n this.underwriterOptions = [unassignedOption, ...underwriters];\n this.loadingUnderwriters = false;\n });\n }\n\n setRiskRating(rating: RiskRating) {\n this.filterService.setRiskRating(rating);\n this.filters = this.filterService.getFilters();\n }\n setApplicationType(type: ApplicationType) {\n this.filterService.setApplicationType(type);\n this.filters = this.filterService.getFilters();\n }\n setPurchaseType(type: PurchaseType) {\n this.filterService.setPurchaseType(type);\n this.filters = this.filterService.getFilters();\n }\n setTaskStatus(status: TaskStatus) {\n this.filterService.setTaskStatus(status);\n this.filters = this.filterService.getFilters();\n }\n setFinanceMin(min: number | null) {\n this.filterService.setFinanceMin(min);\n this.filters = this.filterService.getFilters();\n }\n setFinanceMax(max: number | null) {\n this.filterService.setFinanceMax(max);\n this.filters = this.filterService.getFilters();\n }\n setPendingDays(days: number | null) {\n this.filterService.setPendingDays(days);\n this.filters = this.filterService.getFilters();\n }\n\n // Category (UK, Ex-Pat, Intl)\n setCategory(category: 'UK' | 'Ex-Pat' | 'Intl') {\n this.filterService.setCategory(category);\n this.filters = this.filterService.getFilters();\n }\n\n // EPC (A or B (Green))\n setEpc(epc: EPC) {\n this.filterService.setEpc(epc);\n this.filters = this.filterService.getFilters();\n }\n\n // Vulnerable Customer (boolean)\n setVulnerableCustomer(value: boolean | null) {\n this.filterService.setVulnerableCustomer(value);\n this.filters = this.filterService.getFilters();\n }\n\n // Assigned Underwriter (multi-select ids)\n setAssignedUnderwriter(ids: string[]) {\n this.filterService.setAssignedUnderwriter(ids);\n this.filters = this.filterService.getFilters();\n }\n\n applyFilters() {\n const filterData = this.filterService.getFilters();\n this.filterApplied.emit(filterData);\n this.filtersApplied = true; // Mark that filters have been applied\n this.showDropdown = false;\n this.loadingUnderwriters = false; // Reset loading state when closing\n this.originalFilters = null; // Clear stored state after applying\n this.filters = this.filterService.getFilters();\n }\n\n clearAll() {\n this.filterService.clearAll();\n this.filtersCleared.emit();\n this.filtersApplied = false; // Reset the applied flag when clearing all\n this.originalFilters = null; // Clear originalFilters to prevent restoring old filters\n this.filters = this.filterService.getFilters();\n // Reload underwriter options when clearing\n this.loadUnderwriterOptions();\n }\n\n // Method to sync with container's applied filters\n syncWithAppliedFilters(appliedFilters: any) {\n if (appliedFilters && Object.keys(appliedFilters).length > 0) {\n const filters: QueueFilter = {\n riskRating: appliedFilters.riskRating || null,\n applicationType: appliedFilters.applicationType || null,\n purchaseType: appliedFilters.purchaseType || null,\n taskStatus: appliedFilters.taskStatus || null,\n category: appliedFilters.category || [],\n epc: appliedFilters.epc || [],\n vulnerableCustomer: appliedFilters.vulnerableCustomer ?? null,\n financeMin: appliedFilters.financeMin || null,\n financeMax: appliedFilters.financeMax || null,\n pendingDays: appliedFilters.pendingDays || null,\n assignedUnderwriter: appliedFilters.assignedUnderwriter || []\n };\n this.filterService.setAllFilters(filters);\n this.filtersApplied = true;\n this.filters = this.filterService.getFilters();\n } else {\n this.filterService.clearAll();\n this.filtersApplied = false;\n this.filters = this.filterService.getFilters();\n }\n }\n\n private restoreOriginalFilters() {\n if (this.originalFilters && !this.filtersApplied) {\n // Only restore original filters if no filters have been applied yet\n this.filterService.setAllFilters(this.originalFilters);\n }\n this.loadingUnderwriters = false; // Reset loading state when closing without applying\n this.originalFilters = null;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.skipNextDocumentClick) {\n this.skipNextDocumentClick = false;\n return;\n }\n if (this.showDropdown) {\n const clickedInside = this.dropdownPanel && this.dropdownPanel.nativeElement.contains(event.target);\n if (!clickedInside) {\n this.restoreOriginalFilters(); // Restore original state when closing without applying\n this.showDropdown = false;\n }\n }\n }\n\n ngOnDestroy(): void {\n if (this.searchSubscription) {\n this.searchSubscription.unsubscribe();\n }\n }\n}\n","<div class=\"queue-filter-dropdown-wrapper\">\n <p-button class=\"filter-btn-wrapper\" (onClick)=\"onFilterBtnClick()\">\n <div class=\"flex align-items-center\">\n <i class=\"ri-filter-3-line mr-2 mt-1\"></i>\n <p class=\"filter-count mb-0 mr-2\">{{ filterCount }}</p>\n <p class=\"mb-0\">Filter(s) Applied</p>\n <i class=\"pi pi-angle-down ml-2 mt-1\"></i>\n </div>\n </p-button>\n\n <div class=\"filter-dropdown-panel\" *ngIf=\"showDropdown\" #dropdownPanel>\n <h3 class=\"filter-title\">Queue Filters</h3>\n <div class=\"grid form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n\n\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Risk Rating</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Low')\"\n (onClick)=\"setRiskRating('Low')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Low</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Medium')\"\n (onClick)=\"setRiskRating('Medium')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Medium</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('High')\"\n (onClick)=\"setRiskRating('High')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">High</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 p-0 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Application Type</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('BTL')\"\n (onClick)=\"setApplicationType('BTL')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">BTL</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('HPP')\"\n (onClick)=\"setApplicationType('HPP')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">HPP</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n\n <div class=\"grid form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Category</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('UK')\"\n (onClick)=\"setCategory('UK')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">UK</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Ex-Pat')\"\n (onClick)=\"setCategory('Ex-Pat')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Ex-Pat</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Intl')\"\n (onClick)=\"setCategory('Intl')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Intl</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">EPC</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.epc?.includes('A or B (Green)')\"\n (onClick)=\"setEpc('A or B (Green)')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">A or B (Green)</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"grid form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Purchase Type</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.purchaseType.includes('Purchase')\"\n (onClick)=\"setPurchaseType('Purchase')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Purchase</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\"\n [class.selected]=\"filters.purchaseType.includes('Refinance')\"\n (onClick)=\"setPurchaseType('Refinance')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Refinance</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Task Status</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\"\n [class.selected]=\"filters.taskStatus.includes('Not Started')\"\n (onClick)=\"setTaskStatus('Not Started')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Not Started</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\"\n [class.selected]=\"filters.taskStatus.includes('In-progress')\"\n (onClick)=\"setTaskStatus('In-progress')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">In-progress</p>\n </div>\n </p-button>\n\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.taskStatus.includes('Completed')\"\n (onClick)=\"setTaskStatus('Completed')\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Completed</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"grid p-0 form-grid col-12\">\n <div class=\"col-12 pl-3 md:col-6\"> \n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Finance Amount</p>\n <div class=\"filter-options two-inputs\">\n <div class=\"grid p-0 form-grid col-12\">\n <div class=\"col-12 md:col-6\">\n <input type=\"number\" class=\"w-full\" placeholder=\"Min\" [ngModel]=\"filters.financeMin\"\n (ngModelChange)=\"setFinanceMin($event)\" min=\"0\" />\n </div>\n <div class=\"col-12 md:col-6\">\n <input type=\"number\" class=\"w-full\" placeholder=\"Max\" [ngModel]=\"filters.financeMax\"\n (ngModelChange)=\"setFinanceMax($event)\" min=\"0\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Pending Days</p>\n <div class=\"filter-options one-input\">\n <input type=\"number\" placeholder=\"No. of days\" [ngModel]=\"filters.pendingDays\"\n (ngModelChange)=\"setPendingDays($event)\" min=\"0\" />\n </div>\n </div>\n </div>\n\n <div class=\"grid p-0 form-grid col-12\">\n <div class=\"col-12 pl-4 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Vulnerable Customer</p>\n <div class=\"filter-options\">\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === true\"\n (onClick)=\"setVulnerableCustomer(true)\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Yes</p>\n </div>\n </p-button>\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === false\"\n (onClick)=\"setVulnerableCustomer(false)\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">No</p>\n </div>\n </p-button>\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === null\"\n (onClick)=\"setVulnerableCustomer(null)\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Any</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>\n <div class=\"col-12 pl-3 md:col-6\">\n <div class=\"filter-section\">\n <p class=\"filter-label m-0 mb-2\">Assigned Underwriter</p>\n <div class=\"filter-options one-input\">\n <p-multiSelect [options]=\"underwriterOptions\" optionLabel=\"name\" optionValue=\"id\"\n placeholder=\"Select underwriter(s)\" [appendTo]=\"'body'\" [panelStyle]=\"{ zIndex: 1100 }\"\n [filter]=\"true\" [loading]=\"loadingUnderwriters\"\n [ngModel]=\"filters.assignedUnderwriter\" (ngModelChange)=\"setAssignedUnderwriter($event)\"\n (onFilter)=\"onUnderwriterFilter($event)\">\n </p-multiSelect>\n </div>\n </div>\n </div>\n </div>\n <div class=\"filter-actions w-full flex justify-content-between\">\n <p-button class=\"pl-3 clear-btn-wrapper\" (onClick)=\"clearAll()\">\n <div class=\"flex align-items-center btn-text-wrapper\">\n <p class=\"mb-0 mr-2\">Clear All</p>\n <i class=\"pi pi-times\"></i>\n </div>\n </p-button>\n\n <p-button class=\"apply-btn-wrapper\" (onClick)=\"applyFilters()\">\n <div class=\"flex align-items-center\">\n <p class=\"mb-0\">Apply Filters</p>\n </div>\n </p-button>\n </div>\n </div>\n </div>","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild } from '@angular/core';\nimport { Subject, takeUntil } from 'rxjs';\nimport { QueueModel } from '../../models/queue.model';\nimport { QueueService } from '../../state/queue.service';\nimport { QueueStore } from '../../state/queue.store';\nimport { BaseContainerComponent } from '../../../shared/_base/base-container/base-container.component';\nimport { ERROR } from '../../../shared/constant/ERROR';\nimport { SHARED } from '../../../shared/constant/SHARED';\nimport { BaseStore } from '../../../shared/state/base.store';\nimport { QueueBusinessService } from '../../services/queue-business.service';\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\nimport { QueueRecordTableBuilderService } from '../../services/queue-record-table-builder.service';\nimport { QueueFilterDropdownComponent } from '../queue-filter-dropdown/queue-filter-dropdown.component';\nimport { QueueFilterDropdownService } from '../../services/queue-filter-dropdown.service';\nimport { BaseQuery } from '../../../shared';\n\n/**\n * Container component for managing queue-related data and interactions.\n * Extends the BaseContainerComponent with a generic type of QueueModel.\n */\n@Component({\n selector: 'lib-queue-container',\n standalone: false,\n templateUrl: './queue-container.component.html',\n styleUrl: './queue-container.component.scss'\n})\nexport class QueueContainerComponent extends BaseContainerComponent<QueueModel> implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n public queueList: QueueModel[] = [];\n public selectedQueue: any;\n public currentSearchTerm: string = '';\n public selectedRows: any[] = [];\n public loading: boolean = false;\n public error: string | null = null;\n public filteredQueueData: any[] = [];\n public selectedStatus: string = 'active';\n public userRole: boolean = false;\n public selectedQueueId: string | null = null;\n public table!: TableSecondaryModel;\n public metaData!: MetaDataModel;\n public currentPage: number = 1;\n public currentLimit: number = 10;\n public queryString: string = SHARED.EMPTY;\n public searchText: string = SHARED.EMPTY;\n public sortBy: string = SHARED.EMPTY;\n public sortOrder: number = 1;\n isShowSkeleton: boolean = false;\n resetSort: boolean = false;\n public appliedFilters: any = {};\n @Input() placeholder: string = '';\n\n @ViewChild('filterDropdown') filterDropdown!: QueueFilterDropdownComponent;\n\n // Input properties for content projection\n @Input() set selectedRowsInput(rows: any[]) {\n this.selectedRows = rows || [];\n }\n get selectedRowsInput(): any[] {\n return this.selectedRows;\n }\n\n // Output events for content projection\n @Output() assignmentComplete = new EventEmitter<{ success: boolean, message: string }>();\n @Output() userAssigned = new EventEmitter<{ user: any, selectedRows: any[] }>();\n @Output() selectedRowsData = new EventEmitter<any[]>();\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\n @Output() rowClick = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() isAllRowSelected = new EventEmitter<boolean>(false);\n @Output() excludedApplicationIds = new EventEmitter<any[]>();\n\n\n constructor(\n public queueStore: QueueStore,\n private queueService: QueueService,\n private baseStore: BaseStore<QueueModel>,\n private queueBusinessService: QueueBusinessService,\n private tableBuilder: QueueRecordTableBuilderService,\n private queueFilterDropdownService: QueueFilterDropdownService,\n private baseQuery: BaseQuery<any>\n ) {\n super(queueService);\n }\n\n ngOnInit() {\n this.isShowSkeleton = true;\n const storedQueueId = this.getStoredQueueId();\n this.initializeComponent(storedQueueId ?? undefined);\n this.setupSearchDebounce();\n // Sync filter dropdown after initialization\n setTimeout(() => {\n this.syncFilterDropdown();\n }, 0);\n\n this.baseQuery.getIsAllRowSelected()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if(res) {\n this.isAllRowSelected.emit(res);\n }\n })\n\n this.baseQuery.getExcludedApplicationIds()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if(res) {\n this.excludedApplicationIds.emit(res);\n }\n })\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.queueFilterDropdownService.clearAll();\n }\n\n onQueueSelected(queueId: string): void {\n this.handleQueueData(queueId);\n }\n\n onStatusChanged(status: string): void {\n this.selectedStatus = status;\n this.filterQueues();\n }\n\n onInsertQueueRequested(): void {\n this.queueBusinessService.navigateToInsertQueue();\n }\n\n onSearchInputChanged(searchTerm: string): void {\n this.searchText = searchTerm;\n this.searchSubject.next(searchTerm);\n }\n\n onSearchRequested(searchTerm: string): void {\n this.currentSearchTerm = searchTerm;\n this.resetPage();\n this.getQueueRecordsData();\n }\n\n onSearchCleared(): void {\n this.searchText = SHARED.EMPTY;\n this.currentSearchTerm = SHARED.EMPTY;\n this.resetPage();\n this.clearSelection();\n this.getQueueRecordsData();\n }\n\n onPaginationChanged(event: any): void {\n const { page, limit } = this.queueBusinessService.calculatePagination(event);\n this.getQueueRecordsData(page, limit);\n }\n\n onFilterApplied(record: any): void {\n this.queryString = this.queueBusinessService.buildQueryString(record);\n this.resetPage();\n this.getQueueRecordsData();\n this.clearSelection();\n }\n\n get hasActiveFilters(): boolean {\n return this.appliedFilters && Object.values(this.appliedFilters).some(val => val !== null && val !== '' && val !== undefined);\n }\n\n onTableRowClick(record: any): void {\n this.rowClick.emit(record);\n this.clearFilters();\n this.syncFilterDropdown();\n }\n\n onTableSelectionChange(selection: any[]): void {\n this.selectedRows = selection;\n this.selectionChange.emit(this.selectedRows);\n this.selectedRowsData.emit(this.selectedRows);\n this.assignmentDataReady.emit({\n selectedRows: this.selectedRows,\n queueData: this.selectedQueue\n });\n }\n\n onAssignmentDataReady(event: { selectedRows: any[], queueData: QueueModel }): void {\n this.assignmentDataReady.emit(event);\n }\n\n onSortApplied(event: any): void {\n if (event.field === SHARED.APPLICANTS || event.field === SHARED.SECURITY_ADDRESS) {\n return;\n }\n this.sortBy = event.field;\n this.sortOrder = event.order;\n this.getQueueRecordsData();\n }\n\n onFilterDropdownApplied(filterData: any): void {\n this.appliedFilters = filterData;\n this.resetPage();\n this.getQueueRecordsData();\n this.clearSelection();\n this.syncFilterDropdown();\n }\n\n onFiltersCleared(): void {\n this.clearFilters();\n this.resetPage();\n this.getQueueRecordsData();\n this.clearSelection();\n this.syncFilterDropdown();\n }\n\n onClearAllFilters(): void {\n if (this.filterDropdown) {\n this.filterDropdown.clearAll();\n }\n this.onFiltersCleared();\n }\n\n private syncFilterDropdown(): void {\n if (this.filterDropdown) {\n this.filterDropdown.syncWithAppliedFilters(this.appliedFilters);\n }\n }\n\n private initializeComponent(preferredQueueId?: string): void {\n this.getAllQueueList(preferredQueueId);\n this.userRole = this.queueBusinessService.getUserRole();\n }\n\n private setupSearchDebounce(): void {\n const debouncedSearch = this.queueBusinessService.createDebouncedSearch(300);\n debouncedSearch.pipe(takeUntil(this.destroy$)).subscribe(searchTerm => {\n if (this.selectedQueue) {\n this.currentSearchTerm = searchTerm;\n this.resetPage();\n this.getQueueRecordsData();\n }\n });\n }\n\n private getAllQueueList(preferredQueueId?: string): void {\n this.loading = true;\n this.error = null;\n this.queueService.getAllQueue().subscribe({\n next: (res) => {\n this.queueList = Array.isArray(res) ? res : (res.data || res);\n this.baseStore.setQueueList(this.queueList);\n this.filterQueues(preferredQueueId);\n this.loading = false;\n },\n error: (err) => {\n this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;\n this.loading = false;\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\n }\n });\n }\n\n private handleQueueData(queueId: string): void {\n const newQueue = this.queueList.find((i) => i._id == queueId);\n if (newQueue) {\n this.selectedQueue = Object.assign({}, newQueue);\n this.selectedQueueId = queueId;\n this.queueStore.setSelectedQueueId(queueId);\n this.queueBusinessService.storeSelectedQueue(queueId);\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\n this.clearSelection();\n this.resetPaginationState();\n this.resetSorting();\n this.getQueueRecordsData();\n this.syncFilterDropdown();\n } else {\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\n }\n }\n\n private resetSorting(){\n this.sortBy = SHARED.EMPTY;\n this.sortOrder = this.getDefaultSortOrder(this.selectedQueue);\n this.resetSort = !this.resetSort;\n }\n\n private filterQueues(preferredQueueId?: string): void {\n this.filteredQueueData = this.queueBusinessService.filterQueuesByStatus(this.queueList, this.selectedStatus);\n this.filteredQueueData = this.queueBusinessService.orderQueuesByPriority(this.filteredQueueData);\n let queueIdToSelect = preferredQueueId;\n if (queueIdToSelect && this.filteredQueueData.some(q => q._id == queueIdToSelect)) {\n // keep the same queue if it exists\n this.selectedQueueId = queueIdToSelect;\n this.handleQueueData(this.selectedQueueId);\n } else if (this.filteredQueueData.length > 0) {\n this.selectedQueueId = this.queueBusinessService.getFirstQueueId(this.filteredQueueData);\n if (this.selectedQueueId) {\n this.handleQueueData(this.selectedQueueId);\n }\n }\n }\n\n private getQueueRecordsData(page?: number, limit?: number): void {\n this.isShowSkeleton = true;\n if (!this.selectedQueue?.apiConfig) {\n console.log(\"Queue data or apiConfig not available\");\n return;\n }\n const targetPage = page || this.currentPage;\n const targetLimit = limit || this.currentLimit;\n \n // Build filter query string\n let filterQueryString = this.queryString;\n if (this.appliedFilters && Object.keys(this.appliedFilters).length > 0) {\n const filterQuery = this.queueFilterDropdownService.buildFilterQueryString(this.appliedFilters);\n \n // Combine existing query string with filter parameters\n const existingParams = new URLSearchParams(filterQueryString);\n const filterParams = new URLSearchParams(filterQuery);\n filterParams.forEach((value, key) => {\n existingParams.set(key, value);\n });\n filterQueryString = existingParams.toString();\n }\n \n this.queueService.getPaginatedQueueRecords(\n this.selectedQueue.apiConfig,\n this.currentSearchTerm,\n targetPage,\n targetLimit,\n filterQueryString,\n this.sortBy,\n this.getSortOrderString(this.sortOrder)\n ).subscribe({\n next: (res: any) => {\n const apiData = res?.data || res?.paginatedResults || res || [];\n if (apiData && apiData.length > 0) {\n this.isShowSkeleton = false;\n this.table = this.tableBuilder.buildSecondaryTable(apiData, undefined, undefined, undefined, {\n isReferredQueue: this.isReferredQueue(this.selectedQueue)\n });\n } else if (this.table) {\n this.table = { ...this.table, records: [] };\n this.isShowSkeleton = false;\n } else {\n this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {\n isReferredQueue: this.isReferredQueue(this.selectedQueue)\n });\n this.isShowSkeleton = false;\n }\n this.currentPage = targetPage;\n this.currentLimit = targetLimit;\n this.metaData = this.queueBusinessService.mapApiMetadata(res, targetPage, targetLimit);\n },\n error: (error) => {\n this.loading = false;\n this.isShowSkeleton = false;\n console.error(\"Error fetching data:\", error);\n if (this.table) {\n this.table = { ...this.table, records: [] };\n } else {\n this.table = this.tableBuilder.buildSecondaryTable([], undefined, undefined, undefined, {\n isReferredQueue: this.isReferredQueue(this.selectedQueue)\n });\n }\n this.metaData = {\n totalItems: 0,\n currentPage: targetPage,\n itemsPerPage: targetLimit,\n totalPages: 0\n };\n }\n });\n }\n\n private getSortOrderString(order: number): string {\n if (order === 1) return 'asc';\n if (order === -1) return 'desc';\n return '';\n }\n\n private resetPaginationState(): void {\n this.currentPage = 1;\n this.currentLimit = 10;\n }\n\n private resetPage(): void {\n this.currentPage = 1;\n }\n\n private clearSelection(): void {\n this.selectedRows = [];\n }\n\n private clearFilters(): void {\n this.appliedFilters = {};\n }\n\n private isReferredQueue(queue: QueueModel | null | undefined): boolean {\n const name = queue?.name || SHARED.EMPTY;\n return name.toLowerCase().includes(SHARED.REFERRED);\n }\n\n private getDefaultSortOrder(queue: QueueModel | null | undefined): number {\n return this.isReferredQueue(queue) ? -1 : 1;\n }\n\n onSearchTermChanged(searchTerm: string) {\n this.onSearchRequested(searchTerm);\n }\n\n onSelectionChange(selection: any[]): void {\n this.onTableSelectionChange(selection);\n }\n\n onAssignmentComplete(event: { success: boolean, message: string }): void {\n if (event.success) {\n // Pass the current selectedQueueId to preserve selection after refresh, but ensure it's not null\n this.getAllQueueList(this.selectedQueueId ?? undefined);\n }\n this.assignmentComplete.emit(event);\n }\n\n onUserAssigned(event: { user: any, selectedRows: any[] }): void {\n this.userAssigned.emit(event);\n }\n\n isAssignButtonEnabled(): boolean {\n return this.selectedRows && this.selectedRows.length > 0;\n }\n\n private getStoredQueueId(): string | null {\n try {\n return localStorage.getItem(SHARED.SELECTED_QUEUE_ID);\n } catch (e) {\n return null;\n }\n }\n}","<div class=\"container grid m-0 h-full\">\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\n <lib-skeleton *ngIf=\"loading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\n @if(!loading){\n <div class=\"queue-list-container-wrapper p-0\">\n <app-queue-list\n [queueData]=\"filteredQueueData\"\n [selectedQueueId]=\"selectedQueueId\"\n [selectedStatus]=\"selectedStatus\"\n [userRole]=\"userRole\"\n [showQueueDataForm]=\"true\"\n (queueSelected)=\"onQueueSelected($event)\"\n (statusChanged)=\"onStatusChanged($event)\"\n (insertQueueRequested)=\"onInsertQueueRequested()\"\n ></app-queue-list>\n </div>\n }\n </div>\n <div class=\"col-12 xl:col-10 md:col-12 py-0 h-full\">\n @if(selectedQueue){\n <div class=\"queue-application-container-wrapper h-full\">\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\n <div class=\"col-8 p-0 flex align-items-center\">\n <div class=\"col-7 p-0 mr-3\">\n <queue-search \n [placeholder]=\"placeholder\"\n [searchText]=\"searchText\"\n (searchInputChanged)=\"onSearchInputChanged($event)\"\n (searchRequested)=\"onSearchRequested($event)\"\n (searchCleared)=\"onSearchCleared()\">\n </queue-search>\n </div>\n <div>\n <lib-queue-filter-dropdown \n #filterDropdown\n [appliedFilters]=\"appliedFilters\"\n (filterApplied)=\"onFilterDropdownApplied($event)\"\n (filtersCleared)=\"onFiltersCleared()\">\n </lib-queue-filter-dropdown>\n </div>\n <div *ngIf=\"hasActiveFilters\">\n <button \n class=\"clear-filters-btn\"\n type=\"button\"\n (click)=\"onClearAllFilters()\">\n Clear <i class=\"pi pi-times ml-2\"></i>\n </button>\n </div>\n </div>\n \n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\n <ng-content select=\"[user-dropdown]\"></ng-content>\n </div>\n </div>\n\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\n \n <app-queue-record-table\n [table]=\"table\"\n [metaData]=\"metaData\"\n [loading]=\"loading\"\n [selectedRows]=\"selectedRows\"\n [resetSort]=\"resetSort\"\n [isShowSkeleton]=\"isShowSkeleton\"\n [selectedQueue]=\"selectedQueue\"\n (selectionChange)=\"onTableSelectionChange($event)\"\n (selectedRowsData)=\"onTableSelectionChange($event)\"\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\n (rowClick)=\"onTableRowClick($event)\"\n (paginationChanged)=\"onPaginationChanged($event)\"\n (filterApplied)=\"onFilterApplied($event)\"\n (sortApplied)=\"onSortApplied($event)\">\n </app-queue-record-table>\n </div>\n </div>\n }\n </div>\n\n </div>","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\nimport { AuthGuard } from '../shared/services/auth/auth.guard';\nimport { PERMISSION } from '../shared/constant/PERMISSION';\n\nconst routes: Routes = [\n {\n path: '',\n component: QueueContainerComponent,\n canActivate : [AuthGuard],\n data : {accessPermission : PERMISSION.QUEUES_GET}\n\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class QueueRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { QueueRoutingModule } from './queue-routing.module';\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\nimport { QueueSearchComponent } from './components/queue-search/queue-search.component';\nimport { FormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { RippleModule } from 'primeng/ripple';\nimport { ButtonModule } from 'primeng/button';\nimport { RouterModule } from '@angular/router';\nimport { BadgeModule } from 'primeng/badge';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { QueueItemComponent } from './components/queue-item/queue-item.component';\nimport { QueueListComponent } from './components/queue-list/queue-list.component';\nimport { QueueRecordTableComponent } from './components/queue-record-table/queue-record-table.component';\nimport { TagModule } from 'primeng/tag';\nimport { SharedModule } from '../shared/shared.module';\nimport { TableSecondaryComponent } from '../shared/table-secondary/components/table-secondary.component';\nimport { QueueFilterDropdownComponent } from './components/queue-filter-dropdown/queue-filter-dropdown.component';\nimport { SkeletonComponent } from '../shared/components/skeleton/skeleton.component';\n\n@NgModule({\n declarations: [\n QueueContainerComponent,\n QueueSearchComponent,\n QueueItemComponent,\n QueueListComponent,\n QueueRecordTableComponent,\n QueueFilterDropdownComponent\n ],\n imports: [\n CommonModule,\n QueueRoutingModule,\n FormsModule,\n DropdownModule,\n MultiSelectModule,\n RippleModule, ButtonModule, RouterModule, BadgeModule,\n PaginatorModule,\n SharedModule,\n TagModule,\n TableSecondaryComponent,\n SkeletonComponent\n ],\n exports: [\n QueueContainerComponent\n ]\n})\nexport class QueueModule { }\n","/*\n * Public API Surface of cat-qw-lib\n */\n\nexport * from './lib/admin/api-admin/api-admin.module';\nexport * from './lib/admin/widget-admin/widget-admin.module';\nexport * from './lib/admin/queue-admin/queue-admin.module';\n\nexport * from './lib/admin/api-admin/components/api-admin-form/api-admin-form.component';\nexport * from './lib/admin/api-admin/components/api-admin-list/api-admin-list.component';\nexport * from './lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component';\nexport * from './lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component';\nexport * from './lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component';\nexport * from './lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component';\nexport * from './lib/admin/queue-admin/components/queue-application-list/queue-application-list.component';\n\nexport * from './lib/admin/action-admin/action-admin.module';\nexport * from './lib/admin/action-admin/components/admin-action-list/admin-action-list.component';\nexport * from './lib/admin/action-admin/components/admin-action-form/admin-action-form.component';\nexport * from './lib/admin/dd-admin/dd-admin.module'\nexport * from './lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component'\nexport * from './lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component'\n\nexport * from './lib/admin/template-admin/template-admin.module'\nexport * from './lib/admin/template-admin/components/template-admin-form/template-admin-form.component'\nexport * from './lib/admin/template-admin/components/template-admin-list/template-admin-list.component'\n\nexport * from './lib/widget/widget.module';\nexport * from './lib/widget/components/widget-container/widget-container.component';\nexport * from './lib/widget/components/widget-menu-container/widget-menu-container.component';\nexport * from './lib/widget/components/custom-widget/custom-widget.component';\n\nexport * from './lib/queue/queue.module';\nexport * from './lib/queue/components/queue-container/queue-container.component';\n\nexport * from './lib/shared/services/form-state.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i1.BaseStore","i2.BaseQuery","i3","i1.BaseQuery","i2.BaseStore","i1","i2.AppConfigService","i3.AppConfigService","i4.ListService","i1.BaseService","i2.TableBuilder","i2.ListService","i3.BaseQuery","i6","i2.ValidatorService","i4.BaseStore","i5.BaseQuery","i2.DateParserService","i1.SessionService","tap","i2.BaseService","i3.TableBuilder","i4.BaseQuery","i5","i6.HasPermissionDirective","i7","i8","i10","i11","i13","map","debounceTime","distinctUntilChanged","i3.ListService","i2.SessionService","i3.QueueFilterDropdownService","QueueStore","i1.QueueStore","QueueQuery","columnStylesJson.columnStyles","tableStyles","columnStylesJson.tableStyles","i3.SessionService","i5.BaseStore","i6.QueueBusinessService","i7.QueueQuery","i12","i15","i2.ApiAdminStore","i1.ApiAdminService","i4.ApiAdminStore","i6.TextBoxComponent","i7.DropdownComponent","i8.FormContainerComponent","i9","i10.TextAreaComponent","i11.CheckBoxComponent","i3.TablePrimaryComponent","i2.WidgetAdminStore","i1.WidgetAdminService","i1.WidgetAdminStore","i3.WidgetAdminStore","i4.WidgetAdminQuery","i6.BaseStore","i6.BaseQuery","i8.TextBoxComponent","i9.DropdownComponent","i10.FormContainerComponent","QueueService","i1.QueueQuery","i2.QueueService","i4.QueueStore","i5.ValidatorService","i7.TextBoxComponent","i13.CheckBoxComponent","routes","QueueRoutingModule","i1.QueueService","i2.DataTransformerService","i6.CapitalizeWordsPipe","i3.QueueSearchCustomerComponent","i4.BlockListComponent","i5.QueueApplicationListComponent","i1.AdminActionStore","i1.AdminActionService","i4.AdminActionStore","i5.AppConfigService","i9.TextAreaComponent","catchError","i1.DictionaryStore","i2.DictionaryQuery","i3.BaseStore","i5.DropdownComponent","i6.ButtonComponent","i7.TextAreaComponent","i1.DictionaryService","i3.ValidatorService","i5.DictionaryStore","i11.SidebarComponent","i12.CheckBoxComponent","i14.DdAdminItemFormComponent","i2.TemplateAdminStore","i1.TemplateAdminStore","i1.TemplateAdminService","i4.TemplateAdminQuery","i5.TemplateAdminStore","i11.FormContainerComponent","i1.WidgetStore","i2.WidgetStore","i1.StyleBuilderService","i3.HasPermissionDirective","i3.WidgetQuery","i3.WidgetItemComponent","i3.WidgetHeaderComponent","i4.WidgetFooterComponent","i5.WidgetBodyComponent","i1.CustomWidgetService","i1.WidgetService","i4.WidgetStore","i7.WidgetMainComponent","i8.CustomWidgetComponent","i3.StyleBuilderService","i4.WidgetQuery","i8.WidgetMainComponent","i2.WidgetQuery","i4.WidgetMenuComponent","i5.WidgetRowTileComponent","i2.WidgetMenuItemComponent","i7.WidgetFooterComponent","i8.WidgetMenuHeaderComponent","i9.WidgetMenuBodyComponent","rowStyles","columnStylesJson.rowStyles","i1.QueueItemComponent","i1.TableSecondaryComponent","i1.QueueFilterDropdownService","i4.QueueBusinessService","i5.QueueRecordTableBuilderService","i6.QueueFilterDropdownService","i7.BaseQuery","i9.SkeletonComponent","i10.QueueSearchComponent","i11.QueueListComponent","i12.QueueRecordTableComponent","i13.QueueFilterDropdownComponent"],"mappings":"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"}