cat-qw-lib 2.3.21 → 2.3.28

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 {\r\n static EMPTY = \"\";\r\n static REQUIRED_ERROR = \"Field Required\";\r\n static EMPTYARRAY = [];\r\n static NULL = \"NULL\";\r\n static SOLICITORID = \"Solicitor Id\";\r\n static HIPHEN = \"-\";\r\n static SLASH = \"/\";\r\n static USERROLE = \"role\"\r\n static SESSIONKEY = \"userData\";\r\n static SUCCESS = \"success\";\r\n static WARNING = \"warning\";\r\n static ERROR = \"error\";\r\n static ERROR_MESSAGE = \"Success Message\";\r\n static SUCCESS_MESSAGE = \"Success Message\";\r\n static DICTIONARY = \"Dictionary\";\r\n static TITLE = 'title';\r\n static DICTIONARY_ITEM = 'dictionaryItem';\r\n static DICTIONARY_ITEM_MAPPER = 'dictionaryItemMapper';\r\n static SIDEBAR_MASK = '.p-sidebar-mask';\r\n static CUSTOMSIDEBAROVERLAY = 'custom-sidebar-overlay';\r\n static ID = 'id';\r\n static _ID = '_id';\r\n static DATE_FORMAT = \"DD/MM/YYYY\";\r\n static DATE_FORMAT_TYPE2 = \"DD-MM-YYYY\";\r\n static DATE_FORMAT_TYPE3 = \"YY-MM-DD\";\r\n static DATE_FORMAT_TYPE4 = \"YYYY-MM-DD\";\r\n static INVALIDDATE = \"Invalid Date\";\r\n static __V = '__v';\r\n static CREATEDAT = 'createdAt';\r\n static UPDATEDAT = 'updatedAt';\r\n static ZERO = 0\r\n static TYPE_OBJECT = 'object'\r\n static DICTIONARYITEMS = 'dictionaryItems';\r\n static GET_DATA_MESSAGE = [{ severity: 'success', detail: 'Data has been fetched successfully.', life:3000 }]\r\n static PRIMARY = 'primary';\r\n static mappingInfo = 'mappingInfo';\r\n static YES = 'Yes';\r\n static NO = 'No';\r\n static selectedQueue = 'selectedQueue';\r\n static DASH = \"-\"\r\n static selectedApplication = 'selectedApplication';\r\n static selectedApplicationNumber = 'selectedApplicationNumber';\r\n static GREEN = \"green\"\r\n static RED = \"red\"\r\n static FROM_EMAIL = \"neeraj.kumar@catura.co.uk\";\r\n static to_EMAIL = \"shubham.prajapati@dynamatix.com\";\r\n static EMAIL = 'email';\r\n static token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxOTI2ZjcyN2RkZWI0MDAxMWE2ZDZmNyIsIm5hbWUiOiJKb2huIERvZSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNjQyNzQ5MzYyLCJleHAiOjE2NDI4MzU3NjJ9.4fBQqP2_6z0H4Ow7J-R27XEdIgl2MrMoIXCgD_qZFlA';\r\n static null = 'null';\r\n static undefined = 'undefined';\r\n static rationale = 'rationale';\r\n static accepted = 'Accepted';\r\n static application = 'Application';\r\n static INVALID_API_PATH = 'Please enter the API path.';\r\n static WIDTH_AUTO = 'w-auto';\r\n static TRUE = true;\r\n static FALSE = false;\r\n static STRING_TRUE = \"true\";\r\n static STRING_FALSE = \"false\";\r\n static AND = 'AND';\r\n static STRING = 'string';\r\n static OPERATORS = [\"=\", \"<>\", \">\", \"<\", \">=\", \"<=\"];\r\n static STATUS_ACTIVE = 'active';\r\n static TODAY = 'Today';\r\n static YESTERDAY = 'Yesterday';\r\n static ALL = 'All';\r\n static UK = 'UK';\r\n static INTERNATIONAL = 'International';\r\n static QUEUE1 = 'Q1';\r\n static QUEUE2 = 'Q2';\r\n static QUEUE3 = 'Q3';\r\n static SELECTED_QUEUE = 'Selected Queue:';\r\n static QUEUEID = \"queueId\";\r\n static QUESTION_MARK = \"?\";\r\n static EQUALS = \"=\";\r\n static AMPERSAND = \"&\";\r\n static RECORDID = \"recordId\";\r\n static MISSING_WIDGETNAME = \"Missing widgetName\";\r\n static MISSING_QUEUE_ID = \"Missing queueId\";\r\n static MISSING_RECORD_ID = \"Missing recordId\";\r\n static EMPTY_STRING = \" \";\r\n static SELECTED_QUEUE_ID = \"selectedQueueId\";\r\n static ISITEMEXPRESSION = \"isItemExpression\";\r\n static DT2 = \"dt2\";\r\n static TEXTBOXFIELD = \"textboxField\";\r\n static DROPDOWN = \"dropdown\";\r\n static TEXTAREA = \"textArea\";\r\n static DATAITEMS = \"dataItems\";\r\n static ASC = \"asc\";\r\n static DESC = \"desc\";\r\n static ACTIVE = \"Active\";\r\n static IN_ACTIVE = \"InActive\";\r\n static SEMICOLON_STRING = \";\"\r\n static COLON_STRING = \":\";\r\n static PAGINATOR = \"paginator\";\r\n static BROWSER_WARNING = 'You have unsaved changes. Do you really want to leave?'\r\n static DIRECT_DEBITID = 'Direct DebitId'\r\n static DIRECT_DEBIT = 'directdebit'\r\n static SOLICITOR = 'solicitor'\r\n static PRODUCT = 'product'\r\n static COMMITMENTS = 'commitments'\r\n static PRODUCT_ID = 'ProductId'\r\n static EXPENDITURE = 'expenditure'\r\n static INCOME = 'income'\r\n static VALUATION = 'valuation'\r\n static VALUATIONID = 'ValuationId'\r\n static BROKERCOMPANY_NAME='brokerCompanyName'\r\n static WIDGET_NAME = 'widgetName'\r\n static IS_MENU = 'isMenu'\r\n static ON_WIDGET_UPDATE = 'onWidgetUpdate';\r\n static selectedApplicationType = \"applicationType\";\r\n static APPLICANTS = 'applicants';\r\n static BROKER_NAME = 'brokerName';\r\n static SECURITY_ADDRESS = 'securityAddress';\r\n static TASKS = 'tasks';\r\n static TASK_BROKER_LABEL = 'B';\r\n static TASK_UNDERWRITER_LABEL = 'UW';\r\n static APP_ID = 'appId';\r\n static COMPANY_NAME = 'companyName';\r\n static APPLICATION_TYPE = 'applicationType';\r\n static ASSIGNED_TO = 'assignedTo';\r\n static TASK_COMPLETION_PERCENT = 'taskCompletionPercent';\r\n static RISK_RATING = 'riskRating';\r\n static LENDING = 'lending';\r\n}\r\n\r\nexport const widgetLayoutTypeList = [\r\n { name: 'Row', value: 'row' },\r\n {name: 'Tile', value: 'tile' } \r\n];\r\n\r\nexport const statusList = [\r\n {name: 'All'},\r\n {name: 'Active'},\r\n {name: 'InActive'}\r\n]\r\n\r\nexport const msgTemplateTypeList = [\r\n { id: 1, value: 'email' },\r\n { id: 2, value: 'whatsapp' },\r\n { id: 3, value: 'sms' }\r\n]\r\n\r\nexport const textEditorToolbar = [\r\n ['bold', 'italic', 'underline', 'strike'], \r\n [{ list: 'ordered' }, { list: 'bullet' }],\r\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n ['link']\r\n]\r\n\r\nexport const TemplateTabType = ['all-template', 'email','sms', 'whatsapp'];\r\n\r\nexport const MESSAGE_TYPES = ['SMS', 'WhatsApp', 'Email'];\r\n\r\nexport const delimiters = ['|', '/', '-'];\r\n\r\nexport const dictionaryItemList = [];\r\n\r\nexport const dictionaryItemMapperList = [];\r\n\r\nexport const dictionaryApiFieldList = {\r\n title: 'Property data',\r\n data: [ { name: 'First name' },\r\n { name: 'Last name' },\r\n { name: 'Email' },\r\n { name: 'Address' },\r\n { name: 'Gender' },\r\n { name: 'Dob' }\r\n ]\r\n}\r\n\r\nexport const FolderPanel = [\r\n {\r\n _id: 'folder1',\r\n fileCount: 10,\r\n text: 'Documents',\r\n missingFiles: 3,\r\n pendingFiles: 2\r\n },\r\n {\r\n _id: 'folder2',\r\n fileCount: 5,\r\n text: 'Images',\r\n missingFiles: 0,\r\n pendingFiles: 1\r\n },\r\n {\r\n _id: 'folder3',\r\n fileCount: 20,\r\n text: 'Reports',\r\n missingFiles: 5,\r\n pendingFiles: 0\r\n },\r\n {\r\n _id: 'folder4',\r\n fileCount: 8,\r\n text: 'Videos',\r\n missingFiles: 0,\r\n pendingFiles: 0\r\n },\r\n {\r\n _id: 'folder5',\r\n fileCount: 15,\r\n text: 'Archives',\r\n missingFiles: 1,\r\n pendingFiles: 3\r\n }\r\n];\r\n\r\nexport const DocumentList = [\r\n {\r\n id: 1,\r\n fileName: 'Document 1',\r\n status: 'pending',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n {\r\n id: 2,\r\n fileName: 'Document 2',\r\n status: 'verified',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n {\r\n id: 3,\r\n fileName: 'Document 3',\r\n status: 'sentReminder',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n {\r\n id: 4,\r\n fileName: 'Document 4',\r\n status: 'pending',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n];\r\n\r\n\r\nexport const widgetLinkList = [\r\n { name: 'https://dummy-url.com/NY', code: 'NY' },\r\n { name: 'https://dummy-url.com/RM', code: 'RM' },\r\n { name: 'https://dummy-url.com/LDN', code: 'LDN' },\r\n { name: 'https://dummy-url.com/IST', code: 'IST' },\r\n { name: 'https://dummy-url.com/PRS', code: 'PRS' }\r\n];\r\n\r\nexport const dictionaryList = [\r\n {\"id\": 1 ,\"Name\": \"John Doe\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 2 ,\"Name\": \"Jane Smith\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 3 ,\"Name\": \"David Lee\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 4 ,\"Name\": \"Emma Wilson\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 5 ,\"Name\": \"Michael Brown\", \"API\": \"Dynamatix.com/getfinance\" }\r\n]\r\n\r\nexport const SEQUENTIAL_MESSAGE = [\r\n \"Your case is under review.\",\r\n \"We have received your application.\",\r\n \"A new update is available for your case.\",\r\n \"Please verify your contact details.\",\r\n \"Your case is pending further action.\",\r\n \"We are processing your request.\",\r\n \"Your case has been escalated.\",\r\n \"Thank you for reaching out.\",\r\n \"Your documents have been received.\",\r\n \"Our team will contact you shortly.\"\r\n];\r\n\r\nexport const apiHiddenHeaderList = ['credentials','createdAt','updatedAt','__v','properties', '_id', 'authHeaderName', 'authToken']\r\n\r\nexport const dictionaryHiddenHeaderList = ['dictionaryItems', '_id', '__v', 'updatedAt', 'createdAt']\r\n\r\nexport const widgetHiddenHeaderList = ['_id','dataItems','__v','createdAt','updatedAt','headerDictionaryID', 'headerDictionaryItemID', 'order', 'subHeaderDictionaryID', 'subHeaderDictionaryItemID']\r\n\r\nexport const templateHiddenHeaderList = ['_id','__v','updatedAt','description'];\r\n\r\nexport const hiddenHeaderList = ['status','actions']\r\n\r\nexport const expectedRoutes = ['apiManagement','queue', 'dictionary', 'widget']\r\n\r\nexport const mileList = [\r\n { name: '0.5 Mile', value: 0.5 },\r\n { name: '1 Mile', value: 1 }\r\n];\r\n\r\nexport const messageType = [\r\n { name: 'Email', icon: 'pi pi-envelope' },\r\n { name: 'WhatsApp', icon: 'pi pi-whatsapp' },\r\n { name: 'SMS', icon: 'pi pi-comment' },\r\n]\r\n\r\nexport const propertyDataList = [\r\n {\r\n key: '0',\r\n label: 'Documents',\r\n data: 'Documents Folder',\r\n icon: 'pi pi-fw pi-inbox',\r\n children: [\r\n {\r\n key: '0-0',\r\n label: 'Work',\r\n data: 'Work Folder',\r\n icon: 'pi pi-fw pi-cog',\r\n children: [\r\n { key: '0-0-0', label: 'Expenses.doc', icon: 'pi pi-fw pi-file', data: 'Expenses Document' },\r\n { key: '0-0-1', label: 'Resume.doc', icon: 'pi pi-fw pi-file', data: 'Resume Document' }\r\n ]\r\n },\r\n {\r\n key: '0-1',\r\n label: 'Home',\r\n data: 'Home Folder',\r\n icon: 'pi pi-fw pi-home',\r\n children: [{ key: '0-1-0', label: 'Invoices.txt', icon: 'pi pi-fw pi-file', data: 'Invoices for this month' }]\r\n }\r\n ]\r\n },\r\n{\r\n key: '1',\r\n label: 'Events',\r\n data: 'Events Folder',\r\n icon: 'pi pi-fw pi-calendar',\r\n children: [\r\n { key: '1-0', label: 'Meeting', icon: 'pi pi-fw pi-calendar-plus', data: 'Meeting' },\r\n { key: '1-1', label: 'Product Launch', icon: 'pi pi-fw pi-calendar-plus', data: 'Product Launch' },\r\n { key: '1-2', label: 'Report Review', icon: 'pi pi-fw pi-calendar-plus', data: 'Report Review' }\r\n ]\r\n},\r\n{\r\n key: '2',\r\n label: 'Movies',\r\n data: 'Movies Folder',\r\n icon: 'pi pi-fw pi-star-fill',\r\n children: [\r\n {\r\n key: '2-0',\r\n icon: 'pi pi-fw pi-star-fill',\r\n label: 'Al Pacino',\r\n data: 'Pacino Movies',\r\n children: [\r\n { key: '2-0-0', label: 'Scarface', icon: 'pi pi-fw pi-video', data: 'Scarface Movie' },\r\n { key: '2-0-1', label: 'Serpico', icon: 'pi pi-fw pi-video', data: 'Serpico Movie' }\r\n ]\r\n },\r\n {\r\n key: '2-1',\r\n label: 'Robert De Niro',\r\n icon: 'pi pi-fw pi-star-fill',\r\n data: 'De Niro Movies',\r\n children: [\r\n { key: '2-1-0', label: 'Goodfellas', icon: 'pi pi-fw pi-video', data: 'Goodfellas Movie' },\r\n { key: '2-1-1', label: 'Untouchables', icon: 'pi pi-fw pi-video', data: 'Untouchables Movie', selectable: false }\r\n ]\r\n }\r\n ]\r\n}\r\n];\r\n\r\nexport const actionHiddenHeaderList = ['_id', 'createdAt','updatedAt', '__v', 'formFields'];\r\n\r\nexport const actionList = [\r\n { action: 'Valuation Fee', \r\n prompt: `The following conversation includes references to various addresses. Based on the selected form \"Valuation Fee\",\r\n identify and extract the most recent address provided (in descending order of appearance in the text) and map it to the following schema::\r\n {\r\n \"Line1\": string,\r\n \"Line2\": string,\r\n \"town\": string,\r\n \"postcode\": string\r\n }.\r\n \r\n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\r\n \r\n Data:`, queueId: '674f1c645dafa6a66511c8fb', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\r\n },\r\n { action: 'UK Resident', \r\n prompt: `\r\n The following conversation involves information related to UK residency. Based on the selected form \"UK Resident\",\r\n extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\r\n {\r\n \"Line1\": string,\r\n \"Line2\": string,\r\n \"town\": string,\r\n \"postcode\": string\r\n }.\r\n \r\n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\r\n \r\n Data:`, queueId: '676e4b27ee779eafc72b11b9', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Disable'\r\n },\r\n { action: 'Address Update', \r\n prompt: `\r\n The following conversation contains updates related to address changes. Based on the selected form \"Address Update\",\r\n identify and extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\r\n {\r\n \"Line1\": string,\r\n \"Line2\": string,\r\n \"town\": string,\r\n \"postcode\": string\r\n }.\r\n \r\n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\r\n \r\n Data:`, queueId: '67332cf2f9439e97c47a3c43', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\r\n }\r\n]\r\n\r\nexport const offerWidgetList = [\r\n {\r\n title: 'Offer',\r\n badge: 'Pending',\r\n badgeIcon: 'pi pi-clock',\r\n statusList: [\r\n { description: 'Application(HS) Condition was added on 10th Sep 2023', status: 'active' },\r\n { description: 'Property Condition was added on 10th Sep 2023', status: 'active' },\r\n { description: 'Mandate Approval Requested on 14th Sep 2024', status: 'pending' },\r\n { title: 'Waiting for Mandate Approval', description: 'Existing Mandate: 100,000', status: 'pending', textColor: '#FB392D' },\r\n { description: 'Generate Offer', status: 'pending' }\r\n ],\r\n viewAll: 'View All Details'\r\n },\r\n {\r\n title: 'Valuation',\r\n badge: 'Pending',\r\n badgeIcon: 'pi pi-clock',\r\n statusList: [\r\n { description: 'Valuation Requested on 10th October 2024', status: 'active' },\r\n { description: 'Fees Paid £400 on 10th October 2024', status: 'active' },\r\n { description: 'Valuation Scheduled on 10th October 2024', status: 'active' },\r\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' },\r\n { description: 'PVQ Raised on 14th October 2024', status: 'active' },\r\n { description: 'PVQ Response received on 14th October 2024', status: 'active' },\r\n { description: 'Waiting for Valuation Report to be accepted', status: 'pending' }\r\n ]\r\n }\r\n ]\r\n\r\nexport const actionTableColumnWidthList = {name: 'w-3', apiConfigId: 'w-3', queueId: 'w-3', prompt: 'w-4', isActive: 'w-2'}\r\n\r\nexport const queuePriorityOrder = [\"All Applications\", \"Assigned To Me\", \"Unassigned\"];\r\n\r\nexport const QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST = {\r\n brokerName: 'w-3', \r\n securityAddress: 'w-3', \r\n applicants: 'w-3',\r\n finance: 'w-3',\r\n appId: 'w-3',\r\n tasks: 'w-2'\r\n}\r\n\r\nexport const FIELD_DISPLAY_NAMES: { [key: string]: string } = {\r\n riskRating: 'Risk Rating',\r\n appId: 'App. ID',\r\n applicants: 'Company & Applicant(s)',\r\n brokerName: 'Broker',\r\n finance: 'Finance Amount',\r\n securityAddress: 'Security',\r\n pending: 'Pending',\r\n lending: 'Type',\r\n tasks: 'Tasks'\r\n};\r\n\r\n// ...existing code...\r\n\r\nexport const QUEUE_RECORD_TABLE_COLUMN_ORDER = [\r\n 'riskRating',\r\n 'appId', // App. ID\r\n 'applicants', // Company & Applicant(s)\r\n 'brokerName',\r\n 'finance',\r\n 'securityAddress',\r\n 'pending',\r\n 'lending',\r\n 'tasks'\r\n];\r\n\r\n// ...existing code...","import { Component, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\r\nimport { SHARED } from '../../constant/SHARED';\r\n@Component({\r\n selector: 'sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrl: './sidebar.component.scss',\r\n standalone : false\r\n})\r\nexport class SidebarComponent {\r\n @Input() isSidebarVisible!: boolean;\r\n @Input() title!: string;\r\n @Output() onClose = new EventEmitter<any>();\r\n\r\n constructor(private renderer: Renderer2) {}\r\n\r\n onSidebarShow() {\r\n const overlay = document.querySelector(SHARED.SIDEBAR_MASK);\r\n if (overlay) {\r\n this.renderer.addClass(overlay, SHARED.CUSTOMSIDEBAROVERLAY);\r\n }\r\n }\r\n\r\n handleSidebarClose() {\r\n this.onClose.emit(false);\r\n }\r\n}\r\n","<div *ngIf=\"isSidebarVisible\" class=\"backdrop-shadow\" (click)=\"handleSidebarClose()\"></div>\r\n<div>\r\n<p-sidebar class=\"sidebar-panel-wrapper\" [(visible)]=\"isSidebarVisible\" (onShow)=\"onSidebarShow()\" (onHide)=\"handleSidebarClose()\" [position]=\"'right'\">\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center\">\r\n <h2 class=\"sidebar-title-wrapper text-color mb-0\">\r\n {{title}}\r\n </h2>\r\n </div>\r\n </ng-template>\r\n <p-divider class=\"sidebar-devider\"></p-divider>\r\n <ng-content></ng-content>\r\n</p-sidebar>","import { Injectable } from '@angular/core';\r\nimport { EntityState, EntityStore, StoreConfig } from '@datorama/akita';\r\nimport { BaseState } from './base.state';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { SHARED } from '../constant/SHARED';\r\nexport interface BaseEntityState<T> extends BaseState, EntityState<T> {\r\n \r\n}\r\n\r\n\r\n/**\r\n * BaseStore is a generic class that extends EntityStore from Akita.\r\n */\r\n@StoreConfig({ name: 'base' })\r\n@Injectable({ providedIn: 'root' })\r\nexport class BaseStore<T extends BaseModel> extends EntityStore<BaseEntityState<T>, T> {\r\n static storeName = 'base';\r\n missingFields: string[] = [];\r\n public recordChange$: BehaviorSubject<any>;\r\n public onDocumentAccept$: BehaviorSubject<any>;\r\n public onDailogClose$: BehaviorSubject<any>;\r\n public openDocument$: BehaviorSubject<any>;\r\n public alertMessage$: BehaviorSubject<any>;\r\n public queueList$: BehaviorSubject<any>;\r\n\r\n constructor() {\r\n super({ records: [], lists: [], attributeModelList: [], isFormSubmitted: SHARED.EMPTY, isApiValidated: null, selectedTemplate: SHARED.EMPTY, updatedData: null, isAllRowSelected: false, isExcludedApplicationIds: [], selectedQueueId: SHARED.EMPTY }, { name: BaseStore.storeName }); \r\n this.recordChange$ = new BehaviorSubject<any>([]);\r\n this.onDocumentAccept$ = new BehaviorSubject<any>({});\r\n this.onDailogClose$ = new BehaviorSubject<boolean>(false);\r\n this.openDocument$ = new BehaviorSubject<any>({});\r\n this.alertMessage$ = new BehaviorSubject<string>('');\r\n this.queueList$ = new BehaviorSubject<any>([]);\r\n }\r\n\r\n setList(data: T[]) {\r\n this.update({ lists: data });\r\n }\r\n\r\n setAttributeModelList(data: T[]) {\r\n this.update({ attributeModelList: data });\r\n }\r\n\r\n setIsFormSubmitted(data: any) {\r\n this.update({ isFormSubmitted: data });\r\n }\r\n\r\n setIsApiValidated(data: any) {\r\n this.update({ isApiValidated: data });\r\n }\r\n\r\n setIsShowMessage(data: any) {\r\n this.update({ isShowMessage: data });\r\n }\r\n\r\n setSelectedTemplate(data: any) {\r\n this.update({ selectedTemplate: data });\r\n }\r\n\r\n setRecordChange(value: any) {\r\n this.recordChange$.next(value);\r\n }\r\n\r\n setOnDocumentAccept(value: any) {\r\n this.onDocumentAccept$.next(value);\r\n }\r\n\r\n setOnDailogClose(value: any) {\r\n this.onDailogClose$.next(value);\r\n }\r\n\r\n setOpenDocument(value: any) {\r\n this.openDocument$.next(value);\r\n }\r\n\r\n setAlertMessage(value: any) {\r\n this.alertMessage$.next(value);\r\n }\r\n\r\n setQueueList(value: any) {\r\n this.queueList$.next(value);\r\n }\r\n\r\n setUpdatedData(value: any) {\r\n this.update({ updatedData: value });\r\n }\r\n\r\n setIsAllRowSelected(data: any) {\r\n this.update({ isAllRowSelected: data });\r\n }\r\n\r\n setIsExcludedApplicationIds(data: any) {\r\n this.update({ isExcludedApplicationIds: data });\r\n }\r\n\r\n}\r\n","import { QueryEntity } from '@datorama/akita';\r\nimport { BaseEntityState, BaseStore } from './base.store';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\n\r\n/**\r\n * BaseQuery is a generic class that extends QueryEntity from Akita.\r\n * It provides methods to interact with the state of entities managed by the BaseStore.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class BaseQuery<T extends BaseModel> extends QueryEntity<BaseEntityState<T>, T> {\r\n constructor(protected override store: BaseStore<T>) {\r\n super(store);\r\n }\r\n\r\n selectAllEntities() {\r\n return this.selectAll();\r\n }\r\n\r\n selectEntityById(id: string) {\r\n return this.selectEntity(id);\r\n }\r\n\r\n getLists(): Observable<any> {\r\n return this.select(state => state.lists);\r\n }\r\n\r\n getAttributeModelList(): Observable<any> {\r\n return this.select(state => state.attributeModelList);\r\n }\r\n\r\n getIsFormSubmitted(): Observable<any> {\r\n return this.select(state => state.isFormSubmitted);\r\n }\r\n\r\n getIsApiValidated(): Observable<any> {\r\n return this.select(state => state.isApiValidated);\r\n }\r\n\r\n getIsShowMessage(): Observable<any> {\r\n return this.select(state => state.isShowMessage);\r\n }\r\n\r\n getSelectedTemplate(): Observable<any> {\r\n return this.select(state => state.selectedTemplate);\r\n }\r\n\r\n getIsAllRowSelected(): Observable<any> {\r\n return this.select(state => state.isAllRowSelected);\r\n }\r\n\r\n getExcludedApplicationIds() : Observable<any> {\r\n return this.select(state => state.isExcludedApplicationIds);\r\n }\r\n\r\n\r\n getRecordChange() {\r\n return this.store.recordChange$.asObservable();\r\n }\r\n\r\n getOnDocumentAccept() {\r\n return this.store.onDocumentAccept$.asObservable();\r\n }\r\n\r\n getonDailogClose() {\r\n return this.store.onDailogClose$.asObservable();\r\n }\r\n\r\n getOpenDocument() {\r\n return this.store.openDocument$.asObservable();\r\n }\r\n\r\n getAlertMessage() {\r\n return this.store.alertMessage$.asObservable();\r\n }\r\n\r\n selectPage(): Observable<any> {\r\n return this.select(state => state['page']);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AttributeModel } from '../../models/attribute.model';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { NgModel } from '@angular/forms';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-base-control',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './base-control.component.html',\r\n styleUrl: './base-control.component.scss',\r\n providers : [BaseStore]\r\n})\r\nexport class BaseControlComponent implements OnInit,OnChanges,OnDestroy {\r\n constructor(public baseStore: BaseStore<any>, public baseQuery: BaseQuery<any>) {}\r\n @Input() store !: BaseStore<any> | null;\r\n @Input() record: any;\r\n @Input() attributeModel! : AttributeModel;\r\n @Input() error : string = SHARED.EMPTY;\r\n @Output() onInput = new EventEmitter();\r\n @Output() onEnterKeydown = new EventEmitter();\r\n @Output() onBtnClick = new EventEmitter();\r\n @ViewChild(SHARED.TEXTBOXFIELD) textboxField!: NgModel;\r\n @ViewChild(SHARED.DROPDOWN) dropdown!: NgModel;\r\n @ViewChild(SHARED.TEXTAREA) textArea!: NgModel;\r\n static allAttributes: AttributeModel[] = [];\r\n query !: BaseQuery<any>\r\n private destroy$ = new Subject<void>();\r\n private attributeDestroy$ = new Subject<void>();\r\n\r\n ngOnInit(): void {\r\n this.addToAttributeList();\r\n this.baseQuery.getIsFormSubmitted()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if(res) {\r\n [this.textboxField, this.dropdown, this.textArea]\r\n .filter(control => control && control.control)\r\n .forEach(control => control.control.markAsTouched());\r\n this.baseStore.setIsFormSubmitted(false);\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnChanges(){\r\n if(this.store) {\r\n this.query = new BaseQuery(this.store)\r\n }\r\n }\r\n handleModelChange(event:any, valid: boolean|null, val?:any) { \r\n if (this.attributeModel?.name) {\r\n this.record[this.attributeModel?.name] = event;\r\n this.onInput.emit(event);\r\n }\r\n }\r\n\r\n private addToAttributeList() {\r\n if (this.attributeModel) {\r\n if (!BaseControlComponent.allAttributes.some(attr => (attr.name === this.attributeModel.name && attr.displayText === this.attributeModel.displayText))) {\r\n BaseControlComponent.allAttributes.push(this.attributeModel);\r\n }\r\n this.baseStore.setAttributeModelList(BaseControlComponent.allAttributes);\r\n }\r\n }\r\n\r\n // handleEnterKey(event:any, valid: boolean|null) {\r\n // if (this.attributeModel?.name) {\r\n // this.record[this.attributeModel?.name] = event;\r\n // this.onEnterKeydown.emit(event);\r\n // this.record[this.attributeModel?.name] = SHARED.EMPTY;\r\n // }\r\n // }\r\n\r\n handleButtonClick(event:MouseEvent){\r\n this.onBtnClick.emit(event);\r\n }\r\n\r\n getValue() : string | null | undefined {\r\n return this.record[this.attributeModel.name]\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<p>base-control works!</p>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\n\r\n/**\r\n * CheckBoxComponent\r\n */\r\n@Component({\r\n selector: 'check-box',\r\n templateUrl: './check-box.component.html',\r\n styleUrl: './check-box.component.scss',\r\n standalone : true,\r\n imports : [CommonModule,FormsModule, CheckboxModule]\r\n})\r\nexport class CheckBoxComponent extends BaseControlComponent {\r\n \r\n}\r\n","<div class=\"checkBoxContainer\">\r\n \r\n <div class=\"checkBox\">\r\n <p-checkbox\r\n [disabled]=\"attributeModel.readonly ?? false\"\r\n [binary]=\"true\"\r\n inputId=\"binary\"\r\n [label]=\"attributeModel.displayText ?? ''\"\r\n class=\"dynamic-checkbox\"\r\n #checkBox=\"ngModel\"\r\n [ngModel]=\"this.record[this.attributeModel.name]\"\r\n [style]=\"{\r\n '--checkbox-size': attributeModel.customColumnWidth || '20px',\r\n '--checkbox-height': attributeModel.customHeight || '20px'\r\n }\"\r\n [required]=\"attributeModel.isRequired ?? false\" \r\n (ngModelChange)=\"handleModelChange($event, checkBox.valid)\"\r\n >\r\n </p-checkbox>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n selector: 'lib-button',\r\n standalone: true,\r\n imports : [CommonModule,InputTextModule, FormsModule, ButtonModule],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss',\r\n})\r\nexport class ButtonComponent extends BaseControlComponent{}\r\n","<ng-container>\r\n <div class=\"btn-control\">\r\n <p-button\r\n type=\"button\"\r\n [label]=\"attributeModel.buttonLabel ?? 'Click Me'\"\r\n [disabled]=\"attributeModel.isDisabled ?? false\"\r\n [style]=\"{\r\n width: attributeModel.customButtonWidth\r\n ? attributeModel.customButtonWidth\r\n : 'auto',\r\n padding: attributeModel.customPadding\r\n ? attributeModel.customPadding\r\n : '0.5rem' \r\n }\"\r\n [icon]=\"attributeModel.icon ? attributeModel.icon : ''\"\r\n [iconPos]=\"attributeModel.iconPosition ?? 'left'\" \r\n [ngClass]=\"{\r\n 'p-button-primary': attributeModel.isPrimary ?? true,\r\n 'p-button-secondary': !attributeModel.isPrimary\r\n }\"\r\n (onClick)=\"handleButtonClick($event)\"\r\n></p-button>\r\n\r\n </div>\r\n </ng-container>","\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'text-box',\r\n templateUrl: './text-box.component.html',\r\n styleUrl: './text-box.component.scss',\r\n standalone : true,\r\n imports : [CommonModule,InputTextModule, FormsModule, TooltipModule]\r\n})\r\nexport class TextBoxComponent extends BaseControlComponent {\r\n override getValue() {\r\n if(this.record[this.attributeModel.name] == false){\r\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\r\n }else if( this.record[this.attributeModel.name] == true){\r\n return \"Yes\"\r\n }else{\r\n return this.record[this.attributeModel.name] ?? \"-\"\r\n }\r\n }\r\n}\r\n","<ng-container >\r\n <div class=\"\">\r\n\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"inputTextBox\">\r\n\r\n <input\r\n pInputText\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"attributeModel.placeholder ?? ''\"\r\n class=\"block p-inputtext w-full\"\r\n [pTooltip]=\"attributeModel.tooltip ?? ''\"\r\n [tooltipPosition]=\"attributeModel.toolTipPosition ?? '' \"\r\n [ngModel]=\"record?.[attributeModel.name] ?? ''\"\r\n [disabled]=\"attributeModel.disable ?? false\" \r\n [readonly]=\"attributeModel.readonly ?? false\"\r\n [name]=\"attributeModel.name ?? 'textBox'\"\r\n [id]=\"attributeModel.name ?? 'textBox'\"\r\n [required]=\"attributeModel.isRequired ?? false\" \r\n [ngStyle]=\"{\r\n width: attributeModel.customColumnWidth\r\n ? attributeModel.customColumnWidth\r\n : '',\r\n padding: attributeModel.customPadding ? attributeModel.customPadding : ''\r\n }\"\r\n #textboxField=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, textboxField.valid)\"\r\n [ngClass]=\"{'ng-dirty ng-invalid': (!textboxField.valid && textboxField.dirty)}\"\r\n />\r\n <div *ngIf=\"textboxField.errors?.['required'] && (textboxField.dirty || textboxField.touched)\" class=\"error-message\">\r\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","export class ERROR {\r\n static ERROR = \"Error\";\r\n static VALIDATE_API_FAILED = \"API validation failed. Please review the input and try again.\";\r\n static VALIDATE_ACTION_API_FAILED = \"Validation action failed. Please check the configuration or try again later.\";\r\n static API_CONFIG_FAILED = \"Error loading app config:\";\r\n static API_CONFIG_LOADING_FAILED = \"App configuration not loaded. Ensure loadAppConfig() is called before accessing properties.\";\r\n static API_NAME_NOT_SET = \"API name is not set.\";\r\n static ERROR_FETCHING_DATA = \"Error fetching data:\";\r\n static UNABLE_TO_FETCH_QUEUE_LIST = \"Unable to fetch queue list.\";\r\n static NO_QUEUE_FOUND_WITH_ID = \"No queue found with the provided ID.\";\r\n static ERROR_FETCHING_WIDGET_DATA = \"Error fetching record widget data:\";\r\n static ERROR_MISSING_PARAMETERS = \"Required parameters are missing:\";\r\n static INVALID_INDEX = \"Invalid index:\";\r\n static ERROR_DELETE_DICTIONARY_ITEM = \"Failed to delete dictionary item with ID:\";\r\n static MISSING_REQUIRED_FIELD = \"Missing required fields:\";\r\n static API_VALIDATE_REQURIED = \"Api validation required\";\r\n}","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ConfirmationService, Message, MessageService } from 'primeng/api';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ButtonComponent } from '../../controls/button/button.component';\r\nimport { TextBoxComponent } from '../../controls/text-box/text-box.component';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { ERROR } from '../../constant/ERROR';\r\n\r\n@Component({\r\n selector: \"form-container\",\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n ConfirmDialogModule,\r\n ToastModule,\r\n MessagesModule,\r\n ButtonComponent,\r\n TextBoxComponent,\r\n ],\r\n templateUrl: \"./form-container.component.html\",\r\n styleUrl: \"./form-container.component.scss\",\r\n providers: [MessageService, ConfirmationService],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FormContainerComponent implements OnInit, OnDestroy {\r\n @Input() messages: Message[] = [];\r\n @Input() record: any;\r\n @Input() headerText: string | undefined;\r\n @Input() showSave:boolean = SHARED.FALSE\r\n @Input() disableSaveButton!: {isValid: boolean, data: string}\r\n @Output() onSave = new EventEmitter();\r\n @Output() onCancel = new EventEmitter();\r\n private destroy$ = new Subject<void>();\r\n \r\n constructor(private baseQuery: BaseQuery<any>, private baseStore: BaseStore<any>){}\r\n\r\n ngOnInit(): void {\r\n this.baseQuery.getIsShowMessage()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n console.log(res);\r\n if (res) {\r\n console.log(res);\r\n this.messages = [{ severity: SHARED.ERROR, detail: ERROR.API_VALIDATE_REQURIED }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n this.baseStore.setIsShowMessage(false);\r\n }, 3000);\r\n }\r\n });\r\n }\r\n \r\n handleSaveClick(){\r\n this.onSave.emit()\r\n }\r\n handleCancelClick(){\r\n this.onCancel.emit()\r\n\r\n }\r\n\r\n handleCreateBtnClick() {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<div class=\"form-container\">\r\n <div class=\"text-900 font-bold text-xl form-header m-0 p-0\">\r\n <div class=\"form-header-container w-full mr-0\">\r\n <div class=\"form-header-title\"[innerHTML]=\"this.headerText\">\r\n </div>\r\n <div class=\"form-header-messege w-full\">\r\n <p-messages class=\"message-wrapper\" [(value)]=\"messages\" [enableService]=\"false\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn-wrapper\">\r\n <ng-content select=\"[headerButtons]\"></ng-content>\r\n @if(showSave){\r\n <button\r\n pButton\r\n pRipple\r\n label=\"Cancel\"\r\n (click)=\"handleCancelClick()\"\r\n class=\"p-button-outlined mr-2\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-success\"\r\n label=\"Save\"\r\n type=\"button\"\r\n tooltipPosition=\"bottom\"\r\n (click)=\"handleSaveClick()\"\r\n ></button>\r\n }\r\n <ng-content select=\"[headerButtons]\"></ng-content>\r\n </div>\r\n </div>\r\n \r\n \r\n <p-toast></p-toast>\r\n\r\n <div>\r\n <p-confirmDialog>\r\n <ng-template pTemplate=\"message\" let-message>\r\n <div class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\">\r\n <i class=\"pi pi-exclamation-circle text-6xl text-primary-500\"></i>\r\n <p>{{ message.message }}</p>\r\n </div>\r\n </ng-template>\r\n </p-confirmDialog>\r\n </div> \r\n <div class=\"grid m-0 mt-3\">\r\n <div class=\"col-12 p-0\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n ","\r\n/**\r\n * This class is used to store the API Paths for the application\r\n */\r\nexport class DATASOURCES{\r\n static QUEUES = \"Queues\"\r\n static DICTIONARY = \"DataDictionaries\"\r\n static ACTIONS = \"ActionConfigurations\"\r\n static WIDGET = \"Widgets\"\r\n static APIMANAGEMENT = \"ApiConfigurations\"\r\n static APPLICATION = \"Applications\"\r\n static DOCUMETS = \"Documents\"\r\n static RATIONALE = \"Rationales\"\r\n static Template = \"MessageTemplates\"\r\n static QUEUESAPICONFIG = \"ApiConfigurations/getChildParentFields\"\r\n static DELETEDICTIONARYITEM = \"DataDictionaries/dictionaryItems\"\r\n static APPLICATION_QUEUE_SEARCH = \"Applications/search/\"\r\n \r\n}","\r\n/**\r\n * URLS\r\n */\r\nexport class URLS{\r\n static CONFIGFILEURL = \"assets/config/api.config.json\"\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { URLS } from '../constant/URLS';\r\nimport { ERROR } from '../constant/ERROR';\r\n\r\n/**\r\n * This service is used to get the app configuration from the config file.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfigService {\r\n\r\n private appConfig: any;\r\n private isConfigLoaded = false;\r\n\r\n constructor(private http: HttpClient) {}\r\n loadAppConfig(): Promise<void> {\r\n return firstValueFrom(this.http.get(URLS.CONFIGFILEURL))\r\n .then(config => {\r\n this.appConfig = config;\r\n this.isConfigLoaded = true;\r\n })\r\n .catch(err => {\r\n console.error(ERROR.API_CONFIG_FAILED, err);\r\n throw err;\r\n });\r\n }\r\n\r\n private ensureConfigLoaded(): void {\r\n if (!this.isConfigLoaded) {\r\n throw new Error(ERROR.API_CONFIG_LOADING_FAILED);\r\n }\r\n }\r\n\r\n get apiBaseUrl() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.catQwUrl;\r\n }\r\n\r\n get interactBaseApi() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.interactBaseApi;\r\n }\r\n\r\n get visibilityOptions() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.visibilityOption;\r\n }\r\n\r\n get swaggerUrl() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.swaggerUrl;\r\n }\r\n}\r\n","import { SelectItem } from \"primeng/api\";\r\n\r\nexport class List {\r\n dataSource?: string;\r\n records: any[];\r\n label: string;\r\n value: string;\r\n forProperty!: string;\r\n items: SelectItem[];\r\n allItems: SelectItem[];\r\n\r\n constructor(dataSource: string, records: any[] = [], label: string, value: string, forProperty?: string) {\r\n this.dataSource = dataSource\r\n this.records = records;\r\n this.label = label;\r\n this.value = value;\r\n this.dataSource = dataSource;\r\n this.forProperty = forProperty ?? \"\"\r\n this.items = records?.map((i) => {\r\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\r\n });\r\n this.allItems = this.records?.map((i) => {\r\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\r\n });\r\n }\r\n\r\n}\r\n","import { firstValueFrom } from \"rxjs\";\r\nimport { List } from \"../models/list.model\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { AppConfigService } from \"./app-config.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ListService {\r\n constructor(public http: HttpClient, public configService: AppConfigService) {}\r\n\r\n async getLists(models: any[]) {\r\n const lists: List[] = [];\r\n\r\n for (const model of models) {\r\n if (model.dataSource) {\r\n try {\r\n const response = await firstValueFrom(\r\n this.getbyPathName<{ data: any[] }>(model.dataSource)\r\n );\r\n const listData = response.data || response;\r\n const list = new List(\r\n model.dataSource,\r\n listData,\r\n model.listLabelProperty as string,\r\n model.listValueProperty as string,\r\n model.dataSource\r\n );\r\n list.forProperty = model.name;\r\n lists.push(list);\r\n } catch (error) {\r\n console.error(`Error fetching data from ${model.dataSource}:`, error);\r\n }\r\n } \r\n else if (model.options) {\r\n const list = new List(\r\n model.dataSource,\r\n model.options as any[],\r\n model.listLabelProperty as string,\r\n model.listValueProperty as string,\r\n undefined\r\n );\r\n list.forProperty = model.name;\r\n lists.push(list);\r\n }\r\n }\r\n return lists;\r\n }\r\n\r\n getbyPathName<T>(data: string) {\r\n return this.http.get<T>(this.configService.apiBaseUrl + data);\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { BaseStore } from './base.store';\r\nimport { SHARED } from '../constant/SHARED';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { AppConfigService } from '../services/app-config.service';\r\nimport { ListService } from '../services/list.service';\r\nimport { DATASOURCES } from '../constant/DATASOURCES';\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class BaseService<T extends BaseModel> {\r\n public _pathName: string | undefined = SHARED.EMPTY;\r\n protected lists!:string[];\r\n protected http: HttpClient;\r\n protected list!:[]\r\n constructor(http: HttpClient, private store: BaseStore<T>, private appConfigService: AppConfigService, protected listService : ListService) {\r\n \r\n this.http = http;\r\n }\r\n \r\n\r\n get apiUrl(): string {\r\n return this.appConfigService.apiBaseUrl;\r\n }\r\n\r\n get interactBaseApi(): string {\r\n return this.appConfigService.interactBaseApi;\r\n }\r\n\r\n set pathName(value: string) {\r\n this._pathName = value;\r\n }\r\n\r\n async initList() {\r\n if(this.list){\r\n let response = await this.listService.getLists(this.list)\r\n if (response && response.length > 0) {\r\n this.store.setList(response as any)\r\n }\r\n }\r\n \r\n } \r\n\r\n create(entity: T): Observable<T> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.post<T>(baseUrl + this._pathName, entity).pipe(\r\n tap((newEntity: T) => this.store.add(newEntity))\r\n );\r\n }\r\n\r\n getAll(): Observable<T[]> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n const url = `${baseUrl}${this._pathName}`;\r\n return this.http.get<T[]>(url).pipe(\r\n tap((entities: T[]) => this.store.set(entities))\r\n );\r\n }\r\n \r\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[]> {\r\n this._pathName = (!!pathName ? pathName : this._pathName);\r\n const paramsObj: Record<string, string> = Object.fromEntries(\r\n Object.entries({\r\n searchKey: search,\r\n page: page ? page.toString() : SHARED.EMPTY,\r\n limit: limit ? limit.toString() : SHARED.EMPTY,\r\n sortBy: sortBy || SHARED.UPDATEDAT,\r\n order: order || SHARED.EMPTY,\r\n type: type || SHARED.EMPTY,\r\n isActive: isActive\r\n }).filter(([_, value]) => value !== SHARED.EMPTY)\r\n );\r\n \r\n const params = new URLSearchParams(paramsObj);\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n const url = `${baseUrl}${this._pathName}${params.toString() ? SHARED.QUESTION_MARK + params.toString() : SHARED.EMPTY}`;\r\n return this.http.get<T[]>(url).pipe(\r\n tap((entities: T[]) => this.store.set(entities))\r\n );\r\n }\r\n\r\n getById(id: string): Observable<T> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.get<T>(`${baseUrl}${this._pathName}/${id}`).pipe(\r\n tap((entity: T) => this.store.upsert(id, entity))\r\n );\r\n }\r\n\r\n update(id: string, entity: T): Observable<T> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.put<T>(`${baseUrl}${this._pathName}/${id}`, entity).pipe(\r\n tap((updatedEntity: T) => this.store.update(id, updatedEntity))\r\n );\r\n }\r\n\r\n delete(id: string): Observable<void> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.delete<void>(`${baseUrl}${this._pathName}/${id}`).pipe(\r\n tap(() => this.store.remove(id))\r\n );\r\n }\r\n \r\n}\r\n","import { SHARED } from \"../../constant/SHARED\";\r\n\r\nexport class TablePrimaryModel{\r\n name!: string;\r\n headers!: any[];\r\n records!: any[];\r\n editPermission : string = SHARED.EMPTY \r\n deletePermission : string = SHARED.EMPTY \r\n}\r\n\r\nexport interface tableSortOrderModel{\r\n [key: string]: string;\r\n}","import { AttributeModel } from \"../../models/attribute.model\";\r\n\r\nexport class TablePrimaryHeaderModel{\r\n name!: string;\r\n attributes!: AttributeModel;\r\n width!: string;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { TablePrimaryModel } from \"../table-primary/models/table-primary.model\";\r\nimport { SHARED } from \"../constant/SHARED\";\r\nimport { TablePrimaryHeaderModel } from \"../table-primary/models/table-primary-header.model\";\r\n\r\n\r\n/**\r\n * TableBuilder\r\n */\r\n@Injectable({\r\n providedIn:'root'\r\n})\r\nexport class TableBuilder{\r\n\r\n public hiddenHeaders: string[] = [];\r\n buildTable(records: any[], headerWidths?: { [key: string]: string }, editPermission?:string ,deletePermission?:string): TablePrimaryModel {\r\n const table = new TablePrimaryModel();\r\n table.records = records;\r\n if (records && records.length > 0) {\r\n table.headers = this.buildHeaders(Object.keys(records[0]),headerWidths);\r\n } else {\r\n table.headers = [];\r\n }\r\n table.editPermission = editPermission ?? SHARED.EMPTY\r\n table.deletePermission = deletePermission ?? SHARED.EMPTY\r\n return table;\r\n }\r\n \r\n private buildHeaders(keys: string[], headerWidths: { [key: string]: string } | undefined): TablePrimaryHeaderModel[] {\r\n \r\n const headers: TablePrimaryHeaderModel[] = [];\r\n const filteredKeys = keys.filter(\r\n key => key !== SHARED.ID && !this.hiddenHeaders.includes(key) // hide headers\r\n );\r\n for (const key of filteredKeys) {\r\n const header = new TablePrimaryHeaderModel();\r\n header.name = key;\r\n if(headerWidths) header.width = headerWidths[key] || SHARED.WIDTH_AUTO;\r\n headers.push(header);\r\n }\r\n return headers;\r\n }\r\n}","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseModel } from '../../models/base.model';\r\nimport { TableBuilder } from '../../services/table.builder';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { TablePrimaryModel } from '../../table-primary/models/table-primary.model';\r\nimport { MetaDataModel } from '../../models/meta-data.model';\r\nimport { SHARED } from '../../constant/SHARED';\r\n\r\n/**\r\n * BaseListComponent is a generic class that provides a base implementation for a list component.\r\n */\r\n@Component({\r\n selector: 'lib-base-list',\r\n templateUrl: './base-list.component.html',\r\n styleUrl: './base-list.component.scss',\r\n})\r\nexport class BaseListComponent<T extends BaseModel> implements OnChanges {\r\n @Input() refreshTable : boolean = false;\r\n table!: TablePrimaryModel;\r\n metaData!: MetaDataModel;\r\n deletePermission :string = SHARED.EMPTY\r\n editPermission : string = SHARED.EMPTY\r\n constructor(protected service: BaseService<T>, protected builder: TableBuilder){}\r\n\r\n ngOnChanges(){\r\n if(this.refreshTable){\r\n this.handleRefreshTable()\r\n }\r\n }\r\n init(dynamicWidth?:any){\r\n this.service.getPaginatedList().subscribe((res:any)=>{\r\n this.table = this.builder.buildTable(res.data, dynamicWidth, this.editPermission, this.deletePermission);\r\n this.metaData = res.metadata;\r\n\r\n this.afterTableBuild() \r\n });\r\n }\r\n\r\n afterTableBuild(){\r\n\r\n }\r\n\r\n handleRefreshTable(){\r\n this.init()\r\n }\r\n}\r\n","<p>base-list works!</p>\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ListService } from '../../services/list.service';\r\nimport { List } from '../../models/list.model';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { BaseStore } from '../../state/base.store';\r\n\r\n/**\r\n * DropdownComponent\r\n */\r\n@Component({\r\n selector: 'dropdown',\r\n standalone: true,\r\n imports: [CommonModule, DropdownModule, FormsModule],\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DropdownComponent extends BaseControlComponent{\r\n options: SelectItem[] | undefined = [];\r\n list!: List | undefined;\r\n childListRecords: any[] = [];\r\n @Input() isStaticDropdown = false;\r\n\r\n constructor(baseStore: BaseStore<any>,public listService: ListService, baseQuery: BaseQuery<any>) {\r\n super(baseStore, baseQuery);\r\n }\r\n\r\n override ngOnChanges() {\r\n if(this.store) {\r\n this.query = new BaseQuery(this.store);\r\n }\r\n if (this.attributeModel.options) {\r\n this.options = this.attributeModel.options;\r\n }\r\n if (!this.isStaticDropdown) {\r\n this.handleGetAndSetList();\r\n }else{\r\n this.options = this.attributeModel.options?.map((x: any) => {\r\n return { label: x[this.attributeModel?.listLabelProperty || 0], value: x[this.attributeModel?.listValueProperty || 0] };\r\n });\r\n }\r\n }\r\n\r\n handleGetAndSetList() {\r\n try {\r\n this.query.getLists().subscribe((response: List[]) => {\r\n if (response) {\r\n this.mapResponseToOptions(response);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error fetching data:', error);\r\n }\r\n }\r\n\r\n private mapResponseToOptions(lists: List[]): SelectItem[] {\r\n if (lists && lists.length > 0) {\r\n const clonedLists = JSON.parse(JSON.stringify(lists));\r\n this.list = clonedLists.find((x: any) => x.forProperty === this.attributeModel.name);\r\n if (this.list) {\r\n this.options = this.list?.items ?? [];\r\n }\r\n }\r\n if (!this.options || this.options.length === 0) {\r\n this.options = this.attributeModel.options ?? [];\r\n }\r\n return this.options;\r\n }\r\n\r\n\r\n override handleModelChange(event: any, valid: boolean | null, val?: any): void {\r\n super.handleModelChange(event, valid);\r\n }\r\n}\r\n","<ng-container>\r\n <div class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"dropdownbox\">\r\n\r\n <p-dropdown \r\n \r\n [options]=\"options\" \r\n [disabled]=\"attributeModel.readonly ?? false\"\r\n [showClear]=\"true\"\r\n [name]=\"attributeModel.name ?? 'testSingleSelect'\" \r\n [ngModel]=\"record[attributeModel.name]\" \r\n [placeholder]=\"attributeModel.placeholder ?? ''\" \r\n [required]=\"attributeModel.isRequired ?? false\"\r\n filterBy=\"label\" \r\n [filter]=\"attributeModel.filter ?? false\" \r\n class=\"dropdownFeild\"\r\n #dropdown=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, dropdown.valid)\" \r\n [ngClass]=\"{'ng-dirty ng-invalid': (!dropdown.valid && dropdown.dirty)}\"\r\n appendTo=\"body\" \r\n optionLabel=\"label\" \r\n optionValue=\"value\">\r\n</p-dropdown>\r\n<div *ngIf=\"dropdown.errors?.['required'] && (dropdown.dirty || dropdown.touched)\" class=\"error-message\">\r\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\r\n</div>\r\n</div>\r\n\r\n</ng-container>\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ValidatorService {\r\n\r\n constructor() { }\r\n\r\n handleValidateRecords(record:any){\r\n return true\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormStateService {\r\n private formChangesSubject$: BehaviorSubject<boolean>;\r\n private isFormNavigating$: BehaviorSubject<boolean>;\r\n private isShowConfirmation$: BehaviorSubject<boolean>;\r\n constructor() {\r\n this.formChangesSubject$ = new BehaviorSubject<boolean>(false)\r\n this.isFormNavigating$ = new BehaviorSubject<boolean>(false)\r\n this.isShowConfirmation$ = new BehaviorSubject<boolean>(false)\r\n }\r\n\r\n setIsFormNavigating(isNavigation: boolean) {\r\n this.isFormNavigating$.next(isNavigation)\r\n }\r\n\r\n getIsFormNavigating() {\r\n return this.isFormNavigating$.getValue()\r\n }\r\n \r\n selectIsFormNavigating() {\r\n return this.isFormNavigating$.asObservable()\r\n }\r\n\r\n setIsFormSaved(hasChanges: boolean) {\r\n this.formChangesSubject$.next(hasChanges);\r\n }\r\n\r\n getIsFormSaved(): boolean {\r\n return this.formChangesSubject$.getValue();\r\n }\r\n\r\n selectIsFormSaved() {\r\n return this.formChangesSubject$.asObservable()\r\n }\r\n\r\n setShowConfirmation(value : boolean){\r\n return this.isShowConfirmation$.next(value)\r\n }\r\n\r\n selectShowConfirmation(){\r\n return this.isShowConfirmation$.asObservable()\r\n }\r\n\r\n \r\n}\r\n","import { Component, EventEmitter, HostListener, inject, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { BehaviorSubject, Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { ValidatorService } from '../../services/validator.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { AttributeModel } from '../../models/attribute.model';\r\nimport { BaseModel } from '../../models/base.model';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { ERROR } from '../../constant/ERROR';\r\nimport { FormStateService } from '../../services/form-state.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n/**\r\n * BaseFormComponent \r\n */\r\n@Component({\r\n selector: 'base-form',\r\n templateUrl: './base-form.component.html',\r\n styleUrls: ['./base-form.component.scss'],\r\n providers : [ValidatorService]\r\n})\r\nexport class BaseFormComponent<T extends BaseModel> {\r\n protected formStateService = inject(FormStateService)\r\n protected subscriptions: Subscription[];\r\n record!: T;\r\n initialRecord!: T;\r\n public recordChange = new BehaviorSubject<any>({});\r\n public destroy$ = new Subject<void>();\r\n @Output() onSave = new EventEmitter<any>();\r\n @Output() onFormNavigate = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<any>();\r\n sanitizedInitialRecord: any\r\n sanitizedCurrentRecord: any\r\n constructor( protected service: BaseService<T>, protected validatorService?: ValidatorService, protected router?: Router, protected activatedRoute?: ActivatedRoute, protected baseStore?: BaseStore<T>, protected baseQuery?: BaseQuery<T>,\r\n ) {\r\n this.subscriptions = [];\r\n this.record = {} as T;\r\n }\r\n\r\n message:any[] = []\r\n attributeMode!:AttributeModel;\r\n\r\n get currentState() {\r\n return this.baseQuery?.getValue();\r\n }\r\n\r\n\r\n init(): void {\r\n this.service.initList();\r\n this.baseStore?.setRecordChange(SHARED.EMPTY);\r\n let id = this.activatedRoute ? this.activatedRoute.snapshot.params[SHARED.ID] : '';\r\n if ((id !== SHARED.ZERO.toString()) && id) {\r\n this.service.getById(id).subscribe((res: any) => {\r\n this.record = JSON.parse(JSON.stringify(res));\r\n this.baseStore?.setRecordChange(res);\r\n this.initialRecord = JSON.parse(JSON.stringify(res));\r\n this.recordChange.next(res);\r\n })\r\n } else {\r\n this.initialRecord = structuredClone(this.record);\r\n }\r\n this.formStateService.selectIsFormNavigating()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.checkUnsavedChanges()\r\n }\r\n });\r\n }\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n handleBeforeUnload(event: BeforeUnloadEvent) {\r\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\r\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\r\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\r\n const isSaved = this.formStateService.getIsFormSaved();\r\n if (hasChanges && !isSaved) {\r\n event.preventDefault();\r\n event.returnValue = SHARED.BROWSER_WARNING;\r\n }\r\n }\r\n\r\n checkUnsavedChanges() {\r\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\r\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\r\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\r\n const isSaved = this.formStateService.getIsFormSaved();\r\n this.formStateService.setShowConfirmation(hasChanges && !isSaved);\r\n }\r\n\r\n private normalizeRecord(record: any): Record<string, any> {\r\n if (!record) return {};\r\n return Object.keys(record).reduce((acc, key) => {\r\n let value = record[key];\r\n if (value === undefined || value === SHARED.EMPTY) {\r\n value = null;\r\n }\r\n acc[key] = value;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n }\r\n\r\n handleSubmit() {\r\n const validateRecords = this.validatorService \r\n ? this.validatorService.handleValidateRecords(this.record) \r\n : true;\r\n \r\n if(!this.record || Object.keys(this.record).length === 0) return;\r\n if(this.baseStore) this.baseStore.missingFields = [];\r\n if (this.baseQuery) {\r\n this.baseQuery.getAttributeModelList()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((attributeModels: AttributeModel[]) => {\r\n attributeModels.forEach(attr => {\r\n const handleCheckAndAddMissingField = (value: any) => {\r\n if (attr.isRequired &&\r\n (value === undefined || value === null || (typeof value === SHARED.STRING && value.trim() === SHARED.EMPTY))\r\n ) {\r\n if(this.baseStore) this.baseStore.missingFields.push(attr.displayText || attr.name);\r\n }\r\n };\r\n \r\n if (attr.isRequired && attr.name in this.record) {\r\n handleCheckAndAddMissingField(this.record[attr.name]);\r\n }\r\n \r\n [SHARED.DICTIONARYITEMS, SHARED.DATAITEMS].forEach(key => {\r\n this.record[key]?.forEach((val: any) => {\r\n if(val.hasOwnProperty(attr.name)) {\r\n handleCheckAndAddMissingField(val[attr.name])\r\n }\r\n });\r\n });\r\n });\r\n if (this.baseStore && this.baseStore.missingFields.length > 0) {\r\n if(this.baseStore) this.baseStore.setIsFormSubmitted(true);\r\n console.error(ERROR.MISSING_REQUIRED_FIELD, this.baseStore.missingFields);\r\n } else {\r\n if(!this.currentState?.isApiValidated && this.currentState?.isApiValidated !== null) {\r\n this.baseStore?.setIsShowMessage(!this.currentState?.isApiValidated);\r\n }\r\n else if(validateRecords) {\r\n if(!this.record || Object.keys(this.record).length === 0) return;\r\n if (this.record._id) {\r\n this.handleUpdateRecord();\r\n } else {\r\n this.handleAddRecord();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleUpdateRecord(){\r\n if(!this.record._id || Object.keys(this.record).length === 0) return;\r\n this.service.update(this.record._id, this.record).subscribe({\r\n next: (response: T) => {\r\n console.log('Record updated:', response);\r\n this.record = {} as T;\r\n this.baseStore?.setIsApiValidated(null);\r\n this.onFormNavigate.emit(response);\r\n },\r\n error: (error) => {\r\n console.error('Error updating record:', error);\r\n }\r\n })\r\n }\r\n\r\n handleAddRecord() {\r\n if (!this.record || Object.keys(this.record).length === 0) return;\r\n this.service.create(this.record).subscribe({\r\n next: (response: T) => {\r\n console.log('Record created:', response);\r\n this.record = {} as T;\r\n this.baseStore?.setIsApiValidated(null);\r\n this.onFormNavigate.emit(response); \r\n },\r\n error: (error) => {\r\n console.error('Error creating record:', error);\r\n }\r\n })\r\n }\r\n\r\n handleCancel(){\r\n if(this.baseStore) this.baseStore.missingFields = [];\r\n this.onCancel.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.baseStore) {\r\n this.baseStore.setAttributeModelList([]);\r\n this.baseStore.setIsApiValidated(null);\r\n this.baseStore?.setIsShowMessage(null);\r\n } \r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.formStateService.setIsFormNavigating(false)\r\n this.formStateService.setIsFormSaved(false)\r\n }\r\n}\r\n","<p>base-form works!</p>\r\n","import { Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { SHARED } from '../constant/SHARED';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateParserService {\r\n\r\n constructor() { }\r\n\r\n parseDate(date:any) {\r\n\r\n\t\tif (\r\n\t\t\tmoment(date, SHARED.DATE_FORMAT_TYPE2, true).isValid()\r\n\t\t) {\r\n\t\t\tconst date1 = date.toString().split(SHARED.HIPHEN)[0];\r\n\t\t\tconst month = date.toString().split(SHARED.HIPHEN)[1];\r\n\t\t\tconst year = date.toString().split(SHARED.HIPHEN)[2];\r\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\r\n\t\t}\r\n\t\telse if (\r\n\t\t\tmoment(date, SHARED.DATE_FORMAT, true).isValid()\r\n\t\t) {\r\n\t\t\tconst date1 = date.toString().split(SHARED.SLASH)[0];\r\n\t\t\tconst month = date.toString().split(SHARED.SLASH)[1];\r\n\t\t\tconst year = date.toString().split(SHARED.SLASH)[2];\r\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\r\n\t\t}\r\n\t\telse if (moment(date, SHARED.DATE_FORMAT_TYPE3, true).isValid()) {\r\n\t\t\tconst dateParts = date.toString().split(SHARED.HIPHEN);\r\n\t\t\tconst year = dateParts[0];\r\n\t\t\tconst month = dateParts[1];\r\n\t\t\tconst day = dateParts[2];\r\n\t\t\treturn moment.utc(`${year}-${month}-${day}`).toDate();\r\n\t\t}\r\n else if (\r\n \r\n\t\t\tdate instanceof Date ||\r\n\t\t\tnew Date(date).toString() != SHARED.INVALIDDATE\r\n\t\t) {\r\n\r\n\t\t\tconst result = new Date(date);\r\n\t\t\tresult.setHours(0, 0, 0, 0);\r\n\t\t\treturn moment.utc(`${result.getFullYear()}-${result.getMonth()+1}-${result.getDate()}`).toDate();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new Error(SHARED.INVALIDDATE);\r\n\t\t}\r\n\r\n\t\treturn SHARED.INVALIDDATE\r\n\t}\r\n\r\n}\r\n","import { Component, OnChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { DateParserService } from '../../services/date-parser.service';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport moment from 'moment';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { BaseQuery } from '../../state/base.query';\r\n\r\n@Component({\r\n selector: 'date',\r\n standalone: true,\r\n imports: [CommonModule, CalendarModule, FormsModule],\r\n templateUrl: './date.component.html',\r\n styleUrl: './date.component.scss',\r\n})\r\nexport class DateComponent extends BaseControlComponent implements OnChanges{\r\n constructor(baseStore: BaseStore<any>, public dateService : DateParserService, baseQuery: BaseQuery<any>){\r\n super(baseStore, baseQuery)\r\n }\r\n override ngOnChanges(): void {\r\n if(this.attributeModel.readonly){\r\n this.getValue()\r\n }else{\r\n\r\n this.record[this.attributeModel.name] = this.dateService.parseDate(this.record[this.attributeModel?.name]) ??\r\n new Date();\r\n }\r\n }\r\n override getValue() {\r\n if (this.record[this.attributeModel.name]) {\r\n const formattedDate = moment(this.record[this.attributeModel.name]).format('DD/MM/YYYY');\r\n if(formattedDate == \"Invalid date\"){\r\n return SHARED.HIPHEN\r\n }else{\r\n return formattedDate\r\n }\r\n }\r\n return SHARED.EMPTY\r\n }\r\n \r\n}\r\n","@if (attributeModel && record) {\r\n<div class=\"\">\r\n <div class=\"mb-2\">\r\n <label>{{\r\n attributeModel?.displayText\r\n ? attributeModel?.displayText\r\n : attributeModel?.name\r\n }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n @if (attributeModel.readonly) {\r\n <div class=\"mb-2\" [ngStyle]=\"{ 'font-size': '14px', color: '#0F1729', 'font-weight':'600' }\">\r\n <label>{{ getValue() }}</label>\r\n </div>\r\n } @else {\r\n <div>\r\n <p-calendar\r\n [showIcon]=\"attributeModel.showCalenderIcon ?? true\"\r\n inputId=\"icon\"\r\n [disabled]=\"attributeModel?.readonly ?? false\"\r\n [required]=\"attributeModel?.isRequired ?? false\"\r\n [name]=\"attributeModel?.name ? attributeModel?.name : 'testDatePicker'\"\r\n [placeholder]=\"\r\n attributeModel.placeholder ? attributeModel.placeholder : ''\r\n \"\r\n [yearRange]=\"attributeModel.yearRange ?? '1950 : 2050'\"\r\n [title]=\"attributeModel.title ? attributeModel.title : ''\"\r\n [(ngModel)]=\"record[attributeModel?.name]\"\r\n #dateField=\"ngModel\"\r\n [dateFormat]=\"'dd/mm/yy'\"\r\n appendTo=\"body\"\r\n (ngModelChange)=\"handleModelChange($event, dateField.valid)\"\r\n [ngClass]=\"{\r\n 'ng-dirty ng-invalid': !dateField.valid && error == attributeModel?.name\r\n }\"\r\n [hourFormat]=\"attributeModel?.hourFormat ? '24' : ''\"\r\n >\r\n </p-calendar>\r\n </div>\r\n }\r\n</div>\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\n\r\n@Component({\r\n selector: 'file-upload',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, FileUploadModule],\r\n templateUrl: './file-upload.component.html',\r\n styleUrl: './file-upload.component.scss',\r\n})\r\nexport class FileUploadComponent extends BaseControlComponent {\r\n\r\n handleSingleUpload(event:any){\r\n console.log(event)\r\n }\r\n}\r\n","<ng-container class=\"documentContainer\">\r\n @if(!attributeModel.hideLabelOnForm){\r\n <div class=\"mb-2\">\r\n <label class=\"form-header-label\">{{ attributeModel?.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n }\r\n<div class=\"card flex justify-content-center\">\r\n <p-fileUpload \r\n mode=\"basic\" \r\n [chooseLabel]=\"record[attributeModel.name] ? attributeModel.displayText : 'No Files'\"\r\n chooseIcon=\"pi pi-plus\"\r\n [name]=\"attributeModel?.name\"\r\n accept=\"image/*,application/pdf\" \r\n [maxFileSize]=\"209715200\" class=\"fileUploader\"\r\n (onSelect)=\"handleSingleUpload($event)\" />\r\n</div>\r\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'capitalizeWords',\r\n standalone: true,\r\n})\r\nexport class CapitalizeWordsPipe implements PipeTransform {\r\n transform(value: string): string {\r\n if (!value) return value;\r\n return value\r\n .split(' ')\r\n .map(word => \r\n word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\r\n )\r\n .join(' ');\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\n\r\n@Component({\r\n selector: 'text-area',\r\n templateUrl: './text-area.component.html',\r\n styleUrl: './text-area.component.scss',\r\n standalone : true,\r\n imports : [CommonModule ,InputTextareaModule, FormsModule]\r\n})\r\nexport class TextAreaComponent extends BaseControlComponent {\r\n @Input() rowspan : number = 0\r\n override getValue() {\r\n if(this.record[this.attributeModel.name] == false){\r\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\r\n }else if( this.record[this.attributeModel.name] == true){\r\n return \"Yes\"\r\n }else{\r\n return this.record[this.attributeModel.name] ?? \"-\"\r\n }\r\n}\r\n}\r\n","<ng-container class=\"textAreaContainer\">\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n @if (attributeModel.readonly) {\r\n <div class=\"mb-2\" [ngStyle]=\"{'font-size':'14px', 'color':'#0F1729', 'font-weight':'600' }\">\r\n <label class=\"text-value-wrapper\" [ngStyle]=\"{color: attributeModel.textColorOnReadonly}\">{{ getValue() }}</label>\r\n </div>\r\n } @else {\r\n <div class=\"textAreaControl\">\r\n <textarea\r\n pInputTextarea\r\n [rows]=\"rowspan ?? 3\"\r\n cols=\"30\"\r\n [disabled]=\"attributeModel?.readonly ?? false\"\r\n [ngModel]=\"record[attributeModel.name]\"\r\n [name]=\"attributeModel.name ?? 'textArea'\"\r\n [required]=\"attributeModel?.isRequired ?? false\"\r\n [ngStyle]=\"{\r\n width: attributeModel.customColumnWidth\r\n ? attributeModel.customColumnWidth\r\n : ''\r\n }\"\r\n #textArea=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, textArea.valid)\"\r\n [ngClass]=\"{\r\n 'ng-dirty ng-invalid':\r\n (!textArea.valid && error == attributeModel?.name)\r\n \r\n }\"\r\n ></textarea>\r\n <div *ngIf=\"textArea.errors?.['required'] && (textArea.dirty || textArea.touched)\" class=\"error-message\">\r\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\r\n </div>\r\n </div>\r\n }\r\n</ng-container>\r\n","import { Component } from '@angular/core';\r\nimport { SHARED } from '../../constant/SHARED';\r\n\r\n@Component({\r\n selector: 'queue-search-customer',\r\n standalone: false,\r\n templateUrl: './queue-search-customer.component.html',\r\n styleUrl: './queue-search-customer.component.scss',\r\n})\r\nexport class QueueSearchCustomerComponent {\r\n\r\n constructor() {}\r\n\r\n queues: any[] = [\r\n { name: SHARED.ALL, code: SHARED.QUEUE1 },\r\n { name: SHARED.UK, code: SHARED.QUEUE2 },\r\n { name: SHARED.INTERNATIONAL, code: SHARED.QUEUE3 }\r\n ];\r\n queueData :any[]=[]\r\n selectedQueue: any;\r\n\r\n onSearch() {\r\n console.log(SHARED.SELECTED_QUEUE, this.selectedQueue);\r\n }\r\n}\r\n","<div class=\"flex mt-5 xl:mt-0 xl:justify-content-between xl:align-items-center vh-100\">\r\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\">\r\n <div class=\"p-inputgroup border-round-left bg-white\">\r\n <span class=\"p-inputgroup-addon bg-white\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <input type=\"text\" class=\"border-none h-44 border-noround-right bg-white\" pInputText placeholder=\"Search with Applicaiton no., Name or Address\" />\r\n </div>\r\n </div>\r\n <div class=\"p-field m-0 p-0 py-2 border-round-right border-noround-left\">\r\n <p-dropdown \r\n [styleClass]=\"'bg-white font-bold'\"\r\n [options]=\"queues\" \r\n [(ngModel)]=\"selectedQueue\" \r\n placeholder=\"All queue\"\r\n optionLabel=\"name\"\r\n class=\"left-arrow-dropdown\"\r\n ></p-dropdown>\r\n </div>\r\n <div class=\"p-field p-0 m-0 ml-3\">\r\n <button class=\"py-3 border-none\" pButton type=\"button\" label=\"Search\" (click)=\"onSearch()\"></button>\r\n </div>\r\n </div>\r\n ","export class ROUTES {\r\n static RECORD = 'record/';\r\n static QUEUE_FORM = \"/admin/queue/\";\r\n static DICTIONARY_CREATE_FORM = '/DataDictionaries';\r\n static DICTIONARY = '/DataDictionaries/';\r\n static APIMANAGEMENT = '/apiManagement/';\r\n static APICONFIG = 'apiConfig';\r\n static VALIDATEAPI = 'ApiConfigurations/validateApi';\r\n static APPLICATION = \"application/\";\r\n static APIPROPERTIES = \"ApiConfigurations/get-parent\";\r\n static APPLICATION_WIDGET_CACHE = \"Widgets/evaluateFromCache\";\r\n static APPLICATION_WIDGET = \"Widgets/evaluate\";\r\n static DOCUMENTALERT = \"alerts/documentId\";\r\n static VALIDATE_ACTIONS = 'ActionConfigurations/validateApi';\r\n static EVALUATE_BY_WIDGETNAME = \"Widgets/evaluateByWidgetName\";\r\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { ROUTES } from '../../constant/ROUTES';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { BadgeModule } from 'primeng/badge';\r\n\r\n@Component({\r\n selector: 'block-list',\r\n standalone: true,\r\n imports: [CommonModule, RippleModule, ButtonModule, RouterModule, BadgeModule],\r\n templateUrl: './block-list.component.html',\r\n styleUrls: ['./block-list.component.scss'], // Fixed the typo: styleUrl -> styleUrls\r\n})\r\nexport class BlockListComponent {\r\n // @Input() list!: any;\r\n @Input() queueData!: any[];\r\n @Input() showQueueDataForm : boolean = true\r\n @Output() queueDataById: EventEmitter<any> =\r\n new EventEmitter<any>();\r\n\r\n selectedQueueId: any;\r\n constructor(public router : Router){}\r\n\r\n ngOnChanges(){\r\n this.queueData = this.queueData.map((queue) => {\r\n if (queue.name === SHARED.UK) {\r\n return { ...queue, itemCount: 5 };\r\n } else if (queue.name === SHARED.INTERNATIONAL) {\r\n return { ...queue, itemCount: 2 }; \r\n }\r\n return queue;\r\n });\r\n this.queueDataById.emit(this.queueData[0]?._id)\r\n this.selectedQueueId=this.queueData[0]?._id;\r\n // this.handleQueueClick(this.list[0]._id, this.showQueueDataForm);\r\n }\r\n\r\n\r\n\r\n insertQueue(){\r\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO])\r\n }\r\n\r\n\r\n handleQueueClick(queueId:any, showQueueDataForm:any){\r\n this.selectedQueueId=queueId;\r\n if(showQueueDataForm){\r\n this.router.navigateByUrl(ROUTES.QUEUE_FORM+queueId);\r\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\r\n }else{\r\n this.queueDataById.emit(queueId)\r\n }\r\n }\r\n}\r\n","<div class=\"card p-4 pr-3 mb-0\">\r\n <!-- <div class=\"px-4 w-full flex\">\r\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>\r\n </div> -->\r\n <div class=\"queues overflow-y-scroll scrollable\">\r\n\r\n @for(queue of queueData; let i = $index; track queue){\r\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)\" >\r\n <div class=\"flex flex-column py-4 px-3 cursor-pointer queue-list-wrapper\" [ngClass]=\"{'active-queue-wrapper': queue._id === this.selectedQueueId}\">\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\r\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\r\n <span class=\"text-color queue-name font-semibold\"\r\n [ngClass]=\"{'active-title-wrapper': queue._id === this.selectedQueueId}\"\r\n >{{queue.name}}</span>\r\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\r\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\r\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\r\n <span class=\"text-color queue-name font-semibold\"\r\n >Total Loss</span>\r\n <p-badge [value]=\"11\" severity=\"primary\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\r\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\r\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\r\n <span class=\"text-color queue-name font-semibold\"\r\n >Repair</span>\r\n <p-badge [value]=\"7\" severity=\"primary\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> ","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { SHARED } from '../constant/SHARED';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService {\r\n\r\n constructor(public router : Router) {\r\n\r\n }\r\n\r\n getUserRole() {\r\n const role = sessionStorage.getItem('role');\r\n return role;\r\n }\r\n\r\n setUserSession(data: any): void {\r\n sessionStorage.setItem(SHARED.SESSIONKEY, JSON.stringify(data));\r\n }\r\n\r\n getUserPermissions(){\r\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\r\n const permissionData = sessionData ? JSON.parse(sessionData).permissions : null;\r\n return permissionData\r\n }\r\n \r\n\r\n getUserSession(): any {\r\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\r\n return sessionData ? JSON.parse(sessionData) : null;\r\n }\r\n\r\n getAllUserRole() {\r\n const userSession = this.getUserSession();\r\n return userSession?.roles;\r\n }\r\n\r\n getSessionID(){\r\n return 1;\r\n }\r\n\r\n clearSession(): void {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, Renderer2, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { SessionService } from '../services/session.service';\r\n\r\n@Directive({\r\n selector: '[permission]',\r\n standalone: false\r\n})\r\nexport class HasPermissionDirective implements OnChanges {\r\n @Input() permission?: string | string[];\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n public sessionService: SessionService\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['permission']) {\r\n this.checkPermission();\r\n }\r\n }\r\n private checkPermission() {\r\n const userPermissionsObjects = this.sessionService.getUserPermissions();\r\n if (userPermissionsObjects) {\r\n const userPermissionNames = userPermissionsObjects.map((perm: any) => perm.name);\r\n const requiredPermissions = Array.isArray(this.permission)\r\n ? this.permission\r\n : [this.permission];\r\n const permission = requiredPermissions.some(permission =>\r\n userPermissionNames.includes(permission)\r\n );\r\n if (!permission) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n } else {\r\n this.renderer.removeStyle(this.el.nativeElement, 'display');\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CardModule } from 'primeng/card';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SidebarComponent } from './components/sidebar/sidebar.component';\r\nimport { CheckBoxComponent } from './controls/check-box/check-box.component';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { FormContainerComponent } from './components/form-container/form-container.component';\r\nimport { BaseListComponent } from './_base/base-list/base-list.component';\r\nimport { DropdownComponent } from './controls/dropdown/dropdown.component'\r\nimport { BaseFormComponent } from './_base/base-form/base-form.component';\r\nimport { TextBoxComponent } from './controls/text-box/text-box.component';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DateComponent } from './controls/date/date.component';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { FileUploadComponent } from './controls/file-upload/file-upload.component';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { CapitalizeWordsPipe } from './pipe/capitalize-words.pipe';\r\nimport { TextAreaComponent } from './controls/text-area/text-area.component';\r\nimport { QueueSearchCustomerComponent } from './components/queue-search-customer/queue-search-customer.component';\r\nimport { BlockListComponent } from './components/list/block-list.component';\r\nimport { HasPermissionDirective } from './directives/permission.directive';\r\n\r\n@NgModule({\r\n \r\n declarations: [ SidebarComponent, QueueSearchCustomerComponent,HasPermissionDirective],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n InputTextModule,\r\n ButtonModule,\r\n DropdownModule,\r\n InputGroupModule,\r\n CardModule,\r\n SidebarModule,\r\n CheckBoxComponent,\r\n DragDropModule,\r\n FormContainerComponent,\r\n BaseListComponent,\r\n DropdownComponent,\r\n BaseListComponent,\r\n TextBoxComponent,\r\n InputTextareaModule,\r\n DividerModule,\r\n DateComponent,\r\n DialogModule,\r\n TimelineModule,\r\n ListboxModule,\r\n CheckboxModule,\r\n FileUploadComponent,\r\n FileUploadModule,\r\n CapitalizeWordsPipe,\r\n TextAreaComponent,\r\n BaseFormComponent,\r\n BlockListComponent\r\n ],\r\n exports: [ HasPermissionDirective,CapitalizeWordsPipe,TextBoxComponent,FormsModule,ListboxModule,DialogModule,CheckboxModule,DropdownComponent,FormContainerComponent, BaseListComponent, SidebarComponent, DividerModule, CardModule, QueueSearchCustomerComponent, BlockListComponent]\r\n})\r\nexport class SharedModule { }\r\n","export class HEADERS{\r\n static API_MANAGEMENT = \"Api Management\";\r\n static DICTIONARY_FORM = \"Dictionary Form\";\r\n}","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'username',\r\n standalone: true,\r\n imports: [CommonModule, InputTextModule,FormsModule],\r\n templateUrl: './username.component.html',\r\n styleUrls: ['./username.component.scss'],\r\n})\r\nexport class UsernameComponent extends BaseControlComponent {\r\n\r\n \r\n}\r\n","<ng-container>\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"username-control\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-envelope\"></i>\r\n <input pInputText type=\"text\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"attributeModel.placeholder ?? ''\" \r\n [ngModel]=\"record[attributeModel.name]\"\r\n [required]=\"attributeModel.isRequired ?? false\" \r\n [disabled]=\"attributeModel.readonly ?? false\"\r\n #usernameField=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, usernameField.valid)\" \r\n />\r\n </span>\r\n </div>\r\n </ng-container>","import { Component , OnInit} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { BaseQuery } from '../../state/base.query';\r\n\r\n@Component({\r\n selector: 'password',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './password.component.html',\r\n styleUrl: './password.component.scss',\r\n})\r\nexport class PasswordComponent extends BaseControlComponent {\r\n invalidPasswordErrorMsg: string | undefined\r\n \r\n constructor(baseStore: BaseStore<any>, baseQuery: BaseQuery<any>){\r\n super(baseStore, baseQuery)\r\n }\r\n\r\n ngOninit():void{\r\n this.invalidPasswordErrorMsg = \"Invalid Password\";\r\n }\r\n\r\n}\r\n","<ng-container>\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"password-control\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-key\"></i>\r\n <input type=\"password\" autocomplete=\"off\" pInputText [placeholder]=\"attributeModel.placeholder ?? ''\"\r\n [ngModel]=\"record[attributeModel.name]\" [required]=\"attributeModel.isRequired ?? false\" #passwordField=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, passwordField.valid)\" [ngClass]=\"{\r\n 'ng-dirty ng-invalid': !passwordField.valid && error == attributeModel.name\r\n }\" class=\"block p-inputtext\" />\r\n\r\n </span>\r\n </div>\r\n @if (!passwordField.valid && passwordField.dirty) {\r\n <div>\r\n <small id=\"password-help\" class=\"p-error\">{{\r\n invalidPasswordErrorMsg\r\n }}</small>\r\n </div>\r\n }\r\n\r\n</ng-container>","export class CSS {\r\n static DIALOGUE_BREAKPOINTS = {\r\n '960px': '75vw',\r\n '640px': '90vw'\r\n }\r\n static DIALOGUE_OVERFLOW = { overflow: 'auto' }\r\n static DIALOGUE_WIDTH = '100vw'\r\n static DIALOGUE_HIGHT = '100vh'\r\n}","import { SelectItem } from \"primeng/api\";\r\n\r\nexport class AttributeModel {\r\n displayText ?: string;\r\n readonly ?: boolean;\r\n name ?: any;\r\n isRequired?: boolean;\r\n placeholder?: string;\r\n maxLength?: number;\r\n infoText?: string;\r\n buttonLabel?: string;\r\n isDisabled?: boolean;\r\n customButtonWidth?: string;\r\n isPrimary?: number;\r\n title?: string;\r\n customColumnWidth?: string;\r\n customHeight?: string;\r\n icon?: string;\r\n iconPosition?: 'left' | 'right';\r\n customPadding?: string;\r\n dataSource?: string;\r\n listValueProperty?: string;\r\n listLabelProperty?: string;\r\n options?: SelectItem[];\r\n childListName?: any;\r\n childListKey?:any;\r\n inputId?:string;\r\n allowFraction?:string = 'Y'\r\n numberMode?:string;\r\n currency?:string;\r\n locale ?: 'en-GB';\r\n tooltip?:string;\r\n toolTipPosition?:string\r\n hourFormat?:string\r\n yearRange?:string\r\n showCalenderIcon ?: boolean\r\n additionalFilterList?:string\r\n additionalFilterKey?:string\r\n lookupName?:any\r\n textColorOnReadonly ?: any\r\n hideLabelOnForm?:boolean = false;\r\n disable ?: boolean = false;\r\n filter ?: boolean = false\r\n}","export class BaseModel{\r\n _id ?: any\r\n [key: string]: any;\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { SessionService } from '../session.service';\r\nimport { map, Observable, of, tap } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(public _sessionService : SessionService,private _router: Router) {}\r\n\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): Observable<boolean> {\r\n return of(this._sessionService.getSessionID()).pipe(\r\n tap((sessionID) => {\r\n if (!sessionID) {\r\n this._router.navigateByUrl(\"auth/login\" + \"?returnUrl=\" + state.url);\r\n }\r\n }),\r\n map((sessionID) => !!sessionID)\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { BaseModel } from '../../models/base.model';\r\n\r\n@Component({\r\n selector: 'lib-base-container',\r\n templateUrl: './base-container.component.html',\r\n styleUrl: './base-container.component.scss',\r\n})\r\nexport class BaseContainerComponent<T extends BaseModel>{\r\n constructor(protected service : BaseService<T>){\r\n\r\n }\r\n init(){\r\n this.service.initList()\r\n }\r\n\r\n}\r\n","<p>base-container works!</p>\r\n","export class LOOKUPS{\r\n static DOCUMENTTYPE = 'DocumentType'\r\n}","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Table, TableModule } from 'primeng/table';\r\nimport { TablePrimaryModel, tableSortOrderModel } from '../models/table-primary.model';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { Router } from '@angular/router';\r\nimport { SHARED, statusList } from '../../constant/SHARED';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { TableBuilder } from '../../services/table.builder';\r\nimport { MetaDataModel } from '../../models/meta-data.model';\r\nimport { ERROR } from '../../constant/ERROR';\r\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { HasPermissionDirective } from '../../directives/permission.directive';\r\nimport { SharedModule } from '../../shared.module';\r\n@Component({\r\n selector: 'lib-table-primary',\r\n standalone: true,\r\n imports: [CommonModule, SharedModule,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, RadioButtonModule, PaginatorModule, DropdownModule ],\r\n templateUrl: './table-primary.component.html',\r\n styleUrl: './table-primary.component.scss',\r\n})\r\nexport class TablePrimaryComponent implements OnInit, OnDestroy {\r\n @Input() table!: TablePrimaryModel;\r\n @Input() metaData!: MetaDataModel;\r\n @Input() title!: string;\r\n \r\n @Input() showStatus = true;\r\n @Input() showActions = true;\r\n @Input() showSearchBar = true;\r\n @Input() showNewRecordButton = true;\r\n @Input() showRefreshButton = true;\r\n @Input() pathName!: string;\r\n @ViewChild(SHARED.DT2) dt2: Table | undefined;\r\n @ViewChild(SHARED.PAGINATOR) paginator!: Paginator;\r\n globalFilter: string = SHARED.EMPTY;\r\n page!: number;\r\n limit!: number;\r\n recordNumber!: number;\r\n columnName!: string;\r\n sortOrders: tableSortOrderModel = {};\r\n currentSortOrder!: string;\r\n isDataActive: any;\r\n statusList: any = statusList;\r\n isActive!: boolean | string;\r\n private searchSubject$ = new Subject<string>();\r\n private destroy$ = new Subject<void>();\r\n private templateDestroy$ = new Subject<void>();\r\n\r\n constructor(private _router: Router, private service: BaseService<any>, protected builder: TableBuilder, private baseQuery: BaseQuery<any>) {}\r\n\r\n ngOnInit(): void {\r\n this.isDataActive = this.statusList[0];\r\n if (this.table.headers.length === 0) {\r\n console.error('Table headers are missing.');\r\n }\r\n\r\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\r\n\r\n this.baseQuery.getSelectedTemplate()\r\n .pipe(takeUntil(this.templateDestroy$))\r\n .subscribe((type: string) => {\r\n this.fetchTableData(type)\r\n })\r\n\r\n this.searchSubject$.pipe(\r\n debounceTime(500), \r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n ).subscribe(value => {\r\n this.globalFilter = value;\r\n this.fetchData(value);\r\n });\r\n }\r\n\r\n handleRadioChange(newValue: string) {\r\n if (newValue === SHARED.ALL) {\r\n this.isActive = SHARED.EMPTY;\r\n } else if (newValue === SHARED.ACTIVE) {\r\n this.isActive = true;\r\n } else if (newValue === SHARED.IN_ACTIVE) {\r\n this.isActive = false;\r\n }\r\n this.fetchTableData(); \r\n }\r\n\r\n onSearchChange(value: string) {\r\n this.searchSubject$.next(value);\r\n }\r\n \r\n fetchData(value: string) {\r\n if(value === null) return;\r\n this.page = 1;\r\n if (this.paginator) {\r\n this.paginator.first = 0;\r\n this.paginator.changePage(0);\r\n }\r\n return this.fetchTableData();\r\n }\r\n\r\n onStatusChange(event:any){\r\n let status = event.value.name;\r\n if (status === SHARED.ALL) {\r\n this.isActive = SHARED.EMPTY;\r\n } else if (status === SHARED.ACTIVE) {\r\n this.isActive = true;\r\n } else if (status === SHARED.IN_ACTIVE) {\r\n this.isActive = false;\r\n }\r\n this.fetchTableData(); \r\n }\r\n\r\n private fetchTableData(type?: string) {\r\n this.service.getPaginatedList(this.globalFilter, this.page, this.limit, this.columnName, this.currentSortOrder, type, this.isActive, this.pathName).subscribe({\r\n next: (res: any) => {\r\n this.table.records = res.data;\r\n this.metaData = res.metadata;\r\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\r\n },\r\n error: (err) => {\r\n console.error(ERROR.ERROR_FETCHING_DATA, err);\r\n }\r\n });\r\n }\r\n\r\n clearSearch(table: any) {\r\n this.globalFilter = SHARED.EMPTY;\r\n table.clear(); \r\n }\r\n\r\n refreshTable() {\r\n }\r\n\r\n handleCreate() {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\r\n }\r\n\r\n handleEditClick(id: number) {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\r\n }\r\n\r\n handleSortColumn(columnName: string) {\r\n this.columnName = columnName; \r\n this.sortOrders[columnName] = this.sortOrders[columnName] === SHARED.ASC ? SHARED.DESC : SHARED.ASC;\r\n this.currentSortOrder = this.sortOrders[columnName];\r\n this.fetchTableData();\r\n }\r\n\r\n editRow(rowData: any) {\r\n console.log('Edit Row:', rowData);\r\n }\r\n\r\n deleteRow(rowData: any) {\r\n console.log('Delete Row:', rowData);\r\n }\r\n\r\n viewRow(rowData: any) {\r\n console.log('Delete Row:', rowData);\r\n }\r\n\r\n decodeHtml(html: string): string {\r\n try {\r\n return JSON.parse(html);\r\n } catch (e) {\r\n return html;\r\n }\r\n }\r\n\r\n handleLoadRecords(event: any) {\r\n this.page = (event.first / event.rows) + 1;\r\n this.limit = event.rows; \r\n this.fetchTableData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.templateDestroy$.next();\r\n this.templateDestroy$.complete();\r\n }\r\n}\r\n","<p-table #dt2 [lazy]=\"true\" \r\n [paginator]=\"false\"\r\n [rows]=\"metaData.itemsPerPage\"\r\n [totalRecords]=\"metaData.totalItems\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n (onPage)=\"handleLoadRecords($event)\"\r\n [ngClass]=\"{'no-pagination': metaData.totalItems <= 10}\"\r\n [columns]=\"table.headers\" class=\"table-primary-container\" [value]=\"table.records\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header-wrapper flex align-items-center justify-content-between\">\r\n <h3 class=\"text-color table-title-wrapper text-color m-0\">{{title}}</h3>\r\n <div class=\"flex align-items-center w-full\" *ngIf=\"showSearchBar\">\r\n <div class=\"grid m-0 flex align-items-center w-full\">\r\n <div class=\"col-8 pl-0\">\r\n <input pInputText type=\"text\" [(ngModel)]=\"globalFilter\" (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"'Search ...'\" class=\"search-input-wrapper w-full\" />\r\n </div>\r\n <div class=\"col-4 pr-0 flex align-items-center justify-content-end gap-2 filter-dropdown-wrapper\">\r\n <p-dropdown \r\n [options]=\"statusList\" \r\n [(ngModel)]=\"isDataActive\" \r\n optionLabel=\"name\" \r\n placeholder=\"Status\"\r\n (onChange)=\"onStatusChange($event)\"\r\n />\r\n <p-button icon=\"pi pi-cog\" class=\"setting-icon-wrapper ml-3\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Header Template -->\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr *ngIf=\"table.headers.length > 0\">\r\n <th *ngFor=\"let col of table.headers\" class=\"p-4\" [ngClass]=\"col.width ? col.width : 'w-full'\">\r\n <h4 class=\"flex align-items-center table-header-title capitalize text-color font-semibold m-0\" [pSortableColumn]=\"col.name\" (click)=\"handleSortColumn(col.name)\">\r\n <span class=\"table-title-wrapper text-overflow-wrapper p-0 mt-1\">{{ col.name }}</span>\r\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\r\n </h4>\r\n </th>\r\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'\">\r\n <h4 class=\"text-color font-semibold table-title-wrapper text-overflow-wrapper capitalize m-0\">Actions</h4></th>\r\n </tr>\r\n </ng-template>\r\n\r\n <!-- Table Body -->\r\n <ng-template pTemplate=\"body\" let-rowData>\r\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\r\n <td class=\"text-left p-4\" *ngFor=\"let col of table.headers\">\r\n <div class=\"table-text-wrapper text-overflow-wrapper p-0\" \r\n [ngClass]=\"{\r\n 'enable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Enable',\r\n 'disable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Disable',\r\n 'w-8': col.name.toLowerCase() === 'status',\r\n 'text-primary font-semibold': col.name.toLowerCase() === 'action' || col.name.toLowerCase() === 'name'\r\n }\"\r\n >\r\n <span *ngIf=\"col.name.toLowerCase() === 'body'; else normalText\" [innerHTML]=\"decodeHtml(rowData[col.name])\"></span>\r\n <ng-template #normalText>\r\n {{ rowData[col.name] }}\r\n </ng-template>\r\n <p *ngIf=\"col.name.toLowerCase() === 'action'\" class=\"text-color font-normal\">{{rowData['apiEndPoint']}}</p>\r\n </div>\r\n </td>\r\n\r\n <!-- Actions -->\r\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left p-4\">\r\n <div class=\"flex align-items-center\">\r\n <p-button icon=\"pi pi-pencil\" [permission]=\"this.table.editPermission\" (click)=\"handleEditClick(rowData._id)\" class=\"edit-icon-wrapper mr-3\"></p-button>\r\n <p-button icon=\"pi pi-trash\" [permission]=\"this.table.deletePermission\" (click)=\"deleteRow(rowData)\" class=\"delete-icon-wrapper mr-3\"></p-button>\r\n </div>\r\n </td>\r\n <!-- <p-button icon=\"pi pi-eye\" (click)=\"viewRow(rowData)\" class=\"view-icon-wrapper icon-position-wrapper table-group-wrapper-hover:visible\"></p-button> -->\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0)\" class=\"text-center text-color font-semibold p-4\">\r\n No records found\r\n </td>\r\n </tr>\r\n </ng-template>\r\n</p-table>\r\n\r\n<div *ngIf=\"metaData.totalItems > 10\" class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper bg-white\">\r\n <div class=\"pagination-text text-color\">\r\n Showing {{ (metaData.currentPage - 1) * metaData.itemsPerPage + 1 }} to {{ recordNumber }} of {{ metaData?.totalItems || 0 }} entries\r\n </div>\r\n \r\n <p-paginator\r\n #paginator\r\n [rows]=\"metaData.itemsPerPage\"\r\n [totalRecords]=\"metaData.totalItems\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n (onPageChange)=\"handleLoadRecords($event)\"\r\n ></p-paginator>\r\n </div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TableModule } from 'primeng/table';\r\n\r\n@Component({\r\n selector: 'lib-skeleton',\r\n standalone: true,\r\n imports: [CommonModule, SkeletonModule, TableModule],\r\n templateUrl: './skeleton.component.html',\r\n styleUrl: './skeleton.component.scss'\r\n})\r\nexport class SkeletonComponent implements OnInit {\r\n products: any[] = [];\r\n @Input() count: number = 1;\r\n @Input() columns: any;\r\n @Input() width: string = '100%';\r\n @Input() height: string = '2rem';\r\n @Input() isAllowCard: boolean = false;\r\n\r\n ngOnInit() {\r\n this.products = Array.from({ length: this.count }).map((_, i) => `Item #${i}`);\r\n }\r\n}\r\n","<div [ngClass]=\"{'card': isAllowCard}\">\r\n <div *ngFor=\"let col of products\" class=\"mb-5\">\r\n <p-skeleton [width]=\"width\" [height]=\"height\" />\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\nexport type RiskRating = 'Low' | 'Medium' | 'High';\r\nexport type ApplicationType = 'BTL' | 'HPP';\r\nexport type PurchaseType = 'Purchase' | 'Refinance';\r\nexport type TaskStatus = 'Not Started' | 'In-progress' | 'Completed';\r\nexport type Category = 'UK' | 'Ex-Pat' | 'Intl';\r\nexport type EPC = 'A or B (Green)';\r\n\r\nexport interface QueueFilter {\r\n riskRating: RiskRating[];\r\n applicationType: ApplicationType[];\r\n purchaseType: PurchaseType[];\r\n taskStatus: TaskStatus[];\r\n category: Category[];\r\n epc: EPC[];\r\n vulnerableCustomer: boolean | null;\r\n financeMin: number | null;\r\n financeMax: number | null;\r\n pendingDays: number | null;\r\n assignedUnderwriter: string[];\r\n}\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class QueueFilterDropdownService {\r\n private filter: QueueFilter = {\r\n riskRating: [],\r\n applicationType: [],\r\n purchaseType: [],\r\n taskStatus: [],\r\n category: [],\r\n epc: [],\r\n vulnerableCustomer: null,\r\n financeMin: null,\r\n financeMax: null,\r\n pendingDays: null,\r\n assignedUnderwriter: []\r\n };\r\n\r\n setRiskRating(rating: RiskRating) {\r\n const arr = this.filter.riskRating;\r\n const idx = arr.indexOf(rating);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(rating);\r\n }\r\n setApplicationType(type: ApplicationType) {\r\n const arr = this.filter.applicationType;\r\n const idx = arr.indexOf(type);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(type);\r\n }\r\n setPurchaseType(type: PurchaseType) {\r\n const arr = this.filter.purchaseType;\r\n const idx = arr.indexOf(type);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(type);\r\n }\r\n setTaskStatus(status: TaskStatus) {\r\n const arr = this.filter.taskStatus;\r\n const idx = arr.indexOf(status);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(status);\r\n }\r\n setCategory(category: Category) {\r\n const arr = this.filter.category;\r\n const idx = arr.indexOf(category);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(category);\r\n }\r\n setEpc(epc: EPC) {\r\n const arr = this.filter.epc;\r\n const idx = arr.indexOf(epc);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(epc);\r\n }\r\n setVulnerableCustomer(value: boolean | null) {\r\n this.filter.vulnerableCustomer = value;\r\n }\r\n setFinanceMin(min: number | null) {\r\n this.filter.financeMin = min;\r\n }\r\n setFinanceMax(max: number | null) {\r\n this.filter.financeMax = max;\r\n }\r\n setPendingDays(days: number | null) {\r\n this.filter.pendingDays = days;\r\n }\r\n\r\n setAssignedUnderwriter(ids: string[]) {\r\n this.filter.assignedUnderwriter = Array.isArray(ids) ? ids : [];\r\n }\r\n\r\n setAllFilters(filters: QueueFilter) {\r\n this.filter = {\r\n riskRating: [...(filters.riskRating || [])],\r\n applicationType: [...(filters.applicationType || [])],\r\n purchaseType: [...(filters.purchaseType || [])],\r\n taskStatus: [...(filters.taskStatus || [])],\r\n category: [...(filters.category || [])],\r\n epc: [...(filters.epc || [])],\r\n vulnerableCustomer: filters.vulnerableCustomer,\r\n financeMin: filters.financeMin,\r\n financeMax: filters.financeMax,\r\n pendingDays: filters.pendingDays,\r\n assignedUnderwriter: [...(filters.assignedUnderwriter || [])]\r\n };\r\n }\r\n\r\n getFilters(): QueueFilter {\r\n return {\r\n riskRating: [...this.filter.riskRating],\r\n applicationType: [...this.filter.applicationType],\r\n purchaseType: [...this.filter.purchaseType],\r\n taskStatus: [...this.filter.taskStatus],\r\n category: [...this.filter.category],\r\n epc: [...this.filter.epc],\r\n vulnerableCustomer: this.filter.vulnerableCustomer,\r\n financeMin: this.filter.financeMin,\r\n financeMax: this.filter.financeMax,\r\n pendingDays: this.filter.pendingDays,\r\n assignedUnderwriter: [...this.filter.assignedUnderwriter]\r\n };\r\n }\r\n\r\n hasFilters(): boolean {\r\n return (\r\n this.filter.riskRating.length > 0 ||\r\n this.filter.applicationType.length > 0 ||\r\n this.filter.purchaseType.length > 0 ||\r\n this.filter.taskStatus.length > 0 ||\r\n this.filter.category.length > 0 ||\r\n this.filter.epc.length > 0 ||\r\n this.filter.vulnerableCustomer !== null ||\r\n this.filter.financeMin !== null ||\r\n this.filter.financeMax !== null ||\r\n this.filter.pendingDays !== null ||\r\n this.filter.assignedUnderwriter.length > 0\r\n );\r\n }\r\n\r\n getFilterCount(): number {\r\n let count = 0;\r\n count += this.filter.riskRating.length;\r\n count += this.filter.applicationType.length;\r\n count += this.filter.purchaseType.length;\r\n count += this.filter.taskStatus.length;\r\n count += this.filter.category.length;\r\n count += this.filter.epc.length;\r\n if (this.filter.vulnerableCustomer !== null) count++;\r\n if (this.filter.financeMin !== null) count++;\r\n if (this.filter.financeMax !== null) count++;\r\n if (this.filter.pendingDays !== null) count++;\r\n count += this.filter.assignedUnderwriter.length;\r\n return count;\r\n }\r\n\r\n clearAll() {\r\n this.filter = {\r\n riskRating: [],\r\n applicationType: [],\r\n purchaseType: [],\r\n taskStatus: [],\r\n category: [],\r\n epc: [],\r\n vulnerableCustomer: null,\r\n financeMin: null,\r\n financeMax: null,\r\n pendingDays: null,\r\n assignedUnderwriter: []\r\n };\r\n }\r\n\r\n /**\r\n * Builds a query string for API calls based on the current filter values.\r\n * Maps UI filter values to API parameters.\r\n */\r\n\r\n public buildFilterQueryString(filters: QueueFilter): string {\r\n if (!filters || Object.keys(filters).length === 0) {return '';}\r\n const filterParams: Record<string, string> = {};\r\n \r\n // Map filter properties to API parameters\r\n if (filters.riskRating && filters.riskRating.length > 0) {\r\n filterParams['risk'] = filters.riskRating.join(',');}\r\n if (filters.applicationType && filters.applicationType.length > 0) {\r\n filterParams['lendingType'] = filters.applicationType.join(',');}\r\n if (filters.purchaseType && filters.purchaseType.length > 0) {\r\n filterParams['purchaseType'] = filters.purchaseType.join(',');}\r\n if (filters.category && filters.category.length > 0) {\r\n filterParams['category'] = filters.category.join(',');}\r\n if (filters.epc && filters.epc.length > 0) {\r\n filterParams['epc'] = filters.epc.join(',');}\r\n if (filters.vulnerableCustomer !== null && filters.vulnerableCustomer !== undefined) {\r\n filterParams['vulnerable'] = String(filters.vulnerableCustomer);\r\n }\r\n // Add mapping for taskStatus UI values to API values\r\n const taskStatusMap: Record<string, string> = {\r\n 'Not Started': 'notStarted','In-progress': 'inProgress','Completed': 'completed'};\r\n if (filters.taskStatus && filters.taskStatus.length > 0) {\r\n filterParams['taskStatus'] = filters.taskStatus.map(status => taskStatusMap[status] || status).join(',');}\r\n if (filters.financeMin !== null && filters.financeMin !== undefined) {\r\n filterParams['minFinanace'] = filters.financeMin.toString(); } \r\n if (filters.financeMax !== null && filters.financeMax !== undefined) {\r\n filterParams['maxFinanace'] = filters.financeMax.toString();}\r\n if (filters.pendingDays !== null && filters.pendingDays !== undefined) {\r\n filterParams['pendingDays'] = filters.pendingDays.toString(); }\r\n if (filters.assignedUnderwriter && filters.assignedUnderwriter.length > 0) {\r\n filterParams['underwriterId'] = filters.assignedUnderwriter.join(','); }\r\n\r\n return new URLSearchParams(filterParams).toString();}\r\n} ","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\r\nimport { ROUTES } from '../../shared/constant/ROUTES';\r\nimport { queuePriorityOrder, SHARED } from '../../shared/constant/SHARED';\r\nimport { SessionService } from '../../shared/services/session.service';\r\nimport { QueueFilterDropdownService } from './queue-filter-dropdown.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueueBusinessService {\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n private router: Router,\r\n private sessionService: SessionService,\r\n private queueFilterDropdownService: QueueFilterDropdownService\r\n ) {}\r\n\r\n filterQueuesByStatus(queues: any[], status: string): any[] {\r\n if (!queues) return [];\r\n switch (status) {\r\n case 'inactive':\r\n return queues.filter(queue => !queue.isActive);\r\n case 'active':\r\n return queues.filter(queue => queue.isActive);\r\n default:\r\n return [...queues];\r\n }\r\n }\r\n\r\n /**\r\n * The rest follow in their original order.\r\n */\r\n orderQueuesByPriority(queues: any[]): any[] {\r\n const desiredOrder = queuePriorityOrder;\r\n const orderMap = new Map(desiredOrder.map((name, idx) => [name, idx]));\r\n return [...queues].sort((a, b) => {\r\n const aIdx = orderMap.has(a.name) ? orderMap.get(a.name)! : Number.POSITIVE_INFINITY;\r\n const bIdx = orderMap.has(b.name) ? orderMap.get(b.name)! : Number.POSITIVE_INFINITY;\r\n return aIdx - bIdx;\r\n });\r\n }\r\n\r\n getFirstQueueId(filteredQueues: any[]): string | null {\r\n return filteredQueues.length > 0 ? filteredQueues[0]._id : null;\r\n }\r\n\r\n navigateToQueue(queueId: string, showQueueDataForm: boolean): void {\r\n if (showQueueDataForm) {\r\n this.router.navigateByUrl(ROUTES.QUEUE_FORM + queueId);\r\n }\r\n }\r\n\r\n navigateToInsertQueue(): void {\r\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO]);\r\n }\r\n\r\n getUserRole(): boolean {\r\n const userSession = this.sessionService.getUserSession();\r\n return userSession?.roles?.includes('EnterpriseAdmins') || false;\r\n }\r\n\r\n storeSelectedQueue(queueId: string): void {\r\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\r\n }\r\n\r\n storeApplicationData(record: any): void {\r\n localStorage.setItem(SHARED.selectedApplication, record._id);\r\n localStorage.setItem(SHARED.selectedApplicationNumber, record.applicationNumber);\r\n localStorage.setItem(SHARED.selectedApplicationType, record.applicationType);\r\n }\r\n\r\n createDebouncedSearch(delay: number = 500) {\r\n const searchSubject = new Subject<string>();\r\n return searchSubject.pipe(\r\n debounceTime(delay),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n );\r\n }\r\n\r\n buildQueryString(record: any): string {\r\n const queryParams: Record<string, string> = {\r\n type: record.type ?? SHARED.EMPTY,\r\n status: record.status ?? SHARED.EMPTY\r\n };\r\n const filteredQueryParams = Object.fromEntries(\r\n Object.entries(queryParams).filter(([_, value]) => value)\r\n );\r\n return new URLSearchParams(filteredQueryParams).toString();\r\n }\r\n\r\n calculatePagination(event: any): { page: number; limit: number } {\r\n return {\r\n page: (event.first / event.rows) + 1,\r\n limit: event.rows\r\n };\r\n }\r\n\r\n mapApiMetadata(res: any, targetPage: number, targetLimit: number): any {\r\n return {\r\n totalItems: res?.metadata?.total || res?.data?.length || 0,\r\n currentPage: res?.metadata?.page || targetPage,\r\n itemsPerPage: res?.metadata?.limit || targetLimit,\r\n totalPages: res?.metadata?.totalPages || \r\n Math.ceil((res?.metadata?.total || res?.data?.length || 0) / targetLimit)\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n} ","import { Injectable } from \"@angular/core\";\r\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\r\nimport { createInitialState, QueueState } from \"./queue.state\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { BaseStore } from \"../../shared/state/base.store\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\n@StoreConfig({ name: \"queues\" })\r\nexport class QueueStore extends BaseStore<QueueModel> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n setSelectedQueueId(data: any) {\r\n this.update({ selectedQueueId: data });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseQuery } from '../../shared';\r\nimport { Observable } from 'rxjs';\r\nimport { QueueModel } from '../models/queue.model';\r\nimport { QueueStore } from './queue.store';\r\n\r\n\r\n/**\r\n * Widget Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class QueueQuery extends BaseQuery<QueueModel> {\r\n\r\n constructor(protected override store: QueueStore) {\r\n super(store);\r\n }\r\n\r\n getSelectedQueueId() : Observable<any> {\r\n return this.select(state => state['selectedQueueId']);\r\n }\r\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { TableBuilder } from '../../services/table.builder';\r\nimport { MetaDataModel } from '../../models/meta-data.model';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { ERROR } from '../../constant/ERROR';\r\nimport { TableSecondaryModel } from '../models/table-secondary.model';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as columnStylesJson from '../../../queue/constants/column-styles.json';\r\nimport {RoundProgressModule} from 'angular-svg-round-progressbar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { QueueBusinessService } from '../../../queue/services/queue-business.service';\r\nimport { QueueQuery } from '../../../queue/state/queue.query';\r\nimport { SkeletonComponent } from '../../components/skeleton/skeleton.component';\r\n\r\n/**\r\n * A reusable table component that displays dynamic data using PrimeNG's Table.\r\n * Supports features like pagination, search, row actions, selection, and routing.\r\n */\r\n@Component({\r\n selector: 'lib-table-secondary',\r\n standalone: true,\r\n imports: [CommonModule, SkeletonComponent,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, PaginatorModule, RoundProgressModule, CheckboxModule],\r\n templateUrl: './table-secondary.component.html',\r\n styleUrl: './table-secondary.component.scss'\r\n})\r\nexport class TableSecondaryComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() table!: TableSecondaryModel;\r\n @Input() metaData: MetaDataModel = {\r\n totalItems: 0,\r\n currentPage: 1,\r\n itemsPerPage: 10,\r\n totalPages: 0\r\n };\r\n @Input() title!: string;\r\n @Input() builder : any\r\n @Input() showStatus = true;\r\n @Input() showActions = true;\r\n @Input() showSearchBar = true;\r\n @Input() showNewRecordButton = true;\r\n @Input() showRefreshButton = true;\r\n @Input() isShowSkeleton: boolean = false; // Flag to control skeleton display\r\n isSelectAll: boolean = false;\r\n @Input() pathName!: string;\r\n @Input() selectionMode: 'single' | 'multiple' | undefined;\r\n @Input() selection: any;\r\n @Input() usePagination = true; // ✅ Pagination control\r\n @Input() scrollHeight!: string;\r\n @Output() selectionChange = new EventEmitter<any>();\r\n @Input() rowSelection: any;\r\n @Output() rowSelectionChange = new EventEmitter<any>();\r\n @Output() sortChanged = new EventEmitter<any>();\r\n @Input() enableSelection = true;\r\n @Input() noRecordsMessage: string = 'No records found';\r\n recordNumber!: number;\r\n page: number = 1;\r\n limit: number = 10;\r\n first : number = 0\r\n globalFilter: string = SHARED.EMPTY;\r\n @Input() sortField: string = '';\r\n @Input() sortOrder: number = 1;\r\n private destroy$ = new Subject<void>();\r\n @ViewChild('paginator') paginator!: Paginator;\r\n @Output() onDeleteRow = new EventEmitter<any>();\r\n @Input() searchTerm: string = SHARED.EMPTY;\r\n @Input() filterQuery: string = SHARED.EMPTY;\r\n @Output() onPage = new EventEmitter<any>();\r\n tableNgClassExpression: string = '';\r\n excludedApplicationIds: any[] = [];\r\n userRole: Array<string> | null = [];\r\n isUwLogin: boolean = false;\r\n allQueueList: any;\r\n selectedQueueName!: string;\r\n columnStyles: any = (columnStylesJson as any).columnStyles;\r\n\r\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) { }\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties are initialized.\r\n * Initializes the record count and validates table headers.\r\n */\r\n ngOnInit(): void {\r\n if (this.table && this.table.headers && this.table.headers.length === 0) {\r\n console.error('Table headers are missing.');}\r\n this.updateRecordNumber();\r\n this.baseQuery.selectPage().pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n if (this.paginator) {\r\n this.paginator.first = 0;}});\r\n\r\n const userRole = this.sessionService.getAllUserRole();\r\n this.isUwLogin = userRole.includes('Underwriter User') && !userRole.includes('TeamLeader');\r\n // Load tableStyles ngClass expression from config\r\n const tableStyles = (columnStylesJson as any).tableStyles;\r\n if (tableStyles && tableStyles.ngClass) {\r\n this.tableNgClassExpression = tableStyles.ngClass;}\r\n\r\n this.baseStore.queueList$.pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n this.allQueueList = res;})\r\n\r\n this.queueQuery.getSelectedQueueId().pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n const selectedQueue = this.allQueueList.filter((val:any) => val._id === res);\r\n this.isSelectAll = false;\r\n this.excludedApplicationIds = [];\r\n if(selectedQueue && selectedQueue.length > 0) {\r\n this.selectedQueueName = selectedQueue[0].name;}})}\r\n\r\n /**\r\n * Lifecycle hook called when any data-bound property changes.\r\n * Resets pagination if page is changed.\r\n */\r\n ngOnChanges(): void {\r\n this.updateRecordNumber();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private updateRecordNumber(): void {\r\n const currentPage = this.metaData?.currentPage ?? 1;\r\n const itemsPerPage = this.metaData?.itemsPerPage ?? 10;\r\n const totalItems = this.metaData?.totalItems ?? 0;\r\n this.recordNumber = Math.min(currentPage * itemsPerPage, totalItems);\r\n }\r\n\r\n /**\r\n * Returns the unique key used to identify each row in the table.\r\n * @returns {string} The data key used for identifying rows, or an empty string if not set.\r\n */\r\n get validDataKey(): string {\r\n return this.table?.dataKey ?? SHARED.EMPTY;\r\n }\r\n\r\n /**\r\n * Clears the global search filter and resets the table.\r\n * @param {any} table - The PrimeNG table instance.\r\n */\r\n clearSearch(table: any) {\r\n this.globalFilter = SHARED.EMPTY;\r\n table.clear();\r\n }\r\n\r\n /**\r\n * Navigates to the route for creating a new record.\r\n */\r\n handleCreate() {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\r\n }\r\n\r\n /**\r\n * Navigates to the edit page for the given record ID.\r\n * @param {number} id - The ID of the record to edit.\r\n */\r\n handleEditClick(id: number) {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\r\n }\r\n\r\n get isAllCurrentPageSelected(): boolean {\r\n if (!this.table?.records?.length || !this.selection?.length) return false;\r\n const dataKey = this.validDataKey || '_id';\r\n return this.table.records.every(\r\n row => this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\r\n );\r\n }\r\n\r\n handleSelectAllRowData(checked: boolean) {\r\n this.isSelectAll = checked;\r\n this.excludedApplicationIds = [];\r\n const dataKey = this.validDataKey || '_id';\r\n if (checked) {\r\n // Add all current page rows to selection, avoiding duplicates\r\n const newSelection = [\r\n ...this.selection,\r\n ...this.table.records.filter(\r\n row => !this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\r\n ),\r\n ];\r\n this.selection = newSelection;\r\n } else {\r\n // Remove current page rows from selection\r\n const currentPageIds = this.table.records.map(row => row[dataKey]);\r\n this.selection = this.selection.filter(\r\n (sel: any) => !currentPageIds.includes(sel[dataKey])\r\n );}\r\n this.baseStore.setIsAllRowSelected(this.isSelectAll);\r\n this.selectionChange.emit(this.selection);\r\n }\r\n \r\n /**\r\n * Logs row data intended for editing.\r\n * @param {any} rowData - The data of the row to edit.\r\n */\r\n editRow(rowData: any) {\r\n console.log('Edit Row:', rowData);\r\n }\r\n\r\n /**\r\n * Handles the deletion of a row by emitting the row data and preventing event propagation.\r\n * @param {Event} event - The DOM event triggered by the delete action.\r\n * @param {any} rowData - The data object of the row to be deleted.\r\n */\r\n deleteRow(event: Event, rowData: any) {\r\n this.baseStore.setUpdatedData(true);\r\n event.stopPropagation();\r\n this.onDeleteRow.emit(rowData);\r\n }\r\n\r\n /**\r\n * Logs row data intended for viewing.\r\n * @param {any} rowData - The data of the row to view.\r\n */\r\n viewRow(rowData: any) {\r\n console.log('Delete Row:', rowData);\r\n }\r\n\r\n /**\r\n * Returns CSS class for a table cell based on its content.\r\n * @param {any} col - The column definition.\r\n * @param {any} rowData - The data for the row.\r\n * @returns {string} A space-separated list of CSS classes for the cell.\r\n */\r\n getRowClass(col: any, rowData: any): string {\r\n if (!col || !col.name) return '';\r\n let classes: string[] = [];\r\n if (rowData[col.name]?.class) {\r\n classes.push(rowData[col.name]?.class);\r\n }\r\n return classes.join(' '); // Return space-separated class names\r\n }\r\n\r\n \r\n /**\r\n * Handles pagination and data reload on paginator event.\r\n * @param {object} event - The PrimeNG paginator event.\r\n * @param {number} event.first - The index of the first record in the current page.\r\n * @param {number} event.rows - The number of records per page.\r\n */\r\n handleLoadRecords(event: any) {\r\n this.page = (event.first / event.rows) + 1;\r\n this.limit = event.rows;\r\n this.isShowSkeleton = true;\r\n \r\n // Emit the pagination event to parent components\r\n this.onPage.emit(event);\r\n \r\n // If pathName is provided, use the default service method\r\n if (this.pathName) {\r\n this.service.getPaginatedList(this.searchTerm, this.page, this.limit, SHARED.UPDATEDAT, SHARED.DESC, SHARED.EMPTY, SHARED.EMPTY, this.pathName).subscribe({\r\n /**\r\n * Handles the successful response from the paginated list API.\r\n * @param {any} res - The API response containing data and metadata.\r\n */\r\n next: (res: any) => {\r\n this.table = this.builder.buildTable(res.data);\r\n this.metaData = res.metadata;\r\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems);\r\n this.isShowSkeleton = false; // Hide skeleton when data is loaded\r\n },\r\n /**\r\n * Handles any error encountered while fetching the paginated list.\r\n * @param {any} err - The error object.\r\n */\r\n error: (err) => {\r\n console.error(ERROR.ERROR_FETCHING_DATA, err);\r\n this.isShowSkeleton = false; // Hide skeleton on error\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Emits the updated selection when user changes selection in the table.\r\n * @param {any} event - The new selection data.\r\n */\r\n onSelectionChange(event: any) {\r\n this.selection = event;\r\n this.selectionChange.emit(this.selection);\r\n if(this.isSelectAll) {\r\n this.excludedApplicationIds.push(event[0]._id);}}\r\n\r\n getProgressColor(percent: number): string {\r\n if (percent === 100) {return '#22c55e';\r\n } else if (percent > 0 && percent < 100) {return '#f59e0b';\r\n } else {return 'black';}}\r\n\r\n // eslint-disable-next-line max-lines\r\n getProgressBackground(percent: number): string {\r\n if (percent === 100) {return '#C5F7D7';\r\n } else if (percent > 0 && percent < 100) {return '#ffeadc';\r\n } else {return '#F9FAFB';}}\r\n\r\n /**\r\n * Emits the selected row when a row is clicked.\r\n * @param {any} rowData - The data of the clicked row.\r\n */\r\n onRowClick(rowData: any) {\r\n this.baseStore.setUpdatedData(true);\r\n this.rowSelection = rowData;\r\n this.rowSelectionChange.emit(this.rowSelection);}\r\n\r\n /**\r\n * Handles the click event on a table row.\r\n * If row selection is enabled (`enableSelection` is true), \r\n * it delegates the event to the `onRowClick` method with the provided row data.\r\n * @param {any} rowData - The data object for the clicked table row.\r\n */\r\n handleRowClick(rowData: any): void {\r\n if (this.enableSelection) {\r\n this.onRowClick(rowData);}}\r\n\r\n /**\r\n * Checks if a given row is currently selected.\r\n * @param {any} rowData - The row data to check.\r\n * @returns {boolean} `true` if the row is selected, else `false`.\r\n */\r\n isRowSelected(rowData: any): boolean {\r\n return this.rowSelection?.[this.validDataKey] === rowData[this.validDataKey];}\r\n\r\n onSort(event: any) {\r\n this.sortField = event.field;\r\n this.sortOrder = event.order;\r\n this.sortChanged.emit(event);}\r\n\r\n /**\r\n * Utility: Check if value is array (for template use)\r\n * @param {any} val - The value to check if it is an array.\r\n * @returns {boolean} True if the value is an array, otherwise false.\r\n */\r\n isArray(val: any): boolean {\r\n return Array.isArray(val);\r\n }\r\n\r\n /**\r\n * Utility: Check if value is task items array (for template use)\r\n * @param {any} val - The value to check if it is a task items array.\r\n * @returns {boolean} True if the value is a task items array, otherwise false.\r\n */\r\n isTaskItemsArray(val: any): boolean {\r\n return Array.isArray(val) && val.length > 0 && val[0]?.type && val[0]?.count !== undefined;\r\n }\r\n\r\n shouldShowValue(col: any, rowData: any): boolean {\r\n const value = rowData[col.name];\r\n if (Array.isArray(value) && value.length && value[0]?.initials) {\r\n return false;\r\n }\r\n if (this.isTaskItemsArray(value)) {\r\n return false;\r\n }\r\n return typeof value === 'string' || typeof value === 'number';\r\n }\r\n\r\n /**\r\n * Evaluates ngClass expression for dynamic styling\r\n * @param {string} expression - The ngClass expression to evaluate\r\n * @param {any} rowData - The row data to use in evaluation\r\n * @returns {string} The evaluated CSS classes\r\n */\r\n evaluateNgClass(expression: string, rowData: any): string {\r\n try {\r\n // If the expression is just a list of classes, return as is\r\n if (!expression.includes('?') && !expression.includes(':')) {\r\n return expression;\r\n }\r\n const context = { rowData }; // Otherwise, evaluate as a JS expression\r\n return new Function('rowData', `return ${expression};`)(rowData); \r\n } catch (error) {\r\n console.error('Error evaluating ngClass expression:', error);\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Evaluates ngStyle expression for dynamic inline styles\r\n * @param {string} expression - The ngStyle expression to evaluate\r\n * @param {any} rowData - The row data to use in evaluation\r\n * @returns {any} The evaluated style object\r\n */\r\n evaluateNgStyle(expression: string, rowData: any): any {\r\n try {\r\n return new Function('rowData', `return ${expression};`)(rowData);\r\n } catch (error) {\r\n console.error('Error evaluating ngStyle expression:', error);\r\n return null;\r\n }\r\n }\r\n\r\n getTypeContainerClass(typeValue: string): string {\r\n const expr = this.columnStyles?.['lending']?.containerNgClass;\r\n return expr ? this.evaluateNgClass(expr, { lending: typeValue }) : '';\r\n }\r\n\r\n getTypeTextClass(typeValue: string): string {\r\n const expr = this.columnStyles?.['lending']?.textNgClass;\r\n return expr ? this.evaluateNgClass(expr, { lending: typeValue }) : '';\r\n }\r\n\r\n getRiskContainerClass(riskValue: string): string {\r\n const expr = this.columnStyles?.['riskRating']?.containerNgClass;\r\n return expr ? this.evaluateNgClass(expr, { riskRating: riskValue }) : '';\r\n }\r\n\r\n getRiskTextClass(riskValue: string): string {\r\n const expr = this.columnStyles?.['riskRating']?.textNgClass;\r\n return expr ? this.evaluateNgClass(expr, { riskRating: riskValue }) : '';\r\n }\r\n\r\n getColumnAlignment(columnName: string): string {\r\n if (columnName === 'applicants' || columnName === 'brokerName' || columnName === 'appId' || columnName === 'finance' || columnName === 'securityAddress') {\r\n return 'justify-content-start';\r\n }\r\n return 'justify-content-center';\r\n }\r\n\r\n getSwitchCase(rowData: any, col: any): string {\r\n if (this.isTaskItemsArray(rowData[col.name])) {\r\n return 'taskItems';\r\n }\r\n if (col.name === 'finance' && rowData[col.name]?.isFinance) {\r\n return 'finance';\r\n }\r\n if (col.name === 'appId' && typeof rowData[col.name] === 'object') {\r\n return 'appId';\r\n }\r\n if (col.name === 'brokerName' && typeof rowData[col.name] === 'object' && rowData[col.name]?.brokerName !== undefined) {\r\n return 'broker';\r\n }\r\n if (col.isTwoLine) {\r\n return 'twoLine';\r\n }\r\n if (col.isShowProgressbar) {\r\n return 'progress';\r\n }\r\n return 'default';\r\n }\r\n} "," <lib-skeleton *ngIf=\"isShowSkeleton\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n <p-table\r\n *ngIf=\"table && table.headers && !isShowSkeleton\"\r\n #dt2\r\n [lazy]=\"true\"\r\n (onSort)=\"onSort($event)\"\r\n [paginator]=\"false\"\r\n [rows]=\"metaData?.itemsPerPage ?? 10\"\r\n [totalRecords]=\"metaData?.totalItems ?? 0\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\r\n [columns]=\"table.headers\"\r\n class=\"table-secondary-container\"\r\n [value]=\"table.records\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [dataKey]=\"table.dataKey\"\r\n [selectionMode]=\"selectionMode\"\r\n [(selection)]=\"selection\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [ngClass]=\"tableNgClassExpression ? evaluateNgClass(tableNgClassExpression, {}) : ''\"\r\n >\r\n <!-- Header -->\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr *ngIf=\"table.headers.length > 0\">\r\n <th\r\n *ngFor=\"let col of table.headers; let i = index\"\r\n class=\"table-header-wrapper bg-white\"\r\n [pSortableColumn]=\"col.name\"\r\n [pSortableColumnDisabled]=\"!(table.isSortingAllow && col.isShowSortIcon)\"\r\n [ngClass]=\"[col.width ? col.width : 'w-full', (!showActions && selectionMode !== 'multiple' && (i === table.headers.length - 1)) ? 'table-action-title' : '']\"\r\n style=\"min-width: 100px\"\r\n > \r\n <h4\r\n [ngClass]=\"[\r\n col.class || '', \r\n getColumnAlignment(col.name) === 'justify-content-start' ? 'justify-content-start text-left' : 'justify-content-center text-center'\r\n ]\"\r\n class=\"flex align-items-center table-header-title font-semibold m-0\">\r\n {{ col.displayName || col.name }}\r\n @if(table.isSortingAllow && col.isShowSortIcon){\r\n <p-sortIcon [field]=\"col.name\" />\r\n }\r\n </h4>\r\n </th>\r\n \r\n <th *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" \r\n class=\"table-header-wrapper text-right table-action-title\" style=\"width: 6rem;\">\r\n <h4 class=\"flex align-items-center justify-content-end gap-2 table-header-title capitalize font-semibold m-0\">\r\n <span *ngIf=\"selection?.length && !isSelectAll\">\r\n ({{ selection.length }})\r\n </span>\r\n <p-checkbox\r\n [binary]=\"true\"\r\n [ngModel]=\"isAllCurrentPageSelected\"\r\n (ngModelChange)=\"handleSelectAllRowData($event)\"></p-checkbox>\r\n </h4>\r\n </th>\r\n \r\n <th\r\n *ngIf=\"showActions\"\r\n class=\"table-action-title table-header-wrapper\"\r\n [ngClass]=\"table.headers[0]?.width ? 'w-2' : 'w-2'\"\r\n >\r\n </th>\r\n \r\n </tr>\r\n </ng-template>\r\n \r\n <!-- Body -->\r\n<ng-template pTemplate=\"body\" let-rowData>\r\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\r\n <!-- one TD per column -->\r\n <td *ngFor=\"let col of table.headers; let j = index\" class=\"p-0 border-none bg-none table-body-row-wrapper\"\r\n (click)=\"handleRowClick(rowData)\"\r\n [ngClass]=\"[rowData._columnWidths ? rowData._columnWidths?.[col.name] : col.width]\">\r\n <div class=\"table-body-wrapper table-row-card-wrapper\"\r\n [ngClass]=\"[\r\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\r\n isRowSelected(rowData) ? 'row-selected' : '',\r\n selection?.includes(rowData) ? 'green-highlight' : ''\r\n ]\">\r\n \r\n <div class=\"flex align-items-center h-full\" [ngClass]=\"getColumnAlignment(col.name)\">\r\n <!-- your existing inner column wrapper -->\r\n <div class=\"row-wrapprt flex align-items-center\" [ngClass]=\"getColumnAlignment(col.name)\">\r\n <ng-container [ngSwitch]=\"getSwitchCase(rowData, col)\">\r\n <!-- task items - check this first -->\r\n <ng-container *ngSwitchCase=\"'taskItems'\">\r\n <div class=\"col-tasks\">\r\n <ng-container *ngFor=\"let taskItem of rowData[col.name]\">\r\n <div class=\"task-item\" [ngClass]=\"taskItem.status === 'warning' ? 'task-warning' : 'task-success'\">\r\n <span>{{ taskItem.type }}</span>\r\n <span class=\"task-badge\">{{ taskItem.count }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- Finance amount with special styling -->\r\n <ng-container *ngSwitchCase=\"'finance'\">\r\n <div class=\"text-black font-semibold\">\r\n {{ rowData[col.name].amount }}\r\n </div>\r\n </ng-container>\r\n \r\n <!-- App ID with type and risk tags -->\r\n <ng-container *ngSwitchCase=\"'appId'\">\r\n <div class=\"w-full text-left\">\r\n <div class=\"font-semibold\">{{ rowData[col.name].appId }}</div>\r\n <div class=\"flex gap-2 justify-content-start app-id-tags\">\r\n <!-- Type chip using style config (lending) -->\r\n <div *ngIf=\"rowData[col.name].type\" [ngClass]=\"getTypeContainerClass(rowData[col.name].type)\">\r\n <p class=\"mb-0\" [ngClass]=\"getTypeTextClass(rowData[col.name].type)\">\r\n {{ rowData[col.name].type }}\r\n </p>\r\n </div>\r\n <!-- Risk chip using style config (riskRating) -->\r\n <div *ngIf=\"rowData[col.name].risk && rowData[col.name].risk.toLowerCase() !== 'unknown'\"\r\n [ngClass]=\"getRiskContainerClass(rowData[col.name].risk)\">\r\n <p class=\"mb-0\" [ngClass]=\"getRiskTextClass(rowData[col.name].risk)\">\r\n {{ rowData[col.name].risk }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- Broker with name and company name -->\r\n <ng-container *ngSwitchCase=\"'broker'\">\r\n <div class=\"w-full text-left\">\r\n <div class=\"font-medium\">{{ rowData[col.name].brokerName }}</div>\r\n <div *ngIf=\"rowData[col.name].brokerCompanyName\" class=\"text-gray-700\">\r\n {{ rowData[col.name].brokerCompanyName }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Render two lines with dynamic classes for any two-line column -->\r\n <ng-container *ngSwitchCase=\"'twoLine'\">\r\n <div class=\"w-full\" [ngClass]=\"[\r\n getColumnAlignment(col.name) === 'justify-content-start' ? 'text-left' : 'text-center',\r\n col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : ''\r\n ]\">\r\n <div class=\"row-multi-line-wrapper\"\r\n [ngClass]=\"col.line1NgClassExpression ? evaluateNgClass(col.line1NgClassExpression, rowData) : ''\">\r\n {{ rowData[col.name]?.addressLine1 }}\r\n </div>\r\n <div class=\"row-multi-line-wrapper font-bold\"\r\n [ngClass]=\"col.line2NgClassExpression ? evaluateNgClass(col.line2NgClassExpression, rowData) : ''\">\r\n {{ rowData[col.name]?.postCode }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- progress bar -->\r\n <ng-container *ngSwitchCase=\"'progress'\">\r\n <div class=\"progress-wrapper\">\r\n <round-progress [current]=\"rowData['taskCompletionPercent']\" [max]=\"100\"\r\n [color]=\"getProgressColor(rowData['taskCompletionPercent'])\"\r\n [background]=\"getProgressBackground(rowData['taskCompletionPercent'])\" [radius]=\"125\" [stroke]=\"20\"\r\n [semicircle]=\"false\" [rounded]=\"true\" [clockwise]=\"true\" [responsive]=\"false\" [duration]=\"800\"\r\n [animation]=\"'easeInOutQuart'\" [animationDelay]=\"0\">\r\n </round-progress>\r\n <div class=\"progress-title\" [ngStyle]=\"{color: getProgressColor(rowData['taskCompletionPercent'])}\">\r\n {{ rowData[col.name] }}\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n <!-- Default cell rendering for other columns -->\r\n <ng-container *ngSwitchDefault>\r\n <!-- Don't render default content if we have task items -->\r\n <ng-container *ngIf=\"!isTaskItemsArray(rowData[col.name])\">\r\n <div\r\n class=\"table-text-wrapper text-center p-0 flex align-items-center\"\r\n [ngClass]=\"[\r\n getRowClass(col, rowData),\r\n j === 0 ? 'justify-content-start' : 'justify-content-center'\r\n ]\"\r\n [ngStyle]=\"{ 'font-weight': col.name === table.showDecriptionFor ? 'bold' : 'normal' }\"\r\n >\r\n <i\r\n *ngIf=\"rowData[col.name]?.icon\"\r\n class=\"pi pr-2\"\r\n [ngClass]=\"[rowData[col.name].icon, rowData[col.name].iconClass]\"\r\n ></i>\r\n <div *ngIf=\"!col.skipParentNgClass\" [ngClass]=\"col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : ''\">\r\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\r\n </div>\r\n <ng-container *ngIf=\"col.skipParentNgClass\">\r\n <div class=\"w-full text-left\">\r\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #bubbleOrFallback>\r\n <ng-container *ngIf=\"isArray(rowData[col.name]) && rowData[col.name].length && rowData[col.name][0]?.fullName\">\r\n <div class=\"flex flex-column gap-1\">\r\n <ng-container *ngFor=\"let bubble of rowData[col.name]; let i = index\">\r\n <div\r\n *ngIf=\"bubble.isCustomerVulnerable\"\r\n class=\"px-2 py-1 border-round-2xl inline-block bg-red-600 text-white\"\r\n >\r\n {{ bubble.fullName }}\r\n </div>\r\n <div\r\n *ngIf=\"!bubble.isCustomerVulnerable\"\r\n class=\"text-gray-700\"\r\n >\r\n {{ bubble.fullName }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"shouldShowValue(col, rowData)\">\r\n <p class=\"mb-0\" [ngClass]=\"col.textNgClassExpression ? evaluateNgClass(col.textNgClassExpression, rowData) : ''\">\r\n {{ rowData[col.name] }}\r\n </p>\r\n </ng-container>\r\n </ng-template>\r\n <div\r\n *ngIf=\"col.name === table.showDecriptionFor && rowData[table.descriptionColumnName]\"\r\n class=\"text-black-500 text-sm mt-1\"\r\n style=\"font-weight: 600;\"\r\n >\r\n {{ rowData[table.descriptionColumnName] }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- Checkbox column -->\r\n <td *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" class=\"text-right p-0 border-none bg-none table-body-row-wrapper\"\r\n style=\"width: 4rem\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"table-body-wrapper table-select-row-wrapper flex align-items-center justify-content-end\"\r\n [ngClass]=\"[\r\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\r\n isRowSelected(rowData) ? 'row-selected' : '',\r\n selection?.includes(rowData) ? 'green-highlight' : ''\r\n ]\">\r\n <p-tableCheckbox [value]=\"rowData\" [disabled]=\"!enableSelection\"></p-tableCheckbox>\r\n </div>\r\n </td>\r\n\r\n <!-- Actions column -->\r\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left table-body-wrapper\">\r\n <div *ngIf=\"(rowData.isRowDelete !== null || rowData.canDelete !== undefined) ? (showActions && rowData.isRowDelete) : showActions\" class=\"flex align-items-center justify-content-center\">\r\n <p-button\r\n icon=\"pi pi-trash\"\r\n (click)=\"deleteRow($event, rowData)\"\r\n class=\"delete-icon-wrapper mr-3\"\r\n [disabled]=\"!enableSelection\"\r\n ></p-button>\r\n </div>\r\n </td>\r\n </tr>\r\n</ng-template>\r\n \r\n <!-- Empty Message -->\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td\r\n [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0) + (selectionMode === 'multiple' ? 1 : 0)\"\r\n class=\"text-center text-color font-semibold p-4\"\r\n >\r\n {{ noRecordsMessage }}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n\r\n<!-- Paginator -->\r\n<div class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper\" *ngIf=\"usePagination\">\r\n <div class=\"pagination-text text-color\">\r\n Showing {{ metaData.totalItems > 0 ? ((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10) + 1 : 0 }} to {{ recordNumber }} of {{ metaData?.totalItems ?? 0 }} entries\r\n </div>\r\n\r\n <p-paginator\r\n #paginator\r\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\r\n [rows]=\"metaData?.itemsPerPage ?? 10\"\r\n [totalRecords]=\"metaData?.totalItems ?? 0\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n (onPageChange)=\"handleLoadRecords($event)\"\r\n ></p-paginator>\r\n</div> ","import { SHARED } from \"../../constant/SHARED\";\r\n\r\nexport class TableSecondaryModel {\r\n name!: string;\r\n headers!: any[];\r\n records!: any[];\r\n columnStyles?: StyleClass;\r\n sortField?:string\r\n dataKey?:string\r\n groupRowsBy?:string;\r\n showDecriptionFor ?: string\r\n descriptionColumnName : string = SHARED.EMPTY\r\n isSortingAllow : boolean = SHARED.TRUE\r\n rows: any;\r\n}\r\n\r\nexport class StyleClass{\r\n class : string = SHARED.EMPTY\r\n value : string = SHARED.EMPTY\r\n} ","import { AttributeModel } from \"../../models/attribute.model\";\r\n\r\nexport class TableSecondaryHeaderModel{\r\n name!: string;\r\n attributes!: AttributeModel;\r\n width!: string;\r\n} ","import { BaseModel } from \"../../../shared\";\r\n\r\nexport class ApiConfigModel extends BaseModel{\r\n name ?: string;\r\n path?: string;\r\n isActive!: boolean;\r\n parentapiConfigId!: string;\r\n parentKey!: string;\r\n description?:string;\r\n getByIDPath?:string;\r\n idProperty?:string;\r\n authHeaderName?: string;\r\n authToken?: string;\r\n}","export class MESSAGE {\r\n static VALIDATE_SUCCESS_MESSAGE = \"API validation completed successfully! Your API is now ready for use.\";\r\n static VALIDATE_ACTION_SUCCESS_MESSAGE = \"Validation action was successful. The configuration is valid.\"\r\n static QUERY_CHANGE_EVENT = \"Query Change Event:\";\r\n static DELETE_DICTIONARY_ITEM_SUCCESS = \"Dictionary item deleted successfully.\";\r\n static DATA_FETCH_SUCCESS = \"Data has been fetched successfully.\"\r\n}","import { DATASOURCES } from \"./DATASOURCES\";\r\n\r\nexport class LISTCONFIG {\r\n private static createConfig(name: string, dataSource: string): object {\r\n return {\r\n name: name,\r\n dataSource: dataSource,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\"\r\n };\r\n }\r\n \r\n static APICONFIG = [\r\n LISTCONFIG.createConfig(\"parentapiConfigId\", DATASOURCES.APIMANAGEMENT)\r\n ];\r\n \r\n static QUEUECONFIG = [\r\n LISTCONFIG.createConfig(\"queueID\", \"Queues\")\r\n ];\r\n\r\n static ACTIONQUEUECONFIG = [\r\n LISTCONFIG.createConfig(\"queueId\", \"Queues\")\r\n ];\r\n\r\n static QUEUEAPICONFIG = [\r\n LISTCONFIG.createConfig(\"apiConfigId\", DATASOURCES.APIMANAGEMENT)\r\n ];\r\n }","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared';\r\nimport { ApiConfigModel } from '../models/api-config.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'apiManagementStore' })\r\n\r\nexport class ApiAdminStore extends BaseStore<ApiConfigModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiAdminStore } from './api-admin.store';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { ApiConfigModel } from '../models/api-config.model';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\n\r\n/**\r\n * Service for managing API configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class ApiAdminService extends BaseService<ApiConfigModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected apiManagementStore: ApiAdminStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, apiManagementStore, configService, listService);\r\n this._pathName = DATASOURCES.APIMANAGEMENT;\r\n }\r\n\r\n protected override list : any= LISTCONFIG.APICONFIG\r\n\r\n checkApiByPathName(name:string, record:any): Observable<ApiConfigModel[]> {\r\n return this.http.post<ApiConfigModel[]>(this.apiUrl+name, record).pipe(\r\n tap((entities: ApiConfigModel[]) => this.apiManagementStore.set(entities))\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Message, SelectItem } from 'primeng/api';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED } from '../../../../shared';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { ROUTES } from '../../../../shared/constant/ROUTES';\r\nimport { ApiAdminService } from '../../state/api-admin.service';\r\nimport { ApiAdminStore } from '../../state/api-admin.store';\r\nimport { ApiConfigModel } from '../../models/api-config.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\r\n\r\n\r\n/**\r\n * Form component for creating and updating API configurations.\r\n */\r\n@Component({\r\n selector: 'lib-api-admin-form',\r\n templateUrl: './api-admin-form.component.html',\r\n styleUrl: './api-admin-form.component.scss',\r\n standalone: false,\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class ApiAdminFormComponent extends BaseFormComponent<ApiConfigModel> implements OnInit , OnDestroy{\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n name: string = SHARED.EMPTY;\r\n selectedParentId!: string;\r\n filteredRecords: string[] = SHARED.EMPTYARRAY;\r\n dropdownOptions: any[] = SHARED.EMPTYARRAY;\r\n apiPropertyList!: SelectItem[];\r\n\r\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>) {\r\n super(apiAdminService, validatorService, router, activatedRoute)\r\n this.record = new ApiConfigModel();\r\n this.record.isActive = true;\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n console.log(this.record);\r\n this.recordChange.asObservable().subscribe((record) => {\r\n if(record.parentapiConfigId){\r\n this.parentApiProperties(record.parentapiConfigId);\r\n }\r\n });\r\n this.baseStore.setIsApiValidated(false);\r\n }\r\n\r\n hanldeValidateApi() {\r\n const payload = {\r\n path: this.record.path,\r\n getByIDPath : this.record.getByIDPath,\r\n idProperty : this.record.idProperty,\r\n authHeaderName : this.record.authHeaderName,\r\n authToken : this.record.authToken\r\n }\r\n if (this.record.path) {\r\n this.apiAdminService.checkApiByPathName(ROUTES.VALIDATEAPI, payload).subscribe({\r\n next: (res: any) => {\r\n if (res && res.isValid) {\r\n this.handleErrorAndSuccess(res.isValid, res.message)\r\n }else{\r\n this.handleErrorAndSuccess(res.isValid, SHARED.EMPTY)\r\n }\r\n },\r\n error: (error: any) => {\r\n this.handleErrorAndSuccess(false, error.message)\r\n },\r\n });\r\n } else {\r\n this.handleErrorAndSuccess(false, ERROR.VALIDATE_API_FAILED)\r\n }\r\n }\r\n\r\n handleModelChange(event: string) {\r\n this.parentApiProperties(event);\r\n }\r\n\r\n parentApiProperties(event:string) {\r\n if (event) {\r\n this.apiAdminService.getById(event).subscribe((res: any) => {\r\n this.apiPropertyList = res.properties.map((property: string) => ({\r\n label: property,\r\n value: property\r\n }));\r\n })\r\n } else {\r\n this.record.parentKey = SHARED.EMPTY;\r\n this.apiPropertyList = SHARED.EMPTYARRAY;\r\n }\r\n }\r\n\r\n handleErrorAndSuccess(isValid:boolean, error:any){\r\n if(isValid){\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_SUCCESS_MESSAGE }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n this.baseStore.setIsApiValidated(SHARED.TRUE);\r\n }else{\r\n this.baseStore.setIsApiValidated(SHARED.FALSE);\r\n }\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as ApiConfigModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n\r\n","<form-container\r\n [record]=\"record\"\r\n [headerText]=\"'Api Management Form'\"\r\n [messages]=\"messages\"\r\n (onSave)=\"handleSubmit()\"\r\n [showSave]=\"true\" \r\n (onCancel)=\"handleCancel()\"\r\n>\r\n <div class=\"card p-fluid p-formgrid grid m-0 mb-6\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Api Management Form</h4>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Name',\r\n placeholder: 'Enter Name'\r\n }\"\r\n ></text-box>\r\n </div>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'path',\r\n isRequired: true,\r\n displayText: 'Path',\r\n placeholder: 'Enter Path'\r\n }\"\r\n ></text-box>\r\n </div>\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"apiAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'getByIDPath',\r\n isRequired: false,\r\n displayText: 'Get By ID Path',\r\n placeholder: 'Enter getByID Path'\r\n }\"\r\n ></text-box>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'idProperty',\r\n isRequired: true,\r\n displayText: 'Id Property',\r\n placeholder: 'Enter Id Property'\r\n }\"\r\n ></text-box>\r\n </div>\r\n\r\n <div class=\"w-full px-2 mt-2 flex justify-content-end\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Validate\"\r\n (click)=\"hanldeValidateApi()\"\r\n class=\"p-button-raised validate-btn-wrapper\"\r\n ></button>\r\n </div>\r\n </div>\r\n <div class=\"card p-fluid p-formgrid grid \">\r\n <h4 class=\"font-bold col-12 md:col-12\">Other Details</h4>\r\n <div class=\"col-12 md:col-12 p-0 m-0 flex align-items-center\">\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'authHeaderName',\r\n isRequired: false,\r\n displayText: 'Auth Header',\r\n placeholder: 'Enter Auth Header'\r\n }\"\r\n ></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'authToken',\r\n isRequired: false,\r\n displayText: 'Token',\r\n placeholder: 'Enter token'\r\n }\"\r\n ></text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name: 'parentapiConfigId',\r\n dataSource: 'api-configurations',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id', \r\n displayText: 'Select Parent',\r\n placeholder: 'Select Parent API',\r\n childListName: 'parentKey',\r\n childListKey: 'name'\r\n }\"\r\n (onInput)=\"handleModelChange($event)\"\r\n ></dropdown>\r\n\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name:'parentKey',\r\n displayText : 'Property',\r\n placeholder: 'Select Property',\r\n options: apiPropertyList\r\n }\"></dropdown>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <text-area\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'description',\r\n isRequired: false,\r\n displayText: 'Description',\r\n placeholder: 'Enter Description'\r\n }\"\r\n ></text-area>\r\n </div>\r\n </div>\r\n</form-container>","export class PERMISSION {\r\n static ACTIONCONFIG_PUT = 'ActionConfigurations-PUT'\r\n static ACTIONCONFIG_DELETE = 'ActionConfigurations-DELETE'\r\n static API_CONFIG_PUT = 'ApiConfigurations-PUT'\r\n static API_CONFIG_DELETE = 'ApiConfigurations-DELETE'\r\n static DD_ADMIN_PUT = 'DataDictionaries-PUT'\r\n static DD_ADMIN_DELETE = 'DataDictionaries-DELETE'\r\n static MESSAGE_TEMPLATE_PUT = 'MessageTemplates-PUT'\r\n static MESSAGE_TEMPLATE_DELETE = 'MessageTemplates-DELETE'\r\n static WIDGETS_PUT = 'Widgets-PUT'\r\n static WIDGETS_DELETE = 'Widgets-DELETE'\r\n static WIDGETS_EVALUATE = 'Widgets-evaluate'\r\n static QUEUES_GET = 'Queues-GET'\r\n static QUEUES_POST = 'Queues-POST'\r\n static QUEUES_PUT = 'Queues-PUT'\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { BaseListComponent, DATASOURCES, TableBuilder, apiHiddenHeaderList } from '../../../../shared';\r\nimport { ApiConfigModel } from '../../models/api-config.model';\r\nimport { ApiAdminService } from '../../state/api-admin.service';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n\r\n/**\r\n * ApiAdminListComponent\r\n */\r\n@Component({\r\n selector: 'lib-api-admin-list',\r\n templateUrl: './api-admin-list.component.html',\r\n styleUrl: './api-admin-list.component.scss',\r\n standalone : false\r\n})\r\nexport class ApiAdminListComponent extends BaseListComponent<ApiConfigModel> implements OnInit {\r\n\r\n override editPermission: string = PERMISSION.API_CONFIG_PUT\r\n override deletePermission: string = PERMISSION.API_CONFIG_DELETE\r\n pathName:string = DATASOURCES.APIMANAGEMENT;\r\n constructor(apiAdminService : ApiAdminService, private tableBuilder : TableBuilder ){\r\n super(apiAdminService, tableBuilder)\r\n this.tableBuilder.hiddenHeaders = apiHiddenHeaderList;\r\n }\r\n ngOnInit() {\r\n this.init()\r\n }\r\n}","\r\n@if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\r\n </lib-table-primary>\r\n}","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ApiAdminFormComponent } from './components/api-admin-form/api-admin-form.component';\r\nimport { ApiAdminListComponent } from './components/api-admin-list/api-admin-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AppConfigService, CheckBoxComponent, PasswordComponent, SharedModule, TablePrimaryComponent, UsernameComponent } from '../../shared';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [ApiAdminFormComponent ,ApiAdminListComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n HttpClientModule,\r\n ButtonModule,\r\n UsernameComponent,\r\n PasswordComponent,\r\n TextAreaComponent,\r\n TablePrimaryComponent,\r\n CheckBoxComponent\r\n ],\r\n exports : [ApiAdminFormComponent, ApiAdminListComponent],\r\n providers: [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (configService: AppConfigService) => () =>\r\n configService.loadAppConfig(),\r\n deps: [AppConfigService],\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ApiAdminModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared';\r\nimport { WidgetModel } from '../models/widget.model';\r\n\r\n/**\r\n * Widget Admin Store\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'widgetStore' })\r\nexport class WidgetAdminStore extends BaseStore<WidgetModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\nimport { WidgetAdminStore } from './widget-admin.store';\r\nimport { WidgetModel } from '../models/widget.model';\r\n\r\n/**\r\n * Service for managing widget configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetAdminService extends BaseService<WidgetModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected apiManagementStore: WidgetAdminStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, apiManagementStore, configService, listService);\r\n this._pathName = DATASOURCES.WIDGET;\r\n }\r\n\r\n protected override list: any = [\r\n {\r\n name: \"apiConfigId\",\r\n dataSource: DATASOURCES.APIMANAGEMENT,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryID\",\r\n dataSource: DATASOURCES.DICTIONARY,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryItemID\",\r\n dataSource: \"DataDictionaries/dictionaryItems\",\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"key\",\r\n },\r\n {\r\n name: \"linkedWidgetID\",\r\n dataSource: DATASOURCES.WIDGET,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n\r\n ]\r\n\r\n /**\r\n * Cleans and parses a malformed style JSON string\r\n * @param {string} rawStyleStr - The raw style string from API or DB\r\n * @returns {Record<string, any> | null} - Parsed style object or null if parsing fails\r\n */\r\n sanitizeStyleString(rawStyleStr: string): Record<string, any> | null {\r\n try {\r\n if (!rawStyleStr) return {};\r\n rawStyleStr = rawStyleStr.replace(/\"\"/g, '\"');\r\n rawStyleStr = rawStyleStr.replace(/([{,]\\s*)([a-zA-Z0-9_]+)\\s*:/g, '$1\"$2\":');\r\n const parsed = JSON.parse(rawStyleStr);\r\n return typeof parsed === 'object' && parsed !== null ? parsed : null;\r\n } catch (err) {\r\n console.error('Failed to parse style string:', rawStyleStr, err);\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { BaseListComponent, DATASOURCES, TableBuilder, widgetHiddenHeaderList } from '../../../../shared';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetAdminService } from '../../state/widget-admin.service';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n/**\r\n * Widget Admin List Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-admin-list',\r\n standalone: false,\r\n templateUrl: './widget-admin-list.component.html',\r\n styleUrl: './widget-admin-list.component.scss'\r\n})\r\nexport class WidgetAdminListComponent extends BaseListComponent<WidgetModel> {\r\n \r\n pathName:string = DATASOURCES.WIDGET;\r\n override editPermission: string = PERMISSION.WIDGETS_PUT\r\n override deletePermission: string = PERMISSION.WIDGETS_DELETE\r\n constructor(widgetAdminService: WidgetAdminService, private tableBuilder: TableBuilder) {\r\n super(widgetAdminService, tableBuilder);\r\n this.tableBuilder.hiddenHeaders = widgetHiddenHeaderList;\r\n }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n}","@if(table){\r\n<lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\r\n\r\n</lib-table-primary>\r\n}","import { BaseModel } from \"../../../shared\";\r\nimport { StyleConfig, WidgetStyleConfig } from \"../../../widget/models/widget.model\";\r\n\r\n/**\r\n * WidgetModel class represents the model of a widget.\r\n */\r\nexport class WidgetModel extends BaseModel {\r\n name!: string;\r\n apiConfigId!: string;\r\n dataItems: WidgetItemModel[] = [];\r\n order?: number;\r\n headerDictionaryID!: string;\r\n subHeaderDictionaryID!: string;\r\n headerDictionaryItemID!: string;\r\n subHeaderDictionaryItemID!: string;\r\n style?: any;\r\n layoutType?: string;\r\n isActive!: boolean;\r\n}\r\n\r\n/**\r\n * WidgetItemModel class represents the model of a widget item.\r\n */\r\nexport class WidgetItemModel extends BaseModel{\r\n name!: string;\r\n dictionaryItemID!: string;\r\n dictionaryID!: string;\r\n style?: any;\r\n isActive: boolean = true;\r\n}\r\n\r\nexport interface WidgetLayoutTypeModel {\r\n name: string;\r\n value: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { BaseQuery } from '../../../shared';\r\nimport { WidgetModel } from '../models/widget.model';\r\nimport { WidgetAdminStore } from './widget-admin.store';\r\n\r\n\r\n/**\r\n * Widget Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetAdminQuery extends BaseQuery<WidgetModel> {\r\n\r\n constructor(protected override store: WidgetAdminStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { WidgetItemModel, WidgetLayoutTypeModel, WidgetModel } from '../../models/widget.model';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED, widgetLayoutTypeList } from '../../../../shared';\r\nimport { WidgetAdminService } from '../../state/widget-admin.service';\r\nimport { WidgetAdminQuery } from '../../state/widget-admin.query';\r\nimport { WidgetAdminStore } from '../../state/widget-admin.store';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { List } from '../../../../shared/models/list.model';\r\nimport { SelectItem } from 'primeng/api';\r\n\r\n/**\r\n * WidgetAdminFormComponent\r\n */\r\n@Component({\r\n selector: 'lib-widget-admin-form',\r\n standalone: false,\r\n templateUrl: './widget-admin-form.component.html',\r\n styleUrl: './widget-admin-form.component.scss',\r\n})\r\nexport class WidgetAdminFormComponent extends BaseFormComponent<WidgetModel> implements OnInit, OnDestroy {\r\n\r\n widgetItem!: WidgetItemModel;\r\n widgetItems: WidgetItemModel[] = [];\r\n dictionaries: any[] = [];\r\n headerDictionaryItems: any[]=[];\r\n subHeaderDictionaryItems: any[] = [];\r\n dictionaryItemArray: any[][] = [];\r\n widgetOptionsArray: SelectItem[] = [];\r\n widgetLayoutTypeList: WidgetLayoutTypeModel[] = widgetLayoutTypeList;\r\n\r\n constructor(\r\n override service: WidgetAdminService,\r\n override validatorService: ValidatorService,\r\n public widgetStore: WidgetAdminStore,\r\n private query: WidgetAdminQuery,\r\n override router: Router,\r\n override activatedRoute: ActivatedRoute,\r\n override baseStore: BaseStore<WidgetModel>,\r\n override baseQuery: BaseQuery<WidgetModel>\r\n ) {\r\n super(service, validatorService, router, activatedRoute);\r\n this.record = new WidgetModel();\r\n this.record.isActive = true;\r\n this.widgetItem = new WidgetItemModel();\r\n }\r\n\r\n ngOnInit(): void {\r\n super.init();\r\n this.baseStore.setIsApiValidated(null);\r\n this.recordChange.asObservable().subscribe((record) => {\r\n this.handleAPIChange(record.queueID);\r\n this.handleHeaderDictionarySelect(record.headerDictionaryID);\r\n this.handleSubHeaderDictionarySelect(record.subHeaderDictionaryID);\r\n if(record?.dataItems?.length > 0) {\r\n record.dataItems.forEach((item:WidgetItemModel, index:number) => {\r\n this.handleWidgetItemDictionarySelect(item.dictionaryID, index);\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleWidgetItemAddBtnClick() {\r\n if(!(this.record.name && this.record.apiConfigId)) return;\r\n if (Array.isArray(this.record.dataItems)) {\r\n const hasEmptyItem = this.record.dataItems.some((item: WidgetItemModel) => {\r\n const isItemNameEmpty = !item.name || item.name.trim() === SHARED.EMPTY;\r\n const isDictionaryEmpty = !item.dictionaryID || item.dictionaryID.trim() === SHARED.EMPTY;\r\n const isDictionaryItemEmpty = !item.dictionaryItemID || item.dictionaryItemID.trim() === SHARED.EMPTY;\r\n return isItemNameEmpty && isDictionaryItemEmpty && isDictionaryEmpty;\r\n });\r\n \r\n if (hasEmptyItem) {\r\n return;\r\n }\r\n } else {\r\n this.record.dataItems = [];\r\n }\r\n this.record.dataItems = [...this.record.dataItems, new WidgetItemModel()];\r\n }\r\n\r\n handleAPIChange(event:any){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\r\n this.dictionaries = allDictionaryRecords?.filter((item) => item.apiConfigId === event) || [];\r\n });\r\n }\r\n\r\n handleHeaderDictionarySelect(dictionaryId:string){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.headerDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n handleSubHeaderDictionarySelect(dictionaryId: any) {\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.subHeaderDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n handleWidgetItemDictionarySelect(dictionaryId: any, index: number) {\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.dictionaryItemArray[index] = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n handleDeleteRecord(index: number) {\r\n if (index >= 0 && index < this.record.dataItems.length) {\r\n this.record.dataItems = this.record.dataItems.filter((_, i) => i !== index);\r\n } else {\r\n console.error(ERROR.INVALID_INDEX, index);\r\n }\r\n }\r\n\r\n override handleSubmit(): void {\r\n if (typeof this.record.style === 'string') {\r\n const parsedStyle = this.service.sanitizeStyleString(this.record.style);\r\n this.record.style = parsedStyle ? parsedStyle : {};\r\n }\r\n\r\n this.record.dataItems = this.record.dataItems.map((item) => {\r\n if (typeof item.style === 'string') {\r\n const parsed = this.service.sanitizeStyleString(item.style);\r\n item.style = parsed ? parsed : {};\r\n }\r\n return item;\r\n });\r\n super.handleSubmit();\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as WidgetModel;\r\n super.ngOnDestroy();\r\n }\r\n}","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\r\n (onCancel)=\"handleCancel()\">\r\n <div class=\"card p-fluid p-formgrid\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Widget Form</h4>\r\n <div class=\"col-12 md:col-12 mt-2 mb-2 flex\">\r\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\r\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Name',\r\n placeholder: 'Enter Widget Name'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\r\n <dropdown [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'apiConfigId',\r\n displayText : 'Select API',\r\n isRequired:true,\r\n }\" (onInput)=\"handleAPIChange($event)\">\r\n </dropdown>\r\n </div>\r\n\r\n <div class=\"col-4 md:col-4 mt-2 mb-2\">\r\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'style',\r\n isRequired: false,\r\n displayText: 'Style',\r\n placeholder: 'Enter Widget Style'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center m-0\">\r\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'headerDictionaryID',\r\n listLabelProperty:'name',\r\n listValueProperty:'_id',\r\n displayText : 'Select Dictionary',\r\n options: dictionaries\r\n }\" (onInput)=\"handleHeaderDictionarySelect($event)\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'headerDictionaryItemID',\r\n listLabelProperty:'itemName',\r\n listValueProperty:'_id',\r\n displayText : 'Select Header Item',\r\n options: headerDictionaryItems\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'subHeaderDictionaryID',\r\n listLabelProperty:'name',\r\n listValueProperty:'_id',\r\n displayText : 'Select Dictionary',\r\n options: dictionaries\r\n }\" (onInput)=\"handleSubHeaderDictionarySelect($event)\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'subHeaderDictionaryItemID',\r\n listLabelProperty:'itemName',\r\n listValueProperty:'_id',\r\n displayText : 'Select SubHeader Item',\r\n options: subHeaderDictionaryItems\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-6 md:col-2 mt-2 mb-2 flex\">\r\n <div class=\"field col-12 pl-2 pb-0 mb-2 md:mr-2 md:col-12\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'layoutType',\r\n listLabelProperty:'name',\r\n listValueProperty:'value',\r\n displayText : 'Select Layout Type',\r\n options: widgetLayoutTypeList\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field p-0 pr-2 col-12 md:col-2\">\r\n <div class=\"card m-0 p-0 mb-2\">\r\n <div class=\"mt-3 w-full flex\">\r\n <button pButton pRipple routerLinkActive=\"router-link-active\"\r\n icon=\"pi pi-plus font-semibold\"\r\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\r\n (click)=\"handleWidgetItemAddBtnClick()\">\r\n <span class=\"ml-3\">Add Widget Item </span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Widget Items -->\r\n <div class=\"feild-card col-12 md:col-12 flex\" *ngFor=\"let widgetItem of record.dataItems; let i = index;\">\r\n <div class=\"field col-2 col-sm-6\">\r\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name : 'name',\r\n readonly : false,\r\n displayText : 'Item Label',\r\n isRequired : true,\r\n }\"></text-box>\r\n </div>\r\n <div class=\"field col-2 col-sm-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name:'dictionaryID',\r\n listLabelProperty:'name',\r\n listValueProperty:'_id',\r\n displayText : 'Select Dictionary',\r\n isRequired:true,\r\n options: dictionaries\r\n }\" (onInput)=\"handleWidgetItemDictionarySelect($event, i)\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-2 col-sm-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name:'dictionaryItemID',\r\n listLabelProperty:'itemName',\r\n listValueProperty:'_id',\r\n displayText : 'Select Properties',\r\n isRequired:true,\r\n options: dictionaryItemArray[i]\r\n }\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-4 col-sm-6\">\r\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name : 'style',\r\n readonly : false,\r\n displayText : 'Item Style',\r\n isRequired : false,\r\n }\"></text-box>\r\n </div>\r\n <div class=\"field col-4 m-0 flex justify-content-center md:col-2 mt-5\">\r\n <div class=\"m-0\">\r\n <check-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Is Active ?',\r\n }\">\r\n </check-box>\r\n </div>\r\n <div class=\"ml-4 delete-icon-container\">\r\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\" (click)=\"handleDeleteRecord(i)\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form-container>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent } from '../../shared';\r\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\r\nimport { WidgetAdminListComponent } from './components/widget-admin-list/widget-admin-list.component';\r\nimport { WidgetAdminFormComponent } from './components/widget-admin-form/widget-admin-form.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n\r\n\r\n/**\r\n * Module for managing widgets.\r\n */\r\n@NgModule({\r\n declarations: [WidgetAdminListComponent, WidgetAdminFormComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n TablePrimaryComponent,\r\n DropdownComponent,\r\n CheckBoxComponent,\r\n ButtonComponent,\r\n ButtonModule,\r\n TextBoxComponent\r\n ],\r\n exports: [WidgetAdminListComponent, WidgetAdminFormComponent]\r\n})\r\nexport class QWWidgetAdminModule { }\r\n","import { BaseModel } from \"../../../shared\";\r\n\r\nexport class QueueModel extends BaseModel {\r\n name?: string;\r\n description?: string;\r\n apiConfigId!: string;\r\n rules?: any;\r\n properties?: any;\r\n itemCount?: any;\r\n apiConfigUrl: string = \"\";\r\n detailsApiConfigUrl?: string;\r\n header?: string;\r\n subHeader?: string;\r\n isActive?: boolean;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\r\nimport { createInitialState, QueueState } from \"./queue.state\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { BaseStore } from \"../../../shared\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\n@StoreConfig({ name: \"queues\" })\r\nexport class QueueStore extends BaseStore<QueueModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { QueueStore } from \"./queue.store\";\r\nimport { BaseQuery } from \"../../../shared/state/base.query\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class QueueQuery extends BaseQuery<QueueModel> {\r\n constructor(protected override store: QueueStore) {\r\n super(store);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { AppConfigService, BaseService, DATASOURCES, URLS } from \"../../../shared\";\r\nimport { QueueStore } from \"./queue.store\";\r\nimport { ListService } from \"../../../shared/services/list.service\";\r\nimport { Observable, tap } from \"rxjs\";\r\nimport { LISTCONFIG } from \"../../../shared/constant/LIST-CONFIG\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class QueueService extends BaseService<QueueModel> {\r\n constructor(\r\n public queueStore: QueueStore,\r\n http: HttpClient,\r\n appConfigService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, queueStore, appConfigService, listService);\r\n this._pathName = DATASOURCES.QUEUES;\r\n }\r\n\r\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG;\r\n getbyApiPath(id: string): Observable<QueueModel[]> {\r\n return this.http\r\n .get<QueueModel[]>(`${this.apiUrl}${DATASOURCES.APIMANAGEMENT}/${id}`)\r\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\r\n }\r\n\r\n getCaseById(url: string): Observable<any> {\r\n return this.http\r\n .get<QueueModel[]>(url)\r\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { QueryBuilderConfig } from \"@kerwin612/ngx-query-builder\";\r\nimport { QueueQuery } from \"../../state/queue.query\";\r\nimport { QueueModel } from \"../../models/queue.model\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { BaseFormComponent, SHARED, ERROR, BaseStore, BaseQuery } from \"../../../../shared\";\r\nimport { QueueStore } from \"../../state/queue.store\";\r\nimport { ValidatorService } from \"../../../../shared/services/validator.service\";\r\nimport { QueueService } from \"../../state/queue.service\";\r\nimport { MESSAGE } from \"../../../../shared/constant/MESSAGES\";\r\nimport { Message } from \"primeng/api\";\r\nimport { takeUntil } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"lib-queue-admin-form\",\r\n standalone: false,\r\n templateUrl: \"./queue-admin-form.component.html\",\r\n styleUrl: \"./queue-admin-form.component.scss\",\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class QueueAdminFormComponent\r\n extends BaseFormComponent<QueueModel>\r\n implements OnInit, OnDestroy\r\n{\r\n constructor(\r\n public queueQuery: QueueQuery,\r\n public queueService: QueueService,\r\n override activatedRoute: ActivatedRoute,\r\n public queueStore: QueueStore,\r\n override validatorService: ValidatorService,\r\n override router: Router,\r\n override baseStore: BaseStore<QueueModel>, \r\n override baseQuery: BaseQuery<QueueModel>\r\n ) {\r\n super(queueService, validatorService, router, activatedRoute);\r\n this.record = new QueueModel();\r\n this.record.isActive = true;\r\n }\r\n\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n fetchedProperties: any;\r\n config: QueryBuilderConfig = { fields: {} };\r\n apiPropertyList: any;\r\n\r\n query = {\r\n condition: SHARED.AND,\r\n rules: [],\r\n };\r\n\r\n ngOnInit(): void {\r\n this.baseStore.setIsApiValidated(false);\r\n this.service.initList();\r\n const id = this.activatedRoute\r\n ? this.activatedRoute.snapshot.params[SHARED.ID]\r\n : \"\";\r\n if (id && id !== SHARED.ZERO.toString()) {\r\n this.service.getById(id).subscribe((res: any) => {\r\n if (res) {\r\n this.record = res;\r\n this.getApiProperties(res?.apiConfigId, res);\r\n this.query = res.rules ? structuredClone(res.rules) : { condition: SHARED.AND, rules: [] };\r\n this.fetchedProperties = res.properties;\r\n this.initialRecord = JSON.parse(JSON.stringify(res));\r\n if (this.fetchedProperties) {\r\n this.setupQueryBuilderConfig(this.fetchedProperties);\r\n }\r\n }\r\n else {\r\n this.initialRecord = structuredClone(this.record);\r\n }\r\n });\r\n } \r\n this.formStateService.selectIsFormNavigating()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.checkUnsavedChanges()\r\n }\r\n });\r\n }\r\n \r\n getApiProperties(id: string, res: any): void {\r\n this.fetchApiProperties(id, { setValidated: false, showToast: false }, res);\r\n }\r\n\r\n setupQueryBuilderConfig(properties: string[]): void {\r\n if (!properties || properties.length === 0) {\r\n console.warn(\"Properties list is empty. Query Builder config might be invalid.\");\r\n return;\r\n }\r\n \r\n const fieldsConfig: { [key: string]: any } = {};\r\n \r\n properties.forEach((prop) => {\r\n fieldsConfig[prop] = {\r\n name: prop,\r\n type: SHARED.STRING, // Ensure type is valid\r\n operators: SHARED.OPERATORS,\r\n options: [], // Add any default options if needed\r\n };\r\n });\r\n \r\n this.config = { fields: fieldsConfig };\r\n console.log(\"Query Builder Config:\", this.config);\r\n }\r\n \r\n\r\n onQueryChange(event: any) {\r\n console.log(MESSAGE.QUERY_CHANGE_EVENT, event);\r\n }\r\n\r\n private fetchApiProperties(apiConfigId: string, options: { setValidated?: boolean; showToast?: boolean } = {}, response:any): void {\r\n if (apiConfigId) {\r\n this.queueService.getbyApiPath(apiConfigId).subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n this.fetchedProperties = res.properties;\r\n const updatedPropertyList = res.properties.map((value:any) => ({ value }));\r\n this.apiPropertyList = updatedPropertyList;\r\n this.setupQueryBuilderConfig(res.properties);\r\n if(response) {\r\n this.record.header = response?.header;\r\n this.record.subHeader = response?.subHeader;\r\n }\r\n if (options.setValidated) {\r\n this.baseStore.setIsApiValidated(SHARED.TRUE);\r\n }\r\n }\r\n },\r\n error: (error: any) => {\r\n if (options.setValidated) {\r\n this.baseStore.setIsApiValidated(SHARED.FALSE);\r\n }\r\n console.error(ERROR.ERROR_FETCHING_DATA, error);\r\n },\r\n complete: () => {\r\n if (options.showToast) {\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.DATA_FETCH_SUCCESS }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n }\r\n },\r\n });\r\n } else {\r\n console.warn(ERROR.API_NAME_NOT_SET);\r\n }\r\n }\r\n\r\n handleGetData(): void {\r\n this.fetchApiProperties(this.record.apiConfigId, { setValidated: true, showToast: true }, null);\r\n }\r\n\r\n handleQueueChange(queueId: string) {\r\n if(queueId) {\r\n this.apiPropertyList = [];\r\n this.record.header = SHARED.EMPTY;\r\n this.record.subHeader = SHARED.EMPTY;\r\n }\r\n }\r\n\r\n override handleSubmit(): void {\r\n this.convertStringToBoolean(this.query.rules);\r\n this.record.rules = this.query;\r\n this.record.properties = this.fetchedProperties;\r\n super.handleSubmit();\r\n }\r\n\r\n convertStringToBoolean(rules: any[]): void {\r\n rules.forEach(rule => {\r\n if (rule.rules) {\r\n this.convertStringToBoolean(rule.rules);\r\n } else if (rule.value === SHARED.STRING_TRUE) {\r\n rule.value = true;\r\n } else if (rule.value === SHARED.STRING_FALSE) {\r\n rule.value = false;\r\n }\r\n });\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as QueueModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<div class=\"grid m-0\">\r\n <div class=\"col-12\">\r\n <div>\r\n <form-container\r\n [record]=\"record\"\r\n [headerText]=\"'Queue / Create Queue'\"\r\n (onSave)=\"handleSubmit()\"\r\n (onCancel)=\"handleCancel()\"\r\n [showSave]=\"true\"\r\n [messages]=\"messages\"\r\n >\r\n <div class=\"card m-0\">\r\n <div class=\"p-fluid p-formgrid grid m-0\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Create Queue</h4>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [record]=\"record\"\r\n [store]=\"queueStore\"\r\n [attributeModel]=\"{\r\n name : 'name',\r\n displayText:'Queue Name',\r\n readonly : false,\r\n isRequired : true,\r\n }\"\r\n >\r\n </text-box>\r\n </div>\r\n <div class=\"col-12 md:col-5\">\r\n <dropdown\r\n [record]=\"record\"\r\n [store]=\"queueStore\"\r\n [attributeModel]=\"{\r\n name: 'apiConfigId',\r\n readonly: false,\r\n isRequired: true,\r\n dataSource: 'apiConfig',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n displayText: 'Api'\r\n }\" (onInput)=\"handleQueueChange($event)\"\r\n >\r\n </dropdown>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"queueStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-full px-2 mt-2 flex justify-content-end mb-2\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Validate\"\r\n (click)=\"handleGetData()\"\r\n class=\"p-button-raised validate-btn-wrapper\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"p-fluid p-formgrid grid m-0\">\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"queueStore\"\r\n [record]=\"record\"\r\n [isStaticDropdown]=\"true\"\r\n [attributeModel]=\"{\r\n name:'header',\r\n displayText : 'Header',\r\n placeholder: 'Select Header',\r\n listValueProperty: 'value',\r\n listLabelProperty: 'value',\r\n readonly : false,\r\n isRequired : true,\r\n options: apiPropertyList\r\n }\"></dropdown>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"queueStore\"\r\n [record]=\"record\"\r\n [isStaticDropdown]=\"true\"\r\n [attributeModel]=\"{\r\n name:'subHeader',\r\n displayText : 'SubHeader',\r\n placeholder: 'Select SubHeader',\r\n listValueProperty: 'value',\r\n listLabelProperty: 'value',\r\n readonly : false,\r\n isRequired : false,\r\n options: apiPropertyList\r\n }\"></dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card m-0\">\r\n <div class=\"p-fluid p-formgrid grid m-0 mb-2\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Queue Details</h4>\r\n </div>\r\n <ngx-query-builder\r\n class=\"p-2\"\r\n [(ngModel)]=\"query\"\r\n [config]=\"config\"\r\n (queryChange)=\"onQueryChange($event)\"\r\n ></ngx-query-builder>\r\n </div>\r\n </form-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { QueueAdminFormComponent } from './components/queue-admin-form/queue-admin-form.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: QueueAdminFormComponent,\r\n children: [],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class QueueRoutingModule {}","import { Injectable } from '@angular/core';\r\nimport { SHARED } from '../constant/SHARED';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataTransformerService {\r\n\r\n constructor() { }\r\n flattenObject(data: any, result: any[] = [], additionalFields: any = {}): any[] {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n if (typeof data[key] === SHARED.TYPE_OBJECT && data[key] !== null && !Array.isArray(data[key])) {\r\n this.flattenObject(data[key], result);\r\n } else {\r\n result.push({\r\n label: this.transformLabel(key),\r\n value: data[key]\r\n });\r\n }\r\n }\r\n }\r\n if (additionalFields._id) {\r\n result.push({\r\n _id: additionalFields._id\r\n });\r\n }\r\n\r\n if (additionalFields.QueueID) {\r\n result.push({\r\n QueueID: additionalFields.QueueID\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n transformLabel(key: string): string {\r\n return key.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\r\n }\r\n}\r\n","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { ROUTES, SEQUENTIAL_MESSAGE, SHARED, MESSAGE_TYPES } from '../../../../shared';\r\nimport { DataTransformerService } from '../../../../shared/services/data-transformer.service';\r\nimport { Router } from '@angular/router';\r\nimport { QueueService } from '../../state/queue.service';\r\nimport { QueueStore } from '../../state/queue.store';\r\n\r\n@Component({\r\n selector: 'queue-application-list',\r\n standalone: false,\r\n templateUrl: './queue-application-list.component.html',\r\n styleUrls: ['./queue-application-list.component.scss'],\r\n})\r\nexport class QueueApplicationListComponent implements OnChanges {\r\n @Input() queueData!: QueueModel;\r\n\r\n selectedStatus: string = SHARED.STATUS_ACTIVE;\r\n isAscending: boolean = true;\r\n associateQueueList: any;\r\n\r\n constructor(\r\n public queueService: QueueService,\r\n public dataTransformService: DataTransformerService,\r\n public router: Router,\r\n public queueStore : QueueStore\r\n ) {}\r\n\r\n ngOnChanges() {\r\n if (this.queueData) {\r\n this.loadAssociatedList();\r\n }\r\n }\r\n loadAssociatedList(): void {\r\n if (this.queueData && this.queueData._id) {\r\n this.queueService.getCaseById(this.queueData.apiConfigUrl).subscribe((application: any) => {\r\n if (application) {\r\n const messages = SEQUENTIAL_MESSAGE;\r\n this.associateQueueList = application.map((item: any, index: number) => ({\r\n ...item,\r\n initials: this.getInitials(item.FullName),\r\n message: {\r\n content: messages[index % messages.length],\r\n type: this.getTypeByIndex(index),\r\n day: index % 2 === 0 ? SHARED.TODAY : SHARED.YESTERDAY,\r\n count: this.getRandomCount(),\r\n },\r\n }));\r\n }\r\n });\r\n } else {\r\n this.associateQueueList = [];\r\n }\r\n }\r\n getRandomCount(): number {\r\n return Math.floor(Math.random() * 10) + 1;\r\n }\r\n \r\n getInitials(fullName: string): string {\r\n if (!fullName) return '';\r\n const nameParts = fullName?.split(' ')?.filter(Boolean);\r\n const initials = nameParts?.length > 1\r\n ? nameParts[0][0] + nameParts[nameParts?.length - 1][0]\r\n : nameParts[0][0];\r\n return initials?.toUpperCase();\r\n } \r\n \r\n getTypeByIndex(index: number): string {\r\n const types = MESSAGE_TYPES;\r\n return types[index % types.length];\r\n }\r\n \r\n\r\n getRandomType(): string {\r\n const types = MESSAGE_TYPES;\r\n return types[Math.floor(Math.random() * types.length)];\r\n }\r\n \r\n \r\n\r\n handleApplicationClick(application: any) {\r\n localStorage.setItem(SHARED.selectedApplication, application._id);\r\n localStorage.setItem(\r\n SHARED.selectedApplicationNumber,\r\n application.applicationNumber\r\n );\r\n this.router.navigate([ROUTES.APPLICATION + application.CaseId]);\r\n }\r\n\r\n onStatusChange(selectedStatus: any): any {\r\n this.selectedStatus = selectedStatus.target.value;\r\n }\r\n}\r\n","<div class=\"grid m-0\">\r\n <div class=\"col-12\">\r\n <div class=\"p-fluid p-formgrid grid p-2\">\r\n <div class=\"card col-12 md:col-12 flex flex-column border-bottom align-items-start p-4 pb-3\" style=\"\r\n border-bottom: 1px solid var(--surface-border);\r\n border-radius: 0px;\r\n border-top-left-radius: 8px;\r\n border-top-right-radius: 8px;\r\n \">\r\n <h4 class=\"text-color m-0 queue-name font-semibold margin\">\r\n {{ queueData.name }}\r\n </h4>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 p-0 flex scrollable flex-column\" [ngClass]=\"\r\n selectedStatus === 'active' ? 'surface-card' : 'inactive-card-wrapper'\r\n \">\r\n @for(record of associateQueueList; track record; let i = $index) {\r\n @if(record){\r\n <div class=\"col-12 md:col-12 border-bottom-1 p-0 surface-border gap-2 hover:surface-ground cursor-pointer\"\r\n (click)=\"handleApplicationClick(record)\">\r\n\r\n <div class=\"col-12 md:col-12 flex align-items-center py-3 px-4 userInfo\">\r\n <div class=\"col-12 md:col-2 p-0 userImage\">\r\n <div\r\n class=\"mainimg flex align-items-center justify-content-center circleColor w-3rem h-3rem border-circle\">\r\n <span class=\"font-bold\" style=\"font-weight: 600; font-size: 13.5; font-family: inherit;\">\r\n {{ record.initials }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-10 p-0\">\r\n <div class=\"flex justify-content-between align-items-center col-12 md:col-12 p-0\">\r\n <div class=\"userName\" style=\"font-weight: 600; font-size: 15px; \">\r\n {{ record.FullName | capitalizeWords }} \r\n </div>\r\n <div class=\"dayAndtime flex\">\r\n @if(record.message.type == \"Email\"){\r\n <span class=\"pi pi-envelope mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\r\n }\r\n @else if(record.message.type == \"SMS\") {\r\n <span class=\"pi pi-comments mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\r\n }@else if(record.message.type == \"WhatsApp\"){\r\n <span class=\"pi pi-whatsapp mr-2\" style=\"color: #676B89;font-size: 17px;\"></span>\r\n\r\n }\r\n <span style=\"color: #676B89; font-family: inherit;\"> {{record.message.day}}</span>\r\n </div>\r\n </div>\r\n <div class=\"flex align-items-center justify-content-between mt-1\">\r\n <div class=\"email col-12 md:col-12 p-0\" style=\"color: #8A8EA6;\">\r\n {{ record.message.content }}\r\n </div>\r\n \r\n <div class=\"countOfMessages\">\r\n <span>{{record.message.count}}</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { QueueService } from '../../state/queue.service';\r\nimport { BaseContainerComponent, ERROR, SHARED } from '../../../../shared';\r\nimport { QueueStore } from '../../state/queue.store';\r\n\r\n@Component({\r\n selector: 'lib-queue-admin-list',\r\n standalone: false,\r\n templateUrl: './queue-admin-list.component.html',\r\n styleUrl: './queue-admin-list.component.scss'\r\n})\r\nexport class QueueAdminListComponent extends BaseContainerComponent<QueueModel> {\r\n constructor(public queueStore:QueueStore ,private queueService: QueueService) {\r\n super(queueService);\r\n }\r\n\r\n queueList: QueueModel[] = [];\r\n selectedQueue: any;\r\n queueId: any;\r\n ngOnInit() {\r\n this.init();\r\n this.getAllQueueList();\r\n }\r\n\r\n getAllQueueList() {\r\n this.queueService.getAll().subscribe({\r\n next: (res) => {\r\n this.queueList = res;\r\n this.selectedQueue = res[0];\r\n },\r\n error: (err) => {\r\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\r\n }\r\n });\r\n }\r\n\r\n handleQueueData(event: any) {\r\n this.selectedQueue = this.queueList.find((i) => i._id == event);\r\n if (this.selectedQueue) {\r\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\r\n } else {\r\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\r\n }\r\n }\r\n}","<div class=\"container grid m-0\">\r\n <div class=\"col-12 xl:col-3 md:col-12\">\r\n <block-list\r\n [queueData]=\"queueList\"\r\n (queueDataById)=\"handleQueueData($event)\"\r\n ></block-list>\r\n </div>\r\n <div class=\"col-12 xl:col-3 md:col-12\">\r\n @if(selectedQueue){\r\n <div class=\"animation-duration-500 associated-list\">\r\n <queue-application-list\r\n [queueData]=\"selectedQueue\"\r\n ></queue-application-list>\r\n </div>\r\n }\r\n </div>\r\n \r\n <div class=\"xl:col-6 md:col-12\">\r\n <div class=\"searchbar-wrapper\">\r\n <queue-search-customer></queue-search-customer>\r\n </div>\r\n </div>\r\n </div>\r\n ","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { QueueAdminFormComponent } from \"./components/queue-admin-form/queue-admin-form.component\";\r\nimport { SharedModule } from \"../../shared/shared.module\";\r\nimport { QueueRoutingModule } from \"./queue-admin-routing.module\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { QueryBuilderModule } from \"@kerwin612/ngx-query-builder\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { QueueAdminListComponent } from \"./components/queue-admin-list/queue-admin-list.component\";\r\nimport { QueueApplicationListComponent } from \"./components/queue-application-list/queue-application-list.component\";\r\nimport { CheckBoxComponent } from \"../../shared\";\r\n\r\n@NgModule({\r\n declarations: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n QueueRoutingModule,\r\n FormsModule,\r\n QueryBuilderModule,\r\n ButtonModule,\r\n CheckBoxComponent\r\n ],\r\n exports: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\r\n})\r\nexport class QueueAdminModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared/state/base.store';\r\nimport { AdminActionModel } from '../models/admin-action.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'action' })\r\nexport class AdminActionStore extends BaseStore<AdminActionModel> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n}","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AdminActionModel } from '../models/admin-action.model';\r\nimport { AdminActionStore } from './admin-action.store';\r\nimport { DATASOURCES } from '../../../shared/constant/DATASOURCES';\r\nimport { BaseService } from '../../../shared/state/base.service';\r\nimport { AppConfigService } from '../../../shared/services/app-config.service';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\nimport { Observable, tap } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AdminActionService extends BaseService<AdminActionModel> {\r\n\r\n protected override list : any= [...LISTCONFIG.QUEUEAPICONFIG, ...LISTCONFIG.ACTIONQUEUECONFIG];\r\n\r\n constructor(protected actionStore: AdminActionStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\r\n super(http, actionStore, appConfigService,listService);\r\n this._pathName = DATASOURCES.ACTIONS;\r\n }\r\n\r\n handleValidateAction(name:string, id: string, record:any): Observable<AdminActionModel[]> {\r\n const apiUrl = `${this.apiUrl}${name}/${encodeURIComponent(id)}`;\r\n return this.http.post<AdminActionModel[]>(`${apiUrl}`, record).pipe(\r\n tap((entities: AdminActionModel[]) => this.actionStore.set(entities))\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\r\nimport { AdminActionModel } from '../../models/admin-action.model';\r\nimport { TableBuilder } from '../../../../shared/services/table.builder';\r\nimport { AdminActionService } from '../../state/admin-action.service';\r\nimport { actionHiddenHeaderList, actionList, actionTableColumnWidthList } from '../../../../shared/constant/SHARED';\r\nimport { DATASOURCES } from '../../../../shared';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n\r\n/**\r\n * Admin Action List Component\r\n */\r\n@Component({\r\n selector: 'lib-admin-action-list',\r\n standalone : false,\r\n templateUrl: './admin-action-list.component.html',\r\n styleUrl: './admin-action-list.component.scss'\r\n})\r\nexport class AdminActionListComponent extends BaseListComponent<AdminActionModel>{\r\n \r\n pathName:string = DATASOURCES.ACTIONS;\r\n override editPermission: string = PERMISSION.ACTIONCONFIG_PUT\r\n override deletePermission: string = PERMISSION.ACTIONCONFIG_DELETE\r\n constructor(service: AdminActionService, private tableBuilder: TableBuilder){\r\n super(service, tableBuilder)\r\n this.tableBuilder.hiddenHeaders = actionHiddenHeaderList;\r\n } \r\n\r\n ngOnInit() {\r\n this.init(actionTableColumnWidthList);\r\n }\r\n \r\n}","<div class=\"dicitonary-list-wrapper\">\r\n @if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\r\n }\r\n</div>","import { BaseModel } from \"../../../shared/models/base.model\";\r\n\r\nexport class AdminActionModel extends BaseModel {\r\n name!: string;\r\n apiConfigId!: string;\r\n prompt!: string;\r\n queueId!: string;\r\n formFields!: string;\r\n status!: StatusType;\r\n isActive!: boolean;\r\n apiDocsUrl!: string;\r\n}\r\n\r\nexport type StatusType = \"Enable\" | \"Disable\";","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { BaseFormComponent } from '../../../../shared/_base/base-form/base-form.component';\r\nimport { AdminActionModel } from '../../models/admin-action.model';\r\nimport { Message } from 'primeng/api';\r\nimport { SHARED } from '../../../../shared/constant/SHARED';\r\nimport { AdminActionService } from '../../state/admin-action.service';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AdminActionStore } from '../../state/admin-action.store';\r\nimport { AppConfigService, BaseQuery, BaseStore, ROUTES } from '../../../../shared';\r\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\r\n\r\n@Component({\r\n selector: 'lib-admin-action-form',\r\n standalone : false,\r\n templateUrl: './admin-action-form.component.html',\r\n styleUrl: './admin-action-form.component.scss'\r\n})\r\nexport class AdminActionFormComponent extends BaseFormComponent<AdminActionModel> implements OnInit, OnDestroy{\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n apiConfigList: any[] = [];\r\n queueList: any[] = [];\r\n\r\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>) {\r\n super(adminActionService, validatorService, router, activatedRoute)\r\n this.record = new AdminActionModel();\r\n this.record.isActive = true;\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.baseStore.setIsApiValidated(null);\r\n }\r\n\r\n handleValidateAction() {\r\n const payload = {path: this.record.apiDocsUrl};\r\n this.adminActionService.handleValidateAction(ROUTES.VALIDATE_ACTIONS,this.record.apiConfigId,payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n if (typeof res !== SHARED.STRING) {\r\n this.record.formFields = JSON.stringify(res);\r\n } else {\r\n this.record.formFields = res;\r\n }\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_ACTION_SUCCESS_MESSAGE }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n // this.baseStore.setIsApiValidated(SHARED.TRUE);\r\n }\r\n },\r\n error: (error: any) => {\r\n // this.baseStore.setIsApiValidated(SHARED.FALSE);\r\n },\r\n });\r\n }\r\n\r\n override handleSubmit(): void {\r\n if (typeof this.record.formFields !== SHARED.STRING && !this.isValidJSONArray(this.record.formFields)) {\r\n this.record.formFields = JSON.stringify(this.record.formFields);\r\n }\r\n super.handleSubmit();\r\n }\r\n \r\n private isValidJSONArray(value: string): boolean {\r\n try {\r\n const parsed = JSON.parse(value);\r\n return Array.isArray(parsed);\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as AdminActionModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<form-container\r\n [record]=\"record\"\r\n [headerText]=\"'Actions / Actions Form'\"\r\n [messages]=\"messages\"\r\n (onSave)=\"handleSubmit()\"\r\n [showSave]=\"true\"\r\n (onCancel)=\"handleCancel()\"\r\n>\r\n <div class=\"card p-fluid p-formgrid grid \">\r\n <h4 class=\"font-bold col-12 md:col-12\">Actions Form</h4>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Action Name',\r\n placeholder: 'Enter Action Name'\r\n }\"\r\n ></text-box>\r\n </div>\r\n \r\n <div class=\"col-12 md:col-5\">\r\n <dropdown\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name: 'apiConfigId',\r\n readonly: false,\r\n isRequired: true,\r\n displayText: 'End Point',\r\n placeholder: 'Select End Point'\r\n }\"></dropdown>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"adminActionStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name:'queueId',\r\n isRequired: true,\r\n displayText : 'Queue',\r\n placeholder: 'Select Queue',\r\n readonly: false\r\n }\"></dropdown>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'apiDocsUrl',\r\n isRequired: false,\r\n displayText: 'API Docs URL',\r\n placeholder: 'Enter API Docs URL'\r\n }\"\r\n ></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <text-area\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'prompt',\r\n isRequired: true,\r\n displayText: 'Prompt',\r\n placeholder: 'Enter prompt'\r\n }\"\r\n ></text-area>\r\n </div>\r\n\r\n <div class=\"w-full flex justify-content-end px-2 mt-2\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Validate\"\r\n class=\"p-button-raised validate-btn-wrapper\"\r\n (click)=\"handleValidateAction()\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <text-area\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'formFields',\r\n isRequired: true,\r\n displayText: 'Form Configuration',\r\n placeholder: 'Enter form fields'\r\n }\"\r\n ></text-area>\r\n </div>\r\n </div>\r\n \r\n</form-container>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdminActionListComponent } from './components/admin-action-list/admin-action-list.component';\r\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\r\nimport { AdminActionFormComponent } from './components/admin-action-form/admin-action-form.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AdminActionListComponent, AdminActionFormComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n TablePrimaryComponent,\r\n TextAreaComponent,\r\n ButtonModule,\r\n CheckBoxComponent\r\n ],\r\n exports: [AdminActionListComponent, AdminActionFormComponent]\r\n})\r\nexport class ActionAdminModule { }\r\n","import { SHARED } from \"../../../shared\";\r\nimport { BaseModel } from \"../../../shared/models/base.model\";\r\n\r\nexport class DdAdminModel extends BaseModel {\r\n name?: string\r\n apiConfigId?: string\r\n dictionaryItems: DdItemModel[] = [];\r\n message?: string;\r\n isActive!: boolean;\r\n}\r\nexport class DdItemModel extends BaseModel {\r\n itemName?: string\r\n itemExpression?: string\r\n styleExpression?: string\r\n isActive: boolean = true;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { DdAdminModel } from '../models/dictionary.model';\r\nimport { BaseStore } from '../../../shared/state/base.store';\r\nimport { ApiPropertyModel } from '../models/api-property.model';\r\n\r\n/**\r\n * DictionaryStore\r\n * @description Store for managing dictionary state\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'dictionary' })\r\nexport class DictionaryStore extends BaseStore<DdAdminModel> {\r\n\r\n setPropertiesData(value : ApiPropertyModel){\r\n this.update({propertyData : value})\r\n }\r\n\r\n setSidebarVisible(value:boolean){\r\n this.update({isSideBarVisible:value})\r\n }\r\n}","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DictionaryStore } from './dictionary.store';\r\nimport { DdAdminModel } from '../models/dictionary.model';\r\nimport { catchError, Observable, of, tap } from 'rxjs';\r\nimport { BaseService, AppConfigService, DATASOURCES, ERROR } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { ApiPropertyModel } from '../models/api-property.model';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DictionaryService extends BaseService<DdAdminModel> {\r\n\r\n constructor(public dictionaryStore: DictionaryStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\r\n super(http, dictionaryStore, appConfigService,listService);\r\n this._pathName = DATASOURCES.DICTIONARY;\r\n }\r\n\r\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG\r\n\r\n getAllApiProperties(name:string, id: string): Observable<ApiPropertyModel> {\r\n return this.http.get<ApiPropertyModel>(`${this.apiUrl+name}/${id}`).pipe(\r\n tap((propertiesData: ApiPropertyModel) => this.dictionaryStore.setPropertiesData(propertiesData))\r\n );\r\n }\r\n\r\n deleteDictionaryItemById(name:string, dictionaryItemId: string) : Observable<DdAdminModel | any> {\r\n const Url = `${this.apiUrl+name}/${dictionaryItemId}`;\r\n return this.http.delete<DdAdminModel>(Url).pipe(\r\n catchError((error:any) => {\r\n console.error(ERROR.ERROR_DELETE_DICTIONARY_ITEM, error);\r\n return of({ error: true, message: ERROR.ERROR_DELETE_DICTIONARY_ITEM });\r\n })\r\n )\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DictionaryStore } from './dictionary.store';\r\nimport { DdAdminModel } from '../models/dictionary.model';\r\nimport { BaseQuery } from '../../../shared/state/base.query';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiPropertyModel } from '../models/api-property.model';\r\n\r\n/**\r\n * DictionaryQuery\r\n * @description Query for managing dictionary state\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class DictionaryQuery extends BaseQuery<DdAdminModel> {\r\n constructor(protected override store: DictionaryStore) {\r\n super(store);\r\n }\r\n\r\n selectPropertyData():Observable<ApiPropertyModel>{\r\n return this.select((state) => state['propertyData'])\r\n }\r\n getPropertyData(): ApiPropertyModel{\r\n return this.getValue()['propertyData']\r\n }\r\n selectSidebarVisible(){\r\n return this.select((state)=>state['isSideBarVisible'])\r\n }\r\n getSidebarVisible(){\r\n return this.getValue()['isSideBarVisible']\r\n }\r\n}\r\n","import { SHARED } from \"../../../shared\";\r\n\r\nexport class DdAttributeSidebarViewModel {\r\n mappingInfo: string = SHARED.EMPTY;\r\n propertyList : string = SHARED.EMPTY\r\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { DictionaryStore } from '../../state/dictionary.store';\r\nimport { DdAttributeSidebarViewModel } from '../../models/dd-attribute-sidebar-view.model';\r\nimport { BaseQuery, BaseStore, SHARED } from '../../../../shared';\r\nimport { DictionaryQuery } from '../../state/dictionary.query';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DdItemModel } from '../../models/dictionary.model';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * DdAdminItemFormComponent\r\n * This component is used to create and edit item expressions and style expressions.\r\n */\r\n@Component({\r\n selector: 'lib-dd-admin-item-form',\r\n standalone: false,\r\n templateUrl: './dd-admin-item-form.component.html',\r\n styleUrl: './dd-admin-item-form.component.scss'\r\n})\r\nexport class DdAdminItemFormComponent implements OnChanges, OnDestroy {\r\n @Input() ddItemRecord: DdItemModel = { itemName: SHARED.EMPTY, itemExpression: SHARED.EMPTY, styleExpression: SHARED.EMPTY, isActive: SHARED.FALSE }\r\n @Input() isItemExpression?: boolean\r\n @Input() isSidebarVisible?: boolean\r\n @Output() saveClick = new EventEmitter<any>()\r\n attributeRecord!: DdAttributeSidebarViewModel\r\n dictionaryItemName: string = SHARED.EMPTY\r\n condition: string = SHARED.EMPTY\r\n propertyOptions: SelectItem[] = []\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n constructor(public dictionaryStore: DictionaryStore, public dictionaryQuery: DictionaryQuery, private baseStore: BaseStore<any>) {\r\n this.attributeRecord = new DdAttributeSidebarViewModel()\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[SHARED.ISITEMEXPRESSION]) {\r\n this.attributeRecord.mappingInfo = (this.isItemExpression ? this.ddItemRecord.itemExpression : this.ddItemRecord.styleExpression) ?? SHARED.EMPTY\r\n }\r\n this.loadPropertyOption()\r\n }\r\n\r\n loadPropertyOption() {\r\n this.subscriptions.add(\r\n this.dictionaryQuery.selectPropertyData().subscribe((res: any) => {\r\n this.propertyOptions = []\r\n if (res) {\r\n this.mapProperties(res)\r\n }\r\n })\r\n )\r\n }\r\n\r\n private mapProperties(res: any) {\r\n if (res?.properties?.length) {\r\n this.propertyOptions.push(...res.properties.map((property: string) => ({\r\n label: `${res.name}.${property}`,\r\n value: `${res.name}.${property}`\r\n })))\r\n }\r\n if (res?.childApis?.length) {\r\n res.childApis.forEach((childApi: any) => {\r\n this.propertyOptions.push(...childApi.properties.map((property: string) => ({\r\n label: `${res.name}.${childApi.name}.${property}`,\r\n value: `${res.name}.${childApi.name}.${property}`\r\n })))\r\n })\r\n }\r\n }\r\n\r\n handleSaveBtnClick(event: any) {\r\n if (this.isItemExpression) {\r\n if (this.baseStore) this.baseStore.setIsFormSubmitted(true);\r\n if (!this.attributeRecord.mappingInfo) return;\r\n this.ddItemRecord.itemExpression = this.attributeRecord.mappingInfo\r\n } else {\r\n this.ddItemRecord.styleExpression = this.attributeRecord.mappingInfo\r\n }\r\n this.attributeRecord.propertyList = SHARED.EMPTY\r\n this.saveClick.emit(false)\r\n }\r\n\r\n handleAddExpressionClick(event: any) {\r\n if (this.attributeRecord.propertyList) {\r\n const formattedProperty = `\\${${this.attributeRecord.propertyList}}`;\r\n this.attributeRecord.mappingInfo += this.attributeRecord.mappingInfo\r\n ? `${formattedProperty}`\r\n : formattedProperty;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe()\r\n this.propertyOptions = []\r\n this.attributeRecord = new DdAttributeSidebarViewModel()\r\n }\r\n}\r\n","<div class=\"dicitonary-edit-action px-3\">\r\n <div class=\"flex align-items-center justify-content-end mt-3\">\r\n <lib-button\r\n [store]=\"dictionaryStore\"\r\n [record]=\"attributeRecord\"\r\n [attributeModel]=\"{\r\n buttonLabel: 'Save',\r\n isDisabled: false,\r\n }\"\r\n (onBtnClick)=\"handleSaveBtnClick($event)\"\r\n >\r\n </lib-button>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 mt-5\">\r\n <label *ngIf=\"!isItemExpression\" for=\"styleInput\" class=\"text-gray-600 text-sm mb-2 block\">\r\n Hint: Use key-value pairs for styles.\r\n <br/>\r\n Example:<code>\r\n 'background-color': 'lightgray',\r\n 'font-size': '16px',<br>\r\n 'padding': '10px'\r\n </code>\r\n </label>\r\n <text-area\r\n [store]=\"dictionaryStore\"\r\n [record]=\"attributeRecord\"\r\n [attributeModel]=\"{\r\n displayText: 'Expression',\r\n readonly : false,\r\n name : 'mappingInfo',\r\n isRequired : isItemExpression ? true : false,\r\n placeholder : 'Enter Text',\r\n customPadding: '12px',\r\n }\"\r\n ></text-area>\r\n </div>\r\n <div class=\"col-12 md:col-12\">\r\n <div class=\"p-field queue-list-wrapper\">\r\n <dropdown [store]=\"dictionaryStore\" [isStaticDropdown]=\"true\" [record]=\"attributeRecord\" [attributeModel]=\"{\r\n name:'propertyList',\r\n displayText : 'Select properties',\r\n isRequired:false,\r\n listLabelProperty: 'label',\r\n listValueProperty: 'value',\r\n options : propertyOptions,\r\n filter : true\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-3\">\r\n <lib-button\r\n [store]=\"dictionaryStore\"\r\n [record]=\"attributeRecord\"\r\n [attributeModel]=\"{\r\n buttonLabel: 'Add to expression',\r\n isDisabled: false,\r\n }\"\r\n (onBtnClick)=\"handleAddExpressionClick($event)\"\r\n >\r\n </lib-button>\r\n </div>\r\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, DATASOURCES, ERROR, SHARED } from '../../../../shared';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { DictionaryQuery } from '../../state/dictionary.query';\r\nimport { DictionaryService } from '../../state/dictionary.service';\r\nimport { DictionaryStore } from '../../state/dictionary.store';\r\nimport { DdAdminModel, DdItemModel } from '../../models/dictionary.model';\r\nimport { Message } from 'primeng/api';\r\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\r\n\r\n/**\r\n * DdAdminFormComponent\r\n * @description Component for managing dictionary form\r\n */\r\n@Component({\r\n selector: 'lib-dd-admin-form',\r\n templateUrl: './dd-admin-form.component.html',\r\n styleUrl: './dd-admin-form.component.scss',\r\n standalone: false\r\n})\r\nexport class DdAdminFormComponent extends BaseFormComponent<DdAdminModel> implements OnInit, OnDestroy {\r\n sidebarVisibility: boolean[] = [];\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n dictionaryItem !: DdItemModel\r\n dictionaryName: string = SHARED.EMPTY;\r\n isItemExpression : boolean = SHARED.FALSE;\r\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>) {\r\n super(service, validatorService, router, activatedRoute);\r\n this.record = new DdAdminModel()\r\n this.record.isActive = true;\r\n this.dictionaryItem = new DdItemModel()\r\n }\r\n\r\n ngOnInit() {\r\n this.baseStore.setIsApiValidated(null);\r\n this.init()\r\n this.sidebarVisibility = new Array(this.record.dictionaryItems.length).fill(false);\r\n setTimeout(() => {\r\n if (this.record.apiConfigId) {\r\n this.handleGetProperties(this.record.apiConfigId);\r\n }\r\n }, 2000);\r\n }\r\n \r\n handleDictionaryItemAddBtnClick() {\r\n if (!(this.record.name && this.record.apiConfigId)) return;\r\n if (Array.isArray(this.record.dictionaryItems)) {\r\n const hasEmptyItem = this.record.dictionaryItems.some((item: DdItemModel) => {\r\n const isItemNameEmpty = !item.itemName || item.itemName.trim() === SHARED.EMPTY;\r\n const isItemExpressionEmpty = !item.itemExpression || item.itemExpression.trim() === SHARED.EMPTY;\r\n return isItemNameEmpty && isItemExpressionEmpty;\r\n });\r\n \r\n if (hasEmptyItem) {\r\n return;\r\n }\r\n } else {\r\n this.record.dictionaryItems = [];\r\n }\r\n this.record.dictionaryItems = [...this.record.dictionaryItems, new DdItemModel()];\r\n }\r\n\r\n handleItemExpression(i?:any , event?:any) {\r\n this.sidebarVisibility[i] = true;\r\n this.isItemExpression = SHARED.TRUE;\r\n }\r\n \r\n handleStyleExpression(i:any, event:any) {\r\n this.sidebarVisibility[i] = true;\r\n this.isItemExpression = SHARED.FALSE\r\n }\r\n \r\n handleGetProperties(event : any){\r\n if(event){\r\n this.service.getAllApiProperties(DATASOURCES.QUEUESAPICONFIG,event).subscribe()\r\n }\r\n }\r\n \r\n onSidebarClose(isVisible:boolean){\r\n this.sidebarVisibility = this.sidebarVisibility.map(() => isVisible);\r\n }\r\n\r\n handleDeleteRecord(index: number, dictionaryItemId: string) {\r\n if (index >= 0 && index < this.record.dictionaryItems.length) {\r\n this.record.dictionaryItems = this.record.dictionaryItems.filter((_, i) => i !== index);\r\n if(dictionaryItemId) {\r\n this.service.deleteDictionaryItemById(DATASOURCES.DELETEDICTIONARYITEM, dictionaryItemId).subscribe(\r\n (res) => {\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: res?.message || MESSAGE.DELETE_DICTIONARY_ITEM_SUCCESS }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n })\r\n }\r\n } else {\r\n console.error(ERROR.INVALID_INDEX, index);\r\n }\r\n }\r\n \r\n override ngOnDestroy(): void {\r\n this.record = {} as DdAdminModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<form-container [messages]=\"messages\" [record]=\"record\" [headerText]=\"'Dictionary Form'\" [showSave]=\"true\"\r\n (onCancel)=\"handleCancel()\" (onSave)=\"handleSubmit()\">\r\n <div class=\"card p-fluid p-formgrid grid m-0\">\r\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\">\r\n <div class=\"col-12 md:col-5 p-field\">\r\n <div class=\"dictionary-name\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly : false,\r\n name : 'name',\r\n isRequired : true,\r\n displayText: 'Dictionary Name',\r\n placeholder : 'Enter Text',\r\n }\"></text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-5\">\r\n <div class=\"p-field queue-list-wrapper\">\r\n <dropdown [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'apiConfigId',\r\n dataSource: 'apiconfigs',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n displayText: 'API ',\r\n placeholder: 'Select API',\r\n isRequired: true\r\n }\" (onInput)=\"handleGetProperties($event)\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field p-0 pr-2 ml-3 col-12 md:col-2\">\r\n <div class=\"card m-0 p-0 mb-2\">\r\n <div class=\"mt-3 w-full flex\">\r\n <button pButton pRipple routerLinkActive=\"router-link-active\"\r\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\r\n (click)=\"handleDictionaryItemAddBtnClick()\">\r\n Add New Item\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- dictionary Items -->\r\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\"\r\n *ngFor=\"let ddItem of record.dictionaryItems; let i = index\">\r\n <div class=\"field col-12 md:col-3 pr-0\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name : 'itemName',\r\n readonly : false,\r\n displayText : 'Item Name',\r\n isRequired : true,\r\n }\"></text-box>\r\n </div>\r\n <div class=\"field flex align-items-center justify-content-between col-12 md:col-3 pr-0\">\r\n <div class=\"flex align-items-center w-full\">\r\n <div class=\"w-full mr-3\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name : 'itemExpression',\r\n readonly : true,\r\n displayText : 'Item Expression',\r\n isRequired : true,\r\n }\">\r\n </text-box>\r\n </div>\r\n <span class=\"pi pi-cog mt-4 cursor-pointer text-xl\"\r\n (click)=\"handleItemExpression(i, $event )\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-3 flex align-items-center justify-content-between pr-0\">\r\n <div class=\"flex align-items-center w-full\">\r\n <div class=\"w-full mr-3\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name : 'styleExpression',\r\n readonly : false,\r\n disable : true,\r\n displayText : 'Style Expression',\r\n isRequired : false,\r\n }\">\r\n </text-box>\r\n </div>\r\n <span class=\"pi pi-cog mt-4 text-xl cursor-pointer text-color\"\r\n (click)=\"handleStyleExpression(i, $event)\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-2 flex align-items-center justify-content-center mt-4\">\r\n <check-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Is Active',\r\n }\">\r\n </check-box>\r\n\r\n <div class=\"ml-6 delete-icon-container\">\r\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\"\r\n (click)=\"handleDeleteRecord(i, ddItem?._id)\"></i>\r\n </div>\r\n </div>\r\n <sidebar [isSidebarVisible]=\"sidebarVisibility[i]\" [title]=\"'Edit Expression'\"\r\n (onClose)=\"onSidebarClose($event)\">\r\n <lib-dd-admin-item-form [ddItemRecord]=\"ddItem\" [isItemExpression]=\"isItemExpression\"\r\n (saveClick)=\"onSidebarClose($event)\"></lib-dd-admin-item-form>\r\n </sidebar>\r\n </div>\r\n\r\n </div>\r\n</form-container>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\r\nimport { TableBuilder } from '../../../../shared/services/table.builder';\r\nimport { DictionaryService } from '../../state/dictionary.service';\r\nimport { DdAdminModel } from '../../models/dictionary.model';\r\nimport { DATASOURCES, dictionaryHiddenHeaderList } from '../../../../shared';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n@Component({\r\n selector: 'lib-dd-admin-list',\r\n templateUrl: './dd-admin-list.component.html',\r\n styleUrl: './dd-admin-list.component.scss',\r\n standalone : false\r\n})\r\nexport class DdAdminListComponent extends BaseListComponent<DdAdminModel> implements OnInit{\r\n\r\n pathName:string = DATASOURCES.DICTIONARY;\r\n override editPermission: string = PERMISSION.DD_ADMIN_PUT\r\n override deletePermission: string = PERMISSION.DD_ADMIN_DELETE\r\n constructor(service: DictionaryService, private tableBuilder: TableBuilder){\r\n super(service, tableBuilder);\r\n this.tableBuilder.hiddenHeaders = dictionaryHiddenHeaderList;\r\n }\r\n\r\n ngOnInit(){\r\n this.init()\r\n }\r\n}","<div class=\"dicitonary-list-wrapper\">\r\n @if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\r\n }\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DdAdminFormComponent } from './components/dd-admin-form/dd-admin-form.component';\r\nimport { DdAdminListComponent } from './components/dd-admin-list/dd-admin-list.component';\r\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DdAdminItemFormComponent } from './components/dd-admin-item-form/dd-admin-item-form.component';\r\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\r\nimport { FormContainerComponent } from '../../shared/components/form-container/form-container.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [DdAdminFormComponent, DdAdminListComponent, DdAdminItemFormComponent ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DropdownModule,\r\n ButtonComponent,\r\n InputTextareaModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TablePrimaryComponent,\r\n CheckBoxComponent,\r\n ButtonModule,\r\n TextAreaComponent,\r\n FormContainerComponent\r\n ],\r\n exports : [DdAdminFormComponent, DdAdminListComponent]\r\n})\r\nexport class DdAdminModule { }\r\n","import { BaseModel } from \"../../../shared\";\r\n\r\nexport class TemplateModel extends BaseModel {\r\n name!: string;\r\n type!: string;\r\n queueId!: string;\r\n isActive!: boolean;\r\n subject?: string;\r\n body!: string;\r\n dictionaryID?: string;\r\n dictionaryItemID?: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared';\r\nimport { TemplateModel } from '../models/template.model';\r\n\r\n/**\r\n * Template Admin Store\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'templateStore' })\r\nexport class TemplateAdminStore extends BaseStore<TemplateModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { TemplateModel } from '../models/template.model';\r\nimport { TemplateAdminStore } from './template-admin.store';\r\n\r\n/**\r\n * Service for managing template configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateAdminService extends BaseService<TemplateModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected templateAdminStore: TemplateAdminStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, templateAdminStore, configService, listService);\r\n this._pathName = DATASOURCES.Template;\r\n }\r\n\r\n protected override list: any = [\r\n {\r\n name: \"queueId\",\r\n dataSource: DATASOURCES.QUEUES,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryID\",\r\n dataSource: DATASOURCES.DICTIONARY,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryItemID\",\r\n dataSource: DATASOURCES.DELETEDICTIONARYITEM,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"key\",\r\n }\r\n ]\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseQuery } from '../../../shared';\r\nimport { TemplateModel } from '../models/template.model';\r\nimport { TemplateAdminStore } from './template-admin.store';\r\n\r\n\r\n/**\r\n * Template Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateAdminQuery extends BaseQuery<TemplateModel> {\r\n\r\n constructor(protected override store: TemplateAdminStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { TemplateModel } from '../../models/template.model';\r\nimport { TemplateAdminService } from '../../state/template-admin.service';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, msgTemplateTypeList, SHARED } from '../../../../shared';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TemplateAdminStore } from '../../state/template-admin.store';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { TemplateAdminQuery } from '../../state/template-admin.query';\r\nimport { List } from '../../../../shared/models/list.model';\r\n\r\n@Component({\r\n selector: 'lib-template-admin-form',\r\n standalone: false,\r\n templateUrl: './template-admin-form.component.html',\r\n styleUrl: './template-admin-form.component.scss'\r\n})\r\nexport class TemplateAdminFormComponent extends BaseFormComponent<TemplateModel> implements OnInit, OnDestroy{\r\n\r\n templateTypeList: SelectItem<any>[] = msgTemplateTypeList;\r\n dictionaries: any[] = [];\r\n dictionaryItems: any[] = [];\r\n messageContent!: string;\r\n isFormSubmitted: boolean = false;\r\n\r\n constructor(\r\n override service: TemplateAdminService,\r\n override validatorService: ValidatorService,\r\n override router: Router,\r\n override activatedRoute: ActivatedRoute,\r\n private query: TemplateAdminQuery,\r\n public templateStore: TemplateAdminStore,\r\n override baseStore: BaseStore<TemplateModel>,\r\n override baseQuery: BaseQuery<TemplateModel>\r\n ) {\r\n super(service, validatorService, router, activatedRoute);\r\n this.record = new TemplateModel();\r\n this.record.isActive = true;\r\n }\r\n \r\n ngOnInit(): void {\r\n super.init();\r\n this.baseStore.setIsApiValidated(null);\r\n this.recordChange.asObservable().subscribe((record) => {\r\n this.messageContent = this.decodeHtml(record.body);\r\n });\r\n }\r\n\r\n handleQueueChange(event:any){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\r\n this.dictionaries = allDictionaryRecords?.filter((item) => item.queueID === event) || [];\r\n });\r\n }\r\n \r\n handleDictionarySelect(dictionaryId:string){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.dictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n decodeHtml(html: string): string {\r\n try {\r\n return JSON.parse(html);\r\n } catch (e) {\r\n return html;\r\n }\r\n }\r\n\r\n override handleSubmit(): void {\r\n this.isFormSubmitted = true;\r\n if(!this.messageContent) return;\r\n this.record.body = JSON.stringify(this.messageContent);\r\n super.handleSubmit();\r\n };\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as TemplateModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\r\n (onCancel)=\"handleCancel()\">\r\n <div class=\"card p-fluid p-formgrid\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Template Form</h4>\r\n <div class=\"col-12 md:col-12 flex px-0\">\r\n <div class=\"col-12 md:col-5\">\r\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Name',\r\n placeholder: 'Enter Template Name'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-5\">\r\n <div class=\"p-field queue-list-wrapper\">\r\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'type',\r\n displayText: 'Type',\r\n listLabelProperty: 'value',\r\n listValueProperty: 'value',\r\n placeholder: 'Select Type',\r\n isRequired: true,\r\n options: templateTypeList\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 flex px-0\">\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'queueId',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n displayText : 'Select Queue',\r\n placeholder: 'Select Queue',\r\n isRequired:true\r\n }\" (onInput)=\"handleQueueChange($event)\">\r\n </dropdown>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'dictionaryID',\r\n displayText: 'Select Dictionary',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n placeholder: 'Select Dictionary',\r\n options: dictionaries\r\n }\" (onInput)=\"handleDictionarySelect($event)\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 flex px-0\">\r\n <div *ngIf=\"record.type === 'email'\" class=\"col-12 md:col-6\">\r\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'subject',\r\n isRequired: true,\r\n displayText: 'Subject',\r\n placeholder: 'Enter Subject'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'dictionaryItemID',\r\n displayText: 'Select Dictionary Item',\r\n listLabelProperty: 'itemName',\r\n listValueProperty: '_id',\r\n placeholder: 'Select Dictionary Item',\r\n options: dictionaryItems\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <label>Message</label>\r\n <span class=\"asterisk ml-1\">*</span>\r\n <quill-editor [(ngModel)]=\"messageContent\" class=\"w-full mt-2\"></quill-editor>\r\n <div *ngIf=\"isFormSubmitted && !messageContent\" class=\"error-message\">\r\n <small class=\"p-error\">Message is required</small>\r\n </div>\r\n </div>\r\n </div>\r\n</form-container>","import { Component } from '@angular/core';\r\nimport { TemplateModel } from '../../models/template.model';\r\nimport { BaseListComponent, BaseStore, DATASOURCES, SHARED, TableBuilder, templateHiddenHeaderList, TemplateTabType } from '../../../../shared';\r\nimport { TemplateAdminService } from '../../state/template-admin.service';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n\r\n@Component({\r\n selector: 'lib-template-admin-list',\r\n standalone: false,\r\n templateUrl: './template-admin-list.component.html',\r\n styleUrl: './template-admin-list.component.scss'\r\n})\r\nexport class TemplateAdminListComponent extends BaseListComponent<TemplateModel>{\r\n\r\n pathName:string = DATASOURCES.Template;\r\n activeTabIndex: number = 0;\r\n selectedType!: string;\r\n override editPermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\r\n override deletePermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\r\n constructor(templateAdminService: TemplateAdminService, private tableBuilder: TableBuilder, private baseStore: BaseStore<TemplateModel>) {\r\n super(templateAdminService, tableBuilder);\r\n this.tableBuilder.hiddenHeaders = templateHiddenHeaderList;\r\n }\r\n \r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n onTabChange(event: any) {\r\n this.activeTabIndex = event.index;\r\n this.selectedType = TemplateTabType[this.activeTabIndex] ?? SHARED.EMPTY;\r\n this.baseStore.setSelectedTemplate(this.activeTabIndex === 0 ? SHARED.EMPTY : this.selectedType);\r\n }\r\n}\r\n","<div class=\"template-tab-wrapper\">\r\n <p-tabView class=\"application-tabs-wrapper h-full\" [(activeIndex)]=\"activeTabIndex\" (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <span class=\"font-semibold\">All Templates</span>\r\n </ng-template>\r\n </p-tabPanel>\r\n \r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center font-semibold\">\r\n <i class=\"pi pi-envelope mr-3 message-type-wrapper\"></i>\r\n <span class=\"mr-1\">Email</span>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n \r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center font-semibold\">\r\n <i class=\"pi pi-comment mr-3 message-type-wrapper\"></i>\r\n <span>SMS</span>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center font-semibold\">\r\n <i class=\"pi pi-whatsapp mr-3 message-type-wrapper\"></i>\r\n <span>WhatsApp</span>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>\r\n\r\n@if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\r\n </lib-table-primary>\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TemplateAdminFormComponent } from './components/template-admin-form/template-admin-form.component';\r\nimport { TemplateAdminListComponent } from './components/template-admin-list/template-admin-list.component';\r\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent, textEditorToolbar } from '../../shared';\r\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { QuillConfigModule, QuillModule } from 'ngx-quill';\r\nimport hljs from 'highlight.js';\r\n\r\n@NgModule({\r\n declarations: [\r\n TemplateAdminFormComponent,\r\n TemplateAdminListComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TablePrimaryComponent,\r\n TextBoxComponent,\r\n DropdownComponent,\r\n SharedModule,\r\n FormsModule,\r\n TabViewModule,\r\n CheckBoxComponent,\r\n QuillModule.forRoot(),\r\n QuillConfigModule.forRoot({\r\n modules: {\r\n syntax: {\r\n hljs: hljs\r\n },\r\n toolbar: textEditorToolbar\r\n }\r\n })\r\n ],\r\n exports: [\r\n TemplateAdminFormComponent, TemplateAdminListComponent\r\n ]\r\n})\r\nexport class TemplateAdminModule { }\r\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","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { WidgetModel } from '../models/widget.model';\r\nimport { WidgetStore } from './widget.store';\r\nimport { AppConfigService, BaseService, DATASOURCES, ROUTES, SHARED } from '../../shared';\r\nimport { ListService } from '../../shared/services/list.service';\r\nimport { Observable, tap } from 'rxjs';\r\n\r\n/**\r\n * Service for managing widget configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetService extends BaseService<WidgetModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected widgetStore: WidgetStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, widgetStore, configService, listService);\r\n this._pathName = DATASOURCES.WIDGET;\r\n }\r\n\r\n getAllWidgets(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\r\n const url = `${this.apiUrl}${ROUTES.APPLICATION_WIDGET}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\r\n return this.http.get<WidgetModel[]>(url).pipe(\r\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\r\n );\r\n }\r\n\r\n getEvaluateFromCache(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\r\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}`;\r\n return this.http.get<WidgetModel[]>(url).pipe(\r\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\r\n );\r\n }\r\n\r\n getEvaluateByWidgetName(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\r\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}`;\r\n return this.http.get<WidgetModel[]>(url).pipe(\r\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SHARED } from '../constant/SHARED';\r\nimport { StyleConfig } from '../../widget/models/widget.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StyleBuilderService {\r\n\r\n constructor() { }\r\n\r\n getStyle(style: any): { [key: string]: string } {\r\n if (!style) return {};\r\n\r\n if (typeof style === 'string') style = this.parseStyleObject(style);\r\n\r\n const itemStyle = typeof style.itemStyle === 'string'\r\n ? this.parseStyleObject(style.itemStyle)\r\n : (style.itemStyle || {});\r\n\r\n const styleExpression = typeof style.styleExpression === 'string'\r\n ? this.parseStyleObject(style.styleExpression)\r\n : (style.styleExpression || {});\r\n\r\n return {\r\n ...this.normalizeStyleObject(itemStyle),\r\n ...this.normalizeStyleObject(styleExpression),\r\n };\r\n }\r\n\r\n parseStyleObject(styleStr?: string): Record<string, any> {\r\n if (!styleStr) return {};\r\n\r\n let toParse = styleStr.trim();\r\n toParse = toParse.replace(/^['\"]+/, \"\").replace(/['\"]+$/, \"\").trim();\r\n try {\r\n return JSON.parse(toParse);\r\n } catch (e) {\r\n console.warn(\"Failed to parse style:\", styleStr, \"→ tried:\", toParse);\r\n return {};\r\n }\r\n }\r\n \r\n private normalizeStyleObject(obj: { [key: string]: any }): { [key: string]: string } {\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined && value !== '') {\r\n acc[key.trim()] = value.toString().trim();\r\n }\r\n return acc;\r\n }, {} as { [key: string]: string }); // 👈 this line avoids the error\r\n }\r\n\r\n getItemStyle(style: any | undefined): { [key: string]: string } {\r\n if (!style) return {};\r\n \r\n return Object.entries(style).reduce((acc: any, [key, value]) => {\r\n if (value) acc[key.trim()] = value.toString().trim();\r\n return acc;\r\n }, {});\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n@Component({\r\n selector: 'lib-widget-header',\r\n standalone: false,\r\n templateUrl: './widget-header.component.html',\r\n styleUrl: './widget-header.component.scss'\r\n})\r\nexport class WidgetHeaderComponent implements OnChanges {\r\n @Input() widget!: WidgetModel;\r\n headerStyle: { [key: string]: any } = {};\r\n subHeaderStyle: { [key: string]: any } = {};\r\n headerIconStyle: { [key: string]: any } = {};\r\n headerIconClass!: string;\r\n\r\n constructor(private styleBulderService: StyleBuilderService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.widget && this.widget.style) {\r\n const parsedHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerStyle);\r\n const parsedSubHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.subHeaderStyle);\r\n const parsedHeaderIconStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerIconStyle);\r\n this.headerStyle = this.styleBulderService.getItemStyle(parsedHeaderStyle);\r\n this.subHeaderStyle = this.styleBulderService.getItemStyle(parsedSubHeaderStyle);\r\n this.headerIconStyle = this.styleBulderService.getItemStyle(parsedHeaderIconStyle);\r\n this.headerIconClass = this.widget.style.headerIconClass;\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"widget.header || widget.subHeader\" class=\"grid m-0 align-items-center justify-content-between px-3 pt-3\">\r\n <div class=\"col-12 p-0\">\r\n <div class=\"flex align-items-center\">\r\n <i [class]=\"headerIconClass\" [ngStyle]=\"headerIconStyle\"></i>\r\n <h3 [ngStyle]=\"headerStyle\" class=\"m-0 application-title-wrapper\">\r\n {{ (widget.header) }}\r\n </h3>\r\n </div>\r\n <div *ngIf=\"widget?.subHeader\" class=\"flex align-items-center mt-2\">\r\n <span [ngStyle]=\"subHeaderStyle\" class=\"mr-3 font-semibold\">{{ widget.subHeader }}</span>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { PERMISSION } from '../../../shared/constant/PERMISSION';\r\n\r\n/**\r\n * Widget Footer Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-footer',\r\n standalone: false,\r\n templateUrl: './widget-footer.component.html',\r\n styleUrl: './widget-footer.component.scss'\r\n})\r\nexport class WidgetFooterComponent {\r\n @Input() widget!: WidgetModel;\r\n\r\n constructor(private widgetStore: WidgetStore) {}\r\n PERMISSION = PERMISSION\r\n viewAllDetails(event : any) {\r\n if(event){\r\n this.widgetStore.setOnViewAllDetails(this.widget);\r\n }\r\n }\r\n }\r\n","<div *ngIf=\"widget.isFormEnabled\" class=\"col-12 p-0 mt-3 flex justify-content-center\">\r\n <a class=\"p-button p-button-link text-primary-500\">\r\n @if(widget.isFormEnabled){\r\n <span class=\"underline font-semibold\" [permission]=\"PERMISSION.WIDGETS_EVALUATE\"\r\n (click)=\"viewAllDetails($event)\">View\r\n All Details</span>\r\n <i class=\"pi pi-arrow-up-right arrow-up-icon ml-2\"></i>\r\n }\r\n </a>\r\n</div>","import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { WidgetItem, WidgetModel } from '../../models/widget.model';\r\nimport { SHARED } from '../../../shared';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n selector: 'lib-widget-item',\r\n standalone: false,\r\n templateUrl: './widget-item.component.html',\r\n styleUrl: './widget-item.component.scss'\r\n})\r\nexport class WidgetItemComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() widgetItem!: WidgetItem;\r\n @Input() widget!: WidgetModel;\r\n @Input() application: any;\r\n widgetKey!: string;\r\n isEmptyValueHidden: boolean = false;\r\n keyClass!: string;\r\n valueClass!: string;\r\n fieldKeyStyle: { [key: string]: any } = {};\r\n fieldValueStyle: { [key: string]: any } = {};\r\n keyIconClass: string | undefined = SHARED.EMPTY;\r\n keyIconStyle: { [key: string]: any } = {};\r\n valueIconClass: string | undefined = SHARED.EMPTY;\r\n valueIconStyle: { [key: string]: any } = {};\r\n valueStyleExpression: { [key: string]: any } = {};\r\n mergedValueStyle: { [key: string]: any } = {};\r\n hasSeparator: boolean | undefined = false;\r\n isConfirmed: boolean | undefined = false;\r\n valueIconExpression!: string;\r\n valueIconStyleExpression: { [key: string]: any } = {};\r\n mergedValueIconStyle: { [key: string]: any } = {};\r\n isMenu: boolean = false;\r\n valueIconClassExpression!: string;\r\n private destroy$ = new Subject<void>();\r\n \r\n // Computed properties for template (performance optimization)\r\n shouldShowItem: boolean = true;\r\n hasContent: boolean = false;\r\n isDateValue: boolean = false;\r\n formattedDateValue: string = '';\r\n hasHtmlContentValue: boolean = false;\r\n\r\n constructor(private styleBulderService: StyleBuilderService, private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) { }\r\n\r\n ngOnInit(): void {\r\n this.handleIsMenu();\r\n this.handleIsEmptyValueHidden();\r\n }\r\n\r\n ngOnChanges(): void {\r\n // Handle isEmptyLabelHidden from widget model changes\r\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\r\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\r\n }\r\n \r\n if (this.widgetItem && this.widgetItem.style) {\r\n this.keyClass = this.widgetItem.style.keyClass;\r\n this.valueClass = this.widgetItem.style.valueClass;\r\n this.widgetKey = this.widgetItem.key.replace(/^['\"]+|['\"]+$/g, '').trim();\r\n const parsedValueStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.value);\r\n const parsedKeyStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.key);\r\n const parsedKeyIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.keyIconStyle);\r\n const parsedValueIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyle);\r\n const parsedValueStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.styleExpression);\r\n const parsedValueIconStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyleExpression);\r\n\r\n this.fieldValueStyle = this.styleBulderService.getItemStyle(parsedValueStyle);\r\n this.fieldKeyStyle = this.styleBulderService.getItemStyle(parsedKeyStyle);\r\n this.valueStyleExpression = this.widgetItem.style.styleExpression ? this.styleBulderService.getItemStyle(parsedValueStyleExpression) : {};\r\n this.mergedValueStyle = { ...this.fieldValueStyle, ...this.valueStyleExpression };\r\n this.keyIconClass = this.widgetItem.style.keyIconClass;\r\n this.keyIconStyle = this.widgetItem.style.keyIconStyle ? this.styleBulderService.getItemStyle(parsedKeyIconStyle) : {};\r\n this.valueIconClass = this.widgetItem.style.valueIconClass;\r\n this.valueIconClassExpression = this.widgetItem.style.valueIconClassExpression ? this.widgetItem.style.valueIconClassExpression.replace(/^['\"]+|['\"]+$/g, \"\") : '';\r\n this.valueIconStyle = this.widgetItem.style.valueIconStyle ? this.styleBulderService.getItemStyle(parsedValueIconStyle) : {};\r\n this.valueIconStyleExpression = this.widgetItem.style.valueIconStyleExpression ? this.styleBulderService.getItemStyle(parsedValueIconStyleExpression) : {};\r\n this.mergedValueIconStyle = { ...this.valueIconStyle, ...this.valueIconStyleExpression };\r\n this.hasSeparator = this.widgetItem.style.hasSeparator;\r\n this.isConfirmed = this.widgetItem.style.isConfirmed === SHARED.STRING_TRUE ? true : false;\r\n \r\n // Compute values once for performance\r\n this.computeValueProperties();\r\n }\r\n }\r\n\r\n /**\r\n * Computes all value-related properties once to avoid function calls in template\r\n */\r\n private computeValueProperties(): void {\r\n // Check if value has content\r\n this.hasContent = this.hasValueContent(this.widgetItem.value, this.widgetItem.isHtml);\r\n \r\n // Determine if item should be shown based on isEmptyValueHidden\r\n this.shouldShowItem = this.isEmptyValueHidden ? this.hasContent : true;\r\n \r\n // Check if value is a date\r\n this.isDateValue = this.isDate(this.widgetItem.value);\r\n \r\n // Format date if it's a date value\r\n this.formattedDateValue = this.isDateValue ? this.formatDate(this.widgetItem.value) : '';\r\n \r\n // Check if HTML has content\r\n this.hasHtmlContentValue = this.widgetItem.isHtml ? this.hasHtmlContent(this.widgetItem.value) : false;\r\n }\r\n\r\n handleIsMenu() {\r\n this.widgetQuery.getIsMenu()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.isMenu = res;\r\n }\r\n });\r\n }\r\n\r\n handleIsEmptyValueHidden() {\r\n // Use isEmptyLabelHidden directly from widget model\r\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\r\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\r\n }\r\n \r\n if (this.widgetItem && this.widgetItem.style) {\r\n this.computeValueProperties();\r\n }\r\n }\r\n\r\n handleDynamicEvent(recordId: string) {\r\n this.widgetStore.setEventClickDetails({ recordId: recordId, isDailogShow: true });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.widgetStore.setOnWidgetItemClick(null);\r\n this.widgetStore.setEventClickDetails({ recordId: null, isDailogShow: false });\r\n }\r\n\r\n isDate(value: any): boolean {\r\n if (!value || typeof value !== 'string') return false;\r\n\r\n // Require separators like '/' or '-' to confirm it's a real date format\r\n if (!/[\\/\\-]/.test(value)) {\r\n return false; // e.g. \"1983\" will fail here\r\n }\r\n\r\n const validFormats = ['DD/MM/YYYY', 'YYYY/MM/DD', moment.ISO_8601];\r\n return moment(value, validFormats, true).isValid();\r\n}\r\n\r\n\r\n handleWidgetItemClick(widgetItem: WidgetItem) {\r\n const updatedItem = { ...widgetItem };\r\n const applicantId = this.widget.recordId;\r\n switch (updatedItem.route) {\r\n case SHARED.DIRECT_DEBIT:\r\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\r\n updatedItem.value = directDebit[0].value;\r\n break;\r\n case SHARED.SOLICITOR:\r\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\r\n updatedItem.value = solicitor[0].value;\r\n break;\r\n case SHARED.PRODUCT:\r\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\r\n updatedItem.value = product[0].value;\r\n break;\r\n case SHARED.COMMITMENTS:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.INCOME:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.EXPENDITURE:\r\n updatedItem.value = applicantId;\r\n break;\r\n }\r\n this.widgetStore.setWidgetData(this.widget);\r\n this.widgetStore.setOnWidgetItemClick(updatedItem);\r\n }\r\n\r\n\r\n /**\r\n * Checks if the HTML value has actual content after parsing\r\n * @param value - The HTML string to check\r\n * @returns true if there's meaningful content, false otherwise\r\n */\r\n hasHtmlContent(value: string): boolean {\r\n if (!value || value === 'null' || value === 'undefined') {\r\n return false;\r\n }\r\n\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = value;\r\n\r\n const textContent = tempDiv.textContent || tempDiv.innerText || '';\r\n\r\n return textContent.replace(/[,.]/g, '').trim().length > 0;\r\n }\r\n\r\n /**\r\n * Checks if the value has meaningful content (for both HTML and non-HTML values)\r\n * @param value - The value to check\r\n * @param isHtml - Whether the value is HTML content\r\n * @returns true if there's meaningful content, false otherwise\r\n */\r\n hasValueContent(value: string, isHtml: boolean): boolean {\r\n if (!value || value === 'null' || value === 'undefined') {\r\n return false;\r\n }\r\n\r\n if (isHtml) {\r\n return this.hasHtmlContent(value);\r\n } else {\r\n return value.trim().length > 0;\r\n }\r\n }\r\n\r\n\r\n formatDate(value: string): string {\r\n if (this.isDate(value)) {\r\n return moment(value, [\"DD/MM/YYYY\", \"YYYY/MM/DD\", moment.ISO_8601]).format(\"DD/MM/YYYY\");\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n","<div class=\"widget-container px-3 overflow-hidden\" *ngIf=\"shouldShowItem\">\r\n <div class=\"widget-content widget-wrapper\" [class.border-top]=\"hasSeparator\" [ngClass]=\"{\r\n 'layout-row': widget.layoutType === 'row',\r\n 'layout-tile m-0': widget.layoutType === 'tile'\r\n }\">\r\n <div class=\"flex align-items-center justify-content-between\"\r\n [ngClass]=\"widget.layoutType === 'row' ? 'w-7' : 'w-full'\">\r\n <div class=\"flex align-items-center\">\r\n <i *ngIf=\"keyIconClass\" class=\"mr-2\" [ngClass]=\"keyIconClass\" [ngStyle]=\"keyIconStyle\"></i>\r\n <p *ngIf=\"!isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\r\n <p *ngIf=\"isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" (click)=\"handleDynamicEvent(widget.recordId)\"\r\n class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\r\n </div>\r\n <div class=\"flex justify-content-end\" *ngIf=\"isConfirmed\">\r\n <img src=\"assets/icons/confirm-icon.svg\" alt=\"confirm icon\" width=\"18\" height=\"18\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-full\" \r\n [ngClass]=\"widget.layoutType === 'row' ? 'flex align-items-center justify-content-end w-5': 'w-full'\">\r\n <i *ngIf=\"valueIconClass\" [ngClass]=\"valueIconClass\" [ngStyle]=\"mergedValueIconStyle\"></i>\r\n <i *ngIf=\"valueIconClassExpression\" [ngClass]=\"valueIconClassExpression\" [ngStyle]=\"mergedValueIconStyle\"></i>\r\n <ng-container *ngIf=\"widgetItem.isEvent; else notEvent\">\r\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\r\n (click)=\"handleDynamicEvent(widget.recordId)\">\r\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #notEvent>\r\n <ng-container *ngIf=\"widgetItem.isLink; else plainText\">\r\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\r\n (click)=\"handleWidgetItemClick(widgetItem)\">\r\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\r\n </a>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #plainText>\r\n @if(widgetItem.isHtml && hasHtmlContentValue) {\r\n <div class=\"key-field-wrapper\" [innerHTML]=\"widgetItem.value !== 'null' ? widgetItem.value : ''\"\r\n [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"></div>\r\n }\r\n @else if(!widgetItem.isHtml) {\r\n <p class=\"mb-0\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\">\r\n\r\n <ng-container *ngIf=\"isDateValue; else normalText\">\r\n {{ formattedDateValue }}\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\r\n </ng-template>\r\n </p>\r\n }\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n@Component({\r\n selector: 'lib-widget-body',\r\n templateUrl: './widget-body.component.html',\r\n styleUrl: './widget-body.component.scss',\r\n standalone : false\r\n})\r\nexport class WidgetBodyComponent implements OnChanges{\r\n\r\n constructor(private styleBulderService: StyleBuilderService) {}\r\n @Input() widget!: WidgetModel;\r\n hasBackgroundColor: Array<boolean> = [];\r\n widgetItemStyle: Array<{ [key: string]: any }> = [];\r\n isConfirmed: Array<boolean> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.widget && this.widget.dataItems) {\r\n this.widgetItemStyle = this.widget.dataItems.map((item, i) => {\r\n const parsedItemStyle = this.styleBulderService.parseStyleObject(item?.style?.itemStyle);\r\n const itemStyleObject = this.styleBulderService.getItemStyle(parsedItemStyle);\r\n\r\n if (parsedItemStyle?.['backgroundColor']) {\r\n this.hasBackgroundColor[i] = true;\r\n }\r\n\r\n return { ...itemStyleObject };\r\n });\r\n\r\n this.isConfirmed = (this.widget.dataItems)\r\n .filter(item => item.style != null)\r\n .map(item =>\r\n item.style.isConfirmed === 'true' ? true : false\r\n ) || [];\r\n }\r\n }\r\n}\r\n","<div class=\"widget-body-container grid m-0\">\r\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\" [ngClass]=\"[widget.style.width, widget.style.width === 'col-12' ? 'p-0' : '']\">\r\n @if(!dataItem.isHidden){\r\n <div class=\"h-full\" [ngStyle]=\"widgetItemStyle[i]\" \r\n [ngClass]=\"{\r\n 'widget-confirm-wrapper': isConfirmed[i]\r\n }\">\r\n <div>\r\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n@Component({\r\n selector: 'lib-widget-main',\r\n standalone: false,\r\n templateUrl: './widget-main.component.html',\r\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-main.component.scss']\r\n})\r\nexport class WidgetMainComponent implements OnChanges {\r\n constructor(private styleBulderService: StyleBuilderService) {}\r\n\r\n @Input() widget!: WidgetModel;\r\n @Input() index!: number;\r\n widgetStyle: { [key: string]: any } = {};\r\n styleExpression: { [key: string]: any } = {};\r\n widgetCombinedStyle: { [key: string]: any } = {};\r\n\r\n ngOnChanges(): void {\r\n if(this.widget && this.widget.style) {\r\n const parsedItemStyle = this.styleBulderService.parseStyleObject(this.widget.style.widgetStyle);\r\n const styleExpression = this.styleBulderService.parseStyleObject(this.widget.style.styleExpression);\r\n this.widgetStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\r\n this.styleExpression = this.widget.style.styleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\r\n console.log(styleExpression);\r\n this.widgetCombinedStyle = { ...this.widgetStyle, ...this.styleExpression };\r\n }\r\n }\r\n}","<div [ngStyle]=\"widgetCombinedStyle\" class=\"widget-container-wrapper\" [ngClass]=\"index !== 0 ? 'mt-4' : ''\">\r\n <div class=\"widget-container-wrapper\">\r\n <lib-widget-header [widget]=\"widget\"></lib-widget-header>\r\n <div [ngClass]=\"[(widget.header || widget.subHeader) ? 'widget-content-wrapper' : '', widget.style.width === 'col-6' ? 'px-2' : '']\" class=\"py-3\">\r\n <lib-widget-body [widget]=\"widget\"></lib-widget-body>\r\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\r\n </div>\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { CustomWidgetModel, StatusItem } from \"../models/custom-widget.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomWidgetService {\r\n constructor() {}\r\n\r\n isLastIndex(event: StatusItem, widgetData: CustomWidgetModel): boolean {\r\n if (!widgetData.statusList) {\r\n return false;\r\n }\r\n const index = widgetData.statusList.indexOf(event);\r\n return index === widgetData.statusList.length - 1;\r\n }\r\n\r\n getNextEventStatus(event: StatusItem, widgetData: CustomWidgetModel): string | null {\r\n const index = this.getEventIndex(event, widgetData);\r\n if (widgetData.statusList && index >= 0 && index + 1 < widgetData.statusList.length) {\r\n return widgetData.statusList[index + 1].status;\r\n }\r\n return null;\r\n }\r\n\r\n getEventIndex(event: StatusItem, widgetData: CustomWidgetModel): number {\r\n return widgetData.statusList ? widgetData.statusList.indexOf(event) : -1;\r\n }\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { CustomWidgetModel, StatusItem } from \"../../models/custom-widget.model\";\r\nimport { CustomWidgetService } from \"../../../shared/services/custom-widget.service\";\r\n\r\n@Component({\r\n selector: \"lib-custom-widget\",\r\n templateUrl: \"./custom-widget.component.html\",\r\n styleUrl: \"./custom-widget.component.scss\",\r\n standalone: false,\r\n})\r\nexport class CustomWidgetComponent {\r\n @Input() widgetData!: CustomWidgetModel;\r\n\r\n constructor(private widgetUtilService: CustomWidgetService) {}\r\n\r\n isLastIndex(event: StatusItem): boolean {\r\n return this.widgetUtilService.isLastIndex(event, this.widgetData);\r\n }\r\n\r\n getNextEventStatus(event: StatusItem): string | null {\r\n return this.widgetUtilService.getNextEventStatus(event, this.widgetData);\r\n }\r\n\r\n getEventIndex(event: StatusItem): number {\r\n return this.widgetUtilService.getEventIndex(event, this.widgetData);\r\n }\r\n}\r\n","@if(widgetData){\r\n<div class=\"custom-widget\">\r\n\r\n <div class=\" ml-3\" style=\"display: flex; flex-direction: row; align-items: center;\">\r\n <h3 class=\"mb-0 font-bold mr-3 widgetData-title-wrapper\">\r\n {{ (widgetData.title) }}\r\n </h3>\r\n \r\n <span class=\"px-2 py-1 rounded text-white font-semibold badge\" [ngClass]=\"{\r\n 'bg-yellow-500': widgetData.badge === 'Pending',\r\n 'bg-green-500': widgetData.badge === 'Verified'\r\n }\">\r\n <i class=\"{{ widgetData.badgeIcon }}\"></i> {{ widgetData.badge }}\r\n </span>\r\n \r\n </div>\r\n <div class=\"widget-body-wrapper\">\r\n\r\n <p-timeline class=\"widget-timeline-wrapper\" [value]=\"widgetData?.statusList\">\r\n <ng-template pTemplate=\"marker\" let-event let-i=\"index\">\r\n <div class=\"p-timeline-event-marker\" [ngStyle]=\"{\r\n 'background-color': event.status === 'active' ? '#0F8BFD' :\r\n event.status === 'pending' ? '#676B89' :\r\n event.status === 'removed' ? '#FF0000' :\r\n '#0F8BFD',\r\n 'border-color': event.status === 'active' ? '#0F8BFD' :\r\n event.status === 'pending' ? '#676B89' :\r\n event.status === 'removed' ? '#FF0000' :\r\n '#0F8BFD',\r\n 'outline': event.status === 'active' ? '4px solid #0f8bfd33' :\r\n event.status === 'pending' ? '4px solid #676b8933' :\r\n event.status === 'removed' ? '4px solid #FF0000' :\r\n '4px solid #0F8BFD',\r\n }\"></div>\r\n\r\n <div class=\"p-timeline-event-connector-border\" *ngIf=\"!isLastIndex(event)\" [ngStyle]=\"{\r\n border:\r\n getNextEventStatus(event) === 'active'\r\n ? '2px solid #0F8BFD'\r\n : getNextEventStatus(event) === 'pending'\r\n ? '2px solid #44486d33'\r\n : getNextEventStatus(event) === 'removed'\r\n ? '2px solid #FF0000'\r\n : '2px solid #0F8BFD',\r\n height: 'calc(100% - 18px)'\r\n }\"></div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"p-timeline-event-content mb-2\"\r\n [ngClass]=\"{ 'mb-4': widgetData.title === 'Valuation' && event.title }\">\r\n\r\n <p *ngIf=\"!(widgetData.title === 'Valuation') && event.title\" class=\"event-title mb-2\"\r\n [innerHTML]=\"event.title\">\r\n </p>\r\n\r\n <p *ngIf=\"widgetData.title === 'Valuation' && event.title\" class=\"event-title mb-2\">\r\n <span style=\"color: #0f8bfd; text-decoration: underline; font-weight: bold\">{{ event.title?.split(' ')[0]\r\n }}</span>\r\n {{ event.title?.substring(event.title.indexOf(' ') + 1) }}\r\n </p>\r\n \r\n <span class=\"font-medium event-description\" [ngClass]=\"{ 'font-bold': event.textColor }\"\r\n [ngStyle]=\"{ color: event.textColor }\" [innerHTML]=\"event.description\"></span>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n</div>\r\n\r\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { ERROR, SHARED } from '../../../shared';\r\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\r\nimport { WidgetService } from '../../state/widget.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { WidgetStore } from '../../state/widget.store';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu',\r\n standalone: false,\r\n templateUrl: './widget-menu.component.html',\r\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-menu.component.scss']\r\n})\r\nexport class WidgetMenuComponent implements OnInit, OnChanges, OnDestroy {\r\n constructor(\r\n private widgetService: WidgetService,\r\n public activatedRoute: ActivatedRoute,\r\n private widgetQuery: WidgetQuery,\r\n private widgetStore: WidgetStore,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n private destroy$ = new Subject<void>();\r\n widgets: WidgetModel[] = [];\r\n private subscriptions :Subscription[]=[];\r\n isLoading: boolean = true;\r\n\r\n @Output() onViewAllDetails = new EventEmitter<any>();\r\n @Output() onWidgetEventClick = new EventEmitter<any>();\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\r\n @Input() offerWidgetData!: CustomWidgetModel;\r\n @Input() valuationWidgetData!: CustomWidgetModel;\r\n\r\n ngOnInit(): void {\r\n this.handleEventClickDetails();\r\n this.handleOnViewAllDetails();\r\n const queueId = localStorage.getItem(SHARED.selectedQueue);\r\n const recordId = this.activatedRoute.snapshot.params[SHARED.ID];\r\n\r\n if (!queueId || !recordId) {\r\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\r\n queueId: queueId || SHARED.MISSING_QUEUE_ID,\r\n recordId: recordId || SHARED.MISSING_RECORD_ID\r\n });\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n this.getWidgetFromCacheList(queueId, recordId);\r\n this.getAllWidgetList(queueId, recordId);\r\n this.handleWidgetItemClick();\r\n }\r\n\r\n handleWidgetItemClick() {\r\n this.widgetQuery.getOnWidgetItemClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onWidgetItemClick.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnWidgetItemClick subscription:', error);\r\n }\r\n );\r\n }\r\n\r\n handleEventClickDetails() {\r\n this.widgetQuery.getEventClickDetails()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.onWidgetEventClick.next(res);\r\n }\r\n })\r\n }\r\n\r\n handleOnViewAllDetails() {\r\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onViewAllDetails.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnViewAllDetails subscription:', error);\r\n }\r\n ));\r\n }\r\n\r\n getAllWidgetList(queueId: string, recordId: string) {\r\n this.widgetService.getAllWidgets(queueId, recordId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.cdr.detectChanges();\r\n },\r\n (error) => {\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.cdr.detectChanges();\r\n }\r\n )\r\n }\r\n\r\n getWidgetFromCacheList(queueId: string, recordId: string) {\r\n this.widgetService.getEvaluateFromCache(queueId, recordId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.isLoading = false;\r\n },\r\n (error) => {\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.isLoading = false;\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.isSidebarVisible) {\r\n this.widgetStore.setEventClickDetails({recordId: null, isDailogShow: false});\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.widgets = [];\r\n this.widgetStore.resetOnViewAllDetails();\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<p-card class=\"widget-block-wrapper block\">\r\n <div class=\"widget-section-wrapper custom-scroll pt-2\">\r\n <!-- Loading state -->\r\n <ng-container *ngIf=\"isLoading; else widgetContent\">\r\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\r\n </ng-container>\r\n\r\n <!-- Content after API call -->\r\n <ng-template #widgetContent>\r\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\r\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\r\n <lib-widget-main [widget]=\"widget\" [index]=\"i\"></lib-widget-main>\r\n </ng-container>\r\n <ng-container *ngIf=\"offerWidgetData\">\r\n <lib-custom-widget [widgetData]=\"offerWidgetData\"></lib-custom-widget>\r\n </ng-container>\r\n <ng-container *ngIf=\"valuationWidgetData\">\r\n <lib-custom-widget [widgetData]=\"valuationWidgetData\"></lib-custom-widget>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- No widget configured state -->\r\n <ng-template #noWidgets>\r\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges,ChangeDetectorRef } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetService } from '../../state/widget.service';\r\nimport { SHARED } from '../../../shared';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n\r\n/**\r\n * WidgetRowTileComponent is a component that displays a row of widgets in a tile format.\r\n * It fetches the widgets based on the provided record ID and widget name.\r\n */\r\n@Component({\r\n selector: 'lib-widget-row-tile',\r\n standalone: false,\r\n templateUrl: './widget-row-tile.component.html',\r\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-row-tile.component.scss']\r\n})\r\nexport class WidgetRowTileComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n private destroy$ = new Subject<void>();\r\n widgets!: WidgetModel[];\r\n isLoading: boolean = true;\r\n @Input() recordId!: string;\r\n @Input() widgetName!: string;\r\n @Input() onWidgetUpdate: any;\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n widgetCardStyle: { [key: string]: any } = {};\r\n widgetCardStyleExpression: { [key: string]: any } = {};\r\n widgetCombinedStyle: { [key: string]: any } = {};\r\n constructor(private widgetService: WidgetService, private widgetStore: WidgetStore, private styleBulderService: StyleBuilderService, private cdr: ChangeDetectorRef,private widgetQuery: WidgetQuery) {}\r\n\r\n ngOnInit(): void {\r\n this.getWidgetItemList();\r\n this.handleWidgetItemClick();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes[SHARED.ON_WIDGET_UPDATE]) {\r\n this.isLoading = true;\r\n this.getWidgetItemList();\r\n }\r\n }\r\n\r\n getWidgetItemList() {\r\n this.widgetService.getEvaluateByWidgetName(this.recordId, this.widgetName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res: WidgetModel[]) => {\r\n this.widgets = res;\r\n this.widgetStore.setWidgetsList(this.widgets);\r\n this.updateWidgetStyles(this.widgets[0]);\r\n this.isLoading = false;\r\n },\r\n (error) => {\r\n this.isLoading = false;\r\n }\r\n )\r\n }\r\n\r\n handleWidgetItemClick() {\r\n this.widgetQuery.getOnWidgetItemClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onWidgetItemClick.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnWidgetItemClick subscription:', error);\r\n }\r\n );\r\n }\r\n\r\n private updateWidgetStyles(widget: any): void {\r\n if (widget.style) {\r\n const parsedItemStyle = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyle);\r\n const styleExpression = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyleExpression);\r\n this.widgetCardStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\r\n this.widgetCardStyleExpression = widget.style.widgetCardStyleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\r\n this.widgetCombinedStyle = { ...this.widgetCardStyle, ...this.widgetCardStyleExpression };\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<p-card [style]=\"widgetCombinedStyle\" class=\"widget-block-wrapper block\">\r\n <div class=\"widget-section-wrapper\">\r\n <!-- Loading state -->\r\n <ng-container *ngIf=\"isLoading; else widgetContent\">\r\n <div *ngFor=\"let n of [1,2,3]\" style=\"padding: 6px;\">\r\n <p-skeleton width=\"100%\" height=\"45px\" styleClass=\"mb-3\"></p-skeleton>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Content after API call -->\r\n <ng-template #widgetContent>\r\n <ng-container *ngIf=\"(widgets && widgets.length > 0); else noWidgets\">\r\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\r\n <lib-widget-main [widget]=\"widget\" [index]=\"i\"></lib-widget-main>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- No widget configured state -->\r\n <ng-template #noWidgets>\r\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\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 @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\">\r\n @if(isMenu) {\r\n <div class=\"bg-white widget-menu-container\">\r\n <lib-widget-menu \r\n [offerWidgetData]=\"offerWidgetData\"\r\n [valuationWidgetData]=\"valuationWidgetData\"\r\n (onViewAllDetails)=\"handleViewAllDetails($event)\"\r\n (onWidgetEventClick)=\"handleWidgetEventClick($event)\"\r\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\r\n ></lib-widget-menu>\r\n </div>\r\n } @else {\r\n <div class=\"bg-white widget-menu-container\">\r\n <lib-widget-row-tile\r\n [recordId]=\"recordId\"\r\n [widgetName]=\"widgetName\"\r\n [onWidgetUpdate]=\"onWidgetUpdate\"\r\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\r\n ></lib-widget-row-tile>\r\n </div>\r\n }\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { ProgressChartModel } from '../../models/progress-chart.model';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu-header',\r\n standalone: false,\r\n templateUrl: './widget-menu-header.component.html',\r\n styleUrl: './widget-menu-header.component.scss'\r\n})\r\nexport class WidgetMenuHeaderComponent {\r\n @Input() widget!: WidgetModel;\r\n @Input() progressChartData!: ProgressChartModel;\r\n}\r\n","<div class=\"grid m-0 align-items-center justify-content-between px-3\">\r\n <div class=\"col-10 p-0\">\r\n <div class=\"flex align-items-center\">\r\n <h3 class=\"mb-0 application-title-wrapper font-bold mr-3\">\r\n {{ (widget.header) }}\r\n </h3>\r\n </div>\r\n <div *ngIf=\"widget?.subHeader\" class=\"flex align-items-center mt-2\">\r\n <span class=\"mr-1\">Risk Rating:</span>\r\n <span class=\"mr-3 font-semibold\" [ngClass]=\"{\r\n 'text-red-500': widget.subHeader === 'High',\r\n 'text-green-500': widget.subHeader === 'Low',\r\n 'text-yellow-500': widget.subHeader === 'Medium'\r\n }\">{{ widget.subHeader }}</span>\r\n </div>\r\n </div>\r\n @if(widget.predefinedName == \"ApplicationWidget\") {\r\n <div class=\"chart-container\">\r\n <p-chart type=\"pie\" [data]=\"progressChartData\" height=\"50px\" width=\"50px\"></p-chart>\r\n <p class=\"percentage-label text-green-500 text-lg\">{{ progressChartData.datasets[0].data[0] }}%</p>\r\n </div>\r\n }\r\n \r\n</div>","import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport { StyleConfig, WidgetItem, WidgetModel } from '../../models/widget.model';\r\nimport { SHARED } from '../../../shared';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\nimport { WidgetStore } from '../../state/widget.store';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu-item',\r\n standalone: false,\r\n templateUrl: './widget-menu-item.component.html',\r\n styleUrl: './widget-menu-item.component.scss'\r\n})\r\nexport class WidgetMenuItemComponent implements OnChanges, OnDestroy {\r\n @Input() widgetItem!:WidgetItem;\r\n @Input() widget!: WidgetModel;\r\n @Input() application: any;\r\n isShowExclamation: boolean = false;\r\n constructor(private styleBulderService : StyleBuilderService, private widgetStore: WidgetStore){}\r\n\r\n getStyle(style: StyleConfig){\r\n return this.styleBulderService.getStyle(style)\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // if(this.widgetItem && this.widgetItem.style && this.widgetItem.style.styleExpression && this.widgetItem.style.styleExpression.co) {\r\n // this.widgetItem.style.styleExpression.color\r\n // exclamation\r\n // }\r\n }\r\n\r\n onHandleSidebar(propertyId: string) {\r\n this.widgetStore.setOnViewPropertyDetails({propertyId: propertyId, isDailogShow: true});\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.widgetStore.setOnWidgetItemClick(null);\r\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\r\n }\r\n\r\n handleWidgetItemClick(widgetItem: WidgetItem){\r\n const updatedItem = { ...widgetItem };\r\n const applicantId = this.widget.recordId;\r\n switch (updatedItem.route) {\r\n case SHARED.DIRECT_DEBIT:\r\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\r\n updatedItem.value = directDebit[0].value;\r\n break;\r\n case SHARED.SOLICITOR:\r\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\r\n updatedItem.value = solicitor[0].value;\r\n break;\r\n case SHARED.PRODUCT:\r\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\r\n updatedItem.value = product[0].value;\r\n break;\r\n case SHARED.COMMITMENTS:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.INCOME:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.EXPENDITURE:\r\n updatedItem.value = applicantId;\r\n break;\r\n }\r\n this.widgetStore.setWidgetData(this.widget);\r\n this.widgetStore.setOnWidgetItemClick(updatedItem);\r\n }\r\n}\r\n","<div class=\"widget-container\">\r\n <div class=\"flex justify-content-between\"\r\n [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\r\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\r\n \r\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\r\n <i *ngIf=\"false\" class=\"pi pi-exclamation-triangle text-red-500 mr-1\"\r\n style=\"font-size: 1.3rem\"></i>\r\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\"\r\n [ngStyle]=\"getStyle(widgetItem.style)\">\r\n <ng-container *ngIf=\"widgetItem?.isLink; else plainText\">\r\n <a class=\"cursor-pointer\" (click)=\"handleWidgetItemClick(widgetItem)\">\r\n {{ (widgetItem.value && widgetItem.value !== 'null') ? widgetItem.value : '' }}\r\n </a>\r\n </ng-container>\r\n <ng-template #plainText>\r\n <a (click)=\"handleWidgetItemClick(widgetItem)\"> {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : '' }} </a>\r\n </ng-template>\r\n </p>\r\n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\r\n class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\r\n </div>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\r\n class=\"address-title-wrapper cursor-pointer\" [ngStyle]=\"getStyle(widgetItem.style)\" (click)=\"onHandleSidebar(widget.recordId)\">\r\n {{ widgetItem?.value }}\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu-body',\r\n standalone: false,\r\n templateUrl: './widget-menu-body.component.html',\r\n styleUrl: './widget-menu-body.component.scss'\r\n})\r\nexport class WidgetMenuBodyComponent {\r\n @Input() widget!: WidgetModel;\r\n}\r\n","<div class=\"widget-body-container\">\r\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\r\n @if(!dataItem.isHidden){\r\n <div [ngClass]=\"i !== ((widget.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\r\n <div [ngClass]=\"\r\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\r\n ? 'vulnerability-title-wrapper'\r\n : ( i !== ((widget.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\r\n \" class=\"px-3\">\r\n <lib-widget-menu-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-menu-item>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ERROR, ROUTES, SHARED } from '../../../shared';\r\nimport { WidgetService } from '../../state/widget.service';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\r\nimport { ProgressChartModel } from '../../models/progress-chart.model';\r\n\r\n/**\r\n * Widget Container Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-menu-container',\r\n standalone: false,\r\n templateUrl: './widget-menu-container.component.html',\r\n styleUrl: './widget-menu-container.component.scss'\r\n})\r\nexport class WidgetMenuContainerComponent implements OnInit, OnChanges, OnDestroy {\r\n constructor(\r\n private widgetService: WidgetService,\r\n public activatedRoute: ActivatedRoute,\r\n private widgetQuery: WidgetQuery,\r\n private widgetStore: WidgetStore,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n private destroy$ = new Subject<void>();\r\n widgets: WidgetModel[] = [];\r\n private subscriptions :Subscription[]=[];\r\n isLoading: boolean = true;\r\n \r\n @Input() widgetName!: string | null;\r\n @Input() recordId!: string | null;\r\n @Output() onViewAllDetails = new EventEmitter<any>();\r\n @Output() onViewAllProperties = new EventEmitter<any>();\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n @Output() getWidgetData = new EventEmitter<any>();\r\n @Output() onDirectDebitClick = new EventEmitter<any>();\r\n @Output() onWidgetLoaded = new EventEmitter<any>();\r\n @Input() isRouteChanged: string = SHARED.EMPTY;\r\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\r\n @Input() offerWidgetData!: CustomWidgetModel;\r\n @Input() valuationWidgetData!: CustomWidgetModel;\r\n @Input() progressChartData!: ProgressChartModel;\r\n\r\n ngOnInit(): void {\r\n this.handleEventFromPropertyDetails();\r\n this.handleOnViewAllDetails();\r\n\r\n if (!this.widgetName || !this.recordId) {\r\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\r\n widgetName: this.widgetName || SHARED.MISSING_WIDGETNAME,\r\n recordId: this.recordId || SHARED.MISSING_RECORD_ID\r\n });\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n this.getWidgetFromCacheList(this.recordId, this.widgetName);\r\n this.getAllWidgetList(this.recordId, this.widgetName);\r\n this.handleGetWidgetData()\r\n this.handleWidgetItemClick();\r\n }\r\n\r\n handleWidgetItemClick() {\r\n this.widgetQuery.getOnWidgetItemClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onWidgetItemClick.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnWidgetItemClick subscription:', error);\r\n }\r\n );\r\n\r\n }\r\n\r\n handleGetWidgetData() {\r\n this.widgetQuery.getWidgetData()\r\n .pipe(takeUntil(this.destroy$)) \r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.getWidgetData.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getWidgetData subscription:', error);\r\n }\r\n );\r\n }\r\n\r\n handleEventFromPropertyDetails() {\r\n this.widgetQuery.getViewPropertyDetails()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.onViewAllProperties.next(res);\r\n }\r\n })\r\n }\r\n\r\n handleOnViewAllDetails() {\r\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onViewAllDetails.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnViewAllDetails subscription:', error);\r\n }\r\n ));\r\n }\r\n\r\n getAllWidgetList(recordId: string, widgetName: string) {\r\n this.widgetService.getAllWidgets(recordId, widgetName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.onWidgetLoaded.emit(this.widgets);\r\n this.cdr.detectChanges();\r\n },\r\n (error) => {\r\n this.onWidgetLoaded.emit(true);\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.cdr.detectChanges();\r\n }\r\n )\r\n }\r\n\r\n getWidgetFromCacheList(recordId: string, widgetName: string) {\r\n this.widgetService.getEvaluateFromCache(recordId, widgetName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.isLoading = false;\r\n },\r\n (error) => {\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.isLoading = false;\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.isSidebarVisible) {\r\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\r\n }\r\n if(changes['isRouteChanged'] && this.widgetName && this.recordId) {\r\n console.log(this.isRouteChanged);\r\n this.getAllWidgetList(this.recordId, this.widgetName);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.widgets = [];\r\n this.widgetStore.resetOnViewAllDetails();\r\n this.onWidgetLoaded.emit(SHARED.EMPTY);\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","<p-card class=\"widget-block-wrapper block\">\r\n <div class=\"widget-section-wrapper pt-2\">\r\n <!-- Loading state -->\r\n <ng-container *ngIf=\"isLoading; else widgetContent\">\r\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\r\n </ng-container>\r\n \r\n <!-- Content after API call -->\r\n <ng-template #widgetContent>\r\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\r\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\r\n <div class=\"widget-container-wrapper pl-1\" [ngClass]=\"i !== 0 ? 'mt-4' : ''\">\r\n <lib-widget-menu-header [widget]=\"widget\" [progressChartData]=\"progressChartData\"></lib-widget-menu-header>\r\n <div class=\"widget-content-wrapper mt-3 py-3\">\r\n <lib-widget-menu-body [widget]=\"widget\"></lib-widget-menu-body>\r\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- No widget configured state -->\r\n <ng-template #noWidgets>\r\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </p-card>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { CardModule } from 'primeng/card';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SharedModule } from '../shared';\r\nimport { WidgetContainerComponent } from './components/widget-container/widget-container.component';\r\nimport { WidgetHeaderComponent } from './components/widget-header/widget-header.component';\r\nimport { WidgetFooterComponent } from './components/widget-footer/widget-footer.component';\r\nimport { WidgetBodyComponent } from './components/widget-body/widget-body.component';\r\nimport { WidgetItemComponent } from './components/widget-item/widget-item.component';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { ChartModule } from 'primeng/chart';\r\nimport { WidgetMainComponent } from './components/widget-main/widget-main.component';\r\nimport { WidgetMenuComponent } from './components/widget-menu/widget-menu.component';\r\nimport { WidgetRowTileComponent } from './components/widget-row-tile/widget-row-tile.component';\r\nimport { WidgetMenuContainerComponent } from './components/widget-menu-container/widget-menu-container.component';\r\nimport { WidgetMenuHeaderComponent } from './components/widget-menu-header/widget-menu-header.component';\r\nimport { WidgetMenuBodyComponent } from './components/widget-menu-body/widget-menu-body.component';\r\nimport { WidgetMenuItemComponent } from './components/widget-menu-item/widget-menu-item.component';\r\nimport { CustomWidgetComponent } from './components/custom-widget/custom-widget.component';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n\r\n@NgModule({\r\n declarations: [WidgetContainerComponent, WidgetMenuComponent, WidgetMainComponent, WidgetHeaderComponent, WidgetFooterComponent, WidgetBodyComponent, WidgetItemComponent, WidgetRowTileComponent, WidgetMenuContainerComponent, WidgetMenuHeaderComponent, WidgetMenuBodyComponent, WidgetMenuItemComponent, CustomWidgetComponent],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n DividerModule,\r\n CardModule,\r\n SharedModule,\r\n SidebarModule,\r\n TimelineModule,\r\n ChartModule,\r\n SkeletonModule\r\n ],\r\n exports: [WidgetContainerComponent, WidgetMenuContainerComponent, CustomWidgetComponent]\r\n})\r\nexport class WidgetModule { }","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { QueueStore } from \"./queue.store\";\r\nimport { Observable, tap } from \"rxjs\";\r\nimport { DATASOURCES } from \"../../shared/constant/DATASOURCES\";\r\nimport { BaseService } from \"../../shared/state/base.service\";\r\nimport { AppConfigService } from \"../../shared/services/app-config.service\";\r\nimport { ListService } from \"../../shared/services/list.service\";\r\nimport { SHARED } from \"../../shared/constant/SHARED\";\r\n\r\n/**\r\n * Service for managing queue-related operations such as retrieving,\r\n * searching, and storing queue data in the QueueStore.\r\n */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class QueueService extends BaseService<QueueModel> {\r\n\r\n /**\r\n * Creates an instance of QueueService.\r\n * @param {QueueStore} queueStore - The store that manages the QueueModel state\r\n * @param {HttpClient} http - Angular HttpClient for making HTTP requests\r\n * @param {AppConfigService} appConfigService - Service for accessing application configuration\r\n * @param {ListService} listService - Service for handling list-related operations\r\n */\r\n constructor(\r\n public queueStore: QueueStore,\r\n http: HttpClient,\r\n appConfigService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, queueStore, appConfigService, listService);\r\n this._pathName = DATASOURCES.QUEUES;\r\n }\r\n\r\n /**\r\n * Fetches queue records using the provided apiConfig URL and optional params.\r\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\r\n * @param {any} [params] - Optional query parameters as an object\r\n * @returns {Observable<any>} Observable emitting the queue records\r\n */\r\n getQueueRecordsByApiConfig(apiConfig: string, params?: any): Observable<any> {\r\n let url = apiConfig;\r\n if (params && typeof params === 'object') {\r\n const queryString = new URLSearchParams(params).toString();\r\n if (queryString) {\r\n url += (url.includes('?') ? '&' : '?') + queryString;\r\n }\r\n }\r\n return this.http.get<any>(url).pipe(\r\n tap((response: any) => {\r\n if (response && response.data) {\r\n this.queueStore.set(response.data);\r\n } else if (Array.isArray(response)) {\r\n this.queueStore.set(response);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Fetches paginated queue records using the provided apiConfig URL with search and pagination support.\r\n * This is the unified method used for both initial data loading and search functionality.\r\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\r\n * @param {string} [searchKey] - Optional search term\r\n * @param {number} [page] - Page number (default: 1)\r\n * @param {number} [limit] - Number of records per page (default: 10)\r\n * @param {string} [query] - Optional query string for filtering\r\n * @param {string} [sortBy] - Optional sort field\r\n * @param {string} [sortOrder] - Optional sort order ('asc' or 'desc')\r\n * @returns {Observable<any>} Observable emitting the paginated queue records\r\n */\r\n getPaginatedQueueRecords(apiConfig: string, searchKey?: string, page: number = 1, limit: number = 10, query?: string, sortBy?: string, sortOrder?: string): Observable<any> {\r\n let url = apiConfig;\r\n const params: any = {\r\n page: page.toString(),\r\n limit: limit.toString(),\r\n ...(searchKey ? { searchKey } : {}),\r\n ...(sortBy ? { sortBy } : {}),\r\n ...(sortOrder ? { sortOrder } : {})\r\n };\r\n let headers = new HttpHeaders().set('Authorization', 'Bearer ' + '305cc9b3-cd8f-4a18-b8f0-7592c08c199c');\r\n // Add query parameters if they exist\r\n if (query) {\r\n const queryParams = new URLSearchParams(query);\r\n queryParams.forEach((value, key) => {\r\n params[key] = value;\r\n });\r\n }\r\n \r\n const paramsString = new URLSearchParams(params).toString();\r\n url += (url.includes('?') ? '&' : '?') + paramsString;\r\n \r\n return this.http.get<any>(url, { headers }).pipe(\r\n tap((response: any) => {\r\n if (response && response.data) {\r\n this.queueStore.set(response.data);\r\n } else if (Array.isArray(response)) {\r\n this.queueStore.set(response);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Fetches all queue entities from the configured data source.\r\n * The entities are stored in the queueStore upon retrieval.\r\n * @returns {Observable<any>} Observable emitting the fetched queue entities\r\n */\r\n getAllQueue(): Observable<any> {\r\n let headers = new HttpHeaders().set('Authorization', 'Bearer ' + '305cc9b3-cd8f-4a18-b8f0-7592c08c199c');\r\n return this.http.get<any>(this.apiUrl + this._pathName, { headers }).pipe(\r\n tap((entities: any) => { this.queueStore.set(entities); })\r\n );\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { TableBuilder } from '../../shared/services/table.builder';\r\nimport { TableSecondaryModel } from '../../shared/table-secondary/models/table-secondary.model';\r\nimport { QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST, SHARED, FIELD_DISPLAY_NAMES, QUEUE_RECORD_TABLE_COLUMN_ORDER } from '../../shared/constant/SHARED';\r\nimport * as columnStylesJson from '../constants/column-styles.json';\r\nimport { logAction } from '@datorama/akita';\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueueRecordTableBuilderService extends TableBuilder {\r\n private columnStyles: any = (columnStylesJson as any).columnStyles;\r\n\r\n buildSecondaryTable(records: any[], headerWidths?: { [key: string]: string; }, editPermission?: string, deletePermission?: string): TableSecondaryModel {\r\n const table = new TableSecondaryModel();\r\n table.headers = [];\r\n table.records = [];\r\n\r\n if (records.length === 0) {\r\n return table;\r\n }\r\n\r\n // Get the first record to determine available fields\r\n const firstRecord = records[0];\r\n const excludedFields = [\r\n SHARED._ID,\r\n SHARED.COMPANY_NAME,\r\n SHARED.APPLICATION_TYPE,\r\n SHARED.ASSIGNED_TO,\r\n SHARED.TASK_COMPLETION_PERCENT,\r\n SHARED.RISK_RATING,\r\n SHARED.LENDING,\r\n SHARED.BROKERCOMPANY_NAME\r\n\r\n ]; // Fields to exclude from table columns\r\n\r\n // Get all fields from the first record, excluding specified fields\r\n let availableFields = QUEUE_RECORD_TABLE_COLUMN_ORDER\r\n .filter(field => !excludedFields.includes(field) && firstRecord.hasOwnProperty(field));\r\n\r\n const columnWidths: { [key: string]: string } = QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST;\r\n\r\n table.records = records.map((apiRecord, index) => {\r\n const record: any = {\r\n recordData: {\r\n recordId: apiRecord._id, // The nested recordData expected by table-secondary.component.ts\r\n ...apiRecord\r\n },\r\n ...apiRecord\r\n };\r\n\r\n // Add column widths for row alignment\r\n record._columnWidths = {};\r\n availableFields.forEach(field => {\r\n record._columnWidths[field] = columnWidths[field] || 'w-2';\r\n });\r\n\r\n // Add formatted values for each field\r\n availableFields.forEach(field => {\r\n let value = apiRecord[field];\r\n let cellValue: any = value;\r\n\r\n // Format specific fields\r\n if (field === SHARED.APPLICANTS && Array.isArray(value)) {\r\n const companyName = apiRecord.companyName || '';\r\n const bubbles = [];\r\n\r\n // If we have both company and applicants, show only company name\r\n if (companyName && value.length > 0) {\r\n const truncatedName = companyName.length > 15 ? companyName.substring(0, 12) + '...' : companyName;\r\n bubbles.push({\r\n fullName: truncatedName,\r\n isCompany: true\r\n });\r\n } else if (companyName) {\r\n // Only company, no applicants\r\n const truncatedName = companyName.length > 15 ? companyName.substring(0, 12) + '...' : companyName;\r\n bubbles.push({\r\n fullName: truncatedName,\r\n isCompany: true\r\n });\r\n } else {\r\n // Only applicants, show full names\r\n value.forEach((applicant) => {\r\n if (applicant.fullName) {\r\n const truncatedName = applicant.fullName.length > 15 ? applicant.fullName.substring(0, 12) + '...' : applicant.fullName;\r\n bubbles.push({\r\n fullName: truncatedName,\r\n isCompany: false,\r\n riskRating: applicant.riskRating,\r\n isCustomerVulnerable: applicant.isCustomerVulnerable\r\n });\r\n }\r\n });\r\n }\r\n cellValue = bubbles;\r\n }\r\n else if (field === SHARED.TASKS) {\r\n // Format tasks as task items with badges\r\n const taskItems = [];\r\n\r\n // Parse the string format \"brokerTasks/underwriterTasks\" (e.g., \"2/0\", \"0/3\", \"2/3\")\r\n if (typeof value === SHARED.STRING && value.includes(SHARED.SLASH)) {\r\n const [brokerTasksStr, underwriterTasksStr] = value.split(SHARED.SLASH);\r\n const brokerTasks = parseInt(brokerTasksStr) || 0;\r\n const underwriterTasks = parseInt(underwriterTasksStr) || 0;\r\n\r\n // Always show both badges, even if count is 0\r\n taskItems.push({\r\n type: SHARED.TASK_BROKER_LABEL,\r\n count: brokerTasks,\r\n status: SHARED.WARNING\r\n });\r\n taskItems.push({\r\n type: SHARED.TASK_UNDERWRITER_LABEL,\r\n count: underwriterTasks,\r\n status: SHARED.SUCCESS\r\n });\r\n }\r\n\r\n cellValue = taskItems;\r\n }\r\n else if (field === SHARED.APP_ID) {\r\n // Format App ID with type and risk tags below\r\n cellValue = {\r\n appId: value,\r\n type: apiRecord.lending || apiRecord.applicationType || undefined,\r\n risk: apiRecord.riskRating || undefined\r\n };\r\n }\r\n else if (field === SHARED.BROKER_NAME) {\r\n // Format broker with name and company name in multi-line format\r\n const brokerName = value && value.length > 15 ? value.substring(0, 12) + '...' : value;\r\n const brokerCompanyName = apiRecord[SHARED.BROKERCOMPANY_NAME];\r\n cellValue = {\r\n brokerName: brokerName || '',\r\n brokerCompanyName: brokerCompanyName || ''\r\n };\r\n }\r\n else if (field === 'finance') {\r\n // Remove decimal part from finance amount\r\n if (value && typeof value === 'string') {\r\n cellValue = {\r\n amount: value.replace(/\\.\\d{2}$/, ''),\r\n isFinance: true\r\n };\r\n } else {\r\n cellValue = value;\r\n }\r\n }\r\n else if (field === SHARED.SECURITY_ADDRESS && value) {\r\n const addressLine1 = value.addressLine1 || '';\r\n const truncatedAddress = addressLine1.length > 15 ? addressLine1.substring(0, 12) + '...' : addressLine1;\r\n record[field] = {\r\n line1: truncatedAddress,\r\n line2: value.postCode || ''\r\n };\r\n\r\n }\r\n else if (!value || value === 'null') {\r\n cellValue = SHARED.EMPTY;\r\n }\r\n\r\n record[field] = cellValue;\r\n });\r\n\r\n // Attach row-level ngClass expression for dynamic row styling\r\n const rowStyles = (columnStylesJson as any).rowStyles;\r\n if (rowStyles && rowStyles.ngClass) {\r\n record.rowNgClassExpression = rowStyles.ngClass;\r\n }\r\n return record;\r\n });\r\n\r\n\r\n\r\n table.headers = availableFields.map(field => {\r\n const header: any = {\r\n name: field,\r\n displayName: FIELD_DISPLAY_NAMES[field] || field,\r\n width: columnWidths[field] || 'w-2' // Default width for all columns\r\n };\r\n if (field === SHARED.SECURITY_ADDRESS) {\r\n header.isTwoLine = true;\r\n }\r\n\r\n if (field === SHARED.APPLICANTS) {\r\n header.skipParentNgClass = true;\r\n }\r\n if (field) {\r\n // Add containerNgClass and textNgClass expressions for dynamic styling\r\n if (this.columnStyles[field]) {\r\n if (this.columnStyles[field].containerNgClass) {\r\n header.containerNgClassExpression = this.columnStyles[field].containerNgClass;\r\n }\r\n if (this.columnStyles[field].containerNgStyle) {\r\n header.containerNgStyleExpression = this.columnStyles[field].containerNgStyle;\r\n }\r\n if (this.columnStyles[field].isShowSortIcon) {\r\n header.isShowSortIcon = this.columnStyles[field].isShowSortIcon;\r\n }\r\n if (this.columnStyles[field].textNgClass) {\r\n header.textNgClassExpression = this.columnStyles[field].textNgClass;\r\n }\r\n if (this.columnStyles[field].line1NgClass) {\r\n header.line1NgClassExpression = this.columnStyles[field].line1NgClass;\r\n }\r\n }\r\n }\r\n return header;\r\n });\r\n\r\n // Set TableSecondaryModel specific properties\r\n table.isSortingAllow = SHARED.TRUE;\r\n return table;\r\n }\r\n\r\n}","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n/**\r\n * `QueueSearchComponent` is responsible for displaying a search input and emitting\r\n * search terms to parent components for handling API calls with proper pagination.\r\n * Selector: `queue-search`\r\n * Template: `./queue-search.component.html`\r\n * Styles: `./queue-search.component.scss`\r\n */\r\n@Component({\r\n selector: 'queue-search',\r\n standalone: false,\r\n templateUrl: './queue-search.component.html',\r\n styleUrl: './queue-search.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueSearchComponent implements OnInit, OnDestroy {\r\n @Input() searchText: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() debounceTime: number = 400;\r\n @Output() searchInputChanged = new EventEmitter<string>();\r\n @Output() searchRequested = new EventEmitter<string>();\r\n @Output() searchCleared = new EventEmitter<void>();\r\n\r\n private searchUpdate = new Subject<string>();\r\n private subscription!: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.searchUpdate.pipe(\r\n debounceTime(this.debounceTime),\r\n distinctUntilChanged()\r\n ).subscribe(value => {\r\n this.searchRequested.emit(value);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onSearchInputChange(): void {\r\n this.searchInputChanged.emit(this.searchText);\r\n this.searchUpdate.next(this.searchText);\r\n }\r\n\r\n onSearch(): void {\r\n this.searchRequested.emit(this.searchText);\r\n }\r\n\r\n onClearSearch(): void {\r\n this.searchCleared.emit();\r\n }\r\n\r\n get hasSearchText(): boolean {\r\n return !!this.searchText;\r\n }\r\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;\">\r\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\" >\r\n <div class=\"p-inputgroup border-round bg-white\" style=\"height: 100%;\">\r\n <span class=\"p-inputgroup-addon bg-white\" style=\"height: 100%; display: flex; align-items: center;\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"searchText\" \r\n class=\"border-none p-0 border-noround-right bg-white w-full outline-none\" \r\n style=\"height: 100%;\" \r\n pInputText \r\n [placeholder]=\"placeholder\" \r\n (input)=\"onSearchInputChange()\"\r\n (keydown.enter)=\"onSearch()\" \r\n />\r\n <button \r\n *ngIf=\"hasSearchText\" \r\n type=\"button\" \r\n class=\"p-inputgroup-addon bg-white border-none cursor-pointer\" \r\n (click)=\"onClearSearch()\"\r\n pButton \r\n icon=\"pi pi-times\"\r\n [text]=\"true\"\r\n style=\"height: 100%; display: flex; align-items: center; border-radius: 8px;\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n ","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { QueueStore } from '../../state/queue.store';\r\n\r\n@Component({\r\n selector: 'app-queue-item',\r\n standalone: false,\r\n templateUrl: './queue-item.component.html',\r\n styleUrls: ['./queue-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueItemComponent {\r\n @Input() filteredQueueData: any[] = [];\r\n @Input() selectedQueueId: string | null = null;\r\n @Input() selectedStatus: string = 'active';\r\n @Input() userRole: boolean = false;\r\n @Input() showQueueDataForm: boolean = true;\r\n @Output() queueSelected = new EventEmitter<string>();\r\n @Output() statusChanged = new EventEmitter<string>();\r\n @Output() insertQueueRequested = new EventEmitter<void>();\r\n\r\n constructor(private queueStore: QueueStore) {}\r\n\r\n onQueueClick(queueId: string): void {\r\n this.queueSelected.emit(queueId);\r\n this.queueStore.setSelectedQueueId(queueId);\r\n }\r\n\r\n onStatusChange(event: any): void {\r\n this.statusChanged.emit(event.target.value);\r\n }\r\n\r\n onInsertQueue(): void {\r\n this.insertQueueRequested.emit();\r\n }\r\n\r\n isQueueActive(queue: any): boolean {\r\n return queue.isActive;\r\n }\r\n\r\n isQueueSelected(queueId: string): boolean {\r\n return queueId === this.selectedQueueId;\r\n }\r\n}","<div class=\"p-4 pt-3 mb-0\">\r\n <div class=\"queues overflow-x-hidden queue-item-wrapper\">\r\n <h4 class=\"queue-title-wrapper m-0 mb-3 pb-1\">Queues</h4>\r\n @for(queue of filteredQueueData; let i = $index; track queue){\r\n\r\n <div class=\"flex m-0 kanban-list\" [ngClass]=\"{'mt-2 pt-1': i !== 0}\" #listEl style=\"min-height:2rem\" (click)=\"onQueueClick(queue._id)\" >\r\n <div class=\"flex align-items-center p-0 w-full\">\r\n <div class=\"py-4 px-3 cursor-pointer w-full\" [ngClass]=\"{\r\n 'active-queue-wrapper': isQueueSelected(queue._id),\r\n 'inActiveQueue': !isQueueActive(queue),\r\n 'queue-list-wrapper': isQueueActive(queue)\r\n }\"\r\n >\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <span class=\"text-color queue-name font-semibold\"\r\n [ngClass]=\"{'active-title-wrapper': isQueueSelected(queue._id)}\"\r\n >{{queue.name}}</span>\r\n <div class=\"elipsesWithCount flex align-items-center\">\r\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" [ngClass]=\"{\r\n 'inActiveBadgeColor': !isQueueActive(queue),\r\n }\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- <div *ngIf=\"userRole\" class=\"w-full mt-4\">\r\n <p-button class=\"add-queue-btn-wrapper\" (onClick)=\"onInsertQueue()\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <i class=\"pi pi-plus mr-2\"></i>\r\n <p class=\"mb-0\">Add Queue</p>\r\n </div>\r\n </p-button>\r\n </div> -->\r\n </div> ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-queue-list',\r\n standalone: false,\r\n templateUrl: './queue-list.component.html',\r\n styleUrls: ['./queue-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueListComponent {\r\n @Input() queueData: any[] = [];\r\n @Input() selectedQueueId: string | null = null;\r\n @Input() selectedStatus: string = 'active';\r\n @Input() userRole: boolean = false;\r\n @Input() showQueueDataForm: boolean = true;\r\n @Output() queueSelected = new EventEmitter<string>();\r\n @Output() statusChanged = new EventEmitter<string>();\r\n @Output() insertQueueRequested = new EventEmitter<void>();\r\n\r\n onQueueSelected(queueId: string): void {\r\n this.queueSelected.emit(queueId);\r\n }\r\n\r\n onStatusChanged(status: string): void {\r\n this.statusChanged.emit(status);\r\n }\r\n\r\n onInsertQueue(): void {\r\n this.insertQueueRequested.emit();\r\n }\r\n}\r\n","<app-queue-item\r\n [filteredQueueData]=\"queueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"showQueueDataForm\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueue()\"\r\n></app-queue-item>\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\r\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\r\n\r\n@Component({\r\n selector: 'app-queue-record-table',\r\n standalone: false,\r\n templateUrl: './queue-record-table.component.html',\r\n styleUrls: ['./queue-record-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueRecordTableComponent implements OnChanges{\r\n public sortField: string = '';\r\n public sortOrder: number = 1;\r\n\r\n @Input() table!: TableSecondaryModel;\r\n @Input() metaData!: MetaDataModel;\r\n @Input() loading: boolean = false;\r\n @Input() selectedRows: any[] = [];\r\n @Input() resetSort!: boolean;\r\n @Input() isShowSkeleton: boolean = false;\r\n @Input() selectedQueue: any;\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n @Output() selectedRowsData = new EventEmitter<any[]>();\r\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\r\n @Output() rowClick = new EventEmitter<any>();\r\n @Output() paginationChanged = new EventEmitter<any>();\r\n @Output() filterApplied = new EventEmitter<any>();\r\n @Output() sortApplied = new EventEmitter<any>();\r\n\r\n onSelectionChange(selection: any[]): void {\r\n this.selectionChange.emit(selection);\r\n this.selectedRowsData.emit(selection);\r\n }\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes['resetSort']){\r\n this.sortField = '';\r\n this.sortOrder = 1;\r\n } \r\n }\r\n\r\n onRowClick(record: any): void {\r\n this.rowClick.emit(record);\r\n }\r\n\r\n onPaginationChange(event: any): void {\r\n this.paginationChanged.emit(event);\r\n }\r\n\r\n onFilterApplied(record: any): void {\r\n this.filterApplied.emit(record);\r\n }\r\n\r\n onSort(event: any): void {\r\n this.sortField = event.field;\r\n this.sortOrder = event.order;\r\n this.sortApplied.emit(event);\r\n }\r\n\r\n get hasData(): boolean {\r\n return this.table?.records && this.table.records.length > 0;\r\n }\r\n\r\n get selectedCount(): number {\r\n return this.selectedRows?.length || 0;\r\n }\r\n} ","<div class=\"bg-white queue-table-wrapper border-round-xl\">\r\n <lib-table-secondary \r\n [table]=\"table\" \r\n [metaData]=\"metaData\"\r\n [enableSelection]=\"true\"\r\n [selectionMode]=\"'multiple'\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selection]=\"selectedRows\"\r\n [showActions]=\"false\"\r\n [noRecordsMessage]=\"selectedQueue?.name === 'Assigned To Me' ? 'No applications are currently assigned.' : 'No Records Found'\"\r\n (onPage)=\"onPaginationChange($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (rowSelectionChange)=\"onRowClick($event)\"\r\n (sortChanged)=\"onSort($event)\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\">\r\n </lib-table-secondary>\r\n</div>","import { Component, ElementRef, HostListener, ViewChild, Output, EventEmitter, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { QueueFilterDropdownService, RiskRating, ApplicationType, PurchaseType, TaskStatus, QueueFilter, EPC } from '../../services/queue-filter-dropdown.service';\r\n\r\n/**\r\n *\r\n */\r\n@Component({\r\n selector: 'lib-queue-filter-dropdown',\r\n standalone: false,\r\n templateUrl: './queue-filter-dropdown.component.html',\r\n styleUrl: './queue-filter-dropdown.component.scss'\r\n})\r\nexport class QueueFilterDropdownComponent implements OnChanges {\r\n showDropdown = false;\r\n @ViewChild('dropdownPanel', { static: false }) dropdownPanel!: ElementRef;\r\n skipNextDocumentClick = false;\r\n private originalFilters: QueueFilter | null = null;\r\n private filtersApplied = false; // Track if filters have been applied\r\n // Placeholder options; wire to API later\r\n underwriterOptions: Array<{ id: string; name: string }> = [];\r\n // Cache filters for template bindings to avoid repeated object creation\r\n public filters!: QueueFilter;\r\n\r\n @Input() appliedFilters: any = {}; // Input to sync with container's applied filters\r\n @Output() filterApplied = new EventEmitter<any>();\r\n @Output() filtersCleared = new EventEmitter<void>();\r\n\r\n constructor(public filterService: QueueFilterDropdownService) {\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['appliedFilters'] && !changes['appliedFilters'].firstChange) {\r\n this.syncWithAppliedFilters(this.appliedFilters);\r\n }\r\n }\r\n\r\n get filterCount(): number {\r\n return this.filterService.getFilterCount();\r\n }\r\n\r\n onFilterBtnClick() {\r\n if (!this.showDropdown) {\r\n // Store current state when opening dropdown (this will be the applied filters)\r\n this.originalFilters = this.filterService.getFilters();\r\n }\r\n this.showDropdown = !this.showDropdown;\r\n this.skipNextDocumentClick = true;\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n setRiskRating(rating: RiskRating) {\r\n this.filterService.setRiskRating(rating);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setApplicationType(type: ApplicationType) {\r\n this.filterService.setApplicationType(type);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setPurchaseType(type: PurchaseType) {\r\n this.filterService.setPurchaseType(type);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setTaskStatus(status: TaskStatus) {\r\n this.filterService.setTaskStatus(status);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setFinanceMin(min: number | null) {\r\n this.filterService.setFinanceMin(min);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setFinanceMax(max: number | null) {\r\n this.filterService.setFinanceMax(max);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setPendingDays(days: number | null) {\r\n this.filterService.setPendingDays(days);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Category (UK, Ex-Pat, Intl)\r\n setCategory(category: 'UK' | 'Ex-Pat' | 'Intl') {\r\n this.filterService.setCategory(category);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // EPC (A or B (Green))\r\n setEpc(epc: EPC) {\r\n this.filterService.setEpc(epc);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Vulnerable Customer (boolean)\r\n setVulnerableCustomer(value: boolean | null) {\r\n this.filterService.setVulnerableCustomer(value);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Assigned Underwriter (multi-select ids)\r\n setAssignedUnderwriter(ids: string[]) {\r\n this.filterService.setAssignedUnderwriter(ids);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n applyFilters() {\r\n const filterData = this.filterService.getFilters();\r\n if (this.filterService.hasFilters()) {\r\n this.filterApplied.emit(filterData);\r\n this.filtersApplied = true; // Mark that filters have been applied\r\n }\r\n this.showDropdown = false;\r\n this.originalFilters = null; // Clear stored state after applying\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n clearAll() {\r\n this.filterService.clearAll();\r\n this.filtersCleared.emit();\r\n this.filtersApplied = false; // Reset the applied flag when clearing all\r\n this.originalFilters = null; // Clear originalFilters to prevent restoring old filters\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Method to sync with container's applied filters\r\n syncWithAppliedFilters(appliedFilters: any) {\r\n if (appliedFilters && Object.keys(appliedFilters).length > 0) {\r\n const filters: QueueFilter = {\r\n riskRating: appliedFilters.riskRating || null,\r\n applicationType: appliedFilters.applicationType || null,\r\n purchaseType: appliedFilters.purchaseType || null,\r\n taskStatus: appliedFilters.taskStatus || null,\r\n category: appliedFilters.category || [],\r\n epc: appliedFilters.epc || [],\r\n vulnerableCustomer: appliedFilters.vulnerableCustomer ?? null,\r\n financeMin: appliedFilters.financeMin || null,\r\n financeMax: appliedFilters.financeMax || null,\r\n pendingDays: appliedFilters.pendingDays || null,\r\n assignedUnderwriter: appliedFilters.assignedUnderwriter || []\r\n };\r\n this.filterService.setAllFilters(filters);\r\n this.filtersApplied = true;\r\n this.filters = this.filterService.getFilters();\r\n } else {\r\n this.filterService.clearAll();\r\n this.filtersApplied = false;\r\n this.filters = this.filterService.getFilters();\r\n }\r\n }\r\n\r\n private restoreOriginalFilters() {\r\n if (this.originalFilters && !this.filtersApplied) {\r\n // Only restore original filters if no filters have been applied yet\r\n this.filterService.setAllFilters(this.originalFilters);\r\n }\r\n this.originalFilters = null;\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent) {\r\n if (this.skipNextDocumentClick) {\r\n this.skipNextDocumentClick = false;\r\n return;\r\n }\r\n if (this.showDropdown) {\r\n const clickedInside = this.dropdownPanel && this.dropdownPanel.nativeElement.contains(event.target);\r\n if (!clickedInside) {\r\n this.restoreOriginalFilters(); // Restore original state when closing without applying\r\n this.showDropdown = false;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"queue-filter-dropdown-wrapper\">\r\n <p-button class=\"filter-btn-wrapper\" (onClick)=\"onFilterBtnClick()\">\r\n <div class=\"flex align-items-center\">\r\n <i class=\"ri-filter-3-line mr-2 mt-1\"></i>\r\n <p class=\"filter-count mb-0 mr-2\">{{ filterCount }}</p>\r\n <p class=\"mb-0\">Filter(s) Applied</p>\r\n <i class=\"pi pi-angle-down ml-2 mt-1\"></i>\r\n </div>\r\n </p-button>\r\n\r\n <div class=\"filter-dropdown-panel\" *ngIf=\"showDropdown\" #dropdownPanel>\r\n <h3 class=\"filter-title\">Queue Filters</h3>\r\n <div class=\"grid form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n\r\n\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Risk Rating</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Low')\"\r\n (onClick)=\"setRiskRating('Low')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Low</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Medium')\"\r\n (onClick)=\"setRiskRating('Medium')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Medium</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('High')\"\r\n (onClick)=\"setRiskRating('High')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">High</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 p-0 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Application Type</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('BTL')\"\r\n (onClick)=\"setApplicationType('BTL')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">BTL</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('HPP')\"\r\n (onClick)=\"setApplicationType('HPP')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">HPP</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Category</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('UK')\"\r\n (onClick)=\"setCategory('UK')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">UK</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Ex-Pat')\"\r\n (onClick)=\"setCategory('Ex-Pat')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Ex-Pat</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Intl')\"\r\n (onClick)=\"setCategory('Intl')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Intl</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">EPC</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.epc?.includes('A or B (Green)')\"\r\n (onClick)=\"setEpc('A or B (Green)')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">A or B (Green)</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Purchase Type</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.purchaseType.includes('Purchase')\"\r\n (onClick)=\"setPurchaseType('Purchase')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Purchase</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\"\r\n [class.selected]=\"filters.purchaseType.includes('Refinance')\"\r\n (onClick)=\"setPurchaseType('Refinance')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Refinance</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Task Status</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\"\r\n [class.selected]=\"filters.taskStatus.includes('Not Started')\"\r\n (onClick)=\"setTaskStatus('Not Started')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Not Started</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\"\r\n [class.selected]=\"filters.taskStatus.includes('In-progress')\"\r\n (onClick)=\"setTaskStatus('In-progress')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">In-progress</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.taskStatus.includes('Completed')\"\r\n (onClick)=\"setTaskStatus('Completed')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Completed</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid p-0 form-grid col-12\">\r\n <div class=\"col-12 pl-3 md:col-6\"> \r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Finance Amount</p>\r\n <div class=\"filter-options two-inputs\">\r\n <div class=\"grid p-0 form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n <input type=\"number\" class=\"w-full\" placeholder=\"Min\" [ngModel]=\"filters.financeMin\"\r\n (ngModelChange)=\"setFinanceMin($event)\" min=\"0\" />\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <input type=\"number\" class=\"w-full\" placeholder=\"Max\" [ngModel]=\"filters.financeMax\"\r\n (ngModelChange)=\"setFinanceMax($event)\" min=\"0\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Pending Days</p>\r\n <div class=\"filter-options one-input\">\r\n <input type=\"number\" placeholder=\"No. of days\" [ngModel]=\"filters.pendingDays\"\r\n (ngModelChange)=\"setPendingDays($event)\" min=\"0\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid p-0 form-grid col-12\">\r\n <div class=\"col-12 pl-4 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Vulnerable Customer</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === true\"\r\n (onClick)=\"setVulnerableCustomer(true)\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Yes</p>\r\n </div>\r\n </p-button>\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === false\"\r\n (onClick)=\"setVulnerableCustomer(false)\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">No</p>\r\n </div>\r\n </p-button>\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === null\"\r\n (onClick)=\"setVulnerableCustomer(null)\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Any</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 pl-3 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Assigned Underwriter</p>\r\n <div class=\"filter-options one-input\">\r\n <!-- Expecting an array of IDs; integrate with your user list later -->\r\n <p-multiSelect [options]=\"underwriterOptions\" optionLabel=\"name\" optionValue=\"id\"\r\n placeholder=\"Select underwriter(s)\" [appendTo]=\"'body'\" [panelStyle]=\"{ zIndex: 1100 }\"\r\n [ngModel]=\"filters.assignedUnderwriter\" (ngModelChange)=\"setAssignedUnderwriter($event)\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-actions w-full flex justify-content-between\">\r\n <p-button class=\"pl-3 clear-btn-wrapper\" (onClick)=\"clearAll()\">\r\n <div class=\"flex align-items-center btn-text-wrapper\">\r\n <p class=\"mb-0 mr-2\">Clear All</p>\r\n <i class=\"pi pi-times\"></i>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"apply-btn-wrapper\" (onClick)=\"applyFilters()\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Apply Filters</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { QueueService } from '../../state/queue.service';\r\nimport { QueueStore } from '../../state/queue.store';\r\nimport { BaseContainerComponent } from '../../../shared/_base/base-container/base-container.component';\r\nimport { ERROR } from '../../../shared/constant/ERROR';\r\nimport { SHARED } from '../../../shared/constant/SHARED';\r\nimport { BaseStore } from '../../../shared/state/base.store';\r\nimport { QueueBusinessService } from '../../services/queue-business.service';\r\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\r\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\r\nimport { QueueRecordTableBuilderService } from '../../services/queue-record-table-builder.service';\r\nimport { QueueFilterDropdownComponent } from '../queue-filter-dropdown/queue-filter-dropdown.component';\r\nimport { QueueFilterDropdownService } from '../../services/queue-filter-dropdown.service';\r\nimport { BaseQuery } from '../../../shared';\r\n\r\n/**\r\n * Container component for managing queue-related data and interactions.\r\n * Extends the BaseContainerComponent with a generic type of QueueModel.\r\n */\r\n@Component({\r\n selector: 'lib-queue-container',\r\n standalone: false,\r\n templateUrl: './queue-container.component.html',\r\n styleUrl: './queue-container.component.scss'\r\n})\r\nexport class QueueContainerComponent extends BaseContainerComponent<QueueModel> implements OnInit, OnDestroy {\r\n private destroy$ = new Subject<void>();\r\n private searchSubject = new Subject<string>();\r\n\r\n public queueList: QueueModel[] = [];\r\n public selectedQueue: any;\r\n public currentSearchTerm: string = '';\r\n public selectedRows: any[] = [];\r\n public loading: boolean = false;\r\n public error: string | null = null;\r\n public filteredQueueData: any[] = [];\r\n public selectedStatus: string = 'active';\r\n public userRole: boolean = false;\r\n public selectedQueueId: string | null = null;\r\n public table!: TableSecondaryModel;\r\n public metaData!: MetaDataModel;\r\n public currentPage: number = 1;\r\n public currentLimit: number = 10;\r\n public queryString: string = SHARED.EMPTY;\r\n public searchText: string = SHARED.EMPTY;\r\n public sortBy: string = SHARED.EMPTY;\r\n public sortOrder: number = 1;\r\n isShowSkeleton: boolean = false;\r\n resetSort: boolean = false;\r\n public appliedFilters: any = {};\r\n @Input() placeholder: string = '';\r\n\r\n @ViewChild('filterDropdown') filterDropdown!: QueueFilterDropdownComponent;\r\n\r\n // Input properties for content projection\r\n @Input() set selectedRowsInput(rows: any[]) {\r\n this.selectedRows = rows || [];\r\n }\r\n get selectedRowsInput(): any[] {\r\n return this.selectedRows;\r\n }\r\n\r\n // Output events for content projection\r\n @Output() assignmentComplete = new EventEmitter<{ success: boolean, message: string }>();\r\n @Output() userAssigned = new EventEmitter<{ user: any, selectedRows: any[] }>();\r\n @Output() selectedRowsData = new EventEmitter<any[]>();\r\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\r\n @Output() rowClick = new EventEmitter<any>();\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n @Output() isAllRowSelected = new EventEmitter<boolean>(false);\r\n @Output() excludedApplicationIds = new EventEmitter<any[]>();\r\n\r\n\r\n constructor(\r\n public queueStore: QueueStore,\r\n private queueService: QueueService,\r\n private baseStore: BaseStore<QueueModel>,\r\n private queueBusinessService: QueueBusinessService,\r\n private tableBuilder: QueueRecordTableBuilderService,\r\n private queueFilterDropdownService: QueueFilterDropdownService,\r\n private baseQuery: BaseQuery<any>\r\n ) {\r\n super(queueService);\r\n }\r\n\r\n ngOnInit() {\r\n this.isShowSkeleton = true;\r\n const storedQueueId = this.getStoredQueueId();\r\n this.initializeComponent(storedQueueId ?? undefined);\r\n this.setupSearchDebounce();\r\n // Sync filter dropdown after initialization\r\n setTimeout(() => {\r\n this.syncFilterDropdown();\r\n }, 0);\r\n\r\n this.baseQuery.getIsAllRowSelected()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if(res) {\r\n this.isAllRowSelected.emit(res);\r\n }\r\n })\r\n\r\n this.baseQuery.getExcludedApplicationIds()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if(res) {\r\n this.excludedApplicationIds.emit(res);\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.queueFilterDropdownService.clearAll();\r\n }\r\n\r\n onQueueSelected(queueId: string): void {\r\n this.handleQueueData(queueId);\r\n }\r\n\r\n onStatusChanged(status: string): void {\r\n this.selectedStatus = status;\r\n this.filterQueues();\r\n }\r\n\r\n onInsertQueueRequested(): void {\r\n this.queueBusinessService.navigateToInsertQueue();\r\n }\r\n\r\n onSearchInputChanged(searchTerm: string): void {\r\n this.searchText = searchTerm;\r\n this.searchSubject.next(searchTerm);\r\n }\r\n\r\n onSearchRequested(searchTerm: string): void {\r\n this.currentSearchTerm = searchTerm;\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n }\r\n\r\n onSearchCleared(): void {\r\n this.searchText = SHARED.EMPTY;\r\n this.currentSearchTerm = SHARED.EMPTY;\r\n this.resetPage();\r\n this.clearSelection();\r\n this.getQueueRecordsData();\r\n }\r\n\r\n onPaginationChanged(event: any): void {\r\n const { page, limit } = this.queueBusinessService.calculatePagination(event);\r\n this.getQueueRecordsData(page, limit);\r\n }\r\n\r\n onFilterApplied(record: any): void {\r\n this.queryString = this.queueBusinessService.buildQueryString(record);\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n this.clearSelection();\r\n }\r\n\r\n get hasActiveFilters(): boolean {\r\n return this.appliedFilters && Object.values(this.appliedFilters).some(val => val !== null && val !== '' && val !== undefined);\r\n }\r\n\r\n onTableRowClick(record: any): void {\r\n this.queueBusinessService.storeApplicationData(record);\r\n this.rowClick.emit(record);\r\n this.clearFilters();\r\n this.syncFilterDropdown();\r\n }\r\n\r\n onTableSelectionChange(selection: any[]): void {\r\n this.selectedRows = selection;\r\n this.selectionChange.emit(this.selectedRows);\r\n this.selectedRowsData.emit(this.selectedRows);\r\n this.assignmentDataReady.emit({\r\n selectedRows: this.selectedRows,\r\n queueData: this.selectedQueue\r\n });\r\n }\r\n\r\n onAssignmentDataReady(event: { selectedRows: any[], queueData: QueueModel }): void {\r\n this.assignmentDataReady.emit(event);\r\n }\r\n\r\n onSortApplied(event: any): void {\r\n if (event.field === SHARED.APPLICANTS || event.field === SHARED.SECURITY_ADDRESS) {\r\n return;\r\n }\r\n this.sortBy = event.field;\r\n this.sortOrder = event.order;\r\n this.getQueueRecordsData();\r\n }\r\n\r\n onFilterDropdownApplied(filterData: any): void {\r\n this.appliedFilters = filterData;\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n this.clearSelection();\r\n this.syncFilterDropdown();\r\n }\r\n\r\n onFiltersCleared(): void {\r\n this.clearFilters();\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n this.clearSelection();\r\n this.syncFilterDropdown();\r\n }\r\n\r\n onClearAllFilters(): void {\r\n if (this.filterDropdown) {\r\n this.filterDropdown.clearAll();\r\n }\r\n this.onFiltersCleared();\r\n }\r\n\r\n private syncFilterDropdown(): void {\r\n if (this.filterDropdown) {\r\n this.filterDropdown.syncWithAppliedFilters(this.appliedFilters);\r\n }\r\n }\r\n\r\n private initializeComponent(preferredQueueId?: string): void {\r\n this.getAllQueueList(preferredQueueId);\r\n this.userRole = this.queueBusinessService.getUserRole();\r\n }\r\n\r\n private setupSearchDebounce(): void {\r\n const debouncedSearch = this.queueBusinessService.createDebouncedSearch(300);\r\n debouncedSearch.pipe(takeUntil(this.destroy$)).subscribe(searchTerm => {\r\n if (this.selectedQueue) {\r\n this.currentSearchTerm = searchTerm;\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n }\r\n });\r\n }\r\n\r\n private getAllQueueList(preferredQueueId?: string): void {\r\n this.loading = true;\r\n this.error = null;\r\n this.queueService.getAllQueue().subscribe({\r\n next: (res) => {\r\n this.queueList = Array.isArray(res) ? res : (res.data || res);\r\n this.baseStore.setQueueList(this.queueList);\r\n this.filterQueues(preferredQueueId);\r\n this.loading = false;\r\n },\r\n error: (err) => {\r\n this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;\r\n this.loading = false;\r\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\r\n }\r\n });\r\n }\r\n\r\n private handleQueueData(queueId: string): void {\r\n const newQueue = this.queueList.find((i) => i._id == queueId);\r\n if (newQueue) {\r\n this.selectedQueue = Object.assign({}, newQueue);\r\n this.selectedQueueId = queueId;\r\n this.queueStore.setSelectedQueueId(queueId);\r\n this.queueBusinessService.storeSelectedQueue(queueId);\r\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\r\n this.clearSelection();\r\n this.resetPaginationState();\r\n this.resetSorting();\r\n this.getQueueRecordsData();\r\n this.syncFilterDropdown();\r\n } else {\r\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\r\n }\r\n }\r\n\r\n private resetSorting(){\r\n this.sortBy = SHARED.EMPTY;\r\n this.sortOrder = 1;\r\n this.resetSort = !this.resetSort;\r\n }\r\n\r\n private filterQueues(preferredQueueId?: string): void {\r\n this.filteredQueueData = this.queueBusinessService.filterQueuesByStatus(this.queueList, this.selectedStatus);\r\n this.filteredQueueData = this.queueBusinessService.orderQueuesByPriority(this.filteredQueueData);\r\n let queueIdToSelect = preferredQueueId;\r\n if (queueIdToSelect && this.filteredQueueData.some(q => q._id == queueIdToSelect)) {\r\n // keep the same queue if it exists\r\n this.selectedQueueId = queueIdToSelect;\r\n this.handleQueueData(this.selectedQueueId);\r\n } else if (this.filteredQueueData.length > 0) {\r\n this.selectedQueueId = this.queueBusinessService.getFirstQueueId(this.filteredQueueData);\r\n if (this.selectedQueueId) {\r\n this.handleQueueData(this.selectedQueueId);\r\n }\r\n }\r\n }\r\n\r\n private getQueueRecordsData(page?: number, limit?: number): void {\r\n this.isShowSkeleton = true;\r\n if (!this.selectedQueue?.apiConfig) {\r\n console.log(\"Queue data or apiConfig not available\");\r\n return;\r\n }\r\n const targetPage = page || this.currentPage;\r\n const targetLimit = limit || this.currentLimit;\r\n \r\n // Build filter query string\r\n let filterQueryString = this.queryString;\r\n if (this.appliedFilters && Object.keys(this.appliedFilters).length > 0) {\r\n const filterQuery = this.queueFilterDropdownService.buildFilterQueryString(this.appliedFilters);\r\n \r\n // Combine existing query string with filter parameters\r\n const existingParams = new URLSearchParams(filterQueryString);\r\n const filterParams = new URLSearchParams(filterQuery);\r\n filterParams.forEach((value, key) => {\r\n existingParams.set(key, value);\r\n });\r\n filterQueryString = existingParams.toString();\r\n }\r\n \r\n this.queueService.getPaginatedQueueRecords(\r\n this.selectedQueue.apiConfig,\r\n this.currentSearchTerm,\r\n targetPage,\r\n targetLimit,\r\n filterQueryString,\r\n this.sortBy,\r\n this.getSortOrderString(this.sortOrder)\r\n ).subscribe({\r\n next: (res: any) => {\r\n const apiData = res?.data || res?.paginatedResults || res || [];\r\n if (apiData && apiData.length > 0) {\r\n this.isShowSkeleton = false;\r\n this.table = this.tableBuilder.buildSecondaryTable(apiData);\r\n } else if (this.table) {\r\n this.table = { ...this.table, records: [] };\r\n this.isShowSkeleton = false;\r\n } else {\r\n this.table = this.tableBuilder.buildSecondaryTable([]);\r\n this.isShowSkeleton = false;\r\n }\r\n this.currentPage = targetPage;\r\n this.currentLimit = targetLimit;\r\n this.metaData = this.queueBusinessService.mapApiMetadata(res, targetPage, targetLimit);\r\n },\r\n error: (error) => {\r\n this.loading = false;\r\n this.isShowSkeleton = false;\r\n console.error(\"Error fetching data:\", error);\r\n if (this.table) {\r\n this.table = { ...this.table, records: [] };\r\n } else {\r\n this.table = this.tableBuilder.buildSecondaryTable([]);\r\n }\r\n this.metaData = {\r\n totalItems: 0,\r\n currentPage: targetPage,\r\n itemsPerPage: targetLimit,\r\n totalPages: 0\r\n };\r\n }\r\n });\r\n }\r\n\r\n private getSortOrderString(order: number): string {\r\n if (order === 1) return 'asc';\r\n if (order === -1) return 'desc';\r\n return '';\r\n }\r\n\r\n private resetPaginationState(): void {\r\n this.currentPage = 1;\r\n this.currentLimit = 10;\r\n }\r\n\r\n private resetPage(): void {\r\n this.currentPage = 1;\r\n }\r\n\r\n private clearSelection(): void {\r\n this.selectedRows = [];\r\n }\r\n\r\n private clearFilters(): void {\r\n this.appliedFilters = {};\r\n }\r\n\r\n onSearchTermChanged(searchTerm: string) {\r\n this.onSearchRequested(searchTerm);\r\n }\r\n\r\n onSelectionChange(selection: any[]): void {\r\n this.onTableSelectionChange(selection);\r\n }\r\n\r\n onAssignmentComplete(event: { success: boolean, message: string }): void {\r\n if (event.success) {\r\n // Pass the current selectedQueueId to preserve selection after refresh, but ensure it's not null\r\n this.getAllQueueList(this.selectedQueueId ?? undefined);\r\n }\r\n this.assignmentComplete.emit(event);\r\n }\r\n\r\n onUserAssigned(event: { user: any, selectedRows: any[] }): void {\r\n this.userAssigned.emit(event);\r\n }\r\n\r\n isAssignButtonEnabled(): boolean {\r\n return this.selectedRows && this.selectedRows.length > 0;\r\n }\r\n\r\n private getStoredQueueId(): string | null {\r\n try {\r\n return localStorage.getItem(SHARED.SELECTED_QUEUE_ID);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}","<div class=\"container grid m-0 h-full\">\r\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\r\n <lib-skeleton *ngIf=\"loading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n @if(!loading){\r\n <div class=\"queue-list-container-wrapper p-0\">\r\n <app-queue-list\r\n [queueData]=\"filteredQueueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"true\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueueRequested()\"\r\n ></app-queue-list>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-12 xl:col-10 md:col-12 py-0 h-full\">\r\n @if(selectedQueue){\r\n <div class=\"queue-application-container-wrapper h-full\">\r\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\r\n <div class=\"col-8 p-0 flex align-items-center\">\r\n <h4 class=\"queue-title-wrapper m-0 mr-3 pr-1\">Queues</h4>\r\n <div class=\"col-7 p-0 mr-3\">\r\n <queue-search \r\n [placeholder]=\"placeholder\"\r\n [searchText]=\"searchText\"\r\n (searchInputChanged)=\"onSearchInputChanged($event)\"\r\n (searchRequested)=\"onSearchRequested($event)\"\r\n (searchCleared)=\"onSearchCleared()\">\r\n </queue-search>\r\n </div>\r\n <div>\r\n <lib-queue-filter-dropdown \r\n #filterDropdown\r\n [appliedFilters]=\"appliedFilters\"\r\n (filterApplied)=\"onFilterDropdownApplied($event)\"\r\n (filtersCleared)=\"onFiltersCleared()\">\r\n </lib-queue-filter-dropdown>\r\n </div>\r\n <div *ngIf=\"hasActiveFilters\">\r\n <button \r\n class=\"clear-filters-btn\"\r\n type=\"button\"\r\n (click)=\"onClearAllFilters()\">\r\n Clear <i class=\"pi pi-times ml-2\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\r\n <ng-content select=\"[user-dropdown]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\r\n \r\n <app-queue-record-table\r\n [table]=\"table\"\r\n [metaData]=\"metaData\"\r\n [loading]=\"loading\"\r\n [selectedRows]=\"selectedRows\"\r\n [resetSort]=\"resetSort\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selectedQueue]=\"selectedQueue\"\r\n (selectionChange)=\"onTableSelectionChange($event)\"\r\n (selectedRowsData)=\"onTableSelectionChange($event)\"\r\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\r\n (rowClick)=\"onTableRowClick($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (filterApplied)=\"onFilterApplied($event)\"\r\n (sortApplied)=\"onSortApplied($event)\">\r\n </app-queue-record-table>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n </div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\r\nimport { AuthGuard } from '../shared/services/auth/auth.guard';\r\nimport { PERMISSION } from '../shared/constant/PERMISSION';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: QueueContainerComponent,\r\n canActivate : [AuthGuard],\r\n data : {accessPermission : PERMISSION.QUEUES_GET}\r\n\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class QueueRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { QueueRoutingModule } from './queue-routing.module';\r\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\r\nimport { QueueSearchComponent } from './components/queue-search/queue-search.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { QueueItemComponent } from './components/queue-item/queue-item.component';\r\nimport { QueueListComponent } from './components/queue-list/queue-list.component';\r\nimport { QueueRecordTableComponent } from './components/queue-record-table/queue-record-table.component';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { TableSecondaryComponent } from '../shared/table-secondary/components/table-secondary.component';\r\nimport { QueueFilterDropdownComponent } from './components/queue-filter-dropdown/queue-filter-dropdown.component';\r\nimport { SkeletonComponent } from '../shared/components/skeleton/skeleton.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n QueueContainerComponent,\r\n QueueSearchComponent,\r\n QueueItemComponent,\r\n QueueListComponent,\r\n QueueRecordTableComponent,\r\n QueueFilterDropdownComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n QueueRoutingModule,\r\n FormsModule,\r\n DropdownModule,\r\n MultiSelectModule,\r\n RippleModule, ButtonModule, RouterModule, BadgeModule,\r\n PaginatorModule,\r\n SharedModule,\r\n TagModule,\r\n TableSecondaryComponent,\r\n SkeletonComponent\r\n ],\r\n exports: [\r\n QueueContainerComponent\r\n ]\r\n})\r\nexport class QueueModule { }\r\n","/*\r\n * Public API Surface of cat-qw-lib\r\n */\r\n\r\nexport * from './lib/admin/api-admin/api-admin.module';\r\nexport * from './lib/admin/widget-admin/widget-admin.module';\r\nexport * from './lib/admin/queue-admin/queue-admin.module';\r\n\r\nexport * from './lib/admin/api-admin/components/api-admin-form/api-admin-form.component';\r\nexport * from './lib/admin/api-admin/components/api-admin-list/api-admin-list.component';\r\nexport * from './lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component';\r\nexport * from './lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component';\r\nexport * from './lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component';\r\nexport * from './lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component';\r\nexport * from './lib/admin/queue-admin/components/queue-application-list/queue-application-list.component';\r\n\r\nexport * from './lib/admin/action-admin/action-admin.module';\r\nexport * from './lib/admin/action-admin/components/admin-action-list/admin-action-list.component';\r\nexport * from './lib/admin/action-admin/components/admin-action-form/admin-action-form.component';\r\nexport * from './lib/admin/dd-admin/dd-admin.module'\r\nexport * from './lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component'\r\nexport * from './lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component'\r\n\r\nexport * from './lib/admin/template-admin/template-admin.module'\r\nexport * from './lib/admin/template-admin/components/template-admin-form/template-admin-form.component'\r\nexport * from './lib/admin/template-admin/components/template-admin-list/template-admin-list.component'\r\n\r\nexport * from './lib/widget/widget.module';\r\nexport * from './lib/widget/components/widget-container/widget-container.component';\r\nexport * from './lib/widget/components/widget-menu-container/widget-menu-container.component';\r\nexport * from './lib/widget/components/custom-widget/custom-widget.component';\r\n\r\nexport * from './lib/queue/queue.module';\r\nexport * from './lib/queue/components/queue-container/queue-container.component';\r\n\r\nexport * from './lib/shared/services/form-state.service';\r\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","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","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","i3.WidgetMenuComponent","i4.WidgetRowTileComponent","i2.WidgetMenuItemComponent","i7.WidgetFooterComponent","i8.WidgetMenuHeaderComponent","i9.WidgetMenuBodyComponent","rowStyles","columnStylesJson.rowStyles","debounceTime","distinctUntilChanged","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 {\r\n static EMPTY = \"\";\r\n static REQUIRED_ERROR = \"Field Required\";\r\n static EMPTYARRAY = [];\r\n static NULL = \"NULL\";\r\n static SOLICITORID = \"Solicitor Id\";\r\n static HIPHEN = \"-\";\r\n static SLASH = \"/\";\r\n static USERROLE = \"role\"\r\n static SESSIONKEY = \"userData\";\r\n static SUCCESS = \"success\";\r\n static WARNING = \"warning\";\r\n static ERROR = \"error\";\r\n static ERROR_MESSAGE = \"Success Message\";\r\n static SUCCESS_MESSAGE = \"Success Message\";\r\n static DICTIONARY = \"Dictionary\";\r\n static TITLE = 'title';\r\n static DICTIONARY_ITEM = 'dictionaryItem';\r\n static DICTIONARY_ITEM_MAPPER = 'dictionaryItemMapper';\r\n static SIDEBAR_MASK = '.p-sidebar-mask';\r\n static CUSTOMSIDEBAROVERLAY = 'custom-sidebar-overlay';\r\n static ID = 'id';\r\n static _ID = '_id';\r\n static DATE_FORMAT = \"DD/MM/YYYY\";\r\n static DATE_FORMAT_TYPE2 = \"DD-MM-YYYY\";\r\n static DATE_FORMAT_TYPE3 = \"YY-MM-DD\";\r\n static DATE_FORMAT_TYPE4 = \"YYYY-MM-DD\";\r\n static INVALIDDATE = \"Invalid Date\";\r\n static __V = '__v';\r\n static CREATEDAT = 'createdAt';\r\n static UPDATEDAT = 'updatedAt';\r\n static ZERO = 0\r\n static TYPE_OBJECT = 'object'\r\n static DICTIONARYITEMS = 'dictionaryItems';\r\n static GET_DATA_MESSAGE = [{ severity: 'success', detail: 'Data has been fetched successfully.', life:3000 }]\r\n static PRIMARY = 'primary';\r\n static mappingInfo = 'mappingInfo';\r\n static YES = 'Yes';\r\n static NO = 'No';\r\n static selectedQueue = 'selectedQueue';\r\n static DASH = \"-\"\r\n static selectedApplication = 'selectedApplication';\r\n static selectedApplicationNumber = 'selectedApplicationNumber';\r\n static GREEN = \"green\"\r\n static RED = \"red\"\r\n static FROM_EMAIL = \"neeraj.kumar@catura.co.uk\";\r\n static to_EMAIL = \"shubham.prajapati@dynamatix.com\";\r\n static EMAIL = 'email';\r\n static token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYxOTI2ZjcyN2RkZWI0MDAxMWE2ZDZmNyIsIm5hbWUiOiJKb2huIERvZSIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNjQyNzQ5MzYyLCJleHAiOjE2NDI4MzU3NjJ9.4fBQqP2_6z0H4Ow7J-R27XEdIgl2MrMoIXCgD_qZFlA';\r\n static null = 'null';\r\n static undefined = 'undefined';\r\n static rationale = 'rationale';\r\n static accepted = 'Accepted';\r\n static application = 'Application';\r\n static INVALID_API_PATH = 'Please enter the API path.';\r\n static WIDTH_AUTO = 'w-auto';\r\n static TRUE = true;\r\n static FALSE = false;\r\n static STRING_TRUE = \"true\";\r\n static STRING_FALSE = \"false\";\r\n static AND = 'AND';\r\n static STRING = 'string';\r\n static OPERATORS = [\"=\", \"<>\", \">\", \"<\", \">=\", \"<=\"];\r\n static STATUS_ACTIVE = 'active';\r\n static TODAY = 'Today';\r\n static YESTERDAY = 'Yesterday';\r\n static ALL = 'All';\r\n static UK = 'UK';\r\n static INTERNATIONAL = 'International';\r\n static QUEUE1 = 'Q1';\r\n static QUEUE2 = 'Q2';\r\n static QUEUE3 = 'Q3';\r\n static SELECTED_QUEUE = 'Selected Queue:';\r\n static QUEUEID = \"queueId\";\r\n static QUESTION_MARK = \"?\";\r\n static EQUALS = \"=\";\r\n static AMPERSAND = \"&\";\r\n static RECORDID = \"recordId\";\r\n static MISSING_WIDGETNAME = \"Missing widgetName\";\r\n static MISSING_QUEUE_ID = \"Missing queueId\";\r\n static MISSING_RECORD_ID = \"Missing recordId\";\r\n static EMPTY_STRING = \" \";\r\n static SELECTED_QUEUE_ID = \"selectedQueueId\";\r\n static ISITEMEXPRESSION = \"isItemExpression\";\r\n static DT2 = \"dt2\";\r\n static TEXTBOXFIELD = \"textboxField\";\r\n static DROPDOWN = \"dropdown\";\r\n static TEXTAREA = \"textArea\";\r\n static DATAITEMS = \"dataItems\";\r\n static ASC = \"asc\";\r\n static DESC = \"desc\";\r\n static ACTIVE = \"Active\";\r\n static IN_ACTIVE = \"InActive\";\r\n static SEMICOLON_STRING = \";\"\r\n static COLON_STRING = \":\";\r\n static PAGINATOR = \"paginator\";\r\n static BROWSER_WARNING = 'You have unsaved changes. Do you really want to leave?'\r\n static DIRECT_DEBITID = 'Direct DebitId'\r\n static DIRECT_DEBIT = 'directdebit'\r\n static SOLICITOR = 'solicitor'\r\n static PRODUCT = 'product'\r\n static COMMITMENTS = 'commitments'\r\n static PRODUCT_ID = 'ProductId'\r\n static EXPENDITURE = 'expenditure'\r\n static INCOME = 'income'\r\n static VALUATION = 'valuation'\r\n static VALUATIONID = 'ValuationId'\r\n static BROKERCOMPANY_NAME='brokerCompanyName'\r\n static WIDGET_NAME = 'widgetName'\r\n static IS_MENU = 'isMenu'\r\n static ON_WIDGET_UPDATE = 'onWidgetUpdate';\r\n static selectedApplicationType = \"applicationType\";\r\n static APPLICANTS = 'applicants';\r\n static BROKER_NAME = 'brokerName';\r\n static SECURITY_ADDRESS = 'securityAddress';\r\n static TASKS = 'tasks';\r\n static TASK_BROKER_LABEL = 'B';\r\n static TASK_UNDERWRITER_LABEL = 'UW';\r\n static APP_ID = 'appId';\r\n static COMPANY_NAME = 'companyName';\r\n static APPLICATION_TYPE = 'applicationType';\r\n static ASSIGNED_TO = 'assignedTo';\r\n static TASK_COMPLETION_PERCENT = 'taskCompletionPercent';\r\n static RISK_RATING = 'riskRating';\r\n static LENDING = 'lending';\r\n}\r\n\r\nexport const widgetLayoutTypeList = [\r\n { name: 'Row', value: 'row' },\r\n {name: 'Tile', value: 'tile' } \r\n];\r\n\r\nexport const statusList = [\r\n {name: 'All'},\r\n {name: 'Active'},\r\n {name: 'InActive'}\r\n]\r\n\r\nexport const msgTemplateTypeList = [\r\n { id: 1, value: 'email' },\r\n { id: 2, value: 'whatsapp' },\r\n { id: 3, value: 'sms' }\r\n]\r\n\r\nexport const textEditorToolbar = [\r\n ['bold', 'italic', 'underline', 'strike'], \r\n [{ list: 'ordered' }, { list: 'bullet' }],\r\n [{ header: [1, 2, 3, 4, 5, 6, false] }],\r\n ['link']\r\n]\r\n\r\nexport const TemplateTabType = ['all-template', 'email','sms', 'whatsapp'];\r\n\r\nexport const MESSAGE_TYPES = ['SMS', 'WhatsApp', 'Email'];\r\n\r\nexport const delimiters = ['|', '/', '-'];\r\n\r\nexport const dictionaryItemList = [];\r\n\r\nexport const dictionaryItemMapperList = [];\r\n\r\nexport const dictionaryApiFieldList = {\r\n title: 'Property data',\r\n data: [ { name: 'First name' },\r\n { name: 'Last name' },\r\n { name: 'Email' },\r\n { name: 'Address' },\r\n { name: 'Gender' },\r\n { name: 'Dob' }\r\n ]\r\n}\r\n\r\nexport const FolderPanel = [\r\n {\r\n _id: 'folder1',\r\n fileCount: 10,\r\n text: 'Documents',\r\n missingFiles: 3,\r\n pendingFiles: 2\r\n },\r\n {\r\n _id: 'folder2',\r\n fileCount: 5,\r\n text: 'Images',\r\n missingFiles: 0,\r\n pendingFiles: 1\r\n },\r\n {\r\n _id: 'folder3',\r\n fileCount: 20,\r\n text: 'Reports',\r\n missingFiles: 5,\r\n pendingFiles: 0\r\n },\r\n {\r\n _id: 'folder4',\r\n fileCount: 8,\r\n text: 'Videos',\r\n missingFiles: 0,\r\n pendingFiles: 0\r\n },\r\n {\r\n _id: 'folder5',\r\n fileCount: 15,\r\n text: 'Archives',\r\n missingFiles: 1,\r\n pendingFiles: 3\r\n }\r\n];\r\n\r\nexport const DocumentList = [\r\n {\r\n id: 1,\r\n fileName: 'Document 1',\r\n status: 'pending',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n {\r\n id: 2,\r\n fileName: 'Document 2',\r\n status: 'verified',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n {\r\n id: 3,\r\n fileName: 'Document 3',\r\n status: 'sentReminder',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n {\r\n id: 4,\r\n fileName: 'Document 4',\r\n status: 'pending',\r\n documentUrl: 'https://vadimdez.github.io/ng2-pdf-viewer/assets/pdf-test.pdf',\r\n },\r\n];\r\n\r\n\r\nexport const widgetLinkList = [\r\n { name: 'https://dummy-url.com/NY', code: 'NY' },\r\n { name: 'https://dummy-url.com/RM', code: 'RM' },\r\n { name: 'https://dummy-url.com/LDN', code: 'LDN' },\r\n { name: 'https://dummy-url.com/IST', code: 'IST' },\r\n { name: 'https://dummy-url.com/PRS', code: 'PRS' }\r\n];\r\n\r\nexport const dictionaryList = [\r\n {\"id\": 1 ,\"Name\": \"John Doe\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 2 ,\"Name\": \"Jane Smith\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 3 ,\"Name\": \"David Lee\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 4 ,\"Name\": \"Emma Wilson\", \"API\": \"Dynamatix.com/getfinance\" },\r\n {\"id\": 5 ,\"Name\": \"Michael Brown\", \"API\": \"Dynamatix.com/getfinance\" }\r\n]\r\n\r\nexport const SEQUENTIAL_MESSAGE = [\r\n \"Your case is under review.\",\r\n \"We have received your application.\",\r\n \"A new update is available for your case.\",\r\n \"Please verify your contact details.\",\r\n \"Your case is pending further action.\",\r\n \"We are processing your request.\",\r\n \"Your case has been escalated.\",\r\n \"Thank you for reaching out.\",\r\n \"Your documents have been received.\",\r\n \"Our team will contact you shortly.\"\r\n];\r\n\r\nexport const apiHiddenHeaderList = ['credentials','createdAt','updatedAt','__v','properties', '_id', 'authHeaderName', 'authToken']\r\n\r\nexport const dictionaryHiddenHeaderList = ['dictionaryItems', '_id', '__v', 'updatedAt', 'createdAt']\r\n\r\nexport const widgetHiddenHeaderList = ['_id','dataItems','__v','createdAt','updatedAt','headerDictionaryID', 'headerDictionaryItemID', 'order', 'subHeaderDictionaryID', 'subHeaderDictionaryItemID']\r\n\r\nexport const templateHiddenHeaderList = ['_id','__v','updatedAt','description'];\r\n\r\nexport const hiddenHeaderList = ['status','actions']\r\n\r\nexport const expectedRoutes = ['apiManagement','queue', 'dictionary', 'widget']\r\n\r\nexport const mileList = [\r\n { name: '0.5 Mile', value: 0.5 },\r\n { name: '1 Mile', value: 1 }\r\n];\r\n\r\nexport const messageType = [\r\n { name: 'Email', icon: 'pi pi-envelope' },\r\n { name: 'WhatsApp', icon: 'pi pi-whatsapp' },\r\n { name: 'SMS', icon: 'pi pi-comment' },\r\n]\r\n\r\nexport const propertyDataList = [\r\n {\r\n key: '0',\r\n label: 'Documents',\r\n data: 'Documents Folder',\r\n icon: 'pi pi-fw pi-inbox',\r\n children: [\r\n {\r\n key: '0-0',\r\n label: 'Work',\r\n data: 'Work Folder',\r\n icon: 'pi pi-fw pi-cog',\r\n children: [\r\n { key: '0-0-0', label: 'Expenses.doc', icon: 'pi pi-fw pi-file', data: 'Expenses Document' },\r\n { key: '0-0-1', label: 'Resume.doc', icon: 'pi pi-fw pi-file', data: 'Resume Document' }\r\n ]\r\n },\r\n {\r\n key: '0-1',\r\n label: 'Home',\r\n data: 'Home Folder',\r\n icon: 'pi pi-fw pi-home',\r\n children: [{ key: '0-1-0', label: 'Invoices.txt', icon: 'pi pi-fw pi-file', data: 'Invoices for this month' }]\r\n }\r\n ]\r\n },\r\n{\r\n key: '1',\r\n label: 'Events',\r\n data: 'Events Folder',\r\n icon: 'pi pi-fw pi-calendar',\r\n children: [\r\n { key: '1-0', label: 'Meeting', icon: 'pi pi-fw pi-calendar-plus', data: 'Meeting' },\r\n { key: '1-1', label: 'Product Launch', icon: 'pi pi-fw pi-calendar-plus', data: 'Product Launch' },\r\n { key: '1-2', label: 'Report Review', icon: 'pi pi-fw pi-calendar-plus', data: 'Report Review' }\r\n ]\r\n},\r\n{\r\n key: '2',\r\n label: 'Movies',\r\n data: 'Movies Folder',\r\n icon: 'pi pi-fw pi-star-fill',\r\n children: [\r\n {\r\n key: '2-0',\r\n icon: 'pi pi-fw pi-star-fill',\r\n label: 'Al Pacino',\r\n data: 'Pacino Movies',\r\n children: [\r\n { key: '2-0-0', label: 'Scarface', icon: 'pi pi-fw pi-video', data: 'Scarface Movie' },\r\n { key: '2-0-1', label: 'Serpico', icon: 'pi pi-fw pi-video', data: 'Serpico Movie' }\r\n ]\r\n },\r\n {\r\n key: '2-1',\r\n label: 'Robert De Niro',\r\n icon: 'pi pi-fw pi-star-fill',\r\n data: 'De Niro Movies',\r\n children: [\r\n { key: '2-1-0', label: 'Goodfellas', icon: 'pi pi-fw pi-video', data: 'Goodfellas Movie' },\r\n { key: '2-1-1', label: 'Untouchables', icon: 'pi pi-fw pi-video', data: 'Untouchables Movie', selectable: false }\r\n ]\r\n }\r\n ]\r\n}\r\n];\r\n\r\nexport const actionHiddenHeaderList = ['_id', 'createdAt','updatedAt', '__v', 'formFields'];\r\n\r\nexport const actionList = [\r\n { action: 'Valuation Fee', \r\n prompt: `The following conversation includes references to various addresses. Based on the selected form \"Valuation Fee\",\r\n identify and extract the most recent address provided (in descending order of appearance in the text) and map it to the following schema::\r\n {\r\n \"Line1\": string,\r\n \"Line2\": string,\r\n \"town\": string,\r\n \"postcode\": string\r\n }.\r\n \r\n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\r\n \r\n Data:`, queueId: '674f1c645dafa6a66511c8fb', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\r\n },\r\n { action: 'UK Resident', \r\n prompt: `\r\n The following conversation involves information related to UK residency. Based on the selected form \"UK Resident\",\r\n extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\r\n {\r\n \"Line1\": string,\r\n \"Line2\": string,\r\n \"town\": string,\r\n \"postcode\": string\r\n }.\r\n \r\n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\r\n \r\n Data:`, queueId: '676e4b27ee779eafc72b11b9', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Disable'\r\n },\r\n { action: 'Address Update', \r\n prompt: `\r\n The following conversation contains updates related to address changes. Based on the selected form \"Address Update\",\r\n identify and extract the most recent address mentioned (in descending order of appearance in the text) and map it to the following schema::\r\n {\r\n \"Line1\": string,\r\n \"Line2\": string,\r\n \"town\": string,\r\n \"postcode\": string\r\n }.\r\n \r\n Respond **only** with a valid JSON object matching this schema. Do not include any explanation, additional text, or comments.\r\n \r\n Data:`, queueId: '67332cf2f9439e97c47a3c43', apiEndPoint: 'http://qa-gb.api.dynamatix.com:3100/api/applications', status: 'Enable'\r\n }\r\n]\r\n\r\nexport const offerWidgetList = [\r\n {\r\n title: 'Offer',\r\n badge: 'Pending',\r\n badgeIcon: 'pi pi-clock',\r\n statusList: [\r\n { description: 'Application(HS) Condition was added on 10th Sep 2023', status: 'active' },\r\n { description: 'Property Condition was added on 10th Sep 2023', status: 'active' },\r\n { description: 'Mandate Approval Requested on 14th Sep 2024', status: 'pending' },\r\n { title: 'Waiting for Mandate Approval', description: 'Existing Mandate: 100,000', status: 'pending', textColor: '#FB392D' },\r\n { description: 'Generate Offer', status: 'pending' }\r\n ],\r\n viewAll: 'View All Details'\r\n },\r\n {\r\n title: 'Valuation',\r\n badge: 'Pending',\r\n badgeIcon: 'pi pi-clock',\r\n statusList: [\r\n { description: 'Valuation Requested on 10th October 2024', status: 'active' },\r\n { description: 'Fees Paid £400 on 10th October 2024', status: 'active' },\r\n { description: 'Valuation Scheduled on 10th October 2024', status: 'active' },\r\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' },\r\n { description: 'PVQ Raised on 14th October 2024', status: 'active' },\r\n { description: 'PVQ Response received on 14th October 2024', status: 'active' },\r\n { description: 'Waiting for Valuation Report to be accepted', status: 'pending' }\r\n ]\r\n }\r\n ]\r\n\r\nexport const actionTableColumnWidthList = {name: 'w-3', apiConfigId: 'w-3', queueId: 'w-3', prompt: 'w-4', isActive: 'w-2'}\r\n\r\nexport const queuePriorityOrder = [\"All Applications\", \"Assigned To Me\", \"Unassigned\"];\r\n\r\nexport const QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST = {\r\n brokerName: 'w-3', \r\n securityAddress: 'w-3', \r\n applicants: 'w-3',\r\n finance: 'w-3',\r\n appId: 'w-3',\r\n tasks: 'w-2'\r\n}\r\n\r\nexport const FIELD_DISPLAY_NAMES: { [key: string]: string } = {\r\n riskRating: 'Risk Rating',\r\n appId: 'App. ID',\r\n applicants: 'Company & Applicant(s)',\r\n brokerName: 'Broker',\r\n finance: 'Finance Amount',\r\n securityAddress: 'Security',\r\n pending: 'Pending',\r\n lending: 'Type',\r\n tasks: 'Tasks'\r\n};\r\n\r\n// ...existing code...\r\n\r\nexport const QUEUE_RECORD_TABLE_COLUMN_ORDER = [\r\n 'riskRating',\r\n 'appId', // App. ID\r\n 'applicants', // Company & Applicant(s)\r\n 'brokerName',\r\n 'finance',\r\n 'securityAddress',\r\n 'pending',\r\n 'lending',\r\n 'tasks'\r\n];\r\n\r\n// ...existing code...","import { Component, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\r\nimport { SHARED } from '../../constant/SHARED';\r\n@Component({\r\n selector: 'sidebar',\r\n templateUrl: './sidebar.component.html',\r\n styleUrl: './sidebar.component.scss',\r\n standalone : false\r\n})\r\nexport class SidebarComponent {\r\n @Input() isSidebarVisible!: boolean;\r\n @Input() title!: string;\r\n @Output() onClose = new EventEmitter<any>();\r\n\r\n constructor(private renderer: Renderer2) {}\r\n\r\n onSidebarShow() {\r\n const overlay = document.querySelector(SHARED.SIDEBAR_MASK);\r\n if (overlay) {\r\n this.renderer.addClass(overlay, SHARED.CUSTOMSIDEBAROVERLAY);\r\n }\r\n }\r\n\r\n handleSidebarClose() {\r\n this.onClose.emit(false);\r\n }\r\n}\r\n","<div *ngIf=\"isSidebarVisible\" class=\"backdrop-shadow\" (click)=\"handleSidebarClose()\"></div>\r\n<div>\r\n<p-sidebar class=\"sidebar-panel-wrapper\" [(visible)]=\"isSidebarVisible\" (onShow)=\"onSidebarShow()\" (onHide)=\"handleSidebarClose()\" [position]=\"'right'\">\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center\">\r\n <h2 class=\"sidebar-title-wrapper text-color mb-0\">\r\n {{title}}\r\n </h2>\r\n </div>\r\n </ng-template>\r\n <p-divider class=\"sidebar-devider\"></p-divider>\r\n <ng-content></ng-content>\r\n</p-sidebar>","import { Injectable } from '@angular/core';\r\nimport { EntityState, EntityStore, StoreConfig } from '@datorama/akita';\r\nimport { BaseState } from './base.state';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { SHARED } from '../constant/SHARED';\r\nexport interface BaseEntityState<T> extends BaseState, EntityState<T> {\r\n \r\n}\r\n\r\n\r\n/**\r\n * BaseStore is a generic class that extends EntityStore from Akita.\r\n */\r\n@StoreConfig({ name: 'base' })\r\n@Injectable({ providedIn: 'root' })\r\nexport class BaseStore<T extends BaseModel> extends EntityStore<BaseEntityState<T>, T> {\r\n static storeName = 'base';\r\n missingFields: string[] = [];\r\n public recordChange$: BehaviorSubject<any>;\r\n public onDocumentAccept$: BehaviorSubject<any>;\r\n public onDailogClose$: BehaviorSubject<any>;\r\n public openDocument$: BehaviorSubject<any>;\r\n public alertMessage$: BehaviorSubject<any>;\r\n public queueList$: BehaviorSubject<any>;\r\n\r\n constructor() {\r\n super({ records: [], lists: [], attributeModelList: [], isFormSubmitted: SHARED.EMPTY, isApiValidated: null, selectedTemplate: SHARED.EMPTY, updatedData: null, isAllRowSelected: false, isExcludedApplicationIds: [], selectedQueueId: SHARED.EMPTY }, { name: BaseStore.storeName }); \r\n this.recordChange$ = new BehaviorSubject<any>([]);\r\n this.onDocumentAccept$ = new BehaviorSubject<any>({});\r\n this.onDailogClose$ = new BehaviorSubject<boolean>(false);\r\n this.openDocument$ = new BehaviorSubject<any>({});\r\n this.alertMessage$ = new BehaviorSubject<string>('');\r\n this.queueList$ = new BehaviorSubject<any>([]);\r\n }\r\n\r\n setList(data: T[]) {\r\n this.update({ lists: data });\r\n }\r\n\r\n setAttributeModelList(data: T[]) {\r\n this.update({ attributeModelList: data });\r\n }\r\n\r\n setIsFormSubmitted(data: any) {\r\n this.update({ isFormSubmitted: data });\r\n }\r\n\r\n setIsApiValidated(data: any) {\r\n this.update({ isApiValidated: data });\r\n }\r\n\r\n setIsShowMessage(data: any) {\r\n this.update({ isShowMessage: data });\r\n }\r\n\r\n setSelectedTemplate(data: any) {\r\n this.update({ selectedTemplate: data });\r\n }\r\n\r\n setRecordChange(value: any) {\r\n this.recordChange$.next(value);\r\n }\r\n\r\n setOnDocumentAccept(value: any) {\r\n this.onDocumentAccept$.next(value);\r\n }\r\n\r\n setOnDailogClose(value: any) {\r\n this.onDailogClose$.next(value);\r\n }\r\n\r\n setOpenDocument(value: any) {\r\n this.openDocument$.next(value);\r\n }\r\n\r\n setAlertMessage(value: any) {\r\n this.alertMessage$.next(value);\r\n }\r\n\r\n setQueueList(value: any) {\r\n this.queueList$.next(value);\r\n }\r\n\r\n setUpdatedData(value: any) {\r\n this.update({ updatedData: value });\r\n }\r\n\r\n setIsAllRowSelected(data: any) {\r\n this.update({ isAllRowSelected: data });\r\n }\r\n\r\n setIsExcludedApplicationIds(data: any) {\r\n this.update({ isExcludedApplicationIds: data });\r\n }\r\n\r\n}\r\n","import { QueryEntity } from '@datorama/akita';\r\nimport { BaseEntityState, BaseStore } from './base.store';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\n\r\n/**\r\n * BaseQuery is a generic class that extends QueryEntity from Akita.\r\n * It provides methods to interact with the state of entities managed by the BaseStore.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class BaseQuery<T extends BaseModel> extends QueryEntity<BaseEntityState<T>, T> {\r\n constructor(protected override store: BaseStore<T>) {\r\n super(store);\r\n }\r\n\r\n selectAllEntities() {\r\n return this.selectAll();\r\n }\r\n\r\n selectEntityById(id: string) {\r\n return this.selectEntity(id);\r\n }\r\n\r\n getLists(): Observable<any> {\r\n return this.select(state => state.lists);\r\n }\r\n\r\n getAttributeModelList(): Observable<any> {\r\n return this.select(state => state.attributeModelList);\r\n }\r\n\r\n getIsFormSubmitted(): Observable<any> {\r\n return this.select(state => state.isFormSubmitted);\r\n }\r\n\r\n getIsApiValidated(): Observable<any> {\r\n return this.select(state => state.isApiValidated);\r\n }\r\n\r\n getIsShowMessage(): Observable<any> {\r\n return this.select(state => state.isShowMessage);\r\n }\r\n\r\n getSelectedTemplate(): Observable<any> {\r\n return this.select(state => state.selectedTemplate);\r\n }\r\n\r\n getIsAllRowSelected(): Observable<any> {\r\n return this.select(state => state.isAllRowSelected);\r\n }\r\n\r\n getExcludedApplicationIds() : Observable<any> {\r\n return this.select(state => state.isExcludedApplicationIds);\r\n }\r\n\r\n\r\n getRecordChange() {\r\n return this.store.recordChange$.asObservable();\r\n }\r\n\r\n getOnDocumentAccept() {\r\n return this.store.onDocumentAccept$.asObservable();\r\n }\r\n\r\n getonDailogClose() {\r\n return this.store.onDailogClose$.asObservable();\r\n }\r\n\r\n getOpenDocument() {\r\n return this.store.openDocument$.asObservable();\r\n }\r\n\r\n getAlertMessage() {\r\n return this.store.alertMessage$.asObservable();\r\n }\r\n\r\n selectPage(): Observable<any> {\r\n return this.select(state => state['page']);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AttributeModel } from '../../models/attribute.model';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { NgModel } from '@angular/forms';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-base-control',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './base-control.component.html',\r\n styleUrl: './base-control.component.scss',\r\n providers : [BaseStore]\r\n})\r\nexport class BaseControlComponent implements OnInit,OnChanges,OnDestroy {\r\n constructor(public baseStore: BaseStore<any>, public baseQuery: BaseQuery<any>) {}\r\n @Input() store !: BaseStore<any> | null;\r\n @Input() record: any;\r\n @Input() attributeModel! : AttributeModel;\r\n @Input() error : string = SHARED.EMPTY;\r\n @Output() onInput = new EventEmitter();\r\n @Output() onEnterKeydown = new EventEmitter();\r\n @Output() onBtnClick = new EventEmitter();\r\n @ViewChild(SHARED.TEXTBOXFIELD) textboxField!: NgModel;\r\n @ViewChild(SHARED.DROPDOWN) dropdown!: NgModel;\r\n @ViewChild(SHARED.TEXTAREA) textArea!: NgModel;\r\n static allAttributes: AttributeModel[] = [];\r\n query !: BaseQuery<any>\r\n private destroy$ = new Subject<void>();\r\n private attributeDestroy$ = new Subject<void>();\r\n\r\n ngOnInit(): void {\r\n this.addToAttributeList();\r\n this.baseQuery.getIsFormSubmitted()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if(res) {\r\n [this.textboxField, this.dropdown, this.textArea]\r\n .filter(control => control && control.control)\r\n .forEach(control => control.control.markAsTouched());\r\n this.baseStore.setIsFormSubmitted(false);\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnChanges(){\r\n if(this.store) {\r\n this.query = new BaseQuery(this.store)\r\n }\r\n }\r\n handleModelChange(event:any, valid: boolean|null, val?:any) { \r\n if (this.attributeModel?.name) {\r\n this.record[this.attributeModel?.name] = event;\r\n this.onInput.emit(event);\r\n }\r\n }\r\n\r\n private addToAttributeList() {\r\n if (this.attributeModel) {\r\n if (!BaseControlComponent.allAttributes.some(attr => (attr.name === this.attributeModel.name && attr.displayText === this.attributeModel.displayText))) {\r\n BaseControlComponent.allAttributes.push(this.attributeModel);\r\n }\r\n this.baseStore.setAttributeModelList(BaseControlComponent.allAttributes);\r\n }\r\n }\r\n\r\n // handleEnterKey(event:any, valid: boolean|null) {\r\n // if (this.attributeModel?.name) {\r\n // this.record[this.attributeModel?.name] = event;\r\n // this.onEnterKeydown.emit(event);\r\n // this.record[this.attributeModel?.name] = SHARED.EMPTY;\r\n // }\r\n // }\r\n\r\n handleButtonClick(event:MouseEvent){\r\n this.onBtnClick.emit(event);\r\n }\r\n\r\n getValue() : string | null | undefined {\r\n return this.record[this.attributeModel.name]\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<p>base-control works!</p>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\n\r\n/**\r\n * CheckBoxComponent\r\n */\r\n@Component({\r\n selector: 'check-box',\r\n templateUrl: './check-box.component.html',\r\n styleUrl: './check-box.component.scss',\r\n standalone : true,\r\n imports : [CommonModule,FormsModule, CheckboxModule]\r\n})\r\nexport class CheckBoxComponent extends BaseControlComponent {\r\n \r\n}\r\n","<div class=\"checkBoxContainer\">\r\n \r\n <div class=\"checkBox\">\r\n <p-checkbox\r\n [disabled]=\"attributeModel.readonly ?? false\"\r\n [binary]=\"true\"\r\n inputId=\"binary\"\r\n [label]=\"attributeModel.displayText ?? ''\"\r\n class=\"dynamic-checkbox\"\r\n #checkBox=\"ngModel\"\r\n [ngModel]=\"this.record[this.attributeModel.name]\"\r\n [style]=\"{\r\n '--checkbox-size': attributeModel.customColumnWidth || '20px',\r\n '--checkbox-height': attributeModel.customHeight || '20px'\r\n }\"\r\n [required]=\"attributeModel.isRequired ?? false\" \r\n (ngModelChange)=\"handleModelChange($event, checkBox.valid)\"\r\n >\r\n </p-checkbox>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n selector: 'lib-button',\r\n standalone: true,\r\n imports : [CommonModule,InputTextModule, FormsModule, ButtonModule],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss',\r\n})\r\nexport class ButtonComponent extends BaseControlComponent{}\r\n","<ng-container>\r\n <div class=\"btn-control\">\r\n <p-button\r\n type=\"button\"\r\n [label]=\"attributeModel.buttonLabel ?? 'Click Me'\"\r\n [disabled]=\"attributeModel.isDisabled ?? false\"\r\n [style]=\"{\r\n width: attributeModel.customButtonWidth\r\n ? attributeModel.customButtonWidth\r\n : 'auto',\r\n padding: attributeModel.customPadding\r\n ? attributeModel.customPadding\r\n : '0.5rem' \r\n }\"\r\n [icon]=\"attributeModel.icon ? attributeModel.icon : ''\"\r\n [iconPos]=\"attributeModel.iconPosition ?? 'left'\" \r\n [ngClass]=\"{\r\n 'p-button-primary': attributeModel.isPrimary ?? true,\r\n 'p-button-secondary': !attributeModel.isPrimary\r\n }\"\r\n (onClick)=\"handleButtonClick($event)\"\r\n></p-button>\r\n\r\n </div>\r\n </ng-container>","\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@Component({\r\n selector: 'text-box',\r\n templateUrl: './text-box.component.html',\r\n styleUrl: './text-box.component.scss',\r\n standalone : true,\r\n imports : [CommonModule,InputTextModule, FormsModule, TooltipModule]\r\n})\r\nexport class TextBoxComponent extends BaseControlComponent {\r\n override getValue() {\r\n if(this.record[this.attributeModel.name] == false){\r\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\r\n }else if( this.record[this.attributeModel.name] == true){\r\n return \"Yes\"\r\n }else{\r\n return this.record[this.attributeModel.name] ?? \"-\"\r\n }\r\n }\r\n}\r\n","<ng-container >\r\n <div class=\"\">\r\n\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"inputTextBox\">\r\n\r\n <input\r\n pInputText\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"attributeModel.placeholder ?? ''\"\r\n class=\"block p-inputtext w-full\"\r\n [pTooltip]=\"attributeModel.tooltip ?? ''\"\r\n [tooltipPosition]=\"attributeModel.toolTipPosition ?? '' \"\r\n [ngModel]=\"record?.[attributeModel.name] ?? ''\"\r\n [disabled]=\"attributeModel.disable ?? false\" \r\n [readonly]=\"attributeModel.readonly ?? false\"\r\n [name]=\"attributeModel.name ?? 'textBox'\"\r\n [id]=\"attributeModel.name ?? 'textBox'\"\r\n [required]=\"attributeModel.isRequired ?? false\" \r\n [ngStyle]=\"{\r\n width: attributeModel.customColumnWidth\r\n ? attributeModel.customColumnWidth\r\n : '',\r\n padding: attributeModel.customPadding ? attributeModel.customPadding : ''\r\n }\"\r\n #textboxField=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, textboxField.valid)\"\r\n [ngClass]=\"{'ng-dirty ng-invalid': (!textboxField.valid && textboxField.dirty)}\"\r\n />\r\n <div *ngIf=\"textboxField.errors?.['required'] && (textboxField.dirty || textboxField.touched)\" class=\"error-message\">\r\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","export class ERROR {\r\n static ERROR = \"Error\";\r\n static VALIDATE_API_FAILED = \"API validation failed. Please review the input and try again.\";\r\n static VALIDATE_ACTION_API_FAILED = \"Validation action failed. Please check the configuration or try again later.\";\r\n static API_CONFIG_FAILED = \"Error loading app config:\";\r\n static API_CONFIG_LOADING_FAILED = \"App configuration not loaded. Ensure loadAppConfig() is called before accessing properties.\";\r\n static API_NAME_NOT_SET = \"API name is not set.\";\r\n static ERROR_FETCHING_DATA = \"Error fetching data:\";\r\n static UNABLE_TO_FETCH_QUEUE_LIST = \"Unable to fetch queue list.\";\r\n static NO_QUEUE_FOUND_WITH_ID = \"No queue found with the provided ID.\";\r\n static ERROR_FETCHING_WIDGET_DATA = \"Error fetching record widget data:\";\r\n static ERROR_MISSING_PARAMETERS = \"Required parameters are missing:\";\r\n static INVALID_INDEX = \"Invalid index:\";\r\n static ERROR_DELETE_DICTIONARY_ITEM = \"Failed to delete dictionary item with ID:\";\r\n static MISSING_REQUIRED_FIELD = \"Missing required fields:\";\r\n static API_VALIDATE_REQURIED = \"Api validation required\";\r\n}","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ConfirmationService, Message, MessageService } from 'primeng/api';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ButtonComponent } from '../../controls/button/button.component';\r\nimport { TextBoxComponent } from '../../controls/text-box/text-box.component';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { ERROR } from '../../constant/ERROR';\r\n\r\n@Component({\r\n selector: \"form-container\",\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n ConfirmDialogModule,\r\n ToastModule,\r\n MessagesModule,\r\n ButtonComponent,\r\n TextBoxComponent,\r\n ],\r\n templateUrl: \"./form-container.component.html\",\r\n styleUrl: \"./form-container.component.scss\",\r\n providers: [MessageService, ConfirmationService],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FormContainerComponent implements OnInit, OnDestroy {\r\n @Input() messages: Message[] = [];\r\n @Input() record: any;\r\n @Input() headerText: string | undefined;\r\n @Input() showSave:boolean = SHARED.FALSE\r\n @Input() disableSaveButton!: {isValid: boolean, data: string}\r\n @Output() onSave = new EventEmitter();\r\n @Output() onCancel = new EventEmitter();\r\n private destroy$ = new Subject<void>();\r\n \r\n constructor(private baseQuery: BaseQuery<any>, private baseStore: BaseStore<any>){}\r\n\r\n ngOnInit(): void {\r\n this.baseQuery.getIsShowMessage()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n console.log(res);\r\n if (res) {\r\n console.log(res);\r\n this.messages = [{ severity: SHARED.ERROR, detail: ERROR.API_VALIDATE_REQURIED }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n this.baseStore.setIsShowMessage(false);\r\n }, 3000);\r\n }\r\n });\r\n }\r\n \r\n handleSaveClick(){\r\n this.onSave.emit()\r\n }\r\n handleCancelClick(){\r\n this.onCancel.emit()\r\n\r\n }\r\n\r\n handleCreateBtnClick() {}\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<div class=\"form-container\">\r\n <div class=\"text-900 font-bold text-xl form-header m-0 p-0\">\r\n <div class=\"form-header-container w-full mr-0\">\r\n <div class=\"form-header-title\"[innerHTML]=\"this.headerText\">\r\n </div>\r\n <div class=\"form-header-messege w-full\">\r\n <p-messages class=\"message-wrapper\" [(value)]=\"messages\" [enableService]=\"false\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn-wrapper\">\r\n <ng-content select=\"[headerButtons]\"></ng-content>\r\n @if(showSave){\r\n <button\r\n pButton\r\n pRipple\r\n label=\"Cancel\"\r\n (click)=\"handleCancelClick()\"\r\n class=\"p-button-outlined mr-2\"\r\n ></button>\r\n\r\n <button\r\n pButton\r\n class=\"p-button-success\"\r\n label=\"Save\"\r\n type=\"button\"\r\n tooltipPosition=\"bottom\"\r\n (click)=\"handleSaveClick()\"\r\n ></button>\r\n }\r\n <ng-content select=\"[headerButtons]\"></ng-content>\r\n </div>\r\n </div>\r\n \r\n \r\n <p-toast></p-toast>\r\n\r\n <div>\r\n <p-confirmDialog>\r\n <ng-template pTemplate=\"message\" let-message>\r\n <div class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\">\r\n <i class=\"pi pi-exclamation-circle text-6xl text-primary-500\"></i>\r\n <p>{{ message.message }}</p>\r\n </div>\r\n </ng-template>\r\n </p-confirmDialog>\r\n </div> \r\n <div class=\"grid m-0 mt-3\">\r\n <div class=\"col-12 p-0\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n ","\r\n/**\r\n * This class is used to store the API Paths for the application\r\n */\r\nexport class DATASOURCES{\r\n static QUEUES = \"Queues\"\r\n static DICTIONARY = \"DataDictionaries\"\r\n static ACTIONS = \"ActionConfigurations\"\r\n static WIDGET = \"Widgets\"\r\n static APIMANAGEMENT = \"ApiConfigurations\"\r\n static APPLICATION = \"Applications\"\r\n static DOCUMETS = \"Documents\"\r\n static RATIONALE = \"Rationales\"\r\n static Template = \"MessageTemplates\"\r\n static QUEUESAPICONFIG = \"ApiConfigurations/getChildParentFields\"\r\n static DELETEDICTIONARYITEM = \"DataDictionaries/dictionaryItems\"\r\n static APPLICATION_QUEUE_SEARCH = \"Applications/search/\"\r\n \r\n}","\r\n/**\r\n * URLS\r\n */\r\nexport class URLS{\r\n static CONFIGFILEURL = \"assets/config/api.config.json\"\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { URLS } from '../constant/URLS';\r\nimport { ERROR } from '../constant/ERROR';\r\n\r\n/**\r\n * This service is used to get the app configuration from the config file.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppConfigService {\r\n\r\n private appConfig: any;\r\n private isConfigLoaded = false;\r\n\r\n constructor(private http: HttpClient) {}\r\n loadAppConfig(): Promise<void> {\r\n return firstValueFrom(this.http.get(URLS.CONFIGFILEURL))\r\n .then(config => {\r\n this.appConfig = config;\r\n this.isConfigLoaded = true;\r\n })\r\n .catch(err => {\r\n console.error(ERROR.API_CONFIG_FAILED, err);\r\n throw err;\r\n });\r\n }\r\n\r\n private ensureConfigLoaded(): void {\r\n if (!this.isConfigLoaded) {\r\n throw new Error(ERROR.API_CONFIG_LOADING_FAILED);\r\n }\r\n }\r\n\r\n get apiBaseUrl() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.catQwUrl;\r\n }\r\n\r\n get interactBaseApi() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.interactBaseApi;\r\n }\r\n\r\n get visibilityOptions() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.visibilityOption;\r\n }\r\n\r\n get swaggerUrl() {\r\n this.ensureConfigLoaded();\r\n return this.appConfig?.swaggerUrl;\r\n }\r\n}\r\n","import { SelectItem } from \"primeng/api\";\r\n\r\nexport class List {\r\n dataSource?: string;\r\n records: any[];\r\n label: string;\r\n value: string;\r\n forProperty!: string;\r\n items: SelectItem[];\r\n allItems: SelectItem[];\r\n\r\n constructor(dataSource: string, records: any[] = [], label: string, value: string, forProperty?: string) {\r\n this.dataSource = dataSource\r\n this.records = records;\r\n this.label = label;\r\n this.value = value;\r\n this.dataSource = dataSource;\r\n this.forProperty = forProperty ?? \"\"\r\n this.items = records?.map((i) => {\r\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\r\n });\r\n this.allItems = this.records?.map((i) => {\r\n return { label: i[this?.label] ? i[this?.label] : 'No label', value: i[this?.value] };\r\n });\r\n }\r\n\r\n}\r\n","import { firstValueFrom } from \"rxjs\";\r\nimport { List } from \"../models/list.model\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { AppConfigService } from \"./app-config.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ListService {\r\n constructor(public http: HttpClient, public configService: AppConfigService) {}\r\n\r\n async getLists(models: any[]) {\r\n const lists: List[] = [];\r\n\r\n for (const model of models) {\r\n if (model.dataSource) {\r\n try {\r\n const response = await firstValueFrom(\r\n this.getbyPathName<{ data: any[] }>(model.dataSource)\r\n );\r\n const listData = response.data || response;\r\n const list = new List(\r\n model.dataSource,\r\n listData,\r\n model.listLabelProperty as string,\r\n model.listValueProperty as string,\r\n model.dataSource\r\n );\r\n list.forProperty = model.name;\r\n lists.push(list);\r\n } catch (error) {\r\n console.error(`Error fetching data from ${model.dataSource}:`, error);\r\n }\r\n } \r\n else if (model.options) {\r\n const list = new List(\r\n model.dataSource,\r\n model.options as any[],\r\n model.listLabelProperty as string,\r\n model.listValueProperty as string,\r\n undefined\r\n );\r\n list.forProperty = model.name;\r\n lists.push(list);\r\n }\r\n }\r\n return lists;\r\n }\r\n\r\n getbyPathName<T>(data: string) {\r\n return this.http.get<T>(this.configService.apiBaseUrl + data);\r\n }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { BaseStore } from './base.store';\r\nimport { SHARED } from '../constant/SHARED';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { AppConfigService } from '../services/app-config.service';\r\nimport { ListService } from '../services/list.service';\r\nimport { DATASOURCES } from '../constant/DATASOURCES';\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class BaseService<T extends BaseModel> {\r\n public _pathName: string | undefined = SHARED.EMPTY;\r\n protected lists!:string[];\r\n protected http: HttpClient;\r\n protected list!:[]\r\n constructor(http: HttpClient, private store: BaseStore<T>, private appConfigService: AppConfigService, protected listService : ListService) {\r\n \r\n this.http = http;\r\n }\r\n \r\n\r\n get apiUrl(): string {\r\n return this.appConfigService.apiBaseUrl;\r\n }\r\n\r\n get interactBaseApi(): string {\r\n return this.appConfigService.interactBaseApi;\r\n }\r\n\r\n set pathName(value: string) {\r\n this._pathName = value;\r\n }\r\n\r\n async initList() {\r\n if(this.list){\r\n let response = await this.listService.getLists(this.list)\r\n if (response && response.length > 0) {\r\n this.store.setList(response as any)\r\n }\r\n }\r\n \r\n } \r\n\r\n create(entity: T): Observable<T> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.post<T>(baseUrl + this._pathName, entity).pipe(\r\n tap((newEntity: T) => this.store.add(newEntity))\r\n );\r\n }\r\n\r\n getAll(): Observable<T[]> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n const url = `${baseUrl}${this._pathName}`;\r\n return this.http.get<T[]>(url).pipe(\r\n tap((entities: T[]) => this.store.set(entities))\r\n );\r\n }\r\n \r\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[]> {\r\n this._pathName = (!!pathName ? pathName : this._pathName);\r\n const paramsObj: Record<string, string> = Object.fromEntries(\r\n Object.entries({\r\n searchKey: search,\r\n page: page ? page.toString() : SHARED.EMPTY,\r\n limit: limit ? limit.toString() : SHARED.EMPTY,\r\n sortBy: sortBy || SHARED.UPDATEDAT,\r\n order: order || SHARED.EMPTY,\r\n type: type || SHARED.EMPTY,\r\n isActive: isActive\r\n }).filter(([_, value]) => value !== SHARED.EMPTY)\r\n );\r\n \r\n const params = new URLSearchParams(paramsObj);\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n const url = `${baseUrl}${this._pathName}${params.toString() ? SHARED.QUESTION_MARK + params.toString() : SHARED.EMPTY}`;\r\n return this.http.get<T[]>(url).pipe(\r\n tap((entities: T[]) => this.store.set(entities))\r\n );\r\n }\r\n\r\n getById(id: string): Observable<T> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.get<T>(`${baseUrl}${this._pathName}/${id}`).pipe(\r\n tap((entity: T) => this.store.upsert(id, entity))\r\n );\r\n }\r\n\r\n update(id: string, entity: T): Observable<T> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.put<T>(`${baseUrl}${this._pathName}/${id}`, entity).pipe(\r\n tap((updatedEntity: T) => this.store.update(id, updatedEntity))\r\n );\r\n }\r\n\r\n delete(id: string): Observable<void> {\r\n const baseUrl = this._pathName === DATASOURCES.Template ? this.interactBaseApi : this.apiUrl;\r\n return this.http.delete<void>(`${baseUrl}${this._pathName}/${id}`).pipe(\r\n tap(() => this.store.remove(id))\r\n );\r\n }\r\n \r\n}\r\n","import { SHARED } from \"../../constant/SHARED\";\r\n\r\nexport class TablePrimaryModel{\r\n name!: string;\r\n headers!: any[];\r\n records!: any[];\r\n editPermission : string = SHARED.EMPTY \r\n deletePermission : string = SHARED.EMPTY \r\n}\r\n\r\nexport interface tableSortOrderModel{\r\n [key: string]: string;\r\n}","import { AttributeModel } from \"../../models/attribute.model\";\r\n\r\nexport class TablePrimaryHeaderModel{\r\n name!: string;\r\n attributes!: AttributeModel;\r\n width!: string;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { TablePrimaryModel } from \"../table-primary/models/table-primary.model\";\r\nimport { SHARED } from \"../constant/SHARED\";\r\nimport { TablePrimaryHeaderModel } from \"../table-primary/models/table-primary-header.model\";\r\n\r\n\r\n/**\r\n * TableBuilder\r\n */\r\n@Injectable({\r\n providedIn:'root'\r\n})\r\nexport class TableBuilder{\r\n\r\n public hiddenHeaders: string[] = [];\r\n buildTable(records: any[], headerWidths?: { [key: string]: string }, editPermission?:string ,deletePermission?:string): TablePrimaryModel {\r\n const table = new TablePrimaryModel();\r\n table.records = records;\r\n if (records && records.length > 0) {\r\n table.headers = this.buildHeaders(Object.keys(records[0]),headerWidths);\r\n } else {\r\n table.headers = [];\r\n }\r\n table.editPermission = editPermission ?? SHARED.EMPTY\r\n table.deletePermission = deletePermission ?? SHARED.EMPTY\r\n return table;\r\n }\r\n \r\n private buildHeaders(keys: string[], headerWidths: { [key: string]: string } | undefined): TablePrimaryHeaderModel[] {\r\n \r\n const headers: TablePrimaryHeaderModel[] = [];\r\n const filteredKeys = keys.filter(\r\n key => key !== SHARED.ID && !this.hiddenHeaders.includes(key) // hide headers\r\n );\r\n for (const key of filteredKeys) {\r\n const header = new TablePrimaryHeaderModel();\r\n header.name = key;\r\n if(headerWidths) header.width = headerWidths[key] || SHARED.WIDTH_AUTO;\r\n headers.push(header);\r\n }\r\n return headers;\r\n }\r\n}","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseModel } from '../../models/base.model';\r\nimport { TableBuilder } from '../../services/table.builder';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { TablePrimaryModel } from '../../table-primary/models/table-primary.model';\r\nimport { MetaDataModel } from '../../models/meta-data.model';\r\nimport { SHARED } from '../../constant/SHARED';\r\n\r\n/**\r\n * BaseListComponent is a generic class that provides a base implementation for a list component.\r\n */\r\n@Component({\r\n selector: 'lib-base-list',\r\n templateUrl: './base-list.component.html',\r\n styleUrl: './base-list.component.scss',\r\n})\r\nexport class BaseListComponent<T extends BaseModel> implements OnChanges {\r\n @Input() refreshTable : boolean = false;\r\n table!: TablePrimaryModel;\r\n metaData!: MetaDataModel;\r\n deletePermission :string = SHARED.EMPTY\r\n editPermission : string = SHARED.EMPTY\r\n constructor(protected service: BaseService<T>, protected builder: TableBuilder){}\r\n\r\n ngOnChanges(){\r\n if(this.refreshTable){\r\n this.handleRefreshTable()\r\n }\r\n }\r\n init(dynamicWidth?:any){\r\n this.service.getPaginatedList().subscribe((res:any)=>{\r\n this.table = this.builder.buildTable(res.data, dynamicWidth, this.editPermission, this.deletePermission);\r\n this.metaData = res.metadata;\r\n\r\n this.afterTableBuild() \r\n });\r\n }\r\n\r\n afterTableBuild(){\r\n\r\n }\r\n\r\n handleRefreshTable(){\r\n this.init()\r\n }\r\n}\r\n","<p>base-list works!</p>\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { ListService } from '../../services/list.service';\r\nimport { List } from '../../models/list.model';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { BaseStore } from '../../state/base.store';\r\n\r\n/**\r\n * DropdownComponent\r\n */\r\n@Component({\r\n selector: 'dropdown',\r\n standalone: true,\r\n imports: [CommonModule, DropdownModule, FormsModule],\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DropdownComponent extends BaseControlComponent{\r\n options: SelectItem[] | undefined = [];\r\n list!: List | undefined;\r\n childListRecords: any[] = [];\r\n @Input() isStaticDropdown = false;\r\n\r\n constructor(baseStore: BaseStore<any>,public listService: ListService, baseQuery: BaseQuery<any>) {\r\n super(baseStore, baseQuery);\r\n }\r\n\r\n override ngOnChanges() {\r\n if(this.store) {\r\n this.query = new BaseQuery(this.store);\r\n }\r\n if (this.attributeModel.options) {\r\n this.options = this.attributeModel.options;\r\n }\r\n if (!this.isStaticDropdown) {\r\n this.handleGetAndSetList();\r\n }else{\r\n this.options = this.attributeModel.options?.map((x: any) => {\r\n return { label: x[this.attributeModel?.listLabelProperty || 0], value: x[this.attributeModel?.listValueProperty || 0] };\r\n });\r\n }\r\n }\r\n\r\n handleGetAndSetList() {\r\n try {\r\n this.query.getLists().subscribe((response: List[]) => {\r\n if (response) {\r\n this.mapResponseToOptions(response);\r\n }\r\n });\r\n } catch (error) {\r\n console.error('Error fetching data:', error);\r\n }\r\n }\r\n\r\n private mapResponseToOptions(lists: List[]): SelectItem[] {\r\n if (lists && lists.length > 0) {\r\n const clonedLists = JSON.parse(JSON.stringify(lists));\r\n this.list = clonedLists.find((x: any) => x.forProperty === this.attributeModel.name);\r\n if (this.list) {\r\n this.options = this.list?.items ?? [];\r\n }\r\n }\r\n if (!this.options || this.options.length === 0) {\r\n this.options = this.attributeModel.options ?? [];\r\n }\r\n return this.options;\r\n }\r\n\r\n\r\n override handleModelChange(event: any, valid: boolean | null, val?: any): void {\r\n super.handleModelChange(event, valid);\r\n }\r\n}\r\n","<ng-container>\r\n <div class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"dropdownbox\">\r\n\r\n <p-dropdown \r\n \r\n [options]=\"options\" \r\n [disabled]=\"attributeModel.readonly ?? false\"\r\n [showClear]=\"true\"\r\n [name]=\"attributeModel.name ?? 'testSingleSelect'\" \r\n [ngModel]=\"record[attributeModel.name]\" \r\n [placeholder]=\"attributeModel.placeholder ?? ''\" \r\n [required]=\"attributeModel.isRequired ?? false\"\r\n filterBy=\"label\" \r\n [filter]=\"attributeModel.filter ?? false\" \r\n class=\"dropdownFeild\"\r\n #dropdown=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, dropdown.valid)\" \r\n [ngClass]=\"{'ng-dirty ng-invalid': (!dropdown.valid && dropdown.dirty)}\"\r\n appendTo=\"body\" \r\n optionLabel=\"label\" \r\n optionValue=\"value\">\r\n</p-dropdown>\r\n<div *ngIf=\"dropdown.errors?.['required'] && (dropdown.dirty || dropdown.touched)\" class=\"error-message\">\r\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\r\n</div>\r\n</div>\r\n\r\n</ng-container>\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ValidatorService {\r\n\r\n constructor() { }\r\n\r\n handleValidateRecords(record:any){\r\n return true\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormStateService {\r\n private formChangesSubject$: BehaviorSubject<boolean>;\r\n private isFormNavigating$: BehaviorSubject<boolean>;\r\n private isShowConfirmation$: BehaviorSubject<boolean>;\r\n constructor() {\r\n this.formChangesSubject$ = new BehaviorSubject<boolean>(false)\r\n this.isFormNavigating$ = new BehaviorSubject<boolean>(false)\r\n this.isShowConfirmation$ = new BehaviorSubject<boolean>(false)\r\n }\r\n\r\n setIsFormNavigating(isNavigation: boolean) {\r\n this.isFormNavigating$.next(isNavigation)\r\n }\r\n\r\n getIsFormNavigating() {\r\n return this.isFormNavigating$.getValue()\r\n }\r\n \r\n selectIsFormNavigating() {\r\n return this.isFormNavigating$.asObservable()\r\n }\r\n\r\n setIsFormSaved(hasChanges: boolean) {\r\n this.formChangesSubject$.next(hasChanges);\r\n }\r\n\r\n getIsFormSaved(): boolean {\r\n return this.formChangesSubject$.getValue();\r\n }\r\n\r\n selectIsFormSaved() {\r\n return this.formChangesSubject$.asObservable()\r\n }\r\n\r\n setShowConfirmation(value : boolean){\r\n return this.isShowConfirmation$.next(value)\r\n }\r\n\r\n selectShowConfirmation(){\r\n return this.isShowConfirmation$.asObservable()\r\n }\r\n\r\n \r\n}\r\n","import { Component, EventEmitter, HostListener, inject, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { BehaviorSubject, Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { ValidatorService } from '../../services/validator.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { AttributeModel } from '../../models/attribute.model';\r\nimport { BaseModel } from '../../models/base.model';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { ERROR } from '../../constant/ERROR';\r\nimport { FormStateService } from '../../services/form-state.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n/**\r\n * BaseFormComponent \r\n */\r\n@Component({\r\n selector: 'base-form',\r\n templateUrl: './base-form.component.html',\r\n styleUrls: ['./base-form.component.scss'],\r\n providers : [ValidatorService]\r\n})\r\nexport class BaseFormComponent<T extends BaseModel> {\r\n protected formStateService = inject(FormStateService)\r\n protected subscriptions: Subscription[];\r\n record!: T;\r\n initialRecord!: T;\r\n public recordChange = new BehaviorSubject<any>({});\r\n public destroy$ = new Subject<void>();\r\n @Output() onSave = new EventEmitter<any>();\r\n @Output() onFormNavigate = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<any>();\r\n sanitizedInitialRecord: any\r\n sanitizedCurrentRecord: any\r\n constructor( protected service: BaseService<T>, protected validatorService?: ValidatorService, protected router?: Router, protected activatedRoute?: ActivatedRoute, protected baseStore?: BaseStore<T>, protected baseQuery?: BaseQuery<T>,\r\n ) {\r\n this.subscriptions = [];\r\n this.record = {} as T;\r\n }\r\n\r\n message:any[] = []\r\n attributeMode!:AttributeModel;\r\n\r\n get currentState() {\r\n return this.baseQuery?.getValue();\r\n }\r\n\r\n\r\n init(): void {\r\n this.service.initList();\r\n this.baseStore?.setRecordChange(SHARED.EMPTY);\r\n let id = this.activatedRoute ? this.activatedRoute.snapshot.params[SHARED.ID] : '';\r\n if ((id !== SHARED.ZERO.toString()) && id) {\r\n this.service.getById(id).subscribe((res: any) => {\r\n this.record = JSON.parse(JSON.stringify(res));\r\n this.baseStore?.setRecordChange(res);\r\n this.initialRecord = JSON.parse(JSON.stringify(res));\r\n this.recordChange.next(res);\r\n })\r\n } else {\r\n this.initialRecord = structuredClone(this.record);\r\n }\r\n this.formStateService.selectIsFormNavigating()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.checkUnsavedChanges()\r\n }\r\n });\r\n }\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n handleBeforeUnload(event: BeforeUnloadEvent) {\r\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\r\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\r\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\r\n const isSaved = this.formStateService.getIsFormSaved();\r\n if (hasChanges && !isSaved) {\r\n event.preventDefault();\r\n event.returnValue = SHARED.BROWSER_WARNING;\r\n }\r\n }\r\n\r\n checkUnsavedChanges() {\r\n const sanitizedInitialRecord = this.normalizeRecord(this.initialRecord);\r\n const sanitizedCurrentRecord = this.normalizeRecord(this.record);\r\n const hasChanges = JSON.stringify(sanitizedInitialRecord) !== JSON.stringify(sanitizedCurrentRecord);\r\n const isSaved = this.formStateService.getIsFormSaved();\r\n this.formStateService.setShowConfirmation(hasChanges && !isSaved);\r\n }\r\n\r\n private normalizeRecord(record: any): Record<string, any> {\r\n if (!record) return {};\r\n return Object.keys(record).reduce((acc, key) => {\r\n let value = record[key];\r\n if (value === undefined || value === SHARED.EMPTY) {\r\n value = null;\r\n }\r\n acc[key] = value;\r\n return acc;\r\n }, {} as Record<string, any>);\r\n }\r\n\r\n handleSubmit() {\r\n const validateRecords = this.validatorService \r\n ? this.validatorService.handleValidateRecords(this.record) \r\n : true;\r\n \r\n if(!this.record || Object.keys(this.record).length === 0) return;\r\n if(this.baseStore) this.baseStore.missingFields = [];\r\n if (this.baseQuery) {\r\n this.baseQuery.getAttributeModelList()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((attributeModels: AttributeModel[]) => {\r\n attributeModels.forEach(attr => {\r\n const handleCheckAndAddMissingField = (value: any) => {\r\n if (attr.isRequired &&\r\n (value === undefined || value === null || (typeof value === SHARED.STRING && value.trim() === SHARED.EMPTY))\r\n ) {\r\n if(this.baseStore) this.baseStore.missingFields.push(attr.displayText || attr.name);\r\n }\r\n };\r\n \r\n if (attr.isRequired && attr.name in this.record) {\r\n handleCheckAndAddMissingField(this.record[attr.name]);\r\n }\r\n \r\n [SHARED.DICTIONARYITEMS, SHARED.DATAITEMS].forEach(key => {\r\n this.record[key]?.forEach((val: any) => {\r\n if(val.hasOwnProperty(attr.name)) {\r\n handleCheckAndAddMissingField(val[attr.name])\r\n }\r\n });\r\n });\r\n });\r\n if (this.baseStore && this.baseStore.missingFields.length > 0) {\r\n if(this.baseStore) this.baseStore.setIsFormSubmitted(true);\r\n console.error(ERROR.MISSING_REQUIRED_FIELD, this.baseStore.missingFields);\r\n } else {\r\n if(!this.currentState?.isApiValidated && this.currentState?.isApiValidated !== null) {\r\n this.baseStore?.setIsShowMessage(!this.currentState?.isApiValidated);\r\n }\r\n else if(validateRecords) {\r\n if(!this.record || Object.keys(this.record).length === 0) return;\r\n if (this.record._id) {\r\n this.handleUpdateRecord();\r\n } else {\r\n this.handleAddRecord();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleUpdateRecord(){\r\n if(!this.record._id || Object.keys(this.record).length === 0) return;\r\n this.service.update(this.record._id, this.record).subscribe({\r\n next: (response: T) => {\r\n console.log('Record updated:', response);\r\n this.record = {} as T;\r\n this.baseStore?.setIsApiValidated(null);\r\n this.onFormNavigate.emit(response);\r\n },\r\n error: (error) => {\r\n console.error('Error updating record:', error);\r\n }\r\n })\r\n }\r\n\r\n handleAddRecord() {\r\n if (!this.record || Object.keys(this.record).length === 0) return;\r\n this.service.create(this.record).subscribe({\r\n next: (response: T) => {\r\n console.log('Record created:', response);\r\n this.record = {} as T;\r\n this.baseStore?.setIsApiValidated(null);\r\n this.onFormNavigate.emit(response); \r\n },\r\n error: (error) => {\r\n console.error('Error creating record:', error);\r\n }\r\n })\r\n }\r\n\r\n handleCancel(){\r\n if(this.baseStore) this.baseStore.missingFields = [];\r\n this.onCancel.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.baseStore) {\r\n this.baseStore.setAttributeModelList([]);\r\n this.baseStore.setIsApiValidated(null);\r\n this.baseStore?.setIsShowMessage(null);\r\n } \r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.formStateService.setIsFormNavigating(false)\r\n this.formStateService.setIsFormSaved(false)\r\n }\r\n}\r\n","<p>base-form works!</p>\r\n","import { Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { SHARED } from '../constant/SHARED';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateParserService {\r\n\r\n constructor() { }\r\n\r\n parseDate(date:any) {\r\n\r\n\t\tif (\r\n\t\t\tmoment(date, SHARED.DATE_FORMAT_TYPE2, true).isValid()\r\n\t\t) {\r\n\t\t\tconst date1 = date.toString().split(SHARED.HIPHEN)[0];\r\n\t\t\tconst month = date.toString().split(SHARED.HIPHEN)[1];\r\n\t\t\tconst year = date.toString().split(SHARED.HIPHEN)[2];\r\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\r\n\t\t}\r\n\t\telse if (\r\n\t\t\tmoment(date, SHARED.DATE_FORMAT, true).isValid()\r\n\t\t) {\r\n\t\t\tconst date1 = date.toString().split(SHARED.SLASH)[0];\r\n\t\t\tconst month = date.toString().split(SHARED.SLASH)[1];\r\n\t\t\tconst year = date.toString().split(SHARED.SLASH)[2];\r\n\t\t\treturn moment.utc(`${year}-${month}-${date1}`).toDate();\r\n\t\t}\r\n\t\telse if (moment(date, SHARED.DATE_FORMAT_TYPE3, true).isValid()) {\r\n\t\t\tconst dateParts = date.toString().split(SHARED.HIPHEN);\r\n\t\t\tconst year = dateParts[0];\r\n\t\t\tconst month = dateParts[1];\r\n\t\t\tconst day = dateParts[2];\r\n\t\t\treturn moment.utc(`${year}-${month}-${day}`).toDate();\r\n\t\t}\r\n else if (\r\n \r\n\t\t\tdate instanceof Date ||\r\n\t\t\tnew Date(date).toString() != SHARED.INVALIDDATE\r\n\t\t) {\r\n\r\n\t\t\tconst result = new Date(date);\r\n\t\t\tresult.setHours(0, 0, 0, 0);\r\n\t\t\treturn moment.utc(`${result.getFullYear()}-${result.getMonth()+1}-${result.getDate()}`).toDate();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthrow new Error(SHARED.INVALIDDATE);\r\n\t\t}\r\n\r\n\t\treturn SHARED.INVALIDDATE\r\n\t}\r\n\r\n}\r\n","import { Component, OnChanges } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { DateParserService } from '../../services/date-parser.service';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport moment from 'moment';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { BaseQuery } from '../../state/base.query';\r\n\r\n@Component({\r\n selector: 'date',\r\n standalone: true,\r\n imports: [CommonModule, CalendarModule, FormsModule],\r\n templateUrl: './date.component.html',\r\n styleUrl: './date.component.scss',\r\n})\r\nexport class DateComponent extends BaseControlComponent implements OnChanges{\r\n constructor(baseStore: BaseStore<any>, public dateService : DateParserService, baseQuery: BaseQuery<any>){\r\n super(baseStore, baseQuery)\r\n }\r\n override ngOnChanges(): void {\r\n if(this.attributeModel.readonly){\r\n this.getValue()\r\n }else{\r\n\r\n this.record[this.attributeModel.name] = this.dateService.parseDate(this.record[this.attributeModel?.name]) ??\r\n new Date();\r\n }\r\n }\r\n override getValue() {\r\n if (this.record[this.attributeModel.name]) {\r\n const formattedDate = moment(this.record[this.attributeModel.name]).format('DD/MM/YYYY');\r\n if(formattedDate == \"Invalid date\"){\r\n return SHARED.HIPHEN\r\n }else{\r\n return formattedDate\r\n }\r\n }\r\n return SHARED.EMPTY\r\n }\r\n \r\n}\r\n","@if (attributeModel && record) {\r\n<div class=\"\">\r\n <div class=\"mb-2\">\r\n <label>{{\r\n attributeModel?.displayText\r\n ? attributeModel?.displayText\r\n : attributeModel?.name\r\n }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n @if (attributeModel.readonly) {\r\n <div class=\"mb-2\" [ngStyle]=\"{ 'font-size': '14px', color: '#0F1729', 'font-weight':'600' }\">\r\n <label>{{ getValue() }}</label>\r\n </div>\r\n } @else {\r\n <div>\r\n <p-calendar\r\n [showIcon]=\"attributeModel.showCalenderIcon ?? true\"\r\n inputId=\"icon\"\r\n [disabled]=\"attributeModel?.readonly ?? false\"\r\n [required]=\"attributeModel?.isRequired ?? false\"\r\n [name]=\"attributeModel?.name ? attributeModel?.name : 'testDatePicker'\"\r\n [placeholder]=\"\r\n attributeModel.placeholder ? attributeModel.placeholder : ''\r\n \"\r\n [yearRange]=\"attributeModel.yearRange ?? '1950 : 2050'\"\r\n [title]=\"attributeModel.title ? attributeModel.title : ''\"\r\n [(ngModel)]=\"record[attributeModel?.name]\"\r\n #dateField=\"ngModel\"\r\n [dateFormat]=\"'dd/mm/yy'\"\r\n appendTo=\"body\"\r\n (ngModelChange)=\"handleModelChange($event, dateField.valid)\"\r\n [ngClass]=\"{\r\n 'ng-dirty ng-invalid': !dateField.valid && error == attributeModel?.name\r\n }\"\r\n [hourFormat]=\"attributeModel?.hourFormat ? '24' : ''\"\r\n >\r\n </p-calendar>\r\n </div>\r\n }\r\n</div>\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\n\r\n@Component({\r\n selector: 'file-upload',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, FileUploadModule],\r\n templateUrl: './file-upload.component.html',\r\n styleUrl: './file-upload.component.scss',\r\n})\r\nexport class FileUploadComponent extends BaseControlComponent {\r\n\r\n handleSingleUpload(event:any){\r\n console.log(event)\r\n }\r\n}\r\n","<ng-container class=\"documentContainer\">\r\n @if(!attributeModel.hideLabelOnForm){\r\n <div class=\"mb-2\">\r\n <label class=\"form-header-label\">{{ attributeModel?.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n }\r\n<div class=\"card flex justify-content-center\">\r\n <p-fileUpload \r\n mode=\"basic\" \r\n [chooseLabel]=\"record[attributeModel.name] ? attributeModel.displayText : 'No Files'\"\r\n chooseIcon=\"pi pi-plus\"\r\n [name]=\"attributeModel?.name\"\r\n accept=\"image/*,application/pdf\" \r\n [maxFileSize]=\"209715200\" class=\"fileUploader\"\r\n (onSelect)=\"handleSingleUpload($event)\" />\r\n</div>\r\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'capitalizeWords',\r\n standalone: true,\r\n})\r\nexport class CapitalizeWordsPipe implements PipeTransform {\r\n transform(value: string): string {\r\n if (!value) return value;\r\n return value\r\n .split(' ')\r\n .map(word => \r\n word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\r\n )\r\n .join(' ');\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\n\r\n@Component({\r\n selector: 'text-area',\r\n templateUrl: './text-area.component.html',\r\n styleUrl: './text-area.component.scss',\r\n standalone : true,\r\n imports : [CommonModule ,InputTextareaModule, FormsModule]\r\n})\r\nexport class TextAreaComponent extends BaseControlComponent {\r\n @Input() rowspan : number = 0\r\n override getValue() {\r\n if(this.record[this.attributeModel.name] == false){\r\n return typeof this.record[this.attributeModel.name] == \"string\" ? \"\" : \"No\"\r\n }else if( this.record[this.attributeModel.name] == true){\r\n return \"Yes\"\r\n }else{\r\n return this.record[this.attributeModel.name] ?? \"-\"\r\n }\r\n}\r\n}\r\n","<ng-container class=\"textAreaContainer\">\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n @if (attributeModel.readonly) {\r\n <div class=\"mb-2\" [ngStyle]=\"{'font-size':'14px', 'color':'#0F1729', 'font-weight':'600' }\">\r\n <label class=\"text-value-wrapper\" [ngStyle]=\"{color: attributeModel.textColorOnReadonly}\">{{ getValue() }}</label>\r\n </div>\r\n } @else {\r\n <div class=\"textAreaControl\">\r\n <textarea\r\n pInputTextarea\r\n [rows]=\"rowspan ?? 3\"\r\n cols=\"30\"\r\n [disabled]=\"attributeModel?.readonly ?? false\"\r\n [ngModel]=\"record[attributeModel.name]\"\r\n [name]=\"attributeModel.name ?? 'textArea'\"\r\n [required]=\"attributeModel?.isRequired ?? false\"\r\n [ngStyle]=\"{\r\n width: attributeModel.customColumnWidth\r\n ? attributeModel.customColumnWidth\r\n : ''\r\n }\"\r\n #textArea=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, textArea.valid)\"\r\n [ngClass]=\"{\r\n 'ng-dirty ng-invalid':\r\n (!textArea.valid && error == attributeModel?.name)\r\n \r\n }\"\r\n ></textarea>\r\n <div *ngIf=\"textArea.errors?.['required'] && (textArea.dirty || textArea.touched)\" class=\"error-message\">\r\n <small class=\"p-error\"><span class=\"capitalize\">{{attributeModel.name}}</span> is required</small>\r\n </div>\r\n </div>\r\n }\r\n</ng-container>\r\n","import { Component } from '@angular/core';\r\nimport { SHARED } from '../../constant/SHARED';\r\n\r\n@Component({\r\n selector: 'queue-search-customer',\r\n standalone: false,\r\n templateUrl: './queue-search-customer.component.html',\r\n styleUrl: './queue-search-customer.component.scss',\r\n})\r\nexport class QueueSearchCustomerComponent {\r\n\r\n constructor() {}\r\n\r\n queues: any[] = [\r\n { name: SHARED.ALL, code: SHARED.QUEUE1 },\r\n { name: SHARED.UK, code: SHARED.QUEUE2 },\r\n { name: SHARED.INTERNATIONAL, code: SHARED.QUEUE3 }\r\n ];\r\n queueData :any[]=[]\r\n selectedQueue: any;\r\n\r\n onSearch() {\r\n console.log(SHARED.SELECTED_QUEUE, this.selectedQueue);\r\n }\r\n}\r\n","<div class=\"flex mt-5 xl:mt-0 xl:justify-content-between xl:align-items-center vh-100\">\r\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\">\r\n <div class=\"p-inputgroup border-round-left bg-white\">\r\n <span class=\"p-inputgroup-addon bg-white\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <input type=\"text\" class=\"border-none h-44 border-noround-right bg-white\" pInputText placeholder=\"Search with Applicaiton no., Name or Address\" />\r\n </div>\r\n </div>\r\n <div class=\"p-field m-0 p-0 py-2 border-round-right border-noround-left\">\r\n <p-dropdown \r\n [styleClass]=\"'bg-white font-bold'\"\r\n [options]=\"queues\" \r\n [(ngModel)]=\"selectedQueue\" \r\n placeholder=\"All queue\"\r\n optionLabel=\"name\"\r\n class=\"left-arrow-dropdown\"\r\n ></p-dropdown>\r\n </div>\r\n <div class=\"p-field p-0 m-0 ml-3\">\r\n <button class=\"py-3 border-none\" pButton type=\"button\" label=\"Search\" (click)=\"onSearch()\"></button>\r\n </div>\r\n </div>\r\n ","export class ROUTES {\r\n static RECORD = 'record/';\r\n static QUEUE_FORM = \"/admin/queue/\";\r\n static DICTIONARY_CREATE_FORM = '/DataDictionaries';\r\n static DICTIONARY = '/DataDictionaries/';\r\n static APIMANAGEMENT = '/apiManagement/';\r\n static APICONFIG = 'apiConfig';\r\n static VALIDATEAPI = 'ApiConfigurations/validateApi';\r\n static APPLICATION = \"application/\";\r\n static APIPROPERTIES = \"ApiConfigurations/get-parent\";\r\n static APPLICATION_WIDGET_CACHE = \"Widgets/evaluateFromCache\";\r\n static APPLICATION_WIDGET = \"Widgets/evaluate\";\r\n static DOCUMENTALERT = \"alerts/documentId\";\r\n static VALIDATE_ACTIONS = 'ActionConfigurations/validateApi';\r\n static EVALUATE_BY_WIDGETNAME = \"Widgets/evaluateByWidgetName\";\r\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { ROUTES } from '../../constant/ROUTES';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { BadgeModule } from 'primeng/badge';\r\n\r\n@Component({\r\n selector: 'block-list',\r\n standalone: true,\r\n imports: [CommonModule, RippleModule, ButtonModule, RouterModule, BadgeModule],\r\n templateUrl: './block-list.component.html',\r\n styleUrls: ['./block-list.component.scss'], // Fixed the typo: styleUrl -> styleUrls\r\n})\r\nexport class BlockListComponent {\r\n // @Input() list!: any;\r\n @Input() queueData!: any[];\r\n @Input() showQueueDataForm : boolean = true\r\n @Output() queueDataById: EventEmitter<any> =\r\n new EventEmitter<any>();\r\n\r\n selectedQueueId: any;\r\n constructor(public router : Router){}\r\n\r\n ngOnChanges(){\r\n this.queueData = this.queueData.map((queue) => {\r\n if (queue.name === SHARED.UK) {\r\n return { ...queue, itemCount: 5 };\r\n } else if (queue.name === SHARED.INTERNATIONAL) {\r\n return { ...queue, itemCount: 2 }; \r\n }\r\n return queue;\r\n });\r\n this.queueDataById.emit(this.queueData[0]?._id)\r\n this.selectedQueueId=this.queueData[0]?._id;\r\n // this.handleQueueClick(this.list[0]._id, this.showQueueDataForm);\r\n }\r\n\r\n\r\n\r\n insertQueue(){\r\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO])\r\n }\r\n\r\n\r\n handleQueueClick(queueId:any, showQueueDataForm:any){\r\n this.selectedQueueId=queueId;\r\n if(showQueueDataForm){\r\n this.router.navigateByUrl(ROUTES.QUEUE_FORM+queueId);\r\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\r\n }else{\r\n this.queueDataById.emit(queueId)\r\n }\r\n }\r\n}\r\n","<div class=\"card p-4 pr-3 mb-0\">\r\n <!-- <div class=\"px-4 w-full flex\">\r\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>\r\n </div> -->\r\n <div class=\"queues overflow-y-scroll scrollable\">\r\n\r\n @for(queue of queueData; let i = $index; track queue){\r\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)\" >\r\n <div class=\"flex flex-column py-4 px-3 cursor-pointer queue-list-wrapper\" [ngClass]=\"{'active-queue-wrapper': queue._id === this.selectedQueueId}\">\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\r\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\r\n <span class=\"text-color queue-name font-semibold\"\r\n [ngClass]=\"{'active-title-wrapper': queue._id === this.selectedQueueId}\"\r\n >{{queue.name}}</span>\r\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" />\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\r\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\r\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\r\n <span class=\"text-color queue-name font-semibold\"\r\n >Total Loss</span>\r\n <p-badge [value]=\"11\" severity=\"primary\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex flex-column gap-5 overflow-y-auto mt-2 pt-1 scrollable kanban-list\" #listEl style=\"min-height:2rem\" >\r\n <div class=\"flex flex-column py-4 px-3 p-3 cursor-pointer queue-list-wrapper\">\r\n <div class=\"flex text-center justify-content-between flex align-items-center\">\r\n <!-- <button class=\"btn-edit\" type=\"button\" pButton pRipple icon=\"pi pi-pencil\" -->\r\n <!-- (click)=\"handleQueueClick(queue._id, true)\"></button> -->\r\n <span class=\"text-color queue-name font-semibold\"\r\n >Repair</span>\r\n <p-badge [value]=\"7\" severity=\"primary\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div> ","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { SHARED } from '../constant/SHARED';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionService {\r\n\r\n constructor(public router : Router) {\r\n\r\n }\r\n\r\n getUserRole() {\r\n const role = sessionStorage.getItem('role');\r\n return role;\r\n }\r\n\r\n setUserSession(data: any): void {\r\n sessionStorage.setItem(SHARED.SESSIONKEY, JSON.stringify(data));\r\n }\r\n\r\n getUserPermissions(){\r\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\r\n const permissionData = sessionData ? JSON.parse(sessionData).permissions : null;\r\n return permissionData\r\n }\r\n \r\n\r\n getUserSession(): any {\r\n const sessionData = localStorage.getItem(SHARED.SESSIONKEY);\r\n return sessionData ? JSON.parse(sessionData) : null;\r\n }\r\n\r\n getAllUserRole() {\r\n const userSession = this.getUserSession();\r\n return userSession?.roles;\r\n }\r\n\r\n getSessionID(){\r\n return 1;\r\n }\r\n\r\n clearSession(): void {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, Renderer2, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { SessionService } from '../services/session.service';\r\n\r\n@Directive({\r\n selector: '[permission]',\r\n standalone: false\r\n})\r\nexport class HasPermissionDirective implements OnChanges {\r\n @Input() permission?: string | string[];\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n public sessionService: SessionService\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['permission']) {\r\n this.checkPermission();\r\n }\r\n }\r\n private checkPermission() {\r\n const userPermissionsObjects = this.sessionService.getUserPermissions();\r\n if (userPermissionsObjects) {\r\n const userPermissionNames = userPermissionsObjects.map((perm: any) => perm.name);\r\n const requiredPermissions = Array.isArray(this.permission)\r\n ? this.permission\r\n : [this.permission];\r\n const permission = requiredPermissions.some(permission =>\r\n userPermissionNames.includes(permission)\r\n );\r\n if (!permission) {\r\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\r\n } else {\r\n this.renderer.removeStyle(this.el.nativeElement, 'display');\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CardModule } from 'primeng/card';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SidebarComponent } from './components/sidebar/sidebar.component';\r\nimport { CheckBoxComponent } from './controls/check-box/check-box.component';\r\nimport { DragDropModule } from 'primeng/dragdrop';\r\nimport { FormContainerComponent } from './components/form-container/form-container.component';\r\nimport { BaseListComponent } from './_base/base-list/base-list.component';\r\nimport { DropdownComponent } from './controls/dropdown/dropdown.component'\r\nimport { BaseFormComponent } from './_base/base-form/base-form.component';\r\nimport { TextBoxComponent } from './controls/text-box/text-box.component';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DateComponent } from './controls/date/date.component';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { FileUploadComponent } from './controls/file-upload/file-upload.component';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { CapitalizeWordsPipe } from './pipe/capitalize-words.pipe';\r\nimport { TextAreaComponent } from './controls/text-area/text-area.component';\r\nimport { QueueSearchCustomerComponent } from './components/queue-search-customer/queue-search-customer.component';\r\nimport { BlockListComponent } from './components/list/block-list.component';\r\nimport { HasPermissionDirective } from './directives/permission.directive';\r\n\r\n@NgModule({\r\n \r\n declarations: [ SidebarComponent, QueueSearchCustomerComponent,HasPermissionDirective],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n InputTextModule,\r\n ButtonModule,\r\n DropdownModule,\r\n InputGroupModule,\r\n CardModule,\r\n SidebarModule,\r\n CheckBoxComponent,\r\n DragDropModule,\r\n FormContainerComponent,\r\n BaseListComponent,\r\n DropdownComponent,\r\n BaseListComponent,\r\n TextBoxComponent,\r\n InputTextareaModule,\r\n DividerModule,\r\n DateComponent,\r\n DialogModule,\r\n TimelineModule,\r\n ListboxModule,\r\n CheckboxModule,\r\n FileUploadComponent,\r\n FileUploadModule,\r\n CapitalizeWordsPipe,\r\n TextAreaComponent,\r\n BaseFormComponent,\r\n BlockListComponent\r\n ],\r\n exports: [ HasPermissionDirective,CapitalizeWordsPipe,TextBoxComponent,FormsModule,ListboxModule,DialogModule,CheckboxModule,DropdownComponent,FormContainerComponent, BaseListComponent, SidebarComponent, DividerModule, CardModule, QueueSearchCustomerComponent, BlockListComponent]\r\n})\r\nexport class SharedModule { }\r\n","export class HEADERS{\r\n static API_MANAGEMENT = \"Api Management\";\r\n static DICTIONARY_FORM = \"Dictionary Form\";\r\n}","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\n\r\n@Component({\r\n selector: 'username',\r\n standalone: true,\r\n imports: [CommonModule, InputTextModule,FormsModule],\r\n templateUrl: './username.component.html',\r\n styleUrls: ['./username.component.scss'],\r\n})\r\nexport class UsernameComponent extends BaseControlComponent {\r\n\r\n \r\n}\r\n","<ng-container>\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"username-control\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-envelope\"></i>\r\n <input pInputText type=\"text\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"attributeModel.placeholder ?? ''\" \r\n [ngModel]=\"record[attributeModel.name]\"\r\n [required]=\"attributeModel.isRequired ?? false\" \r\n [disabled]=\"attributeModel.readonly ?? false\"\r\n #usernameField=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, usernameField.valid)\" \r\n />\r\n </span>\r\n </div>\r\n </ng-container>","import { Component , OnInit} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseControlComponent } from '../../_base/base-control/base-control.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { BaseQuery } from '../../state/base.query';\r\n\r\n@Component({\r\n selector: 'password',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './password.component.html',\r\n styleUrl: './password.component.scss',\r\n})\r\nexport class PasswordComponent extends BaseControlComponent {\r\n invalidPasswordErrorMsg: string | undefined\r\n \r\n constructor(baseStore: BaseStore<any>, baseQuery: BaseQuery<any>){\r\n super(baseStore, baseQuery)\r\n }\r\n\r\n ngOninit():void{\r\n this.invalidPasswordErrorMsg = \"Invalid Password\";\r\n }\r\n\r\n}\r\n","<ng-container>\r\n <div *ngIf=\"attributeModel.displayText\" class=\"mb-2\">\r\n <label>{{ attributeModel.displayText }}</label>\r\n <span class=\"asterisk ml-1\" *ngIf=\"attributeModel.isRequired\">*</span>\r\n </div>\r\n <div class=\"password-control\">\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-key\"></i>\r\n <input type=\"password\" autocomplete=\"off\" pInputText [placeholder]=\"attributeModel.placeholder ?? ''\"\r\n [ngModel]=\"record[attributeModel.name]\" [required]=\"attributeModel.isRequired ?? false\" #passwordField=\"ngModel\"\r\n (ngModelChange)=\"handleModelChange($event, passwordField.valid)\" [ngClass]=\"{\r\n 'ng-dirty ng-invalid': !passwordField.valid && error == attributeModel.name\r\n }\" class=\"block p-inputtext\" />\r\n\r\n </span>\r\n </div>\r\n @if (!passwordField.valid && passwordField.dirty) {\r\n <div>\r\n <small id=\"password-help\" class=\"p-error\">{{\r\n invalidPasswordErrorMsg\r\n }}</small>\r\n </div>\r\n }\r\n\r\n</ng-container>","export class CSS {\r\n static DIALOGUE_BREAKPOINTS = {\r\n '960px': '75vw',\r\n '640px': '90vw'\r\n }\r\n static DIALOGUE_OVERFLOW = { overflow: 'auto' }\r\n static DIALOGUE_WIDTH = '100vw'\r\n static DIALOGUE_HIGHT = '100vh'\r\n}","import { SelectItem } from \"primeng/api\";\r\n\r\nexport class AttributeModel {\r\n displayText ?: string;\r\n readonly ?: boolean;\r\n name ?: any;\r\n isRequired?: boolean;\r\n placeholder?: string;\r\n maxLength?: number;\r\n infoText?: string;\r\n buttonLabel?: string;\r\n isDisabled?: boolean;\r\n customButtonWidth?: string;\r\n isPrimary?: number;\r\n title?: string;\r\n customColumnWidth?: string;\r\n customHeight?: string;\r\n icon?: string;\r\n iconPosition?: 'left' | 'right';\r\n customPadding?: string;\r\n dataSource?: string;\r\n listValueProperty?: string;\r\n listLabelProperty?: string;\r\n options?: SelectItem[];\r\n childListName?: any;\r\n childListKey?:any;\r\n inputId?:string;\r\n allowFraction?:string = 'Y'\r\n numberMode?:string;\r\n currency?:string;\r\n locale ?: 'en-GB';\r\n tooltip?:string;\r\n toolTipPosition?:string\r\n hourFormat?:string\r\n yearRange?:string\r\n showCalenderIcon ?: boolean\r\n additionalFilterList?:string\r\n additionalFilterKey?:string\r\n lookupName?:any\r\n textColorOnReadonly ?: any\r\n hideLabelOnForm?:boolean = false;\r\n disable ?: boolean = false;\r\n filter ?: boolean = false\r\n}","export class BaseModel{\r\n _id ?: any\r\n [key: string]: any;\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { SessionService } from '../session.service';\r\nimport { map, Observable, of, tap } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n constructor(public _sessionService : SessionService,private _router: Router) {}\r\n\r\n canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): Observable<boolean> {\r\n return of(this._sessionService.getSessionID()).pipe(\r\n tap((sessionID) => {\r\n if (!sessionID) {\r\n this._router.navigateByUrl(\"auth/login\" + \"?returnUrl=\" + state.url);\r\n }\r\n }),\r\n map((sessionID) => !!sessionID)\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { BaseModel } from '../../models/base.model';\r\n\r\n@Component({\r\n selector: 'lib-base-container',\r\n templateUrl: './base-container.component.html',\r\n styleUrl: './base-container.component.scss',\r\n})\r\nexport class BaseContainerComponent<T extends BaseModel>{\r\n constructor(protected service : BaseService<T>){\r\n\r\n }\r\n init(){\r\n this.service.initList()\r\n }\r\n\r\n}\r\n","<p>base-container works!</p>\r\n","export class LOOKUPS{\r\n static DOCUMENTTYPE = 'DocumentType'\r\n}","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Table, TableModule } from 'primeng/table';\r\nimport { TablePrimaryModel, tableSortOrderModel } from '../models/table-primary.model';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { Router } from '@angular/router';\r\nimport { SHARED, statusList } from '../../constant/SHARED';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { TableBuilder } from '../../services/table.builder';\r\nimport { MetaDataModel } from '../../models/meta-data.model';\r\nimport { ERROR } from '../../constant/ERROR';\r\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { HasPermissionDirective } from '../../directives/permission.directive';\r\nimport { SharedModule } from '../../shared.module';\r\n@Component({\r\n selector: 'lib-table-primary',\r\n standalone: true,\r\n imports: [CommonModule, SharedModule,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, RadioButtonModule, PaginatorModule, DropdownModule ],\r\n templateUrl: './table-primary.component.html',\r\n styleUrl: './table-primary.component.scss',\r\n})\r\nexport class TablePrimaryComponent implements OnInit, OnDestroy {\r\n @Input() table!: TablePrimaryModel;\r\n @Input() metaData!: MetaDataModel;\r\n @Input() title!: string;\r\n \r\n @Input() showStatus = true;\r\n @Input() showActions = true;\r\n @Input() showSearchBar = true;\r\n @Input() showNewRecordButton = true;\r\n @Input() showRefreshButton = true;\r\n @Input() pathName!: string;\r\n @ViewChild(SHARED.DT2) dt2: Table | undefined;\r\n @ViewChild(SHARED.PAGINATOR) paginator!: Paginator;\r\n globalFilter: string = SHARED.EMPTY;\r\n page!: number;\r\n limit!: number;\r\n recordNumber!: number;\r\n columnName!: string;\r\n sortOrders: tableSortOrderModel = {};\r\n currentSortOrder!: string;\r\n isDataActive: any;\r\n statusList: any = statusList;\r\n isActive!: boolean | string;\r\n private searchSubject$ = new Subject<string>();\r\n private destroy$ = new Subject<void>();\r\n private templateDestroy$ = new Subject<void>();\r\n\r\n constructor(private _router: Router, private service: BaseService<any>, protected builder: TableBuilder, private baseQuery: BaseQuery<any>) {}\r\n\r\n ngOnInit(): void {\r\n this.isDataActive = this.statusList[0];\r\n if (this.table.headers.length === 0) {\r\n console.error('Table headers are missing.');\r\n }\r\n\r\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\r\n\r\n this.baseQuery.getSelectedTemplate()\r\n .pipe(takeUntil(this.templateDestroy$))\r\n .subscribe((type: string) => {\r\n this.fetchTableData(type)\r\n })\r\n\r\n this.searchSubject$.pipe(\r\n debounceTime(500), \r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n ).subscribe(value => {\r\n this.globalFilter = value;\r\n this.fetchData(value);\r\n });\r\n }\r\n\r\n handleRadioChange(newValue: string) {\r\n if (newValue === SHARED.ALL) {\r\n this.isActive = SHARED.EMPTY;\r\n } else if (newValue === SHARED.ACTIVE) {\r\n this.isActive = true;\r\n } else if (newValue === SHARED.IN_ACTIVE) {\r\n this.isActive = false;\r\n }\r\n this.fetchTableData(); \r\n }\r\n\r\n onSearchChange(value: string) {\r\n this.searchSubject$.next(value);\r\n }\r\n \r\n fetchData(value: string) {\r\n if(value === null) return;\r\n this.page = 1;\r\n if (this.paginator) {\r\n this.paginator.first = 0;\r\n this.paginator.changePage(0);\r\n }\r\n return this.fetchTableData();\r\n }\r\n\r\n onStatusChange(event:any){\r\n let status = event.value.name;\r\n if (status === SHARED.ALL) {\r\n this.isActive = SHARED.EMPTY;\r\n } else if (status === SHARED.ACTIVE) {\r\n this.isActive = true;\r\n } else if (status === SHARED.IN_ACTIVE) {\r\n this.isActive = false;\r\n }\r\n this.fetchTableData(); \r\n }\r\n\r\n private fetchTableData(type?: string) {\r\n this.service.getPaginatedList(this.globalFilter, this.page, this.limit, this.columnName, this.currentSortOrder, type, this.isActive, this.pathName).subscribe({\r\n next: (res: any) => {\r\n this.table.records = res.data;\r\n this.metaData = res.metadata;\r\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems)\r\n },\r\n error: (err) => {\r\n console.error(ERROR.ERROR_FETCHING_DATA, err);\r\n }\r\n });\r\n }\r\n\r\n clearSearch(table: any) {\r\n this.globalFilter = SHARED.EMPTY;\r\n table.clear(); \r\n }\r\n\r\n refreshTable() {\r\n }\r\n\r\n handleCreate() {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\r\n }\r\n\r\n handleEditClick(id: number) {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\r\n }\r\n\r\n handleSortColumn(columnName: string) {\r\n this.columnName = columnName; \r\n this.sortOrders[columnName] = this.sortOrders[columnName] === SHARED.ASC ? SHARED.DESC : SHARED.ASC;\r\n this.currentSortOrder = this.sortOrders[columnName];\r\n this.fetchTableData();\r\n }\r\n\r\n editRow(rowData: any) {\r\n console.log('Edit Row:', rowData);\r\n }\r\n\r\n deleteRow(rowData: any) {\r\n console.log('Delete Row:', rowData);\r\n }\r\n\r\n viewRow(rowData: any) {\r\n console.log('Delete Row:', rowData);\r\n }\r\n\r\n decodeHtml(html: string): string {\r\n try {\r\n return JSON.parse(html);\r\n } catch (e) {\r\n return html;\r\n }\r\n }\r\n\r\n handleLoadRecords(event: any) {\r\n this.page = (event.first / event.rows) + 1;\r\n this.limit = event.rows; \r\n this.fetchTableData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.templateDestroy$.next();\r\n this.templateDestroy$.complete();\r\n }\r\n}\r\n","<p-table #dt2 [lazy]=\"true\" \r\n [paginator]=\"false\"\r\n [rows]=\"metaData.itemsPerPage\"\r\n [totalRecords]=\"metaData.totalItems\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n (onPage)=\"handleLoadRecords($event)\"\r\n [ngClass]=\"{'no-pagination': metaData.totalItems <= 10}\"\r\n [columns]=\"table.headers\" class=\"table-primary-container\" [value]=\"table.records\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"table-header-wrapper flex align-items-center justify-content-between\">\r\n <h3 class=\"text-color table-title-wrapper text-color m-0\">{{title}}</h3>\r\n <div class=\"flex align-items-center w-full\" *ngIf=\"showSearchBar\">\r\n <div class=\"grid m-0 flex align-items-center w-full\">\r\n <div class=\"col-8 pl-0\">\r\n <input pInputText type=\"text\" [(ngModel)]=\"globalFilter\" (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"'Search ...'\" class=\"search-input-wrapper w-full\" />\r\n </div>\r\n <div class=\"col-4 pr-0 flex align-items-center justify-content-end gap-2 filter-dropdown-wrapper\">\r\n <p-dropdown \r\n [options]=\"statusList\" \r\n [(ngModel)]=\"isDataActive\" \r\n optionLabel=\"name\" \r\n placeholder=\"Status\"\r\n (onChange)=\"onStatusChange($event)\"\r\n />\r\n <p-button icon=\"pi pi-cog\" class=\"setting-icon-wrapper ml-3\"></p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Header Template -->\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr *ngIf=\"table.headers.length > 0\">\r\n <th *ngFor=\"let col of table.headers\" class=\"p-4\" [ngClass]=\"col.width ? col.width : 'w-full'\">\r\n <h4 class=\"flex align-items-center table-header-title capitalize text-color font-semibold m-0\" [pSortableColumn]=\"col.name\" (click)=\"handleSortColumn(col.name)\">\r\n <span class=\"table-title-wrapper text-overflow-wrapper p-0 mt-1\">{{ col.name }}</span>\r\n <p-sortIcon [field]=\"col.name\"></p-sortIcon>\r\n </h4>\r\n </th>\r\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'\">\r\n <h4 class=\"text-color font-semibold table-title-wrapper text-overflow-wrapper capitalize m-0\">Actions</h4></th>\r\n </tr>\r\n </ng-template>\r\n\r\n <!-- Table Body -->\r\n <ng-template pTemplate=\"body\" let-rowData>\r\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\r\n <td class=\"text-left p-4\" *ngFor=\"let col of table.headers\">\r\n <div class=\"table-text-wrapper text-overflow-wrapper p-0\" \r\n [ngClass]=\"{\r\n 'enable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Enable',\r\n 'disable-badge-wrapper': col.name.toLowerCase() === 'status' && rowData[col.name] === 'Disable',\r\n 'w-8': col.name.toLowerCase() === 'status',\r\n 'text-primary font-semibold': col.name.toLowerCase() === 'action' || col.name.toLowerCase() === 'name'\r\n }\"\r\n >\r\n <span *ngIf=\"col.name.toLowerCase() === 'body'; else normalText\" [innerHTML]=\"decodeHtml(rowData[col.name])\"></span>\r\n <ng-template #normalText>\r\n {{ rowData[col.name] }}\r\n </ng-template>\r\n <p *ngIf=\"col.name.toLowerCase() === 'action'\" class=\"text-color font-normal\">{{rowData['apiEndPoint']}}</p>\r\n </div>\r\n </td>\r\n\r\n <!-- Actions -->\r\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left p-4\">\r\n <div class=\"flex align-items-center\">\r\n <p-button icon=\"pi pi-pencil\" [permission]=\"this.table.editPermission\" (click)=\"handleEditClick(rowData._id)\" class=\"edit-icon-wrapper mr-3\"></p-button>\r\n <p-button icon=\"pi pi-trash\" [permission]=\"this.table.deletePermission\" (click)=\"deleteRow(rowData)\" class=\"delete-icon-wrapper mr-3\"></p-button>\r\n </div>\r\n </td>\r\n <!-- <p-button icon=\"pi pi-eye\" (click)=\"viewRow(rowData)\" class=\"view-icon-wrapper icon-position-wrapper table-group-wrapper-hover:visible\"></p-button> -->\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0)\" class=\"text-center text-color font-semibold p-4\">\r\n No records found\r\n </td>\r\n </tr>\r\n </ng-template>\r\n</p-table>\r\n\r\n<div *ngIf=\"metaData.totalItems > 10\" class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper bg-white\">\r\n <div class=\"pagination-text text-color\">\r\n Showing {{ (metaData.currentPage - 1) * metaData.itemsPerPage + 1 }} to {{ recordNumber }} of {{ metaData?.totalItems || 0 }} entries\r\n </div>\r\n \r\n <p-paginator\r\n #paginator\r\n [rows]=\"metaData.itemsPerPage\"\r\n [totalRecords]=\"metaData.totalItems\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n (onPageChange)=\"handleLoadRecords($event)\"\r\n ></p-paginator>\r\n </div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TableModule } from 'primeng/table';\r\n\r\n@Component({\r\n selector: 'lib-skeleton',\r\n standalone: true,\r\n imports: [CommonModule, SkeletonModule, TableModule],\r\n templateUrl: './skeleton.component.html',\r\n styleUrl: './skeleton.component.scss'\r\n})\r\nexport class SkeletonComponent implements OnInit {\r\n products: any[] = [];\r\n @Input() count: number = 1;\r\n @Input() columns: any;\r\n @Input() width: string = '100%';\r\n @Input() height: string = '2rem';\r\n @Input() isAllowCard: boolean = false;\r\n\r\n ngOnInit() {\r\n this.products = Array.from({ length: this.count }).map((_, i) => `Item #${i}`);\r\n }\r\n}\r\n","<div [ngClass]=\"{'card': isAllowCard}\">\r\n <div *ngFor=\"let col of products\" class=\"mb-5\">\r\n <p-skeleton [width]=\"width\" [height]=\"height\" />\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\nexport type RiskRating = 'Low' | 'Medium' | 'High';\r\nexport type ApplicationType = 'BTL' | 'HPP';\r\nexport type PurchaseType = 'Purchase' | 'Refinance';\r\nexport type TaskStatus = 'Not Started' | 'In-progress' | 'Completed';\r\nexport type Category = 'UK' | 'Ex-Pat' | 'Intl';\r\nexport type EPC = 'A or B (Green)';\r\n\r\nexport interface QueueFilter {\r\n riskRating: RiskRating[];\r\n applicationType: ApplicationType[];\r\n purchaseType: PurchaseType[];\r\n taskStatus: TaskStatus[];\r\n category: Category[];\r\n epc: EPC[];\r\n vulnerableCustomer: boolean | null;\r\n financeMin: number | null;\r\n financeMax: number | null;\r\n pendingDays: number | null;\r\n assignedUnderwriter: string[];\r\n}\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class QueueFilterDropdownService {\r\n private filter: QueueFilter = {\r\n riskRating: [],\r\n applicationType: [],\r\n purchaseType: [],\r\n taskStatus: [],\r\n category: [],\r\n epc: [],\r\n vulnerableCustomer: null,\r\n financeMin: null,\r\n financeMax: null,\r\n pendingDays: null,\r\n assignedUnderwriter: []\r\n };\r\n\r\n setRiskRating(rating: RiskRating) {\r\n const arr = this.filter.riskRating;\r\n const idx = arr.indexOf(rating);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(rating);\r\n }\r\n setApplicationType(type: ApplicationType) {\r\n const arr = this.filter.applicationType;\r\n const idx = arr.indexOf(type);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(type);\r\n }\r\n setPurchaseType(type: PurchaseType) {\r\n const arr = this.filter.purchaseType;\r\n const idx = arr.indexOf(type);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(type);\r\n }\r\n setTaskStatus(status: TaskStatus) {\r\n const arr = this.filter.taskStatus;\r\n const idx = arr.indexOf(status);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(status);\r\n }\r\n setCategory(category: Category) {\r\n const arr = this.filter.category;\r\n const idx = arr.indexOf(category);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(category);\r\n }\r\n setEpc(epc: EPC) {\r\n const arr = this.filter.epc;\r\n const idx = arr.indexOf(epc);\r\n if (idx > -1) arr.splice(idx, 1);\r\n else arr.push(epc);\r\n }\r\n setVulnerableCustomer(value: boolean | null) {\r\n this.filter.vulnerableCustomer = value;\r\n }\r\n setFinanceMin(min: number | null) {\r\n this.filter.financeMin = min;\r\n }\r\n setFinanceMax(max: number | null) {\r\n this.filter.financeMax = max;\r\n }\r\n setPendingDays(days: number | null) {\r\n this.filter.pendingDays = days;\r\n }\r\n\r\n setAssignedUnderwriter(ids: string[]) {\r\n this.filter.assignedUnderwriter = Array.isArray(ids) ? ids : [];\r\n }\r\n\r\n setAllFilters(filters: QueueFilter) {\r\n this.filter = {\r\n riskRating: [...(filters.riskRating || [])],\r\n applicationType: [...(filters.applicationType || [])],\r\n purchaseType: [...(filters.purchaseType || [])],\r\n taskStatus: [...(filters.taskStatus || [])],\r\n category: [...(filters.category || [])],\r\n epc: [...(filters.epc || [])],\r\n vulnerableCustomer: filters.vulnerableCustomer,\r\n financeMin: filters.financeMin,\r\n financeMax: filters.financeMax,\r\n pendingDays: filters.pendingDays,\r\n assignedUnderwriter: [...(filters.assignedUnderwriter || [])]\r\n };\r\n }\r\n\r\n getFilters(): QueueFilter {\r\n return {\r\n riskRating: [...this.filter.riskRating],\r\n applicationType: [...this.filter.applicationType],\r\n purchaseType: [...this.filter.purchaseType],\r\n taskStatus: [...this.filter.taskStatus],\r\n category: [...this.filter.category],\r\n epc: [...this.filter.epc],\r\n vulnerableCustomer: this.filter.vulnerableCustomer,\r\n financeMin: this.filter.financeMin,\r\n financeMax: this.filter.financeMax,\r\n pendingDays: this.filter.pendingDays,\r\n assignedUnderwriter: [...this.filter.assignedUnderwriter]\r\n };\r\n }\r\n\r\n hasFilters(): boolean {\r\n return (\r\n this.filter.riskRating.length > 0 ||\r\n this.filter.applicationType.length > 0 ||\r\n this.filter.purchaseType.length > 0 ||\r\n this.filter.taskStatus.length > 0 ||\r\n this.filter.category.length > 0 ||\r\n this.filter.epc.length > 0 ||\r\n this.filter.vulnerableCustomer !== null ||\r\n this.filter.financeMin !== null ||\r\n this.filter.financeMax !== null ||\r\n this.filter.pendingDays !== null ||\r\n this.filter.assignedUnderwriter.length > 0\r\n );\r\n }\r\n\r\n getFilterCount(): number {\r\n let count = 0;\r\n count += this.filter.riskRating.length;\r\n count += this.filter.applicationType.length;\r\n count += this.filter.purchaseType.length;\r\n count += this.filter.taskStatus.length;\r\n count += this.filter.category.length;\r\n count += this.filter.epc.length;\r\n if (this.filter.vulnerableCustomer !== null) count++;\r\n if (this.filter.financeMin !== null) count++;\r\n if (this.filter.financeMax !== null) count++;\r\n if (this.filter.pendingDays !== null) count++;\r\n count += this.filter.assignedUnderwriter.length;\r\n return count;\r\n }\r\n\r\n clearAll() {\r\n this.filter = {\r\n riskRating: [],\r\n applicationType: [],\r\n purchaseType: [],\r\n taskStatus: [],\r\n category: [],\r\n epc: [],\r\n vulnerableCustomer: null,\r\n financeMin: null,\r\n financeMax: null,\r\n pendingDays: null,\r\n assignedUnderwriter: []\r\n };\r\n }\r\n\r\n /**\r\n * Builds a query string for API calls based on the current filter values.\r\n * Maps UI filter values to API parameters.\r\n */\r\n\r\n public buildFilterQueryString(filters: QueueFilter): string {\r\n if (!filters || Object.keys(filters).length === 0) {return '';}\r\n const filterParams: Record<string, string> = {};\r\n \r\n // Map filter properties to API parameters\r\n if (filters.riskRating && filters.riskRating.length > 0) {\r\n filterParams['risk'] = filters.riskRating.join(',');}\r\n if (filters.applicationType && filters.applicationType.length > 0) {\r\n filterParams['lendingType'] = filters.applicationType.join(',');}\r\n if (filters.purchaseType && filters.purchaseType.length > 0) {\r\n filterParams['purchaseType'] = filters.purchaseType.join(',');}\r\n if (filters.category && filters.category.length > 0) {\r\n filterParams['category'] = filters.category.join(',');}\r\n if (filters.epc && filters.epc.length > 0) {\r\n filterParams['epc'] = filters.epc.join(',');}\r\n if (filters.vulnerableCustomer !== null && filters.vulnerableCustomer !== undefined) {\r\n filterParams['vulnerable'] = String(filters.vulnerableCustomer);\r\n }\r\n // Add mapping for taskStatus UI values to API values\r\n const taskStatusMap: Record<string, string> = {\r\n 'Not Started': 'notStarted','In-progress': 'inProgress','Completed': 'completed'};\r\n if (filters.taskStatus && filters.taskStatus.length > 0) {\r\n filterParams['taskStatus'] = filters.taskStatus.map(status => taskStatusMap[status] || status).join(',');}\r\n if (filters.financeMin !== null && filters.financeMin !== undefined) {\r\n filterParams['minFinanace'] = filters.financeMin.toString(); } \r\n if (filters.financeMax !== null && filters.financeMax !== undefined) {\r\n filterParams['maxFinanace'] = filters.financeMax.toString();}\r\n if (filters.pendingDays !== null && filters.pendingDays !== undefined) {\r\n filterParams['pendingDays'] = filters.pendingDays.toString(); }\r\n if (filters.assignedUnderwriter && filters.assignedUnderwriter.length > 0) {\r\n filterParams['underwriterId'] = filters.assignedUnderwriter.join(','); }\r\n\r\n return new URLSearchParams(filterParams).toString();}\r\n} ","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';\r\nimport { ROUTES } from '../../shared/constant/ROUTES';\r\nimport { queuePriorityOrder, SHARED } from '../../shared/constant/SHARED';\r\nimport { SessionService } from '../../shared/services/session.service';\r\nimport { QueueFilterDropdownService } from './queue-filter-dropdown.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueueBusinessService {\r\n private destroy$ = new Subject<void>();\r\n\r\n constructor(\r\n private router: Router,\r\n private sessionService: SessionService,\r\n private queueFilterDropdownService: QueueFilterDropdownService\r\n ) {}\r\n\r\n filterQueuesByStatus(queues: any[], status: string): any[] {\r\n if (!queues) return [];\r\n switch (status) {\r\n case 'inactive':\r\n return queues.filter(queue => !queue.isActive);\r\n case 'active':\r\n return queues.filter(queue => queue.isActive);\r\n default:\r\n return [...queues];\r\n }\r\n }\r\n\r\n /**\r\n * The rest follow in their original order.\r\n */\r\n orderQueuesByPriority(queues: any[]): any[] {\r\n const desiredOrder = queuePriorityOrder;\r\n const orderMap = new Map(desiredOrder.map((name, idx) => [name, idx]));\r\n return [...queues].sort((a, b) => {\r\n const aIdx = orderMap.has(a.name) ? orderMap.get(a.name)! : Number.POSITIVE_INFINITY;\r\n const bIdx = orderMap.has(b.name) ? orderMap.get(b.name)! : Number.POSITIVE_INFINITY;\r\n return aIdx - bIdx;\r\n });\r\n }\r\n\r\n getFirstQueueId(filteredQueues: any[]): string | null {\r\n return filteredQueues.length > 0 ? filteredQueues[0]._id : null;\r\n }\r\n\r\n navigateToQueue(queueId: string, showQueueDataForm: boolean): void {\r\n if (showQueueDataForm) {\r\n this.router.navigateByUrl(ROUTES.QUEUE_FORM + queueId);\r\n }\r\n }\r\n\r\n navigateToInsertQueue(): void {\r\n this.router.navigate([ROUTES.QUEUE_FORM + SHARED.ZERO]);\r\n }\r\n\r\n getUserRole(): boolean {\r\n const userSession = this.sessionService.getUserSession();\r\n return userSession?.roles?.includes('EnterpriseAdmins') || false;\r\n }\r\n\r\n storeSelectedQueue(queueId: string): void {\r\n localStorage.setItem(SHARED.SELECTED_QUEUE_ID, queueId);\r\n }\r\n\r\n storeApplicationData(record: any): void {\r\n localStorage.setItem(SHARED.selectedApplicationType, record.applicationType);\r\n }\r\n\r\n createDebouncedSearch(delay: number = 500) {\r\n const searchSubject = new Subject<string>();\r\n return searchSubject.pipe(\r\n debounceTime(delay),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n );\r\n }\r\n\r\n buildQueryString(record: any): string {\r\n const queryParams: Record<string, string> = {\r\n type: record.type ?? SHARED.EMPTY,\r\n status: record.status ?? SHARED.EMPTY\r\n };\r\n const filteredQueryParams = Object.fromEntries(\r\n Object.entries(queryParams).filter(([_, value]) => value)\r\n );\r\n return new URLSearchParams(filteredQueryParams).toString();\r\n }\r\n\r\n calculatePagination(event: any): { page: number; limit: number } {\r\n return {\r\n page: (event.first / event.rows) + 1,\r\n limit: event.rows\r\n };\r\n }\r\n\r\n mapApiMetadata(res: any, targetPage: number, targetLimit: number): any {\r\n return {\r\n totalItems: res?.metadata?.total || res?.data?.length || 0,\r\n currentPage: res?.metadata?.page || targetPage,\r\n itemsPerPage: res?.metadata?.limit || targetLimit,\r\n totalPages: res?.metadata?.totalPages || \r\n Math.ceil((res?.metadata?.total || res?.data?.length || 0) / targetLimit)\r\n };\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n} ","import { Injectable } from \"@angular/core\";\r\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\r\nimport { createInitialState, QueueState } from \"./queue.state\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { BaseStore } from \"../../shared/state/base.store\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\n@StoreConfig({ name: \"queues\" })\r\nexport class QueueStore extends BaseStore<QueueModel> {\r\n constructor() {\r\n super();\r\n }\r\n\r\n setSelectedQueueId(data: any) {\r\n this.update({ selectedQueueId: data });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseQuery } from '../../shared';\r\nimport { Observable } from 'rxjs';\r\nimport { QueueModel } from '../models/queue.model';\r\nimport { QueueStore } from './queue.store';\r\n\r\n\r\n/**\r\n * Widget Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class QueueQuery extends BaseQuery<QueueModel> {\r\n\r\n constructor(protected override store: QueueStore) {\r\n super(store);\r\n }\r\n\r\n getSelectedQueueId() : Observable<any> {\r\n return this.select(state => state['selectedQueueId']);\r\n }\r\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BaseService } from '../../state/base.service';\r\nimport { BaseStore } from '../../state/base.store';\r\nimport { TableBuilder } from '../../services/table.builder';\r\nimport { MetaDataModel } from '../../models/meta-data.model';\r\nimport { BaseQuery } from '../../state/base.query';\r\nimport { Paginator, PaginatorModule } from 'primeng/paginator';\r\nimport { SHARED } from '../../constant/SHARED';\r\nimport { ERROR } from '../../constant/ERROR';\r\nimport { TableSecondaryModel } from '../models/table-secondary.model';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as columnStylesJson from '../../../queue/constants/column-styles.json';\r\nimport {RoundProgressModule} from 'angular-svg-round-progressbar';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { SessionService } from '../../services/session.service';\r\nimport { QueueBusinessService } from '../../../queue/services/queue-business.service';\r\nimport { QueueQuery } from '../../../queue/state/queue.query';\r\nimport { SkeletonComponent } from '../../components/skeleton/skeleton.component';\r\n\r\n/**\r\n * A reusable table component that displays dynamic data using PrimeNG's Table.\r\n * Supports features like pagination, search, row actions, selection, and routing.\r\n */\r\n@Component({\r\n selector: 'lib-table-secondary',\r\n standalone: true,\r\n imports: [CommonModule, SkeletonComponent,TableModule, ButtonModule, ToggleButtonModule, FormsModule, InputSwitchModule, InputTextModule, TooltipModule, PaginatorModule, RoundProgressModule, CheckboxModule],\r\n templateUrl: './table-secondary.component.html',\r\n styleUrl: './table-secondary.component.scss'\r\n})\r\nexport class TableSecondaryComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() table!: TableSecondaryModel;\r\n @Input() metaData: MetaDataModel = {\r\n totalItems: 0,\r\n currentPage: 1,\r\n itemsPerPage: 10,\r\n totalPages: 0\r\n };\r\n @Input() title!: string;\r\n @Input() builder : any\r\n @Input() showStatus = true;\r\n @Input() showActions = true;\r\n @Input() showSearchBar = true;\r\n @Input() showNewRecordButton = true;\r\n @Input() showRefreshButton = true;\r\n @Input() isShowSkeleton: boolean = false; // Flag to control skeleton display\r\n isSelectAll: boolean = false;\r\n @Input() pathName!: string;\r\n @Input() selectionMode: 'single' | 'multiple' | undefined;\r\n @Input() selection: any;\r\n @Input() usePagination = true; // ✅ Pagination control\r\n @Input() scrollHeight!: string;\r\n @Output() selectionChange = new EventEmitter<any>();\r\n @Input() rowSelection: any;\r\n @Output() rowSelectionChange = new EventEmitter<any>();\r\n @Output() sortChanged = new EventEmitter<any>();\r\n @Input() enableSelection = true;\r\n @Input() noRecordsMessage: string = 'No records found';\r\n recordNumber!: number;\r\n page: number = 1;\r\n limit: number = 10;\r\n first : number = 0\r\n globalFilter: string = SHARED.EMPTY;\r\n @Input() sortField: string = '';\r\n @Input() sortOrder: number = 1;\r\n private destroy$ = new Subject<void>();\r\n @ViewChild('paginator') paginator!: Paginator;\r\n @Output() onDeleteRow = new EventEmitter<any>();\r\n @Input() searchTerm: string = SHARED.EMPTY;\r\n @Input() filterQuery: string = SHARED.EMPTY;\r\n @Output() onPage = new EventEmitter<any>();\r\n tableNgClassExpression: string = '';\r\n excludedApplicationIds: any[] = [];\r\n userRole: Array<string> | null = [];\r\n isUwLogin: boolean = false;\r\n allQueueList: any;\r\n selectedQueueName!: string;\r\n columnStyles: any = (columnStylesJson as any).columnStyles;\r\n\r\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) { }\r\n\r\n /**\r\n * Lifecycle hook that is called after data-bound properties are initialized.\r\n * Initializes the record count and validates table headers.\r\n */\r\n ngOnInit(): void {\r\n if (this.table && this.table.headers && this.table.headers.length === 0) {\r\n console.error('Table headers are missing.');}\r\n this.updateRecordNumber();\r\n this.baseQuery.selectPage().pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n if (this.paginator) {\r\n this.paginator.first = 0;}});\r\n\r\n const userRole = this.sessionService.getAllUserRole();\r\n this.isUwLogin = userRole.includes('Underwriter User') && !userRole.includes('TeamLeader');\r\n // Load tableStyles ngClass expression from config\r\n const tableStyles = (columnStylesJson as any).tableStyles;\r\n if (tableStyles && tableStyles.ngClass) {\r\n this.tableNgClassExpression = tableStyles.ngClass;}\r\n\r\n this.baseStore.queueList$.pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n this.allQueueList = res;})\r\n\r\n this.queueQuery.getSelectedQueueId().pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n const selectedQueue = this.allQueueList.filter((val:any) => val._id === res);\r\n this.isSelectAll = false;\r\n this.excludedApplicationIds = [];\r\n if(selectedQueue && selectedQueue.length > 0) {\r\n this.selectedQueueName = selectedQueue[0].name;}})}\r\n\r\n /**\r\n * Lifecycle hook called when any data-bound property changes.\r\n * Resets pagination if page is changed.\r\n */\r\n ngOnChanges(): void {\r\n this.updateRecordNumber();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private updateRecordNumber(): void {\r\n const currentPage = this.metaData?.currentPage ?? 1;\r\n const itemsPerPage = this.metaData?.itemsPerPage ?? 10;\r\n const totalItems = this.metaData?.totalItems ?? 0;\r\n this.recordNumber = Math.min(currentPage * itemsPerPage, totalItems);\r\n }\r\n\r\n /**\r\n * Returns the unique key used to identify each row in the table.\r\n * @returns {string} The data key used for identifying rows, or an empty string if not set.\r\n */\r\n get validDataKey(): string {\r\n return this.table?.dataKey ?? SHARED.EMPTY;\r\n }\r\n\r\n /**\r\n * Clears the global search filter and resets the table.\r\n * @param {any} table - The PrimeNG table instance.\r\n */\r\n clearSearch(table: any) {\r\n this.globalFilter = SHARED.EMPTY;\r\n table.clear();\r\n }\r\n\r\n /**\r\n * Navigates to the route for creating a new record.\r\n */\r\n handleCreate() {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + SHARED.ZERO])\r\n }\r\n\r\n /**\r\n * Navigates to the edit page for the given record ID.\r\n * @param {number} id - The ID of the record to edit.\r\n */\r\n handleEditClick(id: number) {\r\n const currentRouteURL = this._router.url;\r\n this._router.navigate([currentRouteURL + SHARED.SLASH + id])\r\n }\r\n\r\n get isAllCurrentPageSelected(): boolean {\r\n if (!this.table?.records?.length || !this.selection?.length) return false;\r\n const dataKey = this.validDataKey || '_id';\r\n return this.table.records.every(\r\n row => this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\r\n );\r\n }\r\n\r\n handleSelectAllRowData(checked: boolean) {\r\n this.isSelectAll = checked;\r\n this.excludedApplicationIds = [];\r\n const dataKey = this.validDataKey || '_id';\r\n if (checked) {\r\n // Add all current page rows to selection, avoiding duplicates\r\n const newSelection = [\r\n ...this.selection,\r\n ...this.table.records.filter(\r\n row => !this.selection.some((sel: any) => sel[dataKey] === row[dataKey])\r\n ),\r\n ];\r\n this.selection = newSelection;\r\n } else {\r\n // Remove current page rows from selection\r\n const currentPageIds = this.table.records.map(row => row[dataKey]);\r\n this.selection = this.selection.filter(\r\n (sel: any) => !currentPageIds.includes(sel[dataKey])\r\n );}\r\n this.baseStore.setIsAllRowSelected(this.isSelectAll);\r\n this.selectionChange.emit(this.selection);\r\n }\r\n \r\n /**\r\n * Logs row data intended for editing.\r\n * @param {any} rowData - The data of the row to edit.\r\n */\r\n editRow(rowData: any) {\r\n console.log('Edit Row:', rowData);\r\n }\r\n\r\n /**\r\n * Handles the deletion of a row by emitting the row data and preventing event propagation.\r\n * @param {Event} event - The DOM event triggered by the delete action.\r\n * @param {any} rowData - The data object of the row to be deleted.\r\n */\r\n deleteRow(event: Event, rowData: any) {\r\n this.baseStore.setUpdatedData(true);\r\n event.stopPropagation();\r\n this.onDeleteRow.emit(rowData);\r\n }\r\n\r\n /**\r\n * Logs row data intended for viewing.\r\n * @param {any} rowData - The data of the row to view.\r\n */\r\n viewRow(rowData: any) {\r\n console.log('Delete Row:', rowData);\r\n }\r\n\r\n /**\r\n * Returns CSS class for a table cell based on its content.\r\n * @param {any} col - The column definition.\r\n * @param {any} rowData - The data for the row.\r\n * @returns {string} A space-separated list of CSS classes for the cell.\r\n */\r\n getRowClass(col: any, rowData: any): string {\r\n if (!col || !col.name) return '';\r\n let classes: string[] = [];\r\n if (rowData[col.name]?.class) {\r\n classes.push(rowData[col.name]?.class);\r\n }\r\n return classes.join(' '); // Return space-separated class names\r\n }\r\n\r\n \r\n /**\r\n * Handles pagination and data reload on paginator event.\r\n * @param {object} event - The PrimeNG paginator event.\r\n * @param {number} event.first - The index of the first record in the current page.\r\n * @param {number} event.rows - The number of records per page.\r\n */\r\n handleLoadRecords(event: any) {\r\n this.page = (event.first / event.rows) + 1;\r\n this.limit = event.rows;\r\n this.isShowSkeleton = true;\r\n \r\n // Emit the pagination event to parent components\r\n this.onPage.emit(event);\r\n \r\n // If pathName is provided, use the default service method\r\n if (this.pathName) {\r\n this.service.getPaginatedList(this.searchTerm, this.page, this.limit, SHARED.UPDATEDAT, SHARED.DESC, SHARED.EMPTY, SHARED.EMPTY, this.pathName).subscribe({\r\n /**\r\n * Handles the successful response from the paginated list API.\r\n * @param {any} res - The API response containing data and metadata.\r\n */\r\n next: (res: any) => {\r\n this.table = this.builder.buildTable(res.data);\r\n this.metaData = res.metadata;\r\n this.recordNumber = Math.min(this.metaData.currentPage * this.metaData.itemsPerPage, this.metaData.totalItems);\r\n this.isShowSkeleton = false; // Hide skeleton when data is loaded\r\n },\r\n /**\r\n * Handles any error encountered while fetching the paginated list.\r\n * @param {any} err - The error object.\r\n */\r\n error: (err) => {\r\n console.error(ERROR.ERROR_FETCHING_DATA, err);\r\n this.isShowSkeleton = false; // Hide skeleton on error\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Emits the updated selection when user changes selection in the table.\r\n * @param {any} event - The new selection data.\r\n */\r\n onSelectionChange(event: any) {\r\n this.selection = event;\r\n this.selectionChange.emit(this.selection);\r\n if(this.isSelectAll) {\r\n this.excludedApplicationIds.push(event[0]._id);}}\r\n\r\n getProgressColor(percent: number): string {\r\n if (percent === 100) {return '#22c55e';\r\n } else if (percent > 0 && percent < 100) {return '#f59e0b';\r\n } else {return 'black';}}\r\n\r\n // eslint-disable-next-line max-lines\r\n getProgressBackground(percent: number): string {\r\n if (percent === 100) {return '#C5F7D7';\r\n } else if (percent > 0 && percent < 100) {return '#ffeadc';\r\n } else {return '#F9FAFB';}}\r\n\r\n /**\r\n * Emits the selected row when a row is clicked.\r\n * @param {any} rowData - The data of the clicked row.\r\n */\r\n onRowClick(rowData: any) {\r\n this.baseStore.setUpdatedData(true);\r\n this.rowSelection = rowData;\r\n this.rowSelectionChange.emit(this.rowSelection);}\r\n\r\n /**\r\n * Handles the click event on a table row.\r\n * If row selection is enabled (`enableSelection` is true), \r\n * it delegates the event to the `onRowClick` method with the provided row data.\r\n * @param {any} rowData - The data object for the clicked table row.\r\n */\r\n handleRowClick(rowData: any): void {\r\n if (this.enableSelection) {\r\n this.onRowClick(rowData);}}\r\n\r\n /**\r\n * Checks if a given row is currently selected.\r\n * @param {any} rowData - The row data to check.\r\n * @returns {boolean} `true` if the row is selected, else `false`.\r\n */\r\n isRowSelected(rowData: any): boolean {\r\n return this.rowSelection?.[this.validDataKey] === rowData[this.validDataKey];}\r\n\r\n onSort(event: any) {\r\n this.sortField = event.field;\r\n this.sortOrder = event.order;\r\n this.sortChanged.emit(event);}\r\n\r\n /**\r\n * Utility: Check if value is array (for template use)\r\n * @param {any} val - The value to check if it is an array.\r\n * @returns {boolean} True if the value is an array, otherwise false.\r\n */\r\n isArray(val: any): boolean {\r\n return Array.isArray(val);\r\n }\r\n\r\n /**\r\n * Utility: Check if value is task items array (for template use)\r\n * @param {any} val - The value to check if it is a task items array.\r\n * @returns {boolean} True if the value is a task items array, otherwise false.\r\n */\r\n isTaskItemsArray(val: any): boolean {\r\n return Array.isArray(val) && val.length > 0 && val[0]?.type && val[0]?.count !== undefined;\r\n }\r\n\r\n shouldShowValue(col: any, rowData: any): boolean {\r\n const value = rowData[col.name];\r\n if (Array.isArray(value) && value.length && value[0]?.initials) {\r\n return false;\r\n }\r\n if (this.isTaskItemsArray(value)) {\r\n return false;\r\n }\r\n return typeof value === 'string' || typeof value === 'number';\r\n }\r\n\r\n /**\r\n * Evaluates ngClass expression for dynamic styling\r\n * @param {string} expression - The ngClass expression to evaluate\r\n * @param {any} rowData - The row data to use in evaluation\r\n * @returns {string} The evaluated CSS classes\r\n */\r\n evaluateNgClass(expression: string, rowData: any): string {\r\n try {\r\n // If the expression is just a list of classes, return as is\r\n if (!expression.includes('?') && !expression.includes(':')) {\r\n return expression;\r\n }\r\n const context = { rowData }; // Otherwise, evaluate as a JS expression\r\n return new Function('rowData', `return ${expression};`)(rowData); \r\n } catch (error) {\r\n console.error('Error evaluating ngClass expression:', error);\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Evaluates ngStyle expression for dynamic inline styles\r\n * @param {string} expression - The ngStyle expression to evaluate\r\n * @param {any} rowData - The row data to use in evaluation\r\n * @returns {any} The evaluated style object\r\n */\r\n evaluateNgStyle(expression: string, rowData: any): any {\r\n try {\r\n return new Function('rowData', `return ${expression};`)(rowData);\r\n } catch (error) {\r\n console.error('Error evaluating ngStyle expression:', error);\r\n return null;\r\n }\r\n }\r\n\r\n getTypeContainerClass(typeValue: string): string {\r\n const expr = this.columnStyles?.['lending']?.containerNgClass;\r\n return expr ? this.evaluateNgClass(expr, { lending: typeValue }) : '';\r\n }\r\n\r\n getTypeTextClass(typeValue: string): string {\r\n const expr = this.columnStyles?.['lending']?.textNgClass;\r\n return expr ? this.evaluateNgClass(expr, { lending: typeValue }) : '';\r\n }\r\n\r\n getRiskContainerClass(riskValue: string): string {\r\n const expr = this.columnStyles?.['riskRating']?.containerNgClass;\r\n return expr ? this.evaluateNgClass(expr, { riskRating: riskValue }) : '';\r\n }\r\n\r\n getRiskTextClass(riskValue: string): string {\r\n const expr = this.columnStyles?.['riskRating']?.textNgClass;\r\n return expr ? this.evaluateNgClass(expr, { riskRating: riskValue }) : '';\r\n }\r\n\r\n getColumnAlignment(columnName: string): string {\r\n if (columnName === 'applicants' || columnName === 'brokerName' || columnName === 'appId' || columnName === 'finance' || columnName === 'securityAddress') {\r\n return 'justify-content-start';\r\n }\r\n return 'justify-content-center';\r\n }\r\n\r\n getSwitchCase(rowData: any, col: any): string {\r\n if (this.isTaskItemsArray(rowData[col.name])) {\r\n return 'taskItems';\r\n }\r\n if (col.name === 'finance' && rowData[col.name]?.isFinance) {\r\n return 'finance';\r\n }\r\n if (col.name === 'appId' && typeof rowData[col.name] === 'object') {\r\n return 'appId';\r\n }\r\n if (col.name === 'brokerName' && typeof rowData[col.name] === 'object' && rowData[col.name]?.brokerName !== undefined) {\r\n return 'broker';\r\n }\r\n if (col.isTwoLine) {\r\n return 'twoLine';\r\n }\r\n if (col.isShowProgressbar) {\r\n return 'progress';\r\n }\r\n return 'default';\r\n }\r\n} "," <lib-skeleton *ngIf=\"isShowSkeleton\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n <p-table\r\n *ngIf=\"table && table.headers && !isShowSkeleton\"\r\n #dt2\r\n [lazy]=\"true\"\r\n (onSort)=\"onSort($event)\"\r\n [paginator]=\"false\"\r\n [rows]=\"metaData?.itemsPerPage ?? 10\"\r\n [totalRecords]=\"metaData?.totalItems ?? 0\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\r\n [columns]=\"table.headers\"\r\n class=\"table-secondary-container\"\r\n [value]=\"table.records\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\"\r\n [dataKey]=\"table.dataKey\"\r\n [selectionMode]=\"selectionMode\"\r\n [(selection)]=\"selection\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [ngClass]=\"tableNgClassExpression ? evaluateNgClass(tableNgClassExpression, {}) : ''\"\r\n >\r\n <!-- Header -->\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr *ngIf=\"table.headers.length > 0\">\r\n <th\r\n *ngFor=\"let col of table.headers; let i = index\"\r\n class=\"table-header-wrapper bg-white\"\r\n [pSortableColumn]=\"col.name\"\r\n [pSortableColumnDisabled]=\"!(table.isSortingAllow && col.isShowSortIcon)\"\r\n [ngClass]=\"[col.width ? col.width : 'w-full', (!showActions && selectionMode !== 'multiple' && (i === table.headers.length - 1)) ? 'table-action-title' : '']\"\r\n style=\"min-width: 100px\"\r\n > \r\n <h4\r\n [ngClass]=\"[\r\n col.class || '', \r\n getColumnAlignment(col.name) === 'justify-content-start' ? 'justify-content-start text-left' : 'justify-content-center text-center'\r\n ]\"\r\n class=\"flex align-items-center table-header-title font-semibold m-0\">\r\n {{ col.displayName || col.name }}\r\n @if(table.isSortingAllow && col.isShowSortIcon){\r\n <p-sortIcon [field]=\"col.name\" />\r\n }\r\n </h4>\r\n </th>\r\n \r\n <th *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" \r\n class=\"table-header-wrapper text-right table-action-title\" style=\"width: 6rem;\">\r\n <h4 class=\"flex align-items-center justify-content-end gap-2 table-header-title capitalize font-semibold m-0\">\r\n <span *ngIf=\"selection?.length && !isSelectAll\">\r\n ({{ selection.length }})\r\n </span>\r\n <p-checkbox\r\n [binary]=\"true\"\r\n [ngModel]=\"isAllCurrentPageSelected\"\r\n (ngModelChange)=\"handleSelectAllRowData($event)\"></p-checkbox>\r\n </h4>\r\n </th>\r\n \r\n <th\r\n *ngIf=\"showActions\"\r\n class=\"table-action-title table-header-wrapper\"\r\n [ngClass]=\"table.headers[0]?.width ? 'w-2' : 'w-2'\"\r\n >\r\n </th>\r\n \r\n </tr>\r\n </ng-template>\r\n \r\n <!-- Body -->\r\n<ng-template pTemplate=\"body\" let-rowData>\r\n <tr *ngIf=\"table.headers.length > 0\" class=\"table-row-wrapper relative table-group-wrapper\">\r\n <!-- one TD per column -->\r\n <td *ngFor=\"let col of table.headers; let j = index\" class=\"p-0 border-none bg-none table-body-row-wrapper\"\r\n (click)=\"handleRowClick(rowData)\"\r\n [ngClass]=\"[rowData._columnWidths ? rowData._columnWidths?.[col.name] : col.width]\">\r\n <div class=\"table-body-wrapper table-row-card-wrapper\"\r\n [ngClass]=\"[\r\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\r\n isRowSelected(rowData) ? 'row-selected' : '',\r\n selection?.includes(rowData) ? 'green-highlight' : ''\r\n ]\">\r\n \r\n <div class=\"flex align-items-center h-full\" [ngClass]=\"getColumnAlignment(col.name)\">\r\n <!-- your existing inner column wrapper -->\r\n <div class=\"row-wrapprt flex align-items-center\" [ngClass]=\"getColumnAlignment(col.name)\">\r\n <ng-container [ngSwitch]=\"getSwitchCase(rowData, col)\">\r\n <!-- task items - check this first -->\r\n <ng-container *ngSwitchCase=\"'taskItems'\">\r\n <div class=\"col-tasks\">\r\n <ng-container *ngFor=\"let taskItem of rowData[col.name]\">\r\n <div class=\"task-item\" [ngClass]=\"taskItem.status === 'warning' ? 'task-warning' : 'task-success'\">\r\n <span>{{ taskItem.type }}</span>\r\n <span class=\"task-badge\">{{ taskItem.count }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- Finance amount with special styling -->\r\n <ng-container *ngSwitchCase=\"'finance'\">\r\n <div class=\"text-black font-semibold\">\r\n {{ rowData[col.name].amount }}\r\n </div>\r\n </ng-container>\r\n \r\n <!-- App ID with type and risk tags -->\r\n <ng-container *ngSwitchCase=\"'appId'\">\r\n <div class=\"w-full text-left\">\r\n <div class=\"font-semibold\">{{ rowData[col.name].appId }}</div>\r\n <div class=\"flex gap-2 justify-content-start app-id-tags\">\r\n <!-- Type chip using style config (lending) -->\r\n <div *ngIf=\"rowData[col.name].type\" [ngClass]=\"getTypeContainerClass(rowData[col.name].type)\">\r\n <p class=\"mb-0\" [ngClass]=\"getTypeTextClass(rowData[col.name].type)\">\r\n {{ rowData[col.name].type }}\r\n </p>\r\n </div>\r\n <!-- Risk chip using style config (riskRating) -->\r\n <div *ngIf=\"rowData[col.name].risk && rowData[col.name].risk.toLowerCase() !== 'unknown'\"\r\n [ngClass]=\"getRiskContainerClass(rowData[col.name].risk)\">\r\n <p class=\"mb-0\" [ngClass]=\"getRiskTextClass(rowData[col.name].risk)\">\r\n {{ rowData[col.name].risk }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n <!-- Broker with name and company name -->\r\n <ng-container *ngSwitchCase=\"'broker'\">\r\n <div class=\"w-full text-left\">\r\n <div class=\"font-medium\">{{ rowData[col.name].brokerName }}</div>\r\n <div *ngIf=\"rowData[col.name].brokerCompanyName\" class=\"text-gray-700\">\r\n {{ rowData[col.name].brokerCompanyName }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!--Render two lines with dynamic classes for any two-line column -->\r\n <ng-container *ngSwitchCase=\"'twoLine'\">\r\n <div class=\"w-full\" [ngClass]=\"[\r\n getColumnAlignment(col.name) === 'justify-content-start' ? 'text-left' : 'text-center',\r\n col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : ''\r\n ]\">\r\n <div class=\"row-multi-line-wrapper\"\r\n [ngClass]=\"col.line1NgClassExpression ? evaluateNgClass(col.line1NgClassExpression, rowData) : ''\">\r\n {{ rowData[col.name]?.addressLine1 }}\r\n </div>\r\n <div class=\"row-multi-line-wrapper font-bold\"\r\n [ngClass]=\"col.line2NgClassExpression ? evaluateNgClass(col.line2NgClassExpression, rowData) : ''\">\r\n {{ rowData[col.name]?.postCode }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- progress bar -->\r\n <ng-container *ngSwitchCase=\"'progress'\">\r\n <div class=\"progress-wrapper\">\r\n <round-progress [current]=\"rowData['taskCompletionPercent']\" [max]=\"100\"\r\n [color]=\"getProgressColor(rowData['taskCompletionPercent'])\"\r\n [background]=\"getProgressBackground(rowData['taskCompletionPercent'])\" [radius]=\"125\" [stroke]=\"20\"\r\n [semicircle]=\"false\" [rounded]=\"true\" [clockwise]=\"true\" [responsive]=\"false\" [duration]=\"800\"\r\n [animation]=\"'easeInOutQuart'\" [animationDelay]=\"0\">\r\n </round-progress>\r\n <div class=\"progress-title\" [ngStyle]=\"{color: getProgressColor(rowData['taskCompletionPercent'])}\">\r\n {{ rowData[col.name] }}\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n <!-- Default cell rendering for other columns -->\r\n <ng-container *ngSwitchDefault>\r\n <!-- Don't render default content if we have task items -->\r\n <ng-container *ngIf=\"!isTaskItemsArray(rowData[col.name])\">\r\n <div\r\n class=\"table-text-wrapper text-center p-0 flex align-items-center\"\r\n [ngClass]=\"[\r\n getRowClass(col, rowData),\r\n j === 0 ? 'justify-content-start' : 'justify-content-center'\r\n ]\"\r\n [ngStyle]=\"{ 'font-weight': col.name === table.showDecriptionFor ? 'bold' : 'normal' }\"\r\n >\r\n <i\r\n *ngIf=\"rowData[col.name]?.icon\"\r\n class=\"pi pr-2\"\r\n [ngClass]=\"[rowData[col.name].icon, rowData[col.name].iconClass]\"\r\n ></i>\r\n <div *ngIf=\"!col.skipParentNgClass\" [ngClass]=\"col.containerNgClassExpression ? evaluateNgClass(col.containerNgClassExpression, rowData) : ''\">\r\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\r\n </div>\r\n <ng-container *ngIf=\"col.skipParentNgClass\">\r\n <div class=\"w-full text-left\">\r\n <ng-container *ngTemplateOutlet=\"bubbleOrFallback\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-template #bubbleOrFallback>\r\n <ng-container *ngIf=\"isArray(rowData[col.name]) && rowData[col.name].length && rowData[col.name][0]?.fullName\">\r\n <div class=\"flex flex-column gap-1\">\r\n <ng-container *ngFor=\"let bubble of rowData[col.name]; let i = index\">\r\n <div\r\n *ngIf=\"bubble.isCustomerVulnerable\"\r\n class=\"px-2 py-1 border-round-2xl inline-block bg-red-600 text-white\"\r\n >\r\n {{ bubble.fullName }}\r\n </div>\r\n <div\r\n *ngIf=\"!bubble.isCustomerVulnerable\"\r\n class=\"text-gray-700\"\r\n >\r\n {{ bubble.fullName }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"shouldShowValue(col, rowData)\">\r\n <p class=\"mb-0\" [ngClass]=\"col.textNgClassExpression ? evaluateNgClass(col.textNgClassExpression, rowData) : ''\">\r\n {{ rowData[col.name] }}\r\n </p>\r\n </ng-container>\r\n </ng-template>\r\n <div\r\n *ngIf=\"col.name === table.showDecriptionFor && rowData[table.descriptionColumnName]\"\r\n class=\"text-black-500 text-sm mt-1\"\r\n style=\"font-weight: 600;\"\r\n >\r\n {{ rowData[table.descriptionColumnName] }}\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- Checkbox column -->\r\n <td *ngIf=\"selectionMode === 'multiple' && (!isUwLogin || (isUwLogin && (selectedQueueName === 'Unassigned')))\" class=\"text-right p-0 border-none bg-none table-body-row-wrapper\"\r\n style=\"width: 4rem\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"table-body-wrapper table-select-row-wrapper flex align-items-center justify-content-end\"\r\n [ngClass]=\"[\r\n rowData.rowNgClassExpression ? evaluateNgClass(rowData.rowNgClassExpression, rowData) : '',\r\n isRowSelected(rowData) ? 'row-selected' : '',\r\n selection?.includes(rowData) ? 'green-highlight' : ''\r\n ]\">\r\n <p-tableCheckbox [value]=\"rowData\" [disabled]=\"!enableSelection\"></p-tableCheckbox>\r\n </div>\r\n </td>\r\n\r\n <!-- Actions column -->\r\n <td *ngIf=\"showActions\" class=\"action-data-wrapper text-left table-body-wrapper\">\r\n <div *ngIf=\"(rowData.isRowDelete !== null || rowData.canDelete !== undefined) ? (showActions && rowData.isRowDelete) : showActions\" class=\"flex align-items-center justify-content-center\">\r\n <p-button\r\n icon=\"pi pi-trash\"\r\n (click)=\"deleteRow($event, rowData)\"\r\n class=\"delete-icon-wrapper mr-3\"\r\n [disabled]=\"!enableSelection\"\r\n ></p-button>\r\n </div>\r\n </td>\r\n </tr>\r\n</ng-template>\r\n \r\n <!-- Empty Message -->\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td\r\n [attr.colspan]=\"table.headers.length + (showActions ? 1 : 0) + (selectionMode === 'multiple' ? 1 : 0)\"\r\n class=\"text-center text-color font-semibold p-4\"\r\n >\r\n {{ noRecordsMessage }}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n\r\n<!-- Paginator -->\r\n<div class=\"paginator-container flex align-items-center justify-content-center table-pagination-wrapper\" *ngIf=\"usePagination\">\r\n <div class=\"pagination-text text-color\">\r\n Showing {{ metaData.totalItems > 0 ? ((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10) + 1 : 0 }} to {{ recordNumber }} of {{ metaData?.totalItems ?? 0 }} entries\r\n </div>\r\n\r\n <p-paginator\r\n #paginator\r\n [first]=\"((metaData?.currentPage ?? 1) - 1) * (metaData?.itemsPerPage ?? 10)\"\r\n [rows]=\"metaData?.itemsPerPage ?? 10\"\r\n [totalRecords]=\"metaData?.totalItems ?? 0\"\r\n [rowsPerPageOptions]=\"[10, 20, 30, 40, 50]\"\r\n (onPageChange)=\"handleLoadRecords($event)\"\r\n ></p-paginator>\r\n</div> ","import { SHARED } from \"../../constant/SHARED\";\r\n\r\nexport class TableSecondaryModel {\r\n name!: string;\r\n headers!: any[];\r\n records!: any[];\r\n columnStyles?: StyleClass;\r\n sortField?:string\r\n dataKey?:string\r\n groupRowsBy?:string;\r\n showDecriptionFor ?: string\r\n descriptionColumnName : string = SHARED.EMPTY\r\n isSortingAllow : boolean = SHARED.TRUE\r\n rows: any;\r\n}\r\n\r\nexport class StyleClass{\r\n class : string = SHARED.EMPTY\r\n value : string = SHARED.EMPTY\r\n} ","import { AttributeModel } from \"../../models/attribute.model\";\r\n\r\nexport class TableSecondaryHeaderModel{\r\n name!: string;\r\n attributes!: AttributeModel;\r\n width!: string;\r\n} ","import { BaseModel } from \"../../../shared\";\r\n\r\nexport class ApiConfigModel extends BaseModel{\r\n name ?: string;\r\n path?: string;\r\n isActive!: boolean;\r\n parentapiConfigId!: string;\r\n parentKey!: string;\r\n description?:string;\r\n getByIDPath?:string;\r\n idProperty?:string;\r\n authHeaderName?: string;\r\n authToken?: string;\r\n}","export class MESSAGE {\r\n static VALIDATE_SUCCESS_MESSAGE = \"API validation completed successfully! Your API is now ready for use.\";\r\n static VALIDATE_ACTION_SUCCESS_MESSAGE = \"Validation action was successful. The configuration is valid.\"\r\n static QUERY_CHANGE_EVENT = \"Query Change Event:\";\r\n static DELETE_DICTIONARY_ITEM_SUCCESS = \"Dictionary item deleted successfully.\";\r\n static DATA_FETCH_SUCCESS = \"Data has been fetched successfully.\"\r\n}","import { DATASOURCES } from \"./DATASOURCES\";\r\n\r\nexport class LISTCONFIG {\r\n private static createConfig(name: string, dataSource: string): object {\r\n return {\r\n name: name,\r\n dataSource: dataSource,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\"\r\n };\r\n }\r\n \r\n static APICONFIG = [\r\n LISTCONFIG.createConfig(\"parentapiConfigId\", DATASOURCES.APIMANAGEMENT)\r\n ];\r\n \r\n static QUEUECONFIG = [\r\n LISTCONFIG.createConfig(\"queueID\", \"Queues\")\r\n ];\r\n\r\n static ACTIONQUEUECONFIG = [\r\n LISTCONFIG.createConfig(\"queueId\", \"Queues\")\r\n ];\r\n\r\n static QUEUEAPICONFIG = [\r\n LISTCONFIG.createConfig(\"apiConfigId\", DATASOURCES.APIMANAGEMENT)\r\n ];\r\n }","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared';\r\nimport { ApiConfigModel } from '../models/api-config.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'apiManagementStore' })\r\n\r\nexport class ApiAdminStore extends BaseStore<ApiConfigModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiAdminStore } from './api-admin.store';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { ApiConfigModel } from '../models/api-config.model';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\n\r\n/**\r\n * Service for managing API configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class ApiAdminService extends BaseService<ApiConfigModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected apiManagementStore: ApiAdminStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, apiManagementStore, configService, listService);\r\n this._pathName = DATASOURCES.APIMANAGEMENT;\r\n }\r\n\r\n protected override list : any= LISTCONFIG.APICONFIG\r\n\r\n checkApiByPathName(name:string, record:any): Observable<ApiConfigModel[]> {\r\n return this.http.post<ApiConfigModel[]>(this.apiUrl+name, record).pipe(\r\n tap((entities: ApiConfigModel[]) => this.apiManagementStore.set(entities))\r\n );\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { Message, SelectItem } from 'primeng/api';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED } from '../../../../shared';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { ROUTES } from '../../../../shared/constant/ROUTES';\r\nimport { ApiAdminService } from '../../state/api-admin.service';\r\nimport { ApiAdminStore } from '../../state/api-admin.store';\r\nimport { ApiConfigModel } from '../../models/api-config.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\r\n\r\n\r\n/**\r\n * Form component for creating and updating API configurations.\r\n */\r\n@Component({\r\n selector: 'lib-api-admin-form',\r\n templateUrl: './api-admin-form.component.html',\r\n styleUrl: './api-admin-form.component.scss',\r\n standalone: false,\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class ApiAdminFormComponent extends BaseFormComponent<ApiConfigModel> implements OnInit , OnDestroy{\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n name: string = SHARED.EMPTY;\r\n selectedParentId!: string;\r\n filteredRecords: string[] = SHARED.EMPTYARRAY;\r\n dropdownOptions: any[] = SHARED.EMPTYARRAY;\r\n apiPropertyList!: SelectItem[];\r\n\r\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>) {\r\n super(apiAdminService, validatorService, router, activatedRoute)\r\n this.record = new ApiConfigModel();\r\n this.record.isActive = true;\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n console.log(this.record);\r\n this.recordChange.asObservable().subscribe((record) => {\r\n if(record.parentapiConfigId){\r\n this.parentApiProperties(record.parentapiConfigId);\r\n }\r\n });\r\n this.baseStore.setIsApiValidated(false);\r\n }\r\n\r\n hanldeValidateApi() {\r\n const payload = {\r\n path: this.record.path,\r\n getByIDPath : this.record.getByIDPath,\r\n idProperty : this.record.idProperty,\r\n authHeaderName : this.record.authHeaderName,\r\n authToken : this.record.authToken\r\n }\r\n if (this.record.path) {\r\n this.apiAdminService.checkApiByPathName(ROUTES.VALIDATEAPI, payload).subscribe({\r\n next: (res: any) => {\r\n if (res && res.isValid) {\r\n this.handleErrorAndSuccess(res.isValid, res.message)\r\n }else{\r\n this.handleErrorAndSuccess(res.isValid, SHARED.EMPTY)\r\n }\r\n },\r\n error: (error: any) => {\r\n this.handleErrorAndSuccess(false, error.message)\r\n },\r\n });\r\n } else {\r\n this.handleErrorAndSuccess(false, ERROR.VALIDATE_API_FAILED)\r\n }\r\n }\r\n\r\n handleModelChange(event: string) {\r\n this.parentApiProperties(event);\r\n }\r\n\r\n parentApiProperties(event:string) {\r\n if (event) {\r\n this.apiAdminService.getById(event).subscribe((res: any) => {\r\n this.apiPropertyList = res.properties.map((property: string) => ({\r\n label: property,\r\n value: property\r\n }));\r\n })\r\n } else {\r\n this.record.parentKey = SHARED.EMPTY;\r\n this.apiPropertyList = SHARED.EMPTYARRAY;\r\n }\r\n }\r\n\r\n handleErrorAndSuccess(isValid:boolean, error:any){\r\n if(isValid){\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_SUCCESS_MESSAGE }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n this.baseStore.setIsApiValidated(SHARED.TRUE);\r\n }else{\r\n this.baseStore.setIsApiValidated(SHARED.FALSE);\r\n }\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as ApiConfigModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n\r\n","<form-container\r\n [record]=\"record\"\r\n [headerText]=\"'Api Management Form'\"\r\n [messages]=\"messages\"\r\n (onSave)=\"handleSubmit()\"\r\n [showSave]=\"true\" \r\n (onCancel)=\"handleCancel()\"\r\n>\r\n <div class=\"card p-fluid p-formgrid grid m-0 mb-6\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Api Management Form</h4>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Name',\r\n placeholder: 'Enter Name'\r\n }\"\r\n ></text-box>\r\n </div>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'path',\r\n isRequired: true,\r\n displayText: 'Path',\r\n placeholder: 'Enter Path'\r\n }\"\r\n ></text-box>\r\n </div>\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"apiAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'getByIDPath',\r\n isRequired: false,\r\n displayText: 'Get By ID Path',\r\n placeholder: 'Enter getByID Path'\r\n }\"\r\n ></text-box>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'idProperty',\r\n isRequired: true,\r\n displayText: 'Id Property',\r\n placeholder: 'Enter Id Property'\r\n }\"\r\n ></text-box>\r\n </div>\r\n\r\n <div class=\"w-full px-2 mt-2 flex justify-content-end\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Validate\"\r\n (click)=\"hanldeValidateApi()\"\r\n class=\"p-button-raised validate-btn-wrapper\"\r\n ></button>\r\n </div>\r\n </div>\r\n <div class=\"card p-fluid p-formgrid grid \">\r\n <h4 class=\"font-bold col-12 md:col-12\">Other Details</h4>\r\n <div class=\"col-12 md:col-12 p-0 m-0 flex align-items-center\">\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'authHeaderName',\r\n isRequired: false,\r\n displayText: 'Auth Header',\r\n placeholder: 'Enter Auth Header'\r\n }\"\r\n ></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'authToken',\r\n isRequired: false,\r\n displayText: 'Token',\r\n placeholder: 'Enter token'\r\n }\"\r\n ></text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name: 'parentapiConfigId',\r\n dataSource: 'api-configurations',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id', \r\n displayText: 'Select Parent',\r\n placeholder: 'Select Parent API',\r\n childListName: 'parentKey',\r\n childListKey: 'name'\r\n }\"\r\n (onInput)=\"handleModelChange($event)\"\r\n ></dropdown>\r\n\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name:'parentKey',\r\n displayText : 'Property',\r\n placeholder: 'Select Property',\r\n options: apiPropertyList\r\n }\"></dropdown>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <text-area\r\n [store]=\"apiAdminStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'description',\r\n isRequired: false,\r\n displayText: 'Description',\r\n placeholder: 'Enter Description'\r\n }\"\r\n ></text-area>\r\n </div>\r\n </div>\r\n</form-container>","export class PERMISSION {\r\n static ACTIONCONFIG_PUT = 'ActionConfigurations-PUT'\r\n static ACTIONCONFIG_DELETE = 'ActionConfigurations-DELETE'\r\n static API_CONFIG_PUT = 'ApiConfigurations-PUT'\r\n static API_CONFIG_DELETE = 'ApiConfigurations-DELETE'\r\n static DD_ADMIN_PUT = 'DataDictionaries-PUT'\r\n static DD_ADMIN_DELETE = 'DataDictionaries-DELETE'\r\n static MESSAGE_TEMPLATE_PUT = 'MessageTemplates-PUT'\r\n static MESSAGE_TEMPLATE_DELETE = 'MessageTemplates-DELETE'\r\n static WIDGETS_PUT = 'Widgets-PUT'\r\n static WIDGETS_DELETE = 'Widgets-DELETE'\r\n static WIDGETS_EVALUATE = 'Widgets-evaluate'\r\n static QUEUES_GET = 'Queues-GET'\r\n static QUEUES_POST = 'Queues-POST'\r\n static QUEUES_PUT = 'Queues-PUT'\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { BaseListComponent, DATASOURCES, TableBuilder, apiHiddenHeaderList } from '../../../../shared';\r\nimport { ApiConfigModel } from '../../models/api-config.model';\r\nimport { ApiAdminService } from '../../state/api-admin.service';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n\r\n/**\r\n * ApiAdminListComponent\r\n */\r\n@Component({\r\n selector: 'lib-api-admin-list',\r\n templateUrl: './api-admin-list.component.html',\r\n styleUrl: './api-admin-list.component.scss',\r\n standalone : false\r\n})\r\nexport class ApiAdminListComponent extends BaseListComponent<ApiConfigModel> implements OnInit {\r\n\r\n override editPermission: string = PERMISSION.API_CONFIG_PUT\r\n override deletePermission: string = PERMISSION.API_CONFIG_DELETE\r\n pathName:string = DATASOURCES.APIMANAGEMENT;\r\n constructor(apiAdminService : ApiAdminService, private tableBuilder : TableBuilder ){\r\n super(apiAdminService, tableBuilder)\r\n this.tableBuilder.hiddenHeaders = apiHiddenHeaderList;\r\n }\r\n ngOnInit() {\r\n this.init()\r\n }\r\n}","\r\n@if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\r\n </lib-table-primary>\r\n}","import { APP_INITIALIZER, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ApiAdminFormComponent } from './components/api-admin-form/api-admin-form.component';\r\nimport { ApiAdminListComponent } from './components/api-admin-list/api-admin-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AppConfigService, CheckBoxComponent, PasswordComponent, SharedModule, TablePrimaryComponent, UsernameComponent } from '../../shared';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [ApiAdminFormComponent ,ApiAdminListComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n HttpClientModule,\r\n ButtonModule,\r\n UsernameComponent,\r\n PasswordComponent,\r\n TextAreaComponent,\r\n TablePrimaryComponent,\r\n CheckBoxComponent\r\n ],\r\n exports : [ApiAdminFormComponent, ApiAdminListComponent],\r\n providers: [\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (configService: AppConfigService) => () =>\r\n configService.loadAppConfig(),\r\n deps: [AppConfigService],\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ApiAdminModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared';\r\nimport { WidgetModel } from '../models/widget.model';\r\n\r\n/**\r\n * Widget Admin Store\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'widgetStore' })\r\nexport class WidgetAdminStore extends BaseStore<WidgetModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\nimport { WidgetAdminStore } from './widget-admin.store';\r\nimport { WidgetModel } from '../models/widget.model';\r\n\r\n/**\r\n * Service for managing widget configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetAdminService extends BaseService<WidgetModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected apiManagementStore: WidgetAdminStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, apiManagementStore, configService, listService);\r\n this._pathName = DATASOURCES.WIDGET;\r\n }\r\n\r\n protected override list: any = [\r\n {\r\n name: \"apiConfigId\",\r\n dataSource: DATASOURCES.APIMANAGEMENT,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryID\",\r\n dataSource: DATASOURCES.DICTIONARY,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryItemID\",\r\n dataSource: \"DataDictionaries/dictionaryItems\",\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"key\",\r\n },\r\n {\r\n name: \"linkedWidgetID\",\r\n dataSource: DATASOURCES.WIDGET,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n\r\n ]\r\n\r\n /**\r\n * Cleans and parses a malformed style JSON string\r\n * @param {string} rawStyleStr - The raw style string from API or DB\r\n * @returns {Record<string, any> | null} - Parsed style object or null if parsing fails\r\n */\r\n sanitizeStyleString(rawStyleStr: string): Record<string, any> | null {\r\n try {\r\n if (!rawStyleStr) return {};\r\n rawStyleStr = rawStyleStr.replace(/\"\"/g, '\"');\r\n rawStyleStr = rawStyleStr.replace(/([{,]\\s*)([a-zA-Z0-9_]+)\\s*:/g, '$1\"$2\":');\r\n const parsed = JSON.parse(rawStyleStr);\r\n return typeof parsed === 'object' && parsed !== null ? parsed : null;\r\n } catch (err) {\r\n console.error('Failed to parse style string:', rawStyleStr, err);\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { BaseListComponent, DATASOURCES, TableBuilder, widgetHiddenHeaderList } from '../../../../shared';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetAdminService } from '../../state/widget-admin.service';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n/**\r\n * Widget Admin List Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-admin-list',\r\n standalone: false,\r\n templateUrl: './widget-admin-list.component.html',\r\n styleUrl: './widget-admin-list.component.scss'\r\n})\r\nexport class WidgetAdminListComponent extends BaseListComponent<WidgetModel> {\r\n \r\n pathName:string = DATASOURCES.WIDGET;\r\n override editPermission: string = PERMISSION.WIDGETS_PUT\r\n override deletePermission: string = PERMISSION.WIDGETS_DELETE\r\n constructor(widgetAdminService: WidgetAdminService, private tableBuilder: TableBuilder) {\r\n super(widgetAdminService, tableBuilder);\r\n this.tableBuilder.hiddenHeaders = widgetHiddenHeaderList;\r\n }\r\n\r\n ngOnInit() {\r\n this.init()\r\n }\r\n}","@if(table){\r\n<lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\r\n\r\n</lib-table-primary>\r\n}","import { BaseModel } from \"../../../shared\";\r\nimport { StyleConfig, WidgetStyleConfig } from \"../../../widget/models/widget.model\";\r\n\r\n/**\r\n * WidgetModel class represents the model of a widget.\r\n */\r\nexport class WidgetModel extends BaseModel {\r\n name!: string;\r\n apiConfigId!: string;\r\n dataItems: WidgetItemModel[] = [];\r\n order?: number;\r\n headerDictionaryID!: string;\r\n subHeaderDictionaryID!: string;\r\n headerDictionaryItemID!: string;\r\n subHeaderDictionaryItemID!: string;\r\n style?: any;\r\n layoutType?: string;\r\n isActive!: boolean;\r\n}\r\n\r\n/**\r\n * WidgetItemModel class represents the model of a widget item.\r\n */\r\nexport class WidgetItemModel extends BaseModel{\r\n name!: string;\r\n dictionaryItemID!: string;\r\n dictionaryID!: string;\r\n style?: any;\r\n isActive: boolean = true;\r\n}\r\n\r\nexport interface WidgetLayoutTypeModel {\r\n name: string;\r\n value: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { BaseQuery } from '../../../shared';\r\nimport { WidgetModel } from '../models/widget.model';\r\nimport { WidgetAdminStore } from './widget-admin.store';\r\n\r\n\r\n/**\r\n * Widget Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetAdminQuery extends BaseQuery<WidgetModel> {\r\n\r\n constructor(protected override store: WidgetAdminStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { WidgetItemModel, WidgetLayoutTypeModel, WidgetModel } from '../../models/widget.model';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, ERROR, SHARED, widgetLayoutTypeList } from '../../../../shared';\r\nimport { WidgetAdminService } from '../../state/widget-admin.service';\r\nimport { WidgetAdminQuery } from '../../state/widget-admin.query';\r\nimport { WidgetAdminStore } from '../../state/widget-admin.store';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { List } from '../../../../shared/models/list.model';\r\nimport { SelectItem } from 'primeng/api';\r\n\r\n/**\r\n * WidgetAdminFormComponent\r\n */\r\n@Component({\r\n selector: 'lib-widget-admin-form',\r\n standalone: false,\r\n templateUrl: './widget-admin-form.component.html',\r\n styleUrl: './widget-admin-form.component.scss',\r\n})\r\nexport class WidgetAdminFormComponent extends BaseFormComponent<WidgetModel> implements OnInit, OnDestroy {\r\n\r\n widgetItem!: WidgetItemModel;\r\n widgetItems: WidgetItemModel[] = [];\r\n dictionaries: any[] = [];\r\n headerDictionaryItems: any[]=[];\r\n subHeaderDictionaryItems: any[] = [];\r\n dictionaryItemArray: any[][] = [];\r\n widgetOptionsArray: SelectItem[] = [];\r\n widgetLayoutTypeList: WidgetLayoutTypeModel[] = widgetLayoutTypeList;\r\n\r\n constructor(\r\n override service: WidgetAdminService,\r\n override validatorService: ValidatorService,\r\n public widgetStore: WidgetAdminStore,\r\n private query: WidgetAdminQuery,\r\n override router: Router,\r\n override activatedRoute: ActivatedRoute,\r\n override baseStore: BaseStore<WidgetModel>,\r\n override baseQuery: BaseQuery<WidgetModel>\r\n ) {\r\n super(service, validatorService, router, activatedRoute);\r\n this.record = new WidgetModel();\r\n this.record.isActive = true;\r\n this.widgetItem = new WidgetItemModel();\r\n }\r\n\r\n ngOnInit(): void {\r\n super.init();\r\n this.baseStore.setIsApiValidated(null);\r\n this.recordChange.asObservable().subscribe((record) => {\r\n this.handleAPIChange(record.queueID);\r\n this.handleHeaderDictionarySelect(record.headerDictionaryID);\r\n this.handleSubHeaderDictionarySelect(record.subHeaderDictionaryID);\r\n if(record?.dataItems?.length > 0) {\r\n record.dataItems.forEach((item:WidgetItemModel, index:number) => {\r\n this.handleWidgetItemDictionarySelect(item.dictionaryID, index);\r\n });\r\n }\r\n });\r\n }\r\n\r\n handleWidgetItemAddBtnClick() {\r\n if(!(this.record.name && this.record.apiConfigId)) return;\r\n if (Array.isArray(this.record.dataItems)) {\r\n const hasEmptyItem = this.record.dataItems.some((item: WidgetItemModel) => {\r\n const isItemNameEmpty = !item.name || item.name.trim() === SHARED.EMPTY;\r\n const isDictionaryEmpty = !item.dictionaryID || item.dictionaryID.trim() === SHARED.EMPTY;\r\n const isDictionaryItemEmpty = !item.dictionaryItemID || item.dictionaryItemID.trim() === SHARED.EMPTY;\r\n return isItemNameEmpty && isDictionaryItemEmpty && isDictionaryEmpty;\r\n });\r\n \r\n if (hasEmptyItem) {\r\n return;\r\n }\r\n } else {\r\n this.record.dataItems = [];\r\n }\r\n this.record.dataItems = [...this.record.dataItems, new WidgetItemModel()];\r\n }\r\n\r\n handleAPIChange(event:any){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\r\n this.dictionaries = allDictionaryRecords?.filter((item) => item.apiConfigId === event) || [];\r\n });\r\n }\r\n\r\n handleHeaderDictionarySelect(dictionaryId:string){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.headerDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n handleSubHeaderDictionarySelect(dictionaryId: any) {\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.subHeaderDictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n handleWidgetItemDictionarySelect(dictionaryId: any, index: number) {\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.dictionaryItemArray[index] = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n handleDeleteRecord(index: number) {\r\n if (index >= 0 && index < this.record.dataItems.length) {\r\n this.record.dataItems = this.record.dataItems.filter((_, i) => i !== index);\r\n } else {\r\n console.error(ERROR.INVALID_INDEX, index);\r\n }\r\n }\r\n\r\n override handleSubmit(): void {\r\n if (typeof this.record.style === 'string') {\r\n const parsedStyle = this.service.sanitizeStyleString(this.record.style);\r\n this.record.style = parsedStyle ? parsedStyle : {};\r\n }\r\n\r\n this.record.dataItems = this.record.dataItems.map((item) => {\r\n if (typeof item.style === 'string') {\r\n const parsed = this.service.sanitizeStyleString(item.style);\r\n item.style = parsed ? parsed : {};\r\n }\r\n return item;\r\n });\r\n super.handleSubmit();\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as WidgetModel;\r\n super.ngOnDestroy();\r\n }\r\n}","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\r\n (onCancel)=\"handleCancel()\">\r\n <div class=\"card p-fluid p-formgrid\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Widget Form</h4>\r\n <div class=\"col-12 md:col-12 mt-2 mb-2 flex\">\r\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\r\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Name',\r\n placeholder: 'Enter Widget Name'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-3 md:col-3 mt-2 mb-2\">\r\n <dropdown [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'apiConfigId',\r\n displayText : 'Select API',\r\n isRequired:true,\r\n }\" (onInput)=\"handleAPIChange($event)\">\r\n </dropdown>\r\n </div>\r\n\r\n <div class=\"col-4 md:col-4 mt-2 mb-2\">\r\n <text-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'style',\r\n isRequired: false,\r\n displayText: 'Style',\r\n placeholder: 'Enter Widget Style'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"widgetStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n <div class=\"grid align-items-center m-0\">\r\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'headerDictionaryID',\r\n listLabelProperty:'name',\r\n listValueProperty:'_id',\r\n displayText : 'Select Dictionary',\r\n options: dictionaries\r\n }\" (onInput)=\"handleHeaderDictionarySelect($event)\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'headerDictionaryItemID',\r\n listLabelProperty:'itemName',\r\n listValueProperty:'_id',\r\n displayText : 'Select Header Item',\r\n options: headerDictionaryItems\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-6 md:col-5 mt-2 mb-2 flex\">\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'subHeaderDictionaryID',\r\n listLabelProperty:'name',\r\n listValueProperty:'_id',\r\n displayText : 'Select Dictionary',\r\n options: dictionaries\r\n }\" (onInput)=\"handleSubHeaderDictionarySelect($event)\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-6 pl-2 pb-0 mb-2 md:mr-2 md:col-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'subHeaderDictionaryItemID',\r\n listLabelProperty:'itemName',\r\n listValueProperty:'_id',\r\n displayText : 'Select SubHeader Item',\r\n options: subHeaderDictionaryItems\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-6 md:col-2 mt-2 mb-2 flex\">\r\n <div class=\"field col-12 pl-2 pb-0 mb-2 md:mr-2 md:col-12\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name:'layoutType',\r\n listLabelProperty:'name',\r\n listValueProperty:'value',\r\n displayText : 'Select Layout Type',\r\n options: widgetLayoutTypeList\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field p-0 pr-2 col-12 md:col-2\">\r\n <div class=\"card m-0 p-0 mb-2\">\r\n <div class=\"mt-3 w-full flex\">\r\n <button pButton pRipple routerLinkActive=\"router-link-active\"\r\n icon=\"pi pi-plus font-semibold\"\r\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\r\n (click)=\"handleWidgetItemAddBtnClick()\">\r\n <span class=\"ml-3\">Add Widget Item </span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Widget Items -->\r\n <div class=\"feild-card col-12 md:col-12 flex\" *ngFor=\"let widgetItem of record.dataItems; let i = index;\">\r\n <div class=\"field col-2 col-sm-6\">\r\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name : 'name',\r\n readonly : false,\r\n displayText : 'Item Label',\r\n isRequired : true,\r\n }\"></text-box>\r\n </div>\r\n <div class=\"field col-2 col-sm-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name:'dictionaryID',\r\n listLabelProperty:'name',\r\n listValueProperty:'_id',\r\n displayText : 'Select Dictionary',\r\n isRequired:true,\r\n options: dictionaries\r\n }\" (onInput)=\"handleWidgetItemDictionarySelect($event, i)\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-2 col-sm-6\">\r\n <dropdown [store]=\"widgetStore\" [isStaticDropdown]=\"true\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name:'dictionaryItemID',\r\n listLabelProperty:'itemName',\r\n listValueProperty:'_id',\r\n displayText : 'Select Properties',\r\n isRequired:true,\r\n options: dictionaryItemArray[i]\r\n }\">\r\n </dropdown>\r\n </div>\r\n <div class=\"field col-4 col-sm-6\">\r\n <text-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name : 'style',\r\n readonly : false,\r\n displayText : 'Item Style',\r\n isRequired : false,\r\n }\"></text-box>\r\n </div>\r\n <div class=\"field col-4 m-0 flex justify-content-center md:col-2 mt-5\">\r\n <div class=\"m-0\">\r\n <check-box [store]=\"widgetStore\" [record]=\"widgetItem\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Is Active ?',\r\n }\">\r\n </check-box>\r\n </div>\r\n <div class=\"ml-4 delete-icon-container\">\r\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\" (click)=\"handleDeleteRecord(i)\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</form-container>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent } from '../../shared';\r\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\r\nimport { WidgetAdminListComponent } from './components/widget-admin-list/widget-admin-list.component';\r\nimport { WidgetAdminFormComponent } from './components/widget-admin-form/widget-admin-form.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n\r\n\r\n/**\r\n * Module for managing widgets.\r\n */\r\n@NgModule({\r\n declarations: [WidgetAdminListComponent, WidgetAdminFormComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n TablePrimaryComponent,\r\n DropdownComponent,\r\n CheckBoxComponent,\r\n ButtonComponent,\r\n ButtonModule,\r\n TextBoxComponent\r\n ],\r\n exports: [WidgetAdminListComponent, WidgetAdminFormComponent]\r\n})\r\nexport class QWWidgetAdminModule { }\r\n","import { BaseModel } from \"../../../shared\";\r\n\r\nexport class QueueModel extends BaseModel {\r\n name?: string;\r\n description?: string;\r\n apiConfigId!: string;\r\n rules?: any;\r\n properties?: any;\r\n itemCount?: any;\r\n apiConfigUrl: string = \"\";\r\n detailsApiConfigUrl?: string;\r\n header?: string;\r\n subHeader?: string;\r\n isActive?: boolean;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { EntityStore, StoreConfig } from \"@datorama/akita\";\r\nimport { createInitialState, QueueState } from \"./queue.state\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { BaseStore } from \"../../../shared\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\n@StoreConfig({ name: \"queues\" })\r\nexport class QueueStore extends BaseStore<QueueModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { QueueStore } from \"./queue.store\";\r\nimport { BaseQuery } from \"../../../shared/state/base.query\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class QueueQuery extends BaseQuery<QueueModel> {\r\n constructor(protected override store: QueueStore) {\r\n super(store);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { AppConfigService, BaseService, DATASOURCES, URLS } from \"../../../shared\";\r\nimport { QueueStore } from \"./queue.store\";\r\nimport { ListService } from \"../../../shared/services/list.service\";\r\nimport { Observable, tap } from \"rxjs\";\r\nimport { LISTCONFIG } from \"../../../shared/constant/LIST-CONFIG\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class QueueService extends BaseService<QueueModel> {\r\n constructor(\r\n public queueStore: QueueStore,\r\n http: HttpClient,\r\n appConfigService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, queueStore, appConfigService, listService);\r\n this._pathName = DATASOURCES.QUEUES;\r\n }\r\n\r\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG;\r\n getbyApiPath(id: string): Observable<QueueModel[]> {\r\n return this.http\r\n .get<QueueModel[]>(`${this.apiUrl}${DATASOURCES.APIMANAGEMENT}/${id}`)\r\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\r\n }\r\n\r\n getCaseById(url: string): Observable<any> {\r\n return this.http\r\n .get<QueueModel[]>(url)\r\n .pipe(tap((entities: QueueModel[]) => this.queueStore.set(entities)));\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { QueryBuilderConfig } from \"@kerwin612/ngx-query-builder\";\r\nimport { QueueQuery } from \"../../state/queue.query\";\r\nimport { QueueModel } from \"../../models/queue.model\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { BaseFormComponent, SHARED, ERROR, BaseStore, BaseQuery } from \"../../../../shared\";\r\nimport { QueueStore } from \"../../state/queue.store\";\r\nimport { ValidatorService } from \"../../../../shared/services/validator.service\";\r\nimport { QueueService } from \"../../state/queue.service\";\r\nimport { MESSAGE } from \"../../../../shared/constant/MESSAGES\";\r\nimport { Message } from \"primeng/api\";\r\nimport { takeUntil } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"lib-queue-admin-form\",\r\n standalone: false,\r\n templateUrl: \"./queue-admin-form.component.html\",\r\n styleUrl: \"./queue-admin-form.component.scss\",\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class QueueAdminFormComponent\r\n extends BaseFormComponent<QueueModel>\r\n implements OnInit, OnDestroy\r\n{\r\n constructor(\r\n public queueQuery: QueueQuery,\r\n public queueService: QueueService,\r\n override activatedRoute: ActivatedRoute,\r\n public queueStore: QueueStore,\r\n override validatorService: ValidatorService,\r\n override router: Router,\r\n override baseStore: BaseStore<QueueModel>, \r\n override baseQuery: BaseQuery<QueueModel>\r\n ) {\r\n super(queueService, validatorService, router, activatedRoute);\r\n this.record = new QueueModel();\r\n this.record.isActive = true;\r\n }\r\n\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n fetchedProperties: any;\r\n config: QueryBuilderConfig = { fields: {} };\r\n apiPropertyList: any;\r\n\r\n query = {\r\n condition: SHARED.AND,\r\n rules: [],\r\n };\r\n\r\n ngOnInit(): void {\r\n this.baseStore.setIsApiValidated(false);\r\n this.service.initList();\r\n const id = this.activatedRoute\r\n ? this.activatedRoute.snapshot.params[SHARED.ID]\r\n : \"\";\r\n if (id && id !== SHARED.ZERO.toString()) {\r\n this.service.getById(id).subscribe((res: any) => {\r\n if (res) {\r\n this.record = res;\r\n this.getApiProperties(res?.apiConfigId, res);\r\n this.query = res.rules ? structuredClone(res.rules) : { condition: SHARED.AND, rules: [] };\r\n this.fetchedProperties = res.properties;\r\n this.initialRecord = JSON.parse(JSON.stringify(res));\r\n if (this.fetchedProperties) {\r\n this.setupQueryBuilderConfig(this.fetchedProperties);\r\n }\r\n }\r\n else {\r\n this.initialRecord = structuredClone(this.record);\r\n }\r\n });\r\n } \r\n this.formStateService.selectIsFormNavigating()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.checkUnsavedChanges()\r\n }\r\n });\r\n }\r\n \r\n getApiProperties(id: string, res: any): void {\r\n this.fetchApiProperties(id, { setValidated: false, showToast: false }, res);\r\n }\r\n\r\n setupQueryBuilderConfig(properties: string[]): void {\r\n if (!properties || properties.length === 0) {\r\n console.warn(\"Properties list is empty. Query Builder config might be invalid.\");\r\n return;\r\n }\r\n \r\n const fieldsConfig: { [key: string]: any } = {};\r\n \r\n properties.forEach((prop) => {\r\n fieldsConfig[prop] = {\r\n name: prop,\r\n type: SHARED.STRING, // Ensure type is valid\r\n operators: SHARED.OPERATORS,\r\n options: [], // Add any default options if needed\r\n };\r\n });\r\n \r\n this.config = { fields: fieldsConfig };\r\n console.log(\"Query Builder Config:\", this.config);\r\n }\r\n \r\n\r\n onQueryChange(event: any) {\r\n console.log(MESSAGE.QUERY_CHANGE_EVENT, event);\r\n }\r\n\r\n private fetchApiProperties(apiConfigId: string, options: { setValidated?: boolean; showToast?: boolean } = {}, response:any): void {\r\n if (apiConfigId) {\r\n this.queueService.getbyApiPath(apiConfigId).subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n this.fetchedProperties = res.properties;\r\n const updatedPropertyList = res.properties.map((value:any) => ({ value }));\r\n this.apiPropertyList = updatedPropertyList;\r\n this.setupQueryBuilderConfig(res.properties);\r\n if(response) {\r\n this.record.header = response?.header;\r\n this.record.subHeader = response?.subHeader;\r\n }\r\n if (options.setValidated) {\r\n this.baseStore.setIsApiValidated(SHARED.TRUE);\r\n }\r\n }\r\n },\r\n error: (error: any) => {\r\n if (options.setValidated) {\r\n this.baseStore.setIsApiValidated(SHARED.FALSE);\r\n }\r\n console.error(ERROR.ERROR_FETCHING_DATA, error);\r\n },\r\n complete: () => {\r\n if (options.showToast) {\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.DATA_FETCH_SUCCESS }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n }\r\n },\r\n });\r\n } else {\r\n console.warn(ERROR.API_NAME_NOT_SET);\r\n }\r\n }\r\n\r\n handleGetData(): void {\r\n this.fetchApiProperties(this.record.apiConfigId, { setValidated: true, showToast: true }, null);\r\n }\r\n\r\n handleQueueChange(queueId: string) {\r\n if(queueId) {\r\n this.apiPropertyList = [];\r\n this.record.header = SHARED.EMPTY;\r\n this.record.subHeader = SHARED.EMPTY;\r\n }\r\n }\r\n\r\n override handleSubmit(): void {\r\n this.convertStringToBoolean(this.query.rules);\r\n this.record.rules = this.query;\r\n this.record.properties = this.fetchedProperties;\r\n super.handleSubmit();\r\n }\r\n\r\n convertStringToBoolean(rules: any[]): void {\r\n rules.forEach(rule => {\r\n if (rule.rules) {\r\n this.convertStringToBoolean(rule.rules);\r\n } else if (rule.value === SHARED.STRING_TRUE) {\r\n rule.value = true;\r\n } else if (rule.value === SHARED.STRING_FALSE) {\r\n rule.value = false;\r\n }\r\n });\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as QueueModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<div class=\"grid m-0\">\r\n <div class=\"col-12\">\r\n <div>\r\n <form-container\r\n [record]=\"record\"\r\n [headerText]=\"'Queue / Create Queue'\"\r\n (onSave)=\"handleSubmit()\"\r\n (onCancel)=\"handleCancel()\"\r\n [showSave]=\"true\"\r\n [messages]=\"messages\"\r\n >\r\n <div class=\"card m-0\">\r\n <div class=\"p-fluid p-formgrid grid m-0\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Create Queue</h4>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [record]=\"record\"\r\n [store]=\"queueStore\"\r\n [attributeModel]=\"{\r\n name : 'name',\r\n displayText:'Queue Name',\r\n readonly : false,\r\n isRequired : true,\r\n }\"\r\n >\r\n </text-box>\r\n </div>\r\n <div class=\"col-12 md:col-5\">\r\n <dropdown\r\n [record]=\"record\"\r\n [store]=\"queueStore\"\r\n [attributeModel]=\"{\r\n name: 'apiConfigId',\r\n readonly: false,\r\n isRequired: true,\r\n dataSource: 'apiConfig',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n displayText: 'Api'\r\n }\" (onInput)=\"handleQueueChange($event)\"\r\n >\r\n </dropdown>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"queueStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"w-full px-2 mt-2 flex justify-content-end mb-2\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Validate\"\r\n (click)=\"handleGetData()\"\r\n class=\"p-button-raised validate-btn-wrapper\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"p-fluid p-formgrid grid m-0\">\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"queueStore\"\r\n [record]=\"record\"\r\n [isStaticDropdown]=\"true\"\r\n [attributeModel]=\"{\r\n name:'header',\r\n displayText : 'Header',\r\n placeholder: 'Select Header',\r\n listValueProperty: 'value',\r\n listLabelProperty: 'value',\r\n readonly : false,\r\n isRequired : true,\r\n options: apiPropertyList\r\n }\"></dropdown>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"queueStore\"\r\n [record]=\"record\"\r\n [isStaticDropdown]=\"true\"\r\n [attributeModel]=\"{\r\n name:'subHeader',\r\n displayText : 'SubHeader',\r\n placeholder: 'Select SubHeader',\r\n listValueProperty: 'value',\r\n listLabelProperty: 'value',\r\n readonly : false,\r\n isRequired : false,\r\n options: apiPropertyList\r\n }\"></dropdown>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card m-0\">\r\n <div class=\"p-fluid p-formgrid grid m-0 mb-2\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Queue Details</h4>\r\n </div>\r\n <ngx-query-builder\r\n class=\"p-2\"\r\n [(ngModel)]=\"query\"\r\n [config]=\"config\"\r\n (queryChange)=\"onQueryChange($event)\"\r\n ></ngx-query-builder>\r\n </div>\r\n </form-container>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { QueueAdminFormComponent } from './components/queue-admin-form/queue-admin-form.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: QueueAdminFormComponent,\r\n children: [],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class QueueRoutingModule {}","import { Injectable } from '@angular/core';\r\nimport { SHARED } from '../constant/SHARED';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataTransformerService {\r\n\r\n constructor() { }\r\n flattenObject(data: any, result: any[] = [], additionalFields: any = {}): any[] {\r\n for (const key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n if (typeof data[key] === SHARED.TYPE_OBJECT && data[key] !== null && !Array.isArray(data[key])) {\r\n this.flattenObject(data[key], result);\r\n } else {\r\n result.push({\r\n label: this.transformLabel(key),\r\n value: data[key]\r\n });\r\n }\r\n }\r\n }\r\n if (additionalFields._id) {\r\n result.push({\r\n _id: additionalFields._id\r\n });\r\n }\r\n\r\n if (additionalFields.QueueID) {\r\n result.push({\r\n QueueID: additionalFields.QueueID\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n transformLabel(key: string): string {\r\n return key.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase());\r\n }\r\n}\r\n","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { ROUTES, SEQUENTIAL_MESSAGE, SHARED, MESSAGE_TYPES } from '../../../../shared';\r\nimport { DataTransformerService } from '../../../../shared/services/data-transformer.service';\r\nimport { Router } from '@angular/router';\r\nimport { QueueService } from '../../state/queue.service';\r\nimport { QueueStore } from '../../state/queue.store';\r\n\r\n@Component({\r\n selector: 'queue-application-list',\r\n standalone: false,\r\n templateUrl: './queue-application-list.component.html',\r\n styleUrls: ['./queue-application-list.component.scss'],\r\n})\r\nexport class QueueApplicationListComponent implements OnChanges {\r\n @Input() queueData!: QueueModel;\r\n\r\n selectedStatus: string = SHARED.STATUS_ACTIVE;\r\n isAscending: boolean = true;\r\n associateQueueList: any;\r\n\r\n constructor(\r\n public queueService: QueueService,\r\n public dataTransformService: DataTransformerService,\r\n public router: Router,\r\n public queueStore : QueueStore\r\n ) {}\r\n\r\n ngOnChanges() {\r\n if (this.queueData) {\r\n this.loadAssociatedList();\r\n }\r\n }\r\n loadAssociatedList(): void {\r\n if (this.queueData && this.queueData._id) {\r\n this.queueService.getCaseById(this.queueData.apiConfigUrl).subscribe((application: any) => {\r\n if (application) {\r\n const messages = SEQUENTIAL_MESSAGE;\r\n this.associateQueueList = application.map((item: any, index: number) => ({\r\n ...item,\r\n initials: this.getInitials(item.FullName),\r\n message: {\r\n content: messages[index % messages.length],\r\n type: this.getTypeByIndex(index),\r\n day: index % 2 === 0 ? SHARED.TODAY : SHARED.YESTERDAY,\r\n count: this.getRandomCount(),\r\n },\r\n }));\r\n }\r\n });\r\n } else {\r\n this.associateQueueList = [];\r\n }\r\n }\r\n getRandomCount(): number {\r\n return Math.floor(Math.random() * 10) + 1;\r\n }\r\n \r\n getInitials(fullName: string): string {\r\n if (!fullName) return '';\r\n const nameParts = fullName?.split(' ')?.filter(Boolean);\r\n const initials = nameParts?.length > 1\r\n ? nameParts[0][0] + nameParts[nameParts?.length - 1][0]\r\n : nameParts[0][0];\r\n return initials?.toUpperCase();\r\n } \r\n \r\n getTypeByIndex(index: number): string {\r\n const types = MESSAGE_TYPES;\r\n return types[index % types.length];\r\n }\r\n \r\n\r\n getRandomType(): string {\r\n const types = MESSAGE_TYPES;\r\n return types[Math.floor(Math.random() * types.length)];\r\n }\r\n \r\n \r\n\r\n handleApplicationClick(application: any) {\r\n this.router.navigate([ROUTES.APPLICATION + application.CaseId]);\r\n }\r\n\r\n onStatusChange(selectedStatus: any): any {\r\n this.selectedStatus = selectedStatus.target.value;\r\n }\r\n}\r\n","<div class=\"grid m-0\">\r\n <div class=\"col-12\">\r\n <div class=\"p-fluid p-formgrid grid p-2\">\r\n <div class=\"card col-12 md:col-12 flex flex-column border-bottom align-items-start p-4 pb-3\" style=\"\r\n border-bottom: 1px solid var(--surface-border);\r\n border-radius: 0px;\r\n border-top-left-radius: 8px;\r\n border-top-right-radius: 8px;\r\n \">\r\n <h4 class=\"text-color m-0 queue-name font-semibold margin\">\r\n {{ queueData.name }}\r\n </h4>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 p-0 flex scrollable flex-column\" [ngClass]=\"\r\n selectedStatus === 'active' ? 'surface-card' : 'inactive-card-wrapper'\r\n \">\r\n @for(record of associateQueueList; track record; let i = $index) {\r\n @if(record){\r\n <div class=\"col-12 md:col-12 border-bottom-1 p-0 surface-border gap-2 hover:surface-ground cursor-pointer\"\r\n (click)=\"handleApplicationClick(record)\">\r\n\r\n <div class=\"col-12 md:col-12 flex align-items-center py-3 px-4 userInfo\">\r\n <div class=\"col-12 md:col-2 p-0 userImage\">\r\n <div\r\n class=\"mainimg flex align-items-center justify-content-center circleColor w-3rem h-3rem border-circle\">\r\n <span class=\"font-bold\" style=\"font-weight: 600; font-size: 13.5; font-family: inherit;\">\r\n {{ record.initials }}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-10 p-0\">\r\n <div class=\"flex justify-content-between align-items-center col-12 md:col-12 p-0\">\r\n <div class=\"userName\" style=\"font-weight: 600; font-size: 15px; \">\r\n {{ record.FullName | capitalizeWords }} \r\n </div>\r\n <div class=\"dayAndtime flex\">\r\n @if(record.message.type == \"Email\"){\r\n <span class=\"pi pi-envelope mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\r\n }\r\n @else if(record.message.type == \"SMS\") {\r\n <span class=\"pi pi-comments mr-2\" style=\"color: #676B89; font-size: 17px;\"></span>\r\n }@else if(record.message.type == \"WhatsApp\"){\r\n <span class=\"pi pi-whatsapp mr-2\" style=\"color: #676B89;font-size: 17px;\"></span>\r\n\r\n }\r\n <span style=\"color: #676B89; font-family: inherit;\"> {{record.message.day}}</span>\r\n </div>\r\n </div>\r\n <div class=\"flex align-items-center justify-content-between mt-1\">\r\n <div class=\"email col-12 md:col-12 p-0\" style=\"color: #8A8EA6;\">\r\n {{ record.message.content }}\r\n </div>\r\n \r\n <div class=\"countOfMessages\">\r\n <span>{{record.message.count}}</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { QueueService } from '../../state/queue.service';\r\nimport { BaseContainerComponent, ERROR, SHARED } from '../../../../shared';\r\nimport { QueueStore } from '../../state/queue.store';\r\n\r\n@Component({\r\n selector: 'lib-queue-admin-list',\r\n standalone: false,\r\n templateUrl: './queue-admin-list.component.html',\r\n styleUrl: './queue-admin-list.component.scss'\r\n})\r\nexport class QueueAdminListComponent extends BaseContainerComponent<QueueModel> {\r\n constructor(public queueStore:QueueStore ,private queueService: QueueService) {\r\n super(queueService);\r\n }\r\n\r\n queueList: QueueModel[] = [];\r\n selectedQueue: any;\r\n queueId: any;\r\n ngOnInit() {\r\n this.init();\r\n this.getAllQueueList();\r\n }\r\n\r\n getAllQueueList() {\r\n this.queueService.getAll().subscribe({\r\n next: (res) => {\r\n this.queueList = res;\r\n this.selectedQueue = res[0];\r\n },\r\n error: (err) => {\r\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\r\n }\r\n });\r\n }\r\n\r\n handleQueueData(event: any) {\r\n this.selectedQueue = this.queueList.find((i) => i._id == event);\r\n if (this.selectedQueue) {\r\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\r\n } else {\r\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\r\n }\r\n }\r\n}","<div class=\"container grid m-0\">\r\n <div class=\"col-12 xl:col-3 md:col-12\">\r\n <block-list\r\n [queueData]=\"queueList\"\r\n (queueDataById)=\"handleQueueData($event)\"\r\n ></block-list>\r\n </div>\r\n <div class=\"col-12 xl:col-3 md:col-12\">\r\n @if(selectedQueue){\r\n <div class=\"animation-duration-500 associated-list\">\r\n <queue-application-list\r\n [queueData]=\"selectedQueue\"\r\n ></queue-application-list>\r\n </div>\r\n }\r\n </div>\r\n \r\n <div class=\"xl:col-6 md:col-12\">\r\n <div class=\"searchbar-wrapper\">\r\n <queue-search-customer></queue-search-customer>\r\n </div>\r\n </div>\r\n </div>\r\n ","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { QueueAdminFormComponent } from \"./components/queue-admin-form/queue-admin-form.component\";\r\nimport { SharedModule } from \"../../shared/shared.module\";\r\nimport { QueueRoutingModule } from \"./queue-admin-routing.module\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { QueryBuilderModule } from \"@kerwin612/ngx-query-builder\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { QueueAdminListComponent } from \"./components/queue-admin-list/queue-admin-list.component\";\r\nimport { QueueApplicationListComponent } from \"./components/queue-application-list/queue-application-list.component\";\r\nimport { CheckBoxComponent } from \"../../shared\";\r\n\r\n@NgModule({\r\n declarations: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n QueueRoutingModule,\r\n FormsModule,\r\n QueryBuilderModule,\r\n ButtonModule,\r\n CheckBoxComponent\r\n ],\r\n exports: [QueueAdminFormComponent, QueueAdminListComponent, QueueApplicationListComponent],\r\n})\r\nexport class QueueAdminModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared/state/base.store';\r\nimport { AdminActionModel } from '../models/admin-action.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'action' })\r\nexport class AdminActionStore extends BaseStore<AdminActionModel> {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n}","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AdminActionModel } from '../models/admin-action.model';\r\nimport { AdminActionStore } from './admin-action.store';\r\nimport { DATASOURCES } from '../../../shared/constant/DATASOURCES';\r\nimport { BaseService } from '../../../shared/state/base.service';\r\nimport { AppConfigService } from '../../../shared/services/app-config.service';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\nimport { Observable, tap } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AdminActionService extends BaseService<AdminActionModel> {\r\n\r\n protected override list : any= [...LISTCONFIG.QUEUEAPICONFIG, ...LISTCONFIG.ACTIONQUEUECONFIG];\r\n\r\n constructor(protected actionStore: AdminActionStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\r\n super(http, actionStore, appConfigService,listService);\r\n this._pathName = DATASOURCES.ACTIONS;\r\n }\r\n\r\n handleValidateAction(name:string, id: string, record:any): Observable<AdminActionModel[]> {\r\n const apiUrl = `${this.apiUrl}${name}/${encodeURIComponent(id)}`;\r\n return this.http.post<AdminActionModel[]>(`${apiUrl}`, record).pipe(\r\n tap((entities: AdminActionModel[]) => this.actionStore.set(entities))\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\r\nimport { AdminActionModel } from '../../models/admin-action.model';\r\nimport { TableBuilder } from '../../../../shared/services/table.builder';\r\nimport { AdminActionService } from '../../state/admin-action.service';\r\nimport { actionHiddenHeaderList, actionList, actionTableColumnWidthList } from '../../../../shared/constant/SHARED';\r\nimport { DATASOURCES } from '../../../../shared';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n\r\n/**\r\n * Admin Action List Component\r\n */\r\n@Component({\r\n selector: 'lib-admin-action-list',\r\n standalone : false,\r\n templateUrl: './admin-action-list.component.html',\r\n styleUrl: './admin-action-list.component.scss'\r\n})\r\nexport class AdminActionListComponent extends BaseListComponent<AdminActionModel>{\r\n \r\n pathName:string = DATASOURCES.ACTIONS;\r\n override editPermission: string = PERMISSION.ACTIONCONFIG_PUT\r\n override deletePermission: string = PERMISSION.ACTIONCONFIG_DELETE\r\n constructor(service: AdminActionService, private tableBuilder: TableBuilder){\r\n super(service, tableBuilder)\r\n this.tableBuilder.hiddenHeaders = actionHiddenHeaderList;\r\n } \r\n\r\n ngOnInit() {\r\n this.init(actionTableColumnWidthList);\r\n }\r\n \r\n}","<div class=\"dicitonary-list-wrapper\">\r\n @if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\r\n }\r\n</div>","import { BaseModel } from \"../../../shared/models/base.model\";\r\n\r\nexport class AdminActionModel extends BaseModel {\r\n name!: string;\r\n apiConfigId!: string;\r\n prompt!: string;\r\n queueId!: string;\r\n formFields!: string;\r\n status!: StatusType;\r\n isActive!: boolean;\r\n apiDocsUrl!: string;\r\n}\r\n\r\nexport type StatusType = \"Enable\" | \"Disable\";","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { BaseFormComponent } from '../../../../shared/_base/base-form/base-form.component';\r\nimport { AdminActionModel } from '../../models/admin-action.model';\r\nimport { Message } from 'primeng/api';\r\nimport { SHARED } from '../../../../shared/constant/SHARED';\r\nimport { AdminActionService } from '../../state/admin-action.service';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AdminActionStore } from '../../state/admin-action.store';\r\nimport { AppConfigService, BaseQuery, BaseStore, ROUTES } from '../../../../shared';\r\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\r\n\r\n@Component({\r\n selector: 'lib-admin-action-form',\r\n standalone : false,\r\n templateUrl: './admin-action-form.component.html',\r\n styleUrl: './admin-action-form.component.scss'\r\n})\r\nexport class AdminActionFormComponent extends BaseFormComponent<AdminActionModel> implements OnInit, OnDestroy{\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n apiConfigList: any[] = [];\r\n queueList: any[] = [];\r\n\r\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>) {\r\n super(adminActionService, validatorService, router, activatedRoute)\r\n this.record = new AdminActionModel();\r\n this.record.isActive = true;\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.baseStore.setIsApiValidated(null);\r\n }\r\n\r\n handleValidateAction() {\r\n const payload = {path: this.record.apiDocsUrl};\r\n this.adminActionService.handleValidateAction(ROUTES.VALIDATE_ACTIONS,this.record.apiConfigId,payload)\r\n .subscribe({\r\n next: (res: any) => {\r\n if (res) {\r\n if (typeof res !== SHARED.STRING) {\r\n this.record.formFields = JSON.stringify(res);\r\n } else {\r\n this.record.formFields = res;\r\n }\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: MESSAGE.VALIDATE_ACTION_SUCCESS_MESSAGE }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n // this.baseStore.setIsApiValidated(SHARED.TRUE);\r\n }\r\n },\r\n error: (error: any) => {\r\n // this.baseStore.setIsApiValidated(SHARED.FALSE);\r\n },\r\n });\r\n }\r\n\r\n override handleSubmit(): void {\r\n if (typeof this.record.formFields !== SHARED.STRING && !this.isValidJSONArray(this.record.formFields)) {\r\n this.record.formFields = JSON.stringify(this.record.formFields);\r\n }\r\n super.handleSubmit();\r\n }\r\n \r\n private isValidJSONArray(value: string): boolean {\r\n try {\r\n const parsed = JSON.parse(value);\r\n return Array.isArray(parsed);\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as AdminActionModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<form-container\r\n [record]=\"record\"\r\n [headerText]=\"'Actions / Actions Form'\"\r\n [messages]=\"messages\"\r\n (onSave)=\"handleSubmit()\"\r\n [showSave]=\"true\"\r\n (onCancel)=\"handleCancel()\"\r\n>\r\n <div class=\"card p-fluid p-formgrid grid \">\r\n <h4 class=\"font-bold col-12 md:col-12\">Actions Form</h4>\r\n <div class=\"col-12 md:col-5\">\r\n <text-box\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Action Name',\r\n placeholder: 'Enter Action Name'\r\n }\"\r\n ></text-box>\r\n </div>\r\n \r\n <div class=\"col-12 md:col-5\">\r\n <dropdown\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name: 'apiConfigId',\r\n readonly: false,\r\n isRequired: true,\r\n displayText: 'End Point',\r\n placeholder: 'Select End Point'\r\n }\"></dropdown>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"adminActionStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n name:'queueId',\r\n isRequired: true,\r\n displayText : 'Queue',\r\n placeholder: 'Select Queue',\r\n readonly: false\r\n }\"></dropdown>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <text-box\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'apiDocsUrl',\r\n isRequired: false,\r\n displayText: 'API Docs URL',\r\n placeholder: 'Enter API Docs URL'\r\n }\"\r\n ></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <text-area\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'prompt',\r\n isRequired: true,\r\n displayText: 'Prompt',\r\n placeholder: 'Enter prompt'\r\n }\"\r\n ></text-area>\r\n </div>\r\n\r\n <div class=\"w-full flex justify-content-end px-2 mt-2\">\r\n <button\r\n pButton\r\n pRipple\r\n type=\"button\"\r\n label=\"Validate\"\r\n class=\"p-button-raised validate-btn-wrapper\"\r\n (click)=\"handleValidateAction()\"\r\n ></button>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <text-area\r\n [store]=\"adminActionStore\"\r\n [record]=\"record\"\r\n [attributeModel]=\"{\r\n readonly: false,\r\n name: 'formFields',\r\n isRequired: true,\r\n displayText: 'Form Configuration',\r\n placeholder: 'Enter form fields'\r\n }\"\r\n ></text-area>\r\n </div>\r\n </div>\r\n \r\n</form-container>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdminActionListComponent } from './components/admin-action-list/admin-action-list.component';\r\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\r\nimport { AdminActionFormComponent } from './components/admin-action-form/admin-action-form.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AdminActionListComponent, AdminActionFormComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n SharedModule,\r\n TablePrimaryComponent,\r\n TextAreaComponent,\r\n ButtonModule,\r\n CheckBoxComponent\r\n ],\r\n exports: [AdminActionListComponent, AdminActionFormComponent]\r\n})\r\nexport class ActionAdminModule { }\r\n","import { SHARED } from \"../../../shared\";\r\nimport { BaseModel } from \"../../../shared/models/base.model\";\r\n\r\nexport class DdAdminModel extends BaseModel {\r\n name?: string\r\n apiConfigId?: string\r\n dictionaryItems: DdItemModel[] = [];\r\n message?: string;\r\n isActive!: boolean;\r\n}\r\nexport class DdItemModel extends BaseModel {\r\n itemName?: string\r\n itemExpression?: string\r\n styleExpression?: string\r\n isActive: boolean = true;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { DdAdminModel } from '../models/dictionary.model';\r\nimport { BaseStore } from '../../../shared/state/base.store';\r\nimport { ApiPropertyModel } from '../models/api-property.model';\r\n\r\n/**\r\n * DictionaryStore\r\n * @description Store for managing dictionary state\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'dictionary' })\r\nexport class DictionaryStore extends BaseStore<DdAdminModel> {\r\n\r\n setPropertiesData(value : ApiPropertyModel){\r\n this.update({propertyData : value})\r\n }\r\n\r\n setSidebarVisible(value:boolean){\r\n this.update({isSideBarVisible:value})\r\n }\r\n}","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DictionaryStore } from './dictionary.store';\r\nimport { DdAdminModel } from '../models/dictionary.model';\r\nimport { catchError, Observable, of, tap } from 'rxjs';\r\nimport { BaseService, AppConfigService, DATASOURCES, ERROR } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { ApiPropertyModel } from '../models/api-property.model';\r\nimport { LISTCONFIG } from '../../../shared/constant/LIST-CONFIG';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DictionaryService extends BaseService<DdAdminModel> {\r\n\r\n constructor(public dictionaryStore: DictionaryStore, http: HttpClient, appConfigService : AppConfigService, listService:ListService) {\r\n super(http, dictionaryStore, appConfigService,listService);\r\n this._pathName = DATASOURCES.DICTIONARY;\r\n }\r\n\r\n protected override list: any = LISTCONFIG.QUEUEAPICONFIG\r\n\r\n getAllApiProperties(name:string, id: string): Observable<ApiPropertyModel> {\r\n return this.http.get<ApiPropertyModel>(`${this.apiUrl+name}/${id}`).pipe(\r\n tap((propertiesData: ApiPropertyModel) => this.dictionaryStore.setPropertiesData(propertiesData))\r\n );\r\n }\r\n\r\n deleteDictionaryItemById(name:string, dictionaryItemId: string) : Observable<DdAdminModel | any> {\r\n const Url = `${this.apiUrl+name}/${dictionaryItemId}`;\r\n return this.http.delete<DdAdminModel>(Url).pipe(\r\n catchError((error:any) => {\r\n console.error(ERROR.ERROR_DELETE_DICTIONARY_ITEM, error);\r\n return of({ error: true, message: ERROR.ERROR_DELETE_DICTIONARY_ITEM });\r\n })\r\n )\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { DictionaryStore } from './dictionary.store';\r\nimport { DdAdminModel } from '../models/dictionary.model';\r\nimport { BaseQuery } from '../../../shared/state/base.query';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiPropertyModel } from '../models/api-property.model';\r\n\r\n/**\r\n * DictionaryQuery\r\n * @description Query for managing dictionary state\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class DictionaryQuery extends BaseQuery<DdAdminModel> {\r\n constructor(protected override store: DictionaryStore) {\r\n super(store);\r\n }\r\n\r\n selectPropertyData():Observable<ApiPropertyModel>{\r\n return this.select((state) => state['propertyData'])\r\n }\r\n getPropertyData(): ApiPropertyModel{\r\n return this.getValue()['propertyData']\r\n }\r\n selectSidebarVisible(){\r\n return this.select((state)=>state['isSideBarVisible'])\r\n }\r\n getSidebarVisible(){\r\n return this.getValue()['isSideBarVisible']\r\n }\r\n}\r\n","import { SHARED } from \"../../../shared\";\r\n\r\nexport class DdAttributeSidebarViewModel {\r\n mappingInfo: string = SHARED.EMPTY;\r\n propertyList : string = SHARED.EMPTY\r\n}","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { DictionaryStore } from '../../state/dictionary.store';\r\nimport { DdAttributeSidebarViewModel } from '../../models/dd-attribute-sidebar-view.model';\r\nimport { BaseQuery, BaseStore, SHARED } from '../../../../shared';\r\nimport { DictionaryQuery } from '../../state/dictionary.query';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { DdItemModel } from '../../models/dictionary.model';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * DdAdminItemFormComponent\r\n * This component is used to create and edit item expressions and style expressions.\r\n */\r\n@Component({\r\n selector: 'lib-dd-admin-item-form',\r\n standalone: false,\r\n templateUrl: './dd-admin-item-form.component.html',\r\n styleUrl: './dd-admin-item-form.component.scss'\r\n})\r\nexport class DdAdminItemFormComponent implements OnChanges, OnDestroy {\r\n @Input() ddItemRecord: DdItemModel = { itemName: SHARED.EMPTY, itemExpression: SHARED.EMPTY, styleExpression: SHARED.EMPTY, isActive: SHARED.FALSE }\r\n @Input() isItemExpression?: boolean\r\n @Input() isSidebarVisible?: boolean\r\n @Output() saveClick = new EventEmitter<any>()\r\n attributeRecord!: DdAttributeSidebarViewModel\r\n dictionaryItemName: string = SHARED.EMPTY\r\n condition: string = SHARED.EMPTY\r\n propertyOptions: SelectItem[] = []\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n constructor(public dictionaryStore: DictionaryStore, public dictionaryQuery: DictionaryQuery, private baseStore: BaseStore<any>) {\r\n this.attributeRecord = new DdAttributeSidebarViewModel()\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes[SHARED.ISITEMEXPRESSION]) {\r\n this.attributeRecord.mappingInfo = (this.isItemExpression ? this.ddItemRecord.itemExpression : this.ddItemRecord.styleExpression) ?? SHARED.EMPTY\r\n }\r\n this.loadPropertyOption()\r\n }\r\n\r\n loadPropertyOption() {\r\n this.subscriptions.add(\r\n this.dictionaryQuery.selectPropertyData().subscribe((res: any) => {\r\n this.propertyOptions = []\r\n if (res) {\r\n this.mapProperties(res)\r\n }\r\n })\r\n )\r\n }\r\n\r\n private mapProperties(res: any) {\r\n if (res?.properties?.length) {\r\n this.propertyOptions.push(...res.properties.map((property: string) => ({\r\n label: `${res.name}.${property}`,\r\n value: `${res.name}.${property}`\r\n })))\r\n }\r\n if (res?.childApis?.length) {\r\n res.childApis.forEach((childApi: any) => {\r\n this.propertyOptions.push(...childApi.properties.map((property: string) => ({\r\n label: `${res.name}.${childApi.name}.${property}`,\r\n value: `${res.name}.${childApi.name}.${property}`\r\n })))\r\n })\r\n }\r\n }\r\n\r\n handleSaveBtnClick(event: any) {\r\n if (this.isItemExpression) {\r\n if (this.baseStore) this.baseStore.setIsFormSubmitted(true);\r\n if (!this.attributeRecord.mappingInfo) return;\r\n this.ddItemRecord.itemExpression = this.attributeRecord.mappingInfo\r\n } else {\r\n this.ddItemRecord.styleExpression = this.attributeRecord.mappingInfo\r\n }\r\n this.attributeRecord.propertyList = SHARED.EMPTY\r\n this.saveClick.emit(false)\r\n }\r\n\r\n handleAddExpressionClick(event: any) {\r\n if (this.attributeRecord.propertyList) {\r\n const formattedProperty = `\\${${this.attributeRecord.propertyList}}`;\r\n this.attributeRecord.mappingInfo += this.attributeRecord.mappingInfo\r\n ? `${formattedProperty}`\r\n : formattedProperty;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe()\r\n this.propertyOptions = []\r\n this.attributeRecord = new DdAttributeSidebarViewModel()\r\n }\r\n}\r\n","<div class=\"dicitonary-edit-action px-3\">\r\n <div class=\"flex align-items-center justify-content-end mt-3\">\r\n <lib-button\r\n [store]=\"dictionaryStore\"\r\n [record]=\"attributeRecord\"\r\n [attributeModel]=\"{\r\n buttonLabel: 'Save',\r\n isDisabled: false,\r\n }\"\r\n (onBtnClick)=\"handleSaveBtnClick($event)\"\r\n >\r\n </lib-button>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 mt-5\">\r\n <label *ngIf=\"!isItemExpression\" for=\"styleInput\" class=\"text-gray-600 text-sm mb-2 block\">\r\n Hint: Use key-value pairs for styles.\r\n <br/>\r\n Example:<code>\r\n 'background-color': 'lightgray',\r\n 'font-size': '16px',<br>\r\n 'padding': '10px'\r\n </code>\r\n </label>\r\n <text-area\r\n [store]=\"dictionaryStore\"\r\n [record]=\"attributeRecord\"\r\n [attributeModel]=\"{\r\n displayText: 'Expression',\r\n readonly : false,\r\n name : 'mappingInfo',\r\n isRequired : isItemExpression ? true : false,\r\n placeholder : 'Enter Text',\r\n customPadding: '12px',\r\n }\"\r\n ></text-area>\r\n </div>\r\n <div class=\"col-12 md:col-12\">\r\n <div class=\"p-field queue-list-wrapper\">\r\n <dropdown [store]=\"dictionaryStore\" [isStaticDropdown]=\"true\" [record]=\"attributeRecord\" [attributeModel]=\"{\r\n name:'propertyList',\r\n displayText : 'Select properties',\r\n isRequired:false,\r\n listLabelProperty: 'label',\r\n listValueProperty: 'value',\r\n options : propertyOptions,\r\n filter : true\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-3\">\r\n <lib-button\r\n [store]=\"dictionaryStore\"\r\n [record]=\"attributeRecord\"\r\n [attributeModel]=\"{\r\n buttonLabel: 'Add to expression',\r\n isDisabled: false,\r\n }\"\r\n (onBtnClick)=\"handleAddExpressionClick($event)\"\r\n >\r\n </lib-button>\r\n </div>\r\n</div>","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, DATASOURCES, ERROR, SHARED } from '../../../../shared';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { DictionaryQuery } from '../../state/dictionary.query';\r\nimport { DictionaryService } from '../../state/dictionary.service';\r\nimport { DictionaryStore } from '../../state/dictionary.store';\r\nimport { DdAdminModel, DdItemModel } from '../../models/dictionary.model';\r\nimport { Message } from 'primeng/api';\r\nimport { MESSAGE } from '../../../../shared/constant/MESSAGES';\r\n\r\n/**\r\n * DdAdminFormComponent\r\n * @description Component for managing dictionary form\r\n */\r\n@Component({\r\n selector: 'lib-dd-admin-form',\r\n templateUrl: './dd-admin-form.component.html',\r\n styleUrl: './dd-admin-form.component.scss',\r\n standalone: false\r\n})\r\nexport class DdAdminFormComponent extends BaseFormComponent<DdAdminModel> implements OnInit, OnDestroy {\r\n sidebarVisibility: boolean[] = [];\r\n messages: Message[] = SHARED.EMPTYARRAY;\r\n dictionaryItem !: DdItemModel\r\n dictionaryName: string = SHARED.EMPTY;\r\n isItemExpression : boolean = SHARED.FALSE;\r\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>) {\r\n super(service, validatorService, router, activatedRoute);\r\n this.record = new DdAdminModel()\r\n this.record.isActive = true;\r\n this.dictionaryItem = new DdItemModel()\r\n }\r\n\r\n ngOnInit() {\r\n this.baseStore.setIsApiValidated(null);\r\n this.init()\r\n this.sidebarVisibility = new Array(this.record.dictionaryItems.length).fill(false);\r\n setTimeout(() => {\r\n if (this.record.apiConfigId) {\r\n this.handleGetProperties(this.record.apiConfigId);\r\n }\r\n }, 2000);\r\n }\r\n \r\n handleDictionaryItemAddBtnClick() {\r\n if (!(this.record.name && this.record.apiConfigId)) return;\r\n if (Array.isArray(this.record.dictionaryItems)) {\r\n const hasEmptyItem = this.record.dictionaryItems.some((item: DdItemModel) => {\r\n const isItemNameEmpty = !item.itemName || item.itemName.trim() === SHARED.EMPTY;\r\n const isItemExpressionEmpty = !item.itemExpression || item.itemExpression.trim() === SHARED.EMPTY;\r\n return isItemNameEmpty && isItemExpressionEmpty;\r\n });\r\n \r\n if (hasEmptyItem) {\r\n return;\r\n }\r\n } else {\r\n this.record.dictionaryItems = [];\r\n }\r\n this.record.dictionaryItems = [...this.record.dictionaryItems, new DdItemModel()];\r\n }\r\n\r\n handleItemExpression(i?:any , event?:any) {\r\n this.sidebarVisibility[i] = true;\r\n this.isItemExpression = SHARED.TRUE;\r\n }\r\n \r\n handleStyleExpression(i:any, event:any) {\r\n this.sidebarVisibility[i] = true;\r\n this.isItemExpression = SHARED.FALSE\r\n }\r\n \r\n handleGetProperties(event : any){\r\n if(event){\r\n this.service.getAllApiProperties(DATASOURCES.QUEUESAPICONFIG,event).subscribe()\r\n }\r\n }\r\n \r\n onSidebarClose(isVisible:boolean){\r\n this.sidebarVisibility = this.sidebarVisibility.map(() => isVisible);\r\n }\r\n\r\n handleDeleteRecord(index: number, dictionaryItemId: string) {\r\n if (index >= 0 && index < this.record.dictionaryItems.length) {\r\n this.record.dictionaryItems = this.record.dictionaryItems.filter((_, i) => i !== index);\r\n if(dictionaryItemId) {\r\n this.service.deleteDictionaryItemById(DATASOURCES.DELETEDICTIONARYITEM, dictionaryItemId).subscribe(\r\n (res) => {\r\n this.messages = [{ severity: SHARED.SUCCESS, detail: res?.message || MESSAGE.DELETE_DICTIONARY_ITEM_SUCCESS }];\r\n setTimeout(() => {\r\n this.messages = SHARED.EMPTYARRAY;\r\n }, 3000);\r\n })\r\n }\r\n } else {\r\n console.error(ERROR.INVALID_INDEX, index);\r\n }\r\n }\r\n \r\n override ngOnDestroy(): void {\r\n this.record = {} as DdAdminModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<form-container [messages]=\"messages\" [record]=\"record\" [headerText]=\"'Dictionary Form'\" [showSave]=\"true\"\r\n (onCancel)=\"handleCancel()\" (onSave)=\"handleSubmit()\">\r\n <div class=\"card p-fluid p-formgrid grid m-0\">\r\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\">\r\n <div class=\"col-12 md:col-5 p-field\">\r\n <div class=\"dictionary-name\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly : false,\r\n name : 'name',\r\n isRequired : true,\r\n displayText: 'Dictionary Name',\r\n placeholder : 'Enter Text',\r\n }\"></text-box>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-5\">\r\n <div class=\"p-field queue-list-wrapper\">\r\n <dropdown [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'apiConfigId',\r\n dataSource: 'apiconfigs',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n displayText: 'API ',\r\n placeholder: 'Select API',\r\n isRequired: true\r\n }\" (onInput)=\"handleGetProperties($event)\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"ddAdminStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field p-0 pr-2 ml-3 col-12 md:col-2\">\r\n <div class=\"card m-0 p-0 mb-2\">\r\n <div class=\"mt-3 w-full flex\">\r\n <button pButton pRipple routerLinkActive=\"router-link-active\"\r\n class=\"py-3 justify-content-center font-semibold w-full border-round\"\r\n (click)=\"handleDictionaryItemAddBtnClick()\">\r\n Add New Item\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- dictionary Items -->\r\n <div class=\"col-12 md:col-12 flex align-items-center justify-content-between\"\r\n *ngFor=\"let ddItem of record.dictionaryItems; let i = index\">\r\n <div class=\"field col-12 md:col-3 pr-0\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name : 'itemName',\r\n readonly : false,\r\n displayText : 'Item Name',\r\n isRequired : true,\r\n }\"></text-box>\r\n </div>\r\n <div class=\"field flex align-items-center justify-content-between col-12 md:col-3 pr-0\">\r\n <div class=\"flex align-items-center w-full\">\r\n <div class=\"w-full mr-3\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name : 'itemExpression',\r\n readonly : true,\r\n displayText : 'Item Expression',\r\n isRequired : true,\r\n }\">\r\n </text-box>\r\n </div>\r\n <span class=\"pi pi-cog mt-4 cursor-pointer text-xl\"\r\n (click)=\"handleItemExpression(i, $event )\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-3 flex align-items-center justify-content-between pr-0\">\r\n <div class=\"flex align-items-center w-full\">\r\n <div class=\"w-full mr-3\">\r\n <text-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name : 'styleExpression',\r\n readonly : false,\r\n disable : true,\r\n displayText : 'Style Expression',\r\n isRequired : false,\r\n }\">\r\n </text-box>\r\n </div>\r\n <span class=\"pi pi-cog mt-4 text-xl cursor-pointer text-color\"\r\n (click)=\"handleStyleExpression(i, $event)\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-2 flex align-items-center justify-content-center mt-4\">\r\n <check-box [store]=\"ddAdminStore\" [record]=\"ddItem\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Is Active',\r\n }\">\r\n </check-box>\r\n\r\n <div class=\"ml-6 delete-icon-container\">\r\n <i class=\"pi pi-trash trash-icon-wrapper cursor-pointer\"\r\n (click)=\"handleDeleteRecord(i, ddItem?._id)\"></i>\r\n </div>\r\n </div>\r\n <sidebar [isSidebarVisible]=\"sidebarVisibility[i]\" [title]=\"'Edit Expression'\"\r\n (onClose)=\"onSidebarClose($event)\">\r\n <lib-dd-admin-item-form [ddItemRecord]=\"ddItem\" [isItemExpression]=\"isItemExpression\"\r\n (saveClick)=\"onSidebarClose($event)\"></lib-dd-admin-item-form>\r\n </sidebar>\r\n </div>\r\n\r\n </div>\r\n</form-container>","import { Component, OnInit } from '@angular/core';\r\nimport { BaseListComponent } from '../../../../shared/_base/base-list/base-list.component';\r\nimport { TableBuilder } from '../../../../shared/services/table.builder';\r\nimport { DictionaryService } from '../../state/dictionary.service';\r\nimport { DdAdminModel } from '../../models/dictionary.model';\r\nimport { DATASOURCES, dictionaryHiddenHeaderList } from '../../../../shared';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n@Component({\r\n selector: 'lib-dd-admin-list',\r\n templateUrl: './dd-admin-list.component.html',\r\n styleUrl: './dd-admin-list.component.scss',\r\n standalone : false\r\n})\r\nexport class DdAdminListComponent extends BaseListComponent<DdAdminModel> implements OnInit{\r\n\r\n pathName:string = DATASOURCES.DICTIONARY;\r\n override editPermission: string = PERMISSION.DD_ADMIN_PUT\r\n override deletePermission: string = PERMISSION.DD_ADMIN_DELETE\r\n constructor(service: DictionaryService, private tableBuilder: TableBuilder){\r\n super(service, tableBuilder);\r\n this.tableBuilder.hiddenHeaders = dictionaryHiddenHeaderList;\r\n }\r\n\r\n ngOnInit(){\r\n this.init()\r\n }\r\n}","<div class=\"dicitonary-list-wrapper\">\r\n @if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\"></lib-table-primary>\r\n }\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DdAdminFormComponent } from './components/dd-admin-form/dd-admin-form.component';\r\nimport { DdAdminListComponent } from './components/dd-admin-list/dd-admin-list.component';\r\nimport { ButtonComponent, CheckBoxComponent, SharedModule, TablePrimaryComponent } from '../../shared';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DdAdminItemFormComponent } from './components/dd-admin-item-form/dd-admin-item-form.component';\r\nimport { TextAreaComponent } from '../../shared/controls/text-area/text-area.component';\r\nimport { FormContainerComponent } from '../../shared/components/form-container/form-container.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [DdAdminFormComponent, DdAdminListComponent, DdAdminItemFormComponent ],\r\n imports: [\r\n CommonModule,\r\n SharedModule,\r\n DropdownModule,\r\n ButtonComponent,\r\n InputTextareaModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TablePrimaryComponent,\r\n CheckBoxComponent,\r\n ButtonModule,\r\n TextAreaComponent,\r\n FormContainerComponent\r\n ],\r\n exports : [DdAdminFormComponent, DdAdminListComponent]\r\n})\r\nexport class DdAdminModule { }\r\n","import { BaseModel } from \"../../../shared\";\r\n\r\nexport class TemplateModel extends BaseModel {\r\n name!: string;\r\n type!: string;\r\n queueId!: string;\r\n isActive!: boolean;\r\n subject?: string;\r\n body!: string;\r\n dictionaryID?: string;\r\n dictionaryItemID?: string;\r\n}","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { BaseStore } from '../../../shared';\r\nimport { TemplateModel } from '../models/template.model';\r\n\r\n/**\r\n * Template Admin Store\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'templateStore' })\r\nexport class TemplateAdminStore extends BaseStore<TemplateModel> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AppConfigService, BaseService, DATASOURCES } from '../../../shared';\r\nimport { ListService } from '../../../shared/services/list.service';\r\nimport { TemplateModel } from '../models/template.model';\r\nimport { TemplateAdminStore } from './template-admin.store';\r\n\r\n/**\r\n * Service for managing template configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateAdminService extends BaseService<TemplateModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected templateAdminStore: TemplateAdminStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, templateAdminStore, configService, listService);\r\n this._pathName = DATASOURCES.Template;\r\n }\r\n\r\n protected override list: any = [\r\n {\r\n name: \"queueId\",\r\n dataSource: DATASOURCES.QUEUES,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryID\",\r\n dataSource: DATASOURCES.DICTIONARY,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"name\",\r\n },\r\n {\r\n name: \"dictionaryItemID\",\r\n dataSource: DATASOURCES.DELETEDICTIONARYITEM,\r\n listValueProperty: \"_id\",\r\n listLabelProperty: \"key\",\r\n }\r\n ]\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseQuery } from '../../../shared';\r\nimport { TemplateModel } from '../models/template.model';\r\nimport { TemplateAdminStore } from './template-admin.store';\r\n\r\n\r\n/**\r\n * Template Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class TemplateAdminQuery extends BaseQuery<TemplateModel> {\r\n\r\n constructor(protected override store: TemplateAdminStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { TemplateModel } from '../../models/template.model';\r\nimport { TemplateAdminService } from '../../state/template-admin.service';\r\nimport { ValidatorService } from '../../../../shared/services/validator.service';\r\nimport { BaseFormComponent, BaseQuery, BaseStore, msgTemplateTypeList, SHARED } from '../../../../shared';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TemplateAdminStore } from '../../state/template-admin.store';\r\nimport { SelectItem } from 'primeng/api';\r\nimport { TemplateAdminQuery } from '../../state/template-admin.query';\r\nimport { List } from '../../../../shared/models/list.model';\r\n\r\n@Component({\r\n selector: 'lib-template-admin-form',\r\n standalone: false,\r\n templateUrl: './template-admin-form.component.html',\r\n styleUrl: './template-admin-form.component.scss'\r\n})\r\nexport class TemplateAdminFormComponent extends BaseFormComponent<TemplateModel> implements OnInit, OnDestroy{\r\n\r\n templateTypeList: SelectItem<any>[] = msgTemplateTypeList;\r\n dictionaries: any[] = [];\r\n dictionaryItems: any[] = [];\r\n messageContent!: string;\r\n isFormSubmitted: boolean = false;\r\n\r\n constructor(\r\n override service: TemplateAdminService,\r\n override validatorService: ValidatorService,\r\n override router: Router,\r\n override activatedRoute: ActivatedRoute,\r\n private query: TemplateAdminQuery,\r\n public templateStore: TemplateAdminStore,\r\n override baseStore: BaseStore<TemplateModel>,\r\n override baseQuery: BaseQuery<TemplateModel>\r\n ) {\r\n super(service, validatorService, router, activatedRoute);\r\n this.record = new TemplateModel();\r\n this.record.isActive = true;\r\n }\r\n \r\n ngOnInit(): void {\r\n super.init();\r\n this.baseStore.setIsApiValidated(null);\r\n this.recordChange.asObservable().subscribe((record) => {\r\n this.messageContent = this.decodeHtml(record.body);\r\n });\r\n }\r\n\r\n handleQueueChange(event:any){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryRecords = allLists.find((list) => list.forProperty === 'dictionaryID')?.records;\r\n this.dictionaries = allDictionaryRecords?.filter((item) => item.queueID === event) || [];\r\n });\r\n }\r\n \r\n handleDictionarySelect(dictionaryId:string){\r\n this.query.getLists().subscribe((allLists: List[]) => {\r\n const allDictionaryItemRecords = allLists.find((list) => list.forProperty === 'dictionaryItemID')?.records;\r\n this.dictionaryItems = allDictionaryItemRecords?.filter((item) => item.dictionaryID === dictionaryId) || [];\r\n });\r\n }\r\n\r\n decodeHtml(html: string): string {\r\n try {\r\n return JSON.parse(html);\r\n } catch (e) {\r\n return html;\r\n }\r\n }\r\n\r\n override handleSubmit(): void {\r\n this.isFormSubmitted = true;\r\n if(!this.messageContent) return;\r\n this.record.body = JSON.stringify(this.messageContent);\r\n super.handleSubmit();\r\n };\r\n\r\n override ngOnDestroy(): void {\r\n this.record = {} as TemplateModel;\r\n super.ngOnDestroy();\r\n }\r\n}\r\n","<form-container [record]=\"record\" [showSave]=\"true\" [messages]=\"message\" (onSave)=\"handleSubmit()\"\r\n (onCancel)=\"handleCancel()\">\r\n <div class=\"card p-fluid p-formgrid\">\r\n <h4 class=\"font-bold col-12 md:col-12\">Template Form</h4>\r\n <div class=\"col-12 md:col-12 flex px-0\">\r\n <div class=\"col-12 md:col-5\">\r\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'name',\r\n isRequired: true,\r\n displayText: 'Name',\r\n placeholder: 'Enter Template Name'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-5\">\r\n <div class=\"p-field queue-list-wrapper\">\r\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'type',\r\n displayText: 'Type',\r\n listLabelProperty: 'value',\r\n listValueProperty: 'value',\r\n placeholder: 'Select Type',\r\n isRequired: true,\r\n options: templateTypeList\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-2 md:col-2 mt-5\">\r\n <check-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'isActive',\r\n displayText : 'Active',\r\n }\">\r\n </check-box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 flex px-0\">\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n name:'queueId',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n displayText : 'Select Queue',\r\n placeholder: 'Select Queue',\r\n isRequired:true\r\n }\" (onInput)=\"handleQueueChange($event)\">\r\n </dropdown>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'dictionaryID',\r\n displayText: 'Select Dictionary',\r\n listLabelProperty: 'name',\r\n listValueProperty: '_id',\r\n placeholder: 'Select Dictionary',\r\n options: dictionaries\r\n }\" (onInput)=\"handleDictionarySelect($event)\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12 flex px-0\">\r\n <div *ngIf=\"record.type === 'email'\" class=\"col-12 md:col-6\">\r\n <text-box [store]=\"templateStore\" [record]=\"record\" [attributeModel]=\"{\r\n readonly: false,\r\n name: 'subject',\r\n isRequired: true,\r\n displayText: 'Subject',\r\n placeholder: 'Enter Subject'\r\n }\"></text-box>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-6\">\r\n <dropdown [store]=\"templateStore\" [isStaticDropdown]=\"true\" [record]=\"record\" [attributeModel]=\"{\r\n name: 'dictionaryItemID',\r\n displayText: 'Select Dictionary Item',\r\n listLabelProperty: 'itemName',\r\n listValueProperty: '_id',\r\n placeholder: 'Select Dictionary Item',\r\n options: dictionaryItems\r\n }\">\r\n </dropdown>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-12 md:col-12\">\r\n <label>Message</label>\r\n <span class=\"asterisk ml-1\">*</span>\r\n <quill-editor [(ngModel)]=\"messageContent\" class=\"w-full mt-2\"></quill-editor>\r\n <div *ngIf=\"isFormSubmitted && !messageContent\" class=\"error-message\">\r\n <small class=\"p-error\">Message is required</small>\r\n </div>\r\n </div>\r\n </div>\r\n</form-container>","import { Component } from '@angular/core';\r\nimport { TemplateModel } from '../../models/template.model';\r\nimport { BaseListComponent, BaseStore, DATASOURCES, SHARED, TableBuilder, templateHiddenHeaderList, TemplateTabType } from '../../../../shared';\r\nimport { TemplateAdminService } from '../../state/template-admin.service';\r\nimport { PERMISSION } from '../../../../shared/constant/PERMISSION';\r\n\r\n@Component({\r\n selector: 'lib-template-admin-list',\r\n standalone: false,\r\n templateUrl: './template-admin-list.component.html',\r\n styleUrl: './template-admin-list.component.scss'\r\n})\r\nexport class TemplateAdminListComponent extends BaseListComponent<TemplateModel>{\r\n\r\n pathName:string = DATASOURCES.Template;\r\n activeTabIndex: number = 0;\r\n selectedType!: string;\r\n override editPermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\r\n override deletePermission: string = PERMISSION.MESSAGE_TEMPLATE_DELETE\r\n constructor(templateAdminService: TemplateAdminService, private tableBuilder: TableBuilder, private baseStore: BaseStore<TemplateModel>) {\r\n super(templateAdminService, tableBuilder);\r\n this.tableBuilder.hiddenHeaders = templateHiddenHeaderList;\r\n }\r\n \r\n ngOnInit() {\r\n this.init()\r\n }\r\n\r\n onTabChange(event: any) {\r\n this.activeTabIndex = event.index;\r\n this.selectedType = TemplateTabType[this.activeTabIndex] ?? SHARED.EMPTY;\r\n this.baseStore.setSelectedTemplate(this.activeTabIndex === 0 ? SHARED.EMPTY : this.selectedType);\r\n }\r\n}\r\n","<div class=\"template-tab-wrapper\">\r\n <p-tabView class=\"application-tabs-wrapper h-full\" [(activeIndex)]=\"activeTabIndex\" (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <span class=\"font-semibold\">All Templates</span>\r\n </ng-template>\r\n </p-tabPanel>\r\n \r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center font-semibold\">\r\n <i class=\"pi pi-envelope mr-3 message-type-wrapper\"></i>\r\n <span class=\"mr-1\">Email</span>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n \r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center font-semibold\">\r\n <i class=\"pi pi-comment mr-3 message-type-wrapper\"></i>\r\n <span>SMS</span>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n\r\n <p-tabPanel>\r\n <ng-template pTemplate=\"header\">\r\n <div class=\"flex align-items-center font-semibold\">\r\n <i class=\"pi pi-whatsapp mr-3 message-type-wrapper\"></i>\r\n <span>WhatsApp</span>\r\n </div>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n</div>\r\n\r\n@if(table){\r\n <lib-table-primary [table]=\"table\" [pathName]=\"pathName\" [metaData]=\"metaData\">\r\n </lib-table-primary>\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TemplateAdminFormComponent } from './components/template-admin-form/template-admin-form.component';\r\nimport { TemplateAdminListComponent } from './components/template-admin-list/template-admin-list.component';\r\nimport { CheckBoxComponent, SharedModule, TablePrimaryComponent, TextBoxComponent, textEditorToolbar } from '../../shared';\r\nimport { DropdownComponent } from '../../shared/controls/dropdown/dropdown.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { QuillConfigModule, QuillModule } from 'ngx-quill';\r\nimport hljs from 'highlight.js';\r\n\r\n@NgModule({\r\n declarations: [\r\n TemplateAdminFormComponent,\r\n TemplateAdminListComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TablePrimaryComponent,\r\n TextBoxComponent,\r\n DropdownComponent,\r\n SharedModule,\r\n FormsModule,\r\n TabViewModule,\r\n CheckBoxComponent,\r\n QuillModule.forRoot(),\r\n QuillConfigModule.forRoot({\r\n modules: {\r\n syntax: {\r\n hljs: hljs\r\n },\r\n toolbar: textEditorToolbar\r\n }\r\n })\r\n ],\r\n exports: [\r\n TemplateAdminFormComponent, TemplateAdminListComponent\r\n ]\r\n})\r\nexport class TemplateAdminModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { StoreConfig } from '@datorama/akita';\r\nimport { WidgetModel } from '../models/widget.model';\r\nimport { BaseStore, SHARED } from '../../shared';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Widget Admin Store\r\n */\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'widgetStore' })\r\nexport class WidgetStore extends BaseStore<WidgetModel> {\r\n public onViewAllDetails$: BehaviorSubject<any>;\r\n public onViewPropertyDetails$: BehaviorSubject<any>;\r\n public onEventClickDetails$: BehaviorSubject<any>;\r\n public onItemClick$ : BehaviorSubject<any>;\r\n public getWidgetData$: BehaviorSubject<any>;\r\n\r\n constructor() {\r\n super();\r\n this.onViewAllDetails$ = new BehaviorSubject<string>(SHARED.EMPTY_STRING);\r\n this.onViewPropertyDetails$ = new BehaviorSubject<string>(SHARED.EMPTY);\r\n this.onEventClickDetails$ = new BehaviorSubject<string>(SHARED.EMPTY);\r\n this.onItemClick$ = new BehaviorSubject({});\r\n this.getWidgetData$ = new BehaviorSubject({});\r\n }\r\n\r\n setEventClickDetails(value: any) {\r\n this.onEventClickDetails$.next(value);\r\n }\r\n\r\n setOnViewPropertyDetails(value: any) {\r\n this.onViewPropertyDetails$.next(value);\r\n }\r\n\r\n setOnViewAllDetails(value: any) {\r\n this.onViewAllDetails$.next(value);\r\n }\r\n\r\n resetOnViewAllDetails() {\r\n this.onViewAllDetails$.next(null);\r\n }\r\n\r\n setOnWidgetItemClick(value: any) {\r\n this.onItemClick$.next(value);\r\n }\r\n\r\n setWidgetItem(widgetItem: any) {\r\n this.update({widgetItem : widgetItem});\r\n }\r\n\r\n setIsMenu(isMenu: boolean) {\r\n this.update({isMenu : isMenu});\r\n }\r\n\r\n setWidgetData(value: any) {\r\n this.getWidgetData$.next(value);\r\n }\r\n \r\n setWidgetsList(widgetsList: any) {\r\n this.update({widgetsList : widgetsList});\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { WidgetModel } from '../models/widget.model';\r\nimport { WidgetStore } from './widget.store';\r\nimport { BaseQuery } from '../../shared';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n/**\r\n * Widget Admin Query\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetQuery extends BaseQuery<WidgetModel> {\r\n\r\n constructor(protected override store: WidgetStore, private widgetStore: WidgetStore) {\r\n super(store);\r\n }\r\n\r\n getOnViewAllDetails() {\r\n return this.widgetStore.onViewAllDetails$.asObservable();\r\n }\r\n\r\n getViewPropertyDetails() {\r\n return this.widgetStore.onViewPropertyDetails$.asObservable();\r\n }\r\n\r\n getEventClickDetails() {\r\n return this.widgetStore.onEventClickDetails$.asObservable();\r\n }\r\n\r\n getOnWidgetItemClick() {\r\n return this.widgetStore.onItemClick$.asObservable();\r\n }\r\n\r\n getWidgetItem():Observable<any> {\r\n return this.select(state => state['widgetItem']);\r\n }\r\n \r\n getIsMenu():Observable<any> {\r\n return this.select(state => state['isMenu']);\r\n }\r\n\r\n getWidgetData(): Observable<any> {\r\n return this.widgetStore.getWidgetData$.asObservable();\r\n }\r\n\r\n getWidgetList():Observable<any> {\r\n return this.select(state => state['widgetsList']);\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { WidgetModel } from '../models/widget.model';\r\nimport { WidgetStore } from './widget.store';\r\nimport { AppConfigService, BaseService, DATASOURCES, ROUTES, SHARED } from '../../shared';\r\nimport { ListService } from '../../shared/services/list.service';\r\nimport { Observable, tap } from 'rxjs';\r\n\r\n/**\r\n * Service for managing widget configurations.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class WidgetService extends BaseService<WidgetModel> {\r\n\r\n constructor(\r\n http: HttpClient,\r\n protected widgetStore: WidgetStore,\r\n private configService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, widgetStore, configService, listService);\r\n this._pathName = DATASOURCES.WIDGET;\r\n }\r\n\r\n getAllWidgets(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\r\n const url = `${this.apiUrl}${ROUTES.APPLICATION_WIDGET}${SHARED.QUESTION_MARK}${SHARED.RECORDID}${SHARED.EQUALS}${recordId}${SHARED.AMPERSAND}${SHARED.WIDGET_NAME}${SHARED.EQUALS}${widgetName}`;\r\n return this.http.get<WidgetModel[]>(url).pipe(\r\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\r\n );\r\n }\r\n\r\n getEvaluateFromCache(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\r\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}`;\r\n return this.http.get<WidgetModel[]>(url).pipe(\r\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\r\n );\r\n }\r\n\r\n getEvaluateByWidgetName(recordId:string, widgetName: string) : Observable<WidgetModel[]> {\r\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}`;\r\n return this.http.get<WidgetModel[]>(url).pipe(\r\n tap((entities: WidgetModel[]) => this.widgetStore.set(entities))\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SHARED } from '../constant/SHARED';\r\nimport { StyleConfig } from '../../widget/models/widget.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StyleBuilderService {\r\n\r\n constructor() { }\r\n\r\n getStyle(style: any): { [key: string]: string } {\r\n if (!style) return {};\r\n\r\n if (typeof style === 'string') style = this.parseStyleObject(style);\r\n\r\n const itemStyle = typeof style.itemStyle === 'string'\r\n ? this.parseStyleObject(style.itemStyle)\r\n : (style.itemStyle || {});\r\n\r\n const styleExpression = typeof style.styleExpression === 'string'\r\n ? this.parseStyleObject(style.styleExpression)\r\n : (style.styleExpression || {});\r\n\r\n return {\r\n ...this.normalizeStyleObject(itemStyle),\r\n ...this.normalizeStyleObject(styleExpression),\r\n };\r\n }\r\n\r\n parseStyleObject(styleStr?: string): Record<string, any> {\r\n if (!styleStr) return {};\r\n\r\n let toParse = styleStr.trim();\r\n toParse = toParse.replace(/^['\"]+/, \"\").replace(/['\"]+$/, \"\").trim();\r\n try {\r\n return JSON.parse(toParse);\r\n } catch (e) {\r\n console.warn(\"Failed to parse style:\", styleStr, \"→ tried:\", toParse);\r\n return {};\r\n }\r\n }\r\n \r\n private normalizeStyleObject(obj: { [key: string]: any }): { [key: string]: string } {\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined && value !== '') {\r\n acc[key.trim()] = value.toString().trim();\r\n }\r\n return acc;\r\n }, {} as { [key: string]: string }); // 👈 this line avoids the error\r\n }\r\n\r\n getItemStyle(style: any | undefined): { [key: string]: string } {\r\n if (!style) return {};\r\n \r\n return Object.entries(style).reduce((acc: any, [key, value]) => {\r\n if (value) acc[key.trim()] = value.toString().trim();\r\n return acc;\r\n }, {});\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n@Component({\r\n selector: 'lib-widget-header',\r\n standalone: false,\r\n templateUrl: './widget-header.component.html',\r\n styleUrl: './widget-header.component.scss'\r\n})\r\nexport class WidgetHeaderComponent implements OnChanges {\r\n @Input() widget!: WidgetModel;\r\n headerStyle: { [key: string]: any } = {};\r\n subHeaderStyle: { [key: string]: any } = {};\r\n headerIconStyle: { [key: string]: any } = {};\r\n headerIconClass!: string;\r\n\r\n constructor(private styleBulderService: StyleBuilderService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.widget && this.widget.style) {\r\n const parsedHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerStyle);\r\n const parsedSubHeaderStyle = this.styleBulderService.parseStyleObject(this.widget.style.subHeaderStyle);\r\n const parsedHeaderIconStyle = this.styleBulderService.parseStyleObject(this.widget.style.headerIconStyle);\r\n this.headerStyle = this.styleBulderService.getItemStyle(parsedHeaderStyle);\r\n this.subHeaderStyle = this.styleBulderService.getItemStyle(parsedSubHeaderStyle);\r\n this.headerIconStyle = this.styleBulderService.getItemStyle(parsedHeaderIconStyle);\r\n this.headerIconClass = this.widget.style.headerIconClass;\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"widget.header || widget.subHeader\" class=\"grid m-0 align-items-center justify-content-between px-3 pt-3\">\r\n <div class=\"col-12 p-0\">\r\n <div class=\"flex align-items-center\">\r\n <i [class]=\"headerIconClass\" [ngStyle]=\"headerIconStyle\"></i>\r\n <h3 [ngStyle]=\"headerStyle\" class=\"m-0 application-title-wrapper\">\r\n {{ (widget.header) }}\r\n </h3>\r\n </div>\r\n <div *ngIf=\"widget?.subHeader\" class=\"flex align-items-center mt-2\">\r\n <span [ngStyle]=\"subHeaderStyle\" class=\"mr-3 font-semibold\">{{ widget.subHeader }}</span>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { PERMISSION } from '../../../shared/constant/PERMISSION';\r\n\r\n/**\r\n * Widget Footer Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-footer',\r\n standalone: false,\r\n templateUrl: './widget-footer.component.html',\r\n styleUrl: './widget-footer.component.scss'\r\n})\r\nexport class WidgetFooterComponent {\r\n @Input() widget!: WidgetModel;\r\n\r\n constructor(private widgetStore: WidgetStore) {}\r\n PERMISSION = PERMISSION\r\n viewAllDetails(event : any) {\r\n if(event){\r\n this.widgetStore.setOnViewAllDetails(this.widget);\r\n }\r\n }\r\n }\r\n","<div *ngIf=\"widget.isFormEnabled\" class=\"col-12 p-0 mt-3 flex justify-content-center\">\r\n <a class=\"p-button p-button-link text-primary-500\">\r\n @if(widget.isFormEnabled){\r\n <span class=\"underline font-semibold\" [permission]=\"PERMISSION.WIDGETS_EVALUATE\"\r\n (click)=\"viewAllDetails($event)\">View\r\n All Details</span>\r\n <i class=\"pi pi-arrow-up-right arrow-up-icon ml-2\"></i>\r\n }\r\n </a>\r\n</div>","import { Component, Input, OnChanges, OnDestroy, OnInit } from '@angular/core';\r\nimport { WidgetItem, WidgetModel } from '../../models/widget.model';\r\nimport { SHARED } from '../../../shared';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport moment from 'moment';\r\n\r\n@Component({\r\n selector: 'lib-widget-item',\r\n standalone: false,\r\n templateUrl: './widget-item.component.html',\r\n styleUrl: './widget-item.component.scss'\r\n})\r\nexport class WidgetItemComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() widgetItem!: WidgetItem;\r\n @Input() widget!: WidgetModel;\r\n @Input() application: any;\r\n widgetKey!: string;\r\n isEmptyValueHidden: boolean = false;\r\n keyClass!: string;\r\n valueClass!: string;\r\n fieldKeyStyle: { [key: string]: any } = {};\r\n fieldValueStyle: { [key: string]: any } = {};\r\n keyIconClass: string | undefined = SHARED.EMPTY;\r\n keyIconStyle: { [key: string]: any } = {};\r\n valueIconClass: string | undefined = SHARED.EMPTY;\r\n valueIconStyle: { [key: string]: any } = {};\r\n valueStyleExpression: { [key: string]: any } = {};\r\n mergedValueStyle: { [key: string]: any } = {};\r\n hasSeparator: boolean | undefined = false;\r\n isConfirmed: boolean | undefined = false;\r\n valueIconExpression!: string;\r\n valueIconStyleExpression: { [key: string]: any } = {};\r\n mergedValueIconStyle: { [key: string]: any } = {};\r\n isMenu: boolean = false;\r\n valueIconClassExpression!: string;\r\n private destroy$ = new Subject<void>();\r\n \r\n // Computed properties for template (performance optimization)\r\n shouldShowItem: boolean = true;\r\n hasContent: boolean = false;\r\n isDateValue: boolean = false;\r\n formattedDateValue: string = '';\r\n hasHtmlContentValue: boolean = false;\r\n\r\n constructor(private styleBulderService: StyleBuilderService, private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) { }\r\n\r\n ngOnInit(): void {\r\n this.handleIsMenu();\r\n this.handleIsEmptyValueHidden();\r\n }\r\n\r\n ngOnChanges(): void {\r\n // Handle isEmptyLabelHidden from widget model changes\r\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\r\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\r\n }\r\n \r\n if (this.widgetItem && this.widgetItem.style) {\r\n this.keyClass = this.widgetItem.style.keyClass;\r\n this.valueClass = this.widgetItem.style.valueClass;\r\n this.widgetKey = this.widgetItem.key.replace(/^['\"]+|['\"]+$/g, '').trim();\r\n const parsedValueStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.value);\r\n const parsedKeyStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.key);\r\n const parsedKeyIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.keyIconStyle);\r\n const parsedValueIconStyle = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyle);\r\n const parsedValueStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.styleExpression);\r\n const parsedValueIconStyleExpression = this.styleBulderService.parseStyleObject(this.widgetItem.style.valueIconStyleExpression);\r\n\r\n this.fieldValueStyle = this.styleBulderService.getItemStyle(parsedValueStyle);\r\n this.fieldKeyStyle = this.styleBulderService.getItemStyle(parsedKeyStyle);\r\n this.valueStyleExpression = this.widgetItem.style.styleExpression ? this.styleBulderService.getItemStyle(parsedValueStyleExpression) : {};\r\n this.mergedValueStyle = { ...this.fieldValueStyle, ...this.valueStyleExpression };\r\n this.keyIconClass = this.widgetItem.style.keyIconClass;\r\n this.keyIconStyle = this.widgetItem.style.keyIconStyle ? this.styleBulderService.getItemStyle(parsedKeyIconStyle) : {};\r\n this.valueIconClass = this.widgetItem.style.valueIconClass;\r\n this.valueIconClassExpression = this.widgetItem.style.valueIconClassExpression ? this.widgetItem.style.valueIconClassExpression.replace(/^['\"]+|['\"]+$/g, \"\") : '';\r\n this.valueIconStyle = this.widgetItem.style.valueIconStyle ? this.styleBulderService.getItemStyle(parsedValueIconStyle) : {};\r\n this.valueIconStyleExpression = this.widgetItem.style.valueIconStyleExpression ? this.styleBulderService.getItemStyle(parsedValueIconStyleExpression) : {};\r\n this.mergedValueIconStyle = { ...this.valueIconStyle, ...this.valueIconStyleExpression };\r\n this.hasSeparator = this.widgetItem.style.hasSeparator;\r\n this.isConfirmed = this.widgetItem.style.isConfirmed === SHARED.STRING_TRUE ? true : false;\r\n \r\n // Compute values once for performance\r\n this.computeValueProperties();\r\n }\r\n }\r\n\r\n /**\r\n * Computes all value-related properties once to avoid function calls in template\r\n */\r\n private computeValueProperties(): void {\r\n // Check if value has content\r\n this.hasContent = this.hasValueContent(this.widgetItem.value, this.widgetItem.isHtml);\r\n \r\n // Determine if item should be shown based on isEmptyValueHidden\r\n this.shouldShowItem = this.isEmptyValueHidden ? this.hasContent : true;\r\n \r\n // Check if value is a date\r\n this.isDateValue = this.isDate(this.widgetItem.value);\r\n \r\n // Format date if it's a date value\r\n this.formattedDateValue = this.isDateValue ? this.formatDate(this.widgetItem.value) : '';\r\n \r\n // Check if HTML has content\r\n this.hasHtmlContentValue = this.widgetItem.isHtml ? this.hasHtmlContent(this.widgetItem.value) : false;\r\n }\r\n\r\n handleIsMenu() {\r\n this.widgetQuery.getIsMenu()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.isMenu = res;\r\n }\r\n });\r\n }\r\n\r\n handleIsEmptyValueHidden() {\r\n // Use isEmptyLabelHidden directly from widget model\r\n if (this.widget && this.widget.isEmptyLabelHidden !== undefined) {\r\n this.isEmptyValueHidden = this.widget.isEmptyLabelHidden;\r\n }\r\n \r\n if (this.widgetItem && this.widgetItem.style) {\r\n this.computeValueProperties();\r\n }\r\n }\r\n\r\n handleDynamicEvent(recordId: string) {\r\n this.widgetStore.setEventClickDetails({ recordId: recordId, isDailogShow: true });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.widgetStore.setOnWidgetItemClick(null);\r\n this.widgetStore.setEventClickDetails({ recordId: null, isDailogShow: false });\r\n }\r\n\r\n isDate(value: any): boolean {\r\n if (!value || typeof value !== 'string') return false;\r\n\r\n // Require separators like '/' or '-' to confirm it's a real date format\r\n if (!/[\\/\\-]/.test(value)) {\r\n return false; // e.g. \"1983\" will fail here\r\n }\r\n\r\n const validFormats = ['DD/MM/YYYY', 'YYYY/MM/DD', moment.ISO_8601];\r\n return moment(value, validFormats, true).isValid();\r\n}\r\n\r\n\r\n handleWidgetItemClick(widgetItem: WidgetItem) {\r\n const updatedItem = { ...widgetItem };\r\n const applicantId = this.widget.recordId;\r\n switch (updatedItem.route) {\r\n case SHARED.DIRECT_DEBIT:\r\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\r\n updatedItem.value = directDebit[0].value;\r\n break;\r\n case SHARED.SOLICITOR:\r\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\r\n updatedItem.value = solicitor[0].value;\r\n break;\r\n case SHARED.PRODUCT:\r\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\r\n updatedItem.value = product[0].value;\r\n break;\r\n case SHARED.COMMITMENTS:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.INCOME:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.EXPENDITURE:\r\n updatedItem.value = applicantId;\r\n break;\r\n }\r\n this.widgetStore.setWidgetData(this.widget);\r\n this.widgetStore.setOnWidgetItemClick(updatedItem);\r\n }\r\n\r\n\r\n /**\r\n * Checks if the HTML value has actual content after parsing\r\n * @param value - The HTML string to check\r\n * @returns true if there's meaningful content, false otherwise\r\n */\r\n hasHtmlContent(value: string): boolean {\r\n if (!value || value === 'null' || value === 'undefined') {\r\n return false;\r\n }\r\n\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = value;\r\n\r\n const textContent = tempDiv.textContent || tempDiv.innerText || '';\r\n\r\n return textContent.replace(/[,.]/g, '').trim().length > 0;\r\n }\r\n\r\n /**\r\n * Checks if the value has meaningful content (for both HTML and non-HTML values)\r\n * @param value - The value to check\r\n * @param isHtml - Whether the value is HTML content\r\n * @returns true if there's meaningful content, false otherwise\r\n */\r\n hasValueContent(value: string, isHtml: boolean): boolean {\r\n if (!value || value === 'null' || value === 'undefined') {\r\n return false;\r\n }\r\n\r\n if (isHtml) {\r\n return this.hasHtmlContent(value);\r\n } else {\r\n return value.trim().length > 0;\r\n }\r\n }\r\n\r\n\r\n formatDate(value: string): string {\r\n if (this.isDate(value)) {\r\n return moment(value, [\"DD/MM/YYYY\", \"YYYY/MM/DD\", moment.ISO_8601]).format(\"DD/MM/YYYY\");\r\n }\r\n return value;\r\n }\r\n\r\n}\r\n","<div class=\"widget-container px-3 overflow-hidden\" *ngIf=\"shouldShowItem\">\r\n <div class=\"widget-content widget-wrapper\" [class.border-top]=\"hasSeparator\" [ngClass]=\"{\r\n 'layout-row': widget.layoutType === 'row',\r\n 'layout-tile m-0': widget.layoutType === 'tile'\r\n }\">\r\n <div class=\"flex align-items-center justify-content-between\"\r\n [ngClass]=\"widget.layoutType === 'row' ? 'w-7' : 'w-full'\">\r\n <div class=\"flex align-items-center\">\r\n <i *ngIf=\"keyIconClass\" class=\"mr-2\" [ngClass]=\"keyIconClass\" [ngStyle]=\"keyIconStyle\"></i>\r\n <p *ngIf=\"!isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\r\n <p *ngIf=\"isMenu\" [ngClass]=\"keyClass\" [ngStyle]=\"fieldKeyStyle\" (click)=\"handleDynamicEvent(widget.recordId)\"\r\n class=\"mb-0 mr-3 key-field-wrapper\">{{ widgetKey }}</p>\r\n </div>\r\n <div class=\"flex justify-content-end\" *ngIf=\"isConfirmed\">\r\n <img src=\"assets/icons/confirm-icon.svg\" alt=\"confirm icon\" width=\"18\" height=\"18\" />\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-full\" \r\n [ngClass]=\"widget.layoutType === 'row' ? 'flex align-items-center justify-content-end w-5': 'w-full'\">\r\n <i *ngIf=\"valueIconClass\" [ngClass]=\"valueIconClass\" [ngStyle]=\"mergedValueIconStyle\"></i>\r\n <i *ngIf=\"valueIconClassExpression\" [ngClass]=\"valueIconClassExpression\" [ngStyle]=\"mergedValueIconStyle\"></i>\r\n <ng-container *ngIf=\"widgetItem.isEvent; else notEvent\">\r\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\r\n (click)=\"handleDynamicEvent(widget.recordId)\">\r\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\r\n </a>\r\n </ng-container>\r\n\r\n <ng-template #notEvent>\r\n <ng-container *ngIf=\"widgetItem.isLink; else plainText\">\r\n <a class=\"cursor-pointer key-field-wrapper\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"\r\n (click)=\"handleWidgetItemClick(widgetItem)\">\r\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\r\n </a>\r\n </ng-container>\r\n </ng-template>\r\n\r\n <ng-template #plainText>\r\n @if(widgetItem.isHtml && hasHtmlContentValue) {\r\n <div class=\"key-field-wrapper\" [innerHTML]=\"widgetItem.value !== 'null' ? widgetItem.value : ''\"\r\n [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\"></div>\r\n }\r\n @else if(!widgetItem.isHtml) {\r\n <p class=\"mb-0\" [ngClass]=\"valueClass\" [ngStyle]=\"mergedValueStyle\">\r\n\r\n <ng-container *ngIf=\"isDateValue; else normalText\">\r\n {{ formattedDateValue }}\r\n </ng-container>\r\n <ng-template #normalText>\r\n {{ widgetItem.value !== 'null' ? widgetItem.value : '' }}\r\n </ng-template>\r\n </p>\r\n }\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n@Component({\r\n selector: 'lib-widget-body',\r\n templateUrl: './widget-body.component.html',\r\n styleUrl: './widget-body.component.scss',\r\n standalone : false\r\n})\r\nexport class WidgetBodyComponent implements OnChanges{\r\n\r\n constructor(private styleBulderService: StyleBuilderService) {}\r\n @Input() widget!: WidgetModel;\r\n hasBackgroundColor: Array<boolean> = [];\r\n widgetItemStyle: Array<{ [key: string]: any }> = [];\r\n isConfirmed: Array<boolean> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.widget && this.widget.dataItems) {\r\n this.widgetItemStyle = this.widget.dataItems.map((item, i) => {\r\n const parsedItemStyle = this.styleBulderService.parseStyleObject(item?.style?.itemStyle);\r\n const itemStyleObject = this.styleBulderService.getItemStyle(parsedItemStyle);\r\n\r\n if (parsedItemStyle?.['backgroundColor']) {\r\n this.hasBackgroundColor[i] = true;\r\n }\r\n\r\n return { ...itemStyleObject };\r\n });\r\n\r\n this.isConfirmed = (this.widget.dataItems)\r\n .filter(item => item.style != null)\r\n .map(item =>\r\n item.style.isConfirmed === 'true' ? true : false\r\n ) || [];\r\n }\r\n }\r\n}\r\n","<div class=\"widget-body-container grid m-0\">\r\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\" [ngClass]=\"[widget.style.width, widget.style.width === 'col-12' ? 'p-0' : '']\">\r\n @if(!dataItem.isHidden){\r\n <div class=\"h-full\" [ngStyle]=\"widgetItemStyle[i]\" \r\n [ngClass]=\"{\r\n 'widget-confirm-wrapper': isConfirmed[i]\r\n }\">\r\n <div>\r\n <lib-widget-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-item>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n@Component({\r\n selector: 'lib-widget-main',\r\n standalone: false,\r\n templateUrl: './widget-main.component.html',\r\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-main.component.scss']\r\n})\r\nexport class WidgetMainComponent implements OnChanges {\r\n constructor(private styleBulderService: StyleBuilderService) {}\r\n\r\n @Input() widget!: WidgetModel;\r\n @Input() index!: number;\r\n widgetStyle: { [key: string]: any } = {};\r\n styleExpression: { [key: string]: any } = {};\r\n widgetCombinedStyle: { [key: string]: any } = {};\r\n\r\n ngOnChanges(): void {\r\n if(this.widget && this.widget.style) {\r\n const parsedItemStyle = this.styleBulderService.parseStyleObject(this.widget.style.widgetStyle);\r\n const styleExpression = this.styleBulderService.parseStyleObject(this.widget.style.styleExpression);\r\n this.widgetStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\r\n this.styleExpression = this.widget.style.styleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\r\n console.log(styleExpression);\r\n this.widgetCombinedStyle = { ...this.widgetStyle, ...this.styleExpression };\r\n }\r\n }\r\n}","<div [ngStyle]=\"widgetCombinedStyle\" class=\"widget-container-wrapper\" [ngClass]=\"index !== 0 ? 'mt-4' : ''\">\r\n <div class=\"widget-container-wrapper\">\r\n <lib-widget-header [widget]=\"widget\"></lib-widget-header>\r\n <div [ngClass]=\"[(widget.header || widget.subHeader) ? 'widget-content-wrapper' : '', widget.style.width === 'col-6' ? 'px-2' : '']\" class=\"py-3\">\r\n <lib-widget-body [widget]=\"widget\"></lib-widget-body>\r\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\r\n </div>\r\n </div>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { CustomWidgetModel, StatusItem } from \"../models/custom-widget.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomWidgetService {\r\n constructor() {}\r\n\r\n isLastIndex(event: StatusItem, widgetData: CustomWidgetModel): boolean {\r\n if (!widgetData.statusList) {\r\n return false;\r\n }\r\n const index = widgetData.statusList.indexOf(event);\r\n return index === widgetData.statusList.length - 1;\r\n }\r\n\r\n getNextEventStatus(event: StatusItem, widgetData: CustomWidgetModel): string | null {\r\n const index = this.getEventIndex(event, widgetData);\r\n if (widgetData.statusList && index >= 0 && index + 1 < widgetData.statusList.length) {\r\n return widgetData.statusList[index + 1].status;\r\n }\r\n return null;\r\n }\r\n\r\n getEventIndex(event: StatusItem, widgetData: CustomWidgetModel): number {\r\n return widgetData.statusList ? widgetData.statusList.indexOf(event) : -1;\r\n }\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { CustomWidgetModel, StatusItem } from \"../../models/custom-widget.model\";\r\nimport { CustomWidgetService } from \"../../../shared/services/custom-widget.service\";\r\n\r\n@Component({\r\n selector: \"lib-custom-widget\",\r\n templateUrl: \"./custom-widget.component.html\",\r\n styleUrl: \"./custom-widget.component.scss\",\r\n standalone: false,\r\n})\r\nexport class CustomWidgetComponent {\r\n @Input() widgetData!: CustomWidgetModel;\r\n\r\n constructor(private widgetUtilService: CustomWidgetService) {}\r\n\r\n isLastIndex(event: StatusItem): boolean {\r\n return this.widgetUtilService.isLastIndex(event, this.widgetData);\r\n }\r\n\r\n getNextEventStatus(event: StatusItem): string | null {\r\n return this.widgetUtilService.getNextEventStatus(event, this.widgetData);\r\n }\r\n\r\n getEventIndex(event: StatusItem): number {\r\n return this.widgetUtilService.getEventIndex(event, this.widgetData);\r\n }\r\n}\r\n","@if(widgetData){\r\n<div class=\"custom-widget\">\r\n\r\n <div class=\" ml-3\" style=\"display: flex; flex-direction: row; align-items: center;\">\r\n <h3 class=\"mb-0 font-bold mr-3 widgetData-title-wrapper\">\r\n {{ (widgetData.title) }}\r\n </h3>\r\n \r\n <span class=\"px-2 py-1 rounded text-white font-semibold badge\" [ngClass]=\"{\r\n 'bg-yellow-500': widgetData.badge === 'Pending',\r\n 'bg-green-500': widgetData.badge === 'Verified'\r\n }\">\r\n <i class=\"{{ widgetData.badgeIcon }}\"></i> {{ widgetData.badge }}\r\n </span>\r\n \r\n </div>\r\n <div class=\"widget-body-wrapper\">\r\n\r\n <p-timeline class=\"widget-timeline-wrapper\" [value]=\"widgetData?.statusList\">\r\n <ng-template pTemplate=\"marker\" let-event let-i=\"index\">\r\n <div class=\"p-timeline-event-marker\" [ngStyle]=\"{\r\n 'background-color': event.status === 'active' ? '#0F8BFD' :\r\n event.status === 'pending' ? '#676B89' :\r\n event.status === 'removed' ? '#FF0000' :\r\n '#0F8BFD',\r\n 'border-color': event.status === 'active' ? '#0F8BFD' :\r\n event.status === 'pending' ? '#676B89' :\r\n event.status === 'removed' ? '#FF0000' :\r\n '#0F8BFD',\r\n 'outline': event.status === 'active' ? '4px solid #0f8bfd33' :\r\n event.status === 'pending' ? '4px solid #676b8933' :\r\n event.status === 'removed' ? '4px solid #FF0000' :\r\n '4px solid #0F8BFD',\r\n }\"></div>\r\n\r\n <div class=\"p-timeline-event-connector-border\" *ngIf=\"!isLastIndex(event)\" [ngStyle]=\"{\r\n border:\r\n getNextEventStatus(event) === 'active'\r\n ? '2px solid #0F8BFD'\r\n : getNextEventStatus(event) === 'pending'\r\n ? '2px solid #44486d33'\r\n : getNextEventStatus(event) === 'removed'\r\n ? '2px solid #FF0000'\r\n : '2px solid #0F8BFD',\r\n height: 'calc(100% - 18px)'\r\n }\"></div>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"p-timeline-event-content mb-2\"\r\n [ngClass]=\"{ 'mb-4': widgetData.title === 'Valuation' && event.title }\">\r\n\r\n <p *ngIf=\"!(widgetData.title === 'Valuation') && event.title\" class=\"event-title mb-2\"\r\n [innerHTML]=\"event.title\">\r\n </p>\r\n\r\n <p *ngIf=\"widgetData.title === 'Valuation' && event.title\" class=\"event-title mb-2\">\r\n <span style=\"color: #0f8bfd; text-decoration: underline; font-weight: bold\">{{ event.title?.split(' ')[0]\r\n }}</span>\r\n {{ event.title?.substring(event.title.indexOf(' ') + 1) }}\r\n </p>\r\n \r\n <span class=\"font-medium event-description\" [ngClass]=\"{ 'font-bold': event.textColor }\"\r\n [ngStyle]=\"{ color: event.textColor }\" [innerHTML]=\"event.description\"></span>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n</div>\r\n\r\n}","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { ERROR, SHARED } from '../../../shared';\r\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\r\nimport { WidgetService } from '../../state/widget.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { WidgetStore } from '../../state/widget.store';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu',\r\n standalone: false,\r\n templateUrl: './widget-menu.component.html',\r\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-menu.component.scss']\r\n})\r\nexport class WidgetMenuComponent implements OnInit, OnChanges, OnDestroy {\r\n constructor(\r\n private widgetService: WidgetService,\r\n public activatedRoute: ActivatedRoute,\r\n private widgetQuery: WidgetQuery,\r\n private widgetStore: WidgetStore,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n private destroy$ = new Subject<void>();\r\n widgets: WidgetModel[] = [];\r\n private subscriptions :Subscription[]=[];\r\n isLoading: boolean = true;\r\n\r\n @Output() onViewAllDetails = new EventEmitter<any>();\r\n @Output() onWidgetEventClick = new EventEmitter<any>();\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\r\n @Input() offerWidgetData!: CustomWidgetModel;\r\n @Input() valuationWidgetData!: CustomWidgetModel;\r\n\r\n ngOnInit(): void {\r\n this.handleEventClickDetails();\r\n this.handleOnViewAllDetails();\r\n const queueId = localStorage.getItem(SHARED.selectedQueue);\r\n const recordId = this.activatedRoute.snapshot.params[SHARED.ID];\r\n\r\n if (!queueId || !recordId) {\r\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\r\n queueId: queueId || SHARED.MISSING_QUEUE_ID,\r\n recordId: recordId || SHARED.MISSING_RECORD_ID\r\n });\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n this.getWidgetFromCacheList(queueId, recordId);\r\n this.getAllWidgetList(queueId, recordId);\r\n this.handleWidgetItemClick();\r\n }\r\n\r\n handleWidgetItemClick() {\r\n this.widgetQuery.getOnWidgetItemClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onWidgetItemClick.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnWidgetItemClick subscription:', error);\r\n }\r\n );\r\n }\r\n\r\n handleEventClickDetails() {\r\n this.widgetQuery.getEventClickDetails()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.onWidgetEventClick.next(res);\r\n }\r\n })\r\n }\r\n\r\n handleOnViewAllDetails() {\r\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onViewAllDetails.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnViewAllDetails subscription:', error);\r\n }\r\n ));\r\n }\r\n\r\n getAllWidgetList(queueId: string, recordId: string) {\r\n this.widgetService.getAllWidgets(queueId, recordId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.cdr.detectChanges();\r\n },\r\n (error) => {\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.cdr.detectChanges();\r\n }\r\n )\r\n }\r\n\r\n getWidgetFromCacheList(queueId: string, recordId: string) {\r\n this.widgetService.getEvaluateFromCache(queueId, recordId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.isLoading = false;\r\n },\r\n (error) => {\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.isLoading = false;\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.isSidebarVisible) {\r\n this.widgetStore.setEventClickDetails({recordId: null, isDailogShow: false});\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.widgets = [];\r\n this.widgetStore.resetOnViewAllDetails();\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<p-card class=\"widget-block-wrapper block\">\r\n <div class=\"widget-section-wrapper custom-scroll pt-2\">\r\n <!-- Loading state -->\r\n <ng-container *ngIf=\"isLoading; else widgetContent\">\r\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\r\n </ng-container>\r\n\r\n <!-- Content after API call -->\r\n <ng-template #widgetContent>\r\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\r\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\r\n <lib-widget-main [widget]=\"widget\" [index]=\"i\"></lib-widget-main>\r\n </ng-container>\r\n <ng-container *ngIf=\"offerWidgetData\">\r\n <lib-custom-widget [widgetData]=\"offerWidgetData\"></lib-custom-widget>\r\n </ng-container>\r\n <ng-container *ngIf=\"valuationWidgetData\">\r\n <lib-custom-widget [widgetData]=\"valuationWidgetData\"></lib-custom-widget>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- No widget configured state -->\r\n <ng-template #noWidgets>\r\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges,ChangeDetectorRef } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetService } from '../../state/widget.service';\r\nimport { SHARED } from '../../../shared';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\n\r\n\r\n/**\r\n * WidgetRowTileComponent is a component that displays a row of widgets in a tile format.\r\n * It fetches the widgets based on the provided record ID and widget name.\r\n */\r\n@Component({\r\n selector: 'lib-widget-row-tile',\r\n standalone: false,\r\n templateUrl: './widget-row-tile.component.html',\r\n styleUrls: ['../widget-container/widget-container.component.scss', './widget-row-tile.component.scss']\r\n})\r\nexport class WidgetRowTileComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n private destroy$ = new Subject<void>();\r\n widgets!: WidgetModel[];\r\n isLoading: boolean = true;\r\n @Input() recordId!: string;\r\n @Input() widgetName!: string;\r\n @Input() onWidgetUpdate: any;\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n widgetCardStyle: { [key: string]: any } = {};\r\n widgetCardStyleExpression: { [key: string]: any } = {};\r\n widgetCombinedStyle: { [key: string]: any } = {};\r\n constructor(private widgetService: WidgetService, private widgetStore: WidgetStore, private styleBulderService: StyleBuilderService, private cdr: ChangeDetectorRef,private widgetQuery: WidgetQuery) {}\r\n\r\n ngOnInit(): void {\r\n this.getWidgetItemList();\r\n this.handleWidgetItemClick();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes[SHARED.ON_WIDGET_UPDATE]) {\r\n this.isLoading = true;\r\n this.getWidgetItemList();\r\n }\r\n }\r\n\r\n getWidgetItemList() {\r\n this.widgetService.getEvaluateByWidgetName(this.recordId, this.widgetName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res: WidgetModel[]) => {\r\n this.widgets = res;\r\n this.widgetStore.setWidgetsList(this.widgets);\r\n this.updateWidgetStyles(this.widgets[0]);\r\n this.isLoading = false;\r\n },\r\n (error) => {\r\n this.isLoading = false;\r\n }\r\n )\r\n }\r\n\r\n handleWidgetItemClick() {\r\n this.widgetQuery.getOnWidgetItemClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onWidgetItemClick.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnWidgetItemClick subscription:', error);\r\n }\r\n );\r\n }\r\n\r\n private updateWidgetStyles(widget: any): void {\r\n if (widget.style) {\r\n const parsedItemStyle = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyle);\r\n const styleExpression = this.styleBulderService.parseStyleObject(widget.style.widgetCardStyleExpression);\r\n this.widgetCardStyle = this.styleBulderService.getItemStyle(parsedItemStyle);\r\n this.widgetCardStyleExpression = widget.style.widgetCardStyleExpression ? this.styleBulderService.getItemStyle(styleExpression) : {};\r\n this.widgetCombinedStyle = { ...this.widgetCardStyle, ...this.widgetCardStyleExpression };\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<p-card [style]=\"widgetCombinedStyle\" class=\"widget-block-wrapper block\">\r\n <div class=\"widget-section-wrapper\">\r\n <!-- Loading state -->\r\n <ng-container *ngIf=\"isLoading; else widgetContent\">\r\n <div *ngFor=\"let n of [1,2,3]\" style=\"padding: 6px;\">\r\n <p-skeleton width=\"100%\" height=\"45px\" styleClass=\"mb-3\"></p-skeleton>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Content after API call -->\r\n <ng-template #widgetContent>\r\n <ng-container *ngIf=\"(widgets && widgets.length > 0); else noWidgets\">\r\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\r\n <lib-widget-main [widget]=\"widget\" [index]=\"i\"></lib-widget-main>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- No widget configured state -->\r\n <ng-template #noWidgets>\r\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n</p-card>","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { SHARED } from '../../../shared';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n/**\r\n * Widget Container Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-container',\r\n standalone: false,\r\n templateUrl: './widget-container.component.html',\r\n styleUrl: './widget-container.component.scss'\r\n})\r\nexport class WidgetContainerComponent implements OnInit,OnChanges, OnDestroy{ \r\n\r\n constructor(private widgetStore: WidgetStore, private widgetQuery: WidgetQuery) {}\r\n\r\n @Input() isMenu = false;\r\n @Input() offerWidgetData!: CustomWidgetModel;\r\n @Input() valuationWidgetData!: CustomWidgetModel;\r\n @Input() widgetName!: string;\r\n @Input() recordId!: string;\r\n @Input() onWidgetUpdate: any;\r\n @Output() onViewAllDetails = new EventEmitter<any>();\r\n @Output() onWidgetEventClick = new EventEmitter<any>();\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n @Output() onUpdatedWidgetList = new EventEmitter<any>();\r\n private destroy$ = new Subject<void>();\r\n \r\n ngOnInit(): void {\r\n this.widgetQuery.getWidgetList()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data) => {\r\n if (data) {\r\n this.onUpdatedWidgetList.emit(data);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes[SHARED.IS_MENU]) {\r\n this.isMenu = changes[SHARED.IS_MENU].currentValue;\r\n this.widgetStore.setIsMenu(this.isMenu);\r\n }\r\n }\r\n\r\n handleViewAllDetails(event: any) {\r\n this.onViewAllDetails.emit(event);\r\n }\r\n\r\n handleWidgetEventClick(event: any) {\r\n this.onWidgetEventClick.emit(event);\r\n }\r\n\r\n handleWidgetItemClick(event: any) {\r\n this.onWidgetItemClick.emit(event);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}\r\n","<div class=\"widget-container-wrapper\">\r\n @if(isMenu) {\r\n <div class=\"bg-white widget-menu-container\">\r\n <lib-widget-menu \r\n [offerWidgetData]=\"offerWidgetData\"\r\n [valuationWidgetData]=\"valuationWidgetData\"\r\n (onViewAllDetails)=\"handleViewAllDetails($event)\"\r\n (onWidgetEventClick)=\"handleWidgetEventClick($event)\"\r\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\r\n ></lib-widget-menu>\r\n </div>\r\n } @else {\r\n <div class=\"bg-white widget-menu-container\">\r\n <lib-widget-row-tile\r\n [recordId]=\"recordId\"\r\n [widgetName]=\"widgetName\"\r\n [onWidgetUpdate]=\"onWidgetUpdate\"\r\n (onWidgetItemClick)=\"handleWidgetItemClick($event)\"\r\n ></lib-widget-row-tile>\r\n </div>\r\n }\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { ProgressChartModel } from '../../models/progress-chart.model';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu-header',\r\n standalone: false,\r\n templateUrl: './widget-menu-header.component.html',\r\n styleUrl: './widget-menu-header.component.scss'\r\n})\r\nexport class WidgetMenuHeaderComponent {\r\n @Input() widget!: WidgetModel;\r\n @Input() progressChartData!: ProgressChartModel;\r\n}\r\n","<div class=\"grid m-0 align-items-center justify-content-between px-3\">\r\n <div class=\"col-10 p-0\">\r\n <div class=\"flex align-items-center\">\r\n <h3 class=\"mb-0 application-title-wrapper font-bold mr-3\">\r\n {{ (widget.header) }}\r\n </h3>\r\n </div>\r\n <div *ngIf=\"widget?.subHeader\" class=\"flex align-items-center mt-2\">\r\n <span class=\"mr-1\">Risk Rating:</span>\r\n <span class=\"mr-3 font-semibold\" [ngClass]=\"{\r\n 'text-red-500': widget.subHeader === 'High',\r\n 'text-green-500': widget.subHeader === 'Low',\r\n 'text-yellow-500': widget.subHeader === 'Medium'\r\n }\">{{ widget.subHeader }}</span>\r\n </div>\r\n </div>\r\n @if(widget.predefinedName == \"ApplicationWidget\") {\r\n <div class=\"chart-container\">\r\n <p-chart type=\"pie\" [data]=\"progressChartData\" height=\"50px\" width=\"50px\"></p-chart>\r\n <p class=\"percentage-label text-green-500 text-lg\">{{ progressChartData.datasets[0].data[0] }}%</p>\r\n </div>\r\n }\r\n \r\n</div>","import { Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport { StyleConfig, WidgetItem, WidgetModel } from '../../models/widget.model';\r\nimport { SHARED } from '../../../shared';\r\nimport { StyleBuilderService } from '../../../shared/services/style-builder.service';\r\nimport { WidgetStore } from '../../state/widget.store';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu-item',\r\n standalone: false,\r\n templateUrl: './widget-menu-item.component.html',\r\n styleUrl: './widget-menu-item.component.scss'\r\n})\r\nexport class WidgetMenuItemComponent implements OnChanges, OnDestroy {\r\n @Input() widgetItem!:WidgetItem;\r\n @Input() widget!: WidgetModel;\r\n @Input() application: any;\r\n isShowExclamation: boolean = false;\r\n constructor(private styleBulderService : StyleBuilderService, private widgetStore: WidgetStore){}\r\n\r\n getStyle(style: StyleConfig){\r\n return this.styleBulderService.getStyle(style)\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // if(this.widgetItem && this.widgetItem.style && this.widgetItem.style.styleExpression && this.widgetItem.style.styleExpression.co) {\r\n // this.widgetItem.style.styleExpression.color\r\n // exclamation\r\n // }\r\n }\r\n\r\n onHandleSidebar(propertyId: string) {\r\n this.widgetStore.setOnViewPropertyDetails({propertyId: propertyId, isDailogShow: true});\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.widgetStore.setOnWidgetItemClick(null);\r\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\r\n }\r\n\r\n handleWidgetItemClick(widgetItem: WidgetItem){\r\n const updatedItem = { ...widgetItem };\r\n const applicantId = this.widget.recordId;\r\n switch (updatedItem.route) {\r\n case SHARED.DIRECT_DEBIT:\r\n const directDebit = this.widget.dataItems.filter((val) => val.key === SHARED.DIRECT_DEBITID);\r\n updatedItem.value = directDebit[0].value;\r\n break;\r\n case SHARED.SOLICITOR:\r\n const solicitor = this.widget.dataItems.filter((val) => val.key === SHARED.SOLICITORID);\r\n updatedItem.value = solicitor[0].value;\r\n break;\r\n case SHARED.PRODUCT:\r\n const product = this.widget.dataItems.filter((val) => val.key === SHARED.PRODUCT_ID);\r\n updatedItem.value = product[0].value;\r\n break;\r\n case SHARED.COMMITMENTS:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.INCOME:\r\n updatedItem.value = applicantId;\r\n break;\r\n case SHARED.EXPENDITURE:\r\n updatedItem.value = applicantId;\r\n break;\r\n }\r\n this.widgetStore.setWidgetData(this.widget);\r\n this.widgetStore.setOnWidgetItemClick(updatedItem);\r\n }\r\n}\r\n","<div class=\"widget-container\">\r\n <div class=\"flex justify-content-between\"\r\n [ngClass]=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget') ? 'align-items-center' : ''\">\r\n <p class=\"mb-0 text-color-secondary mr-3 key-field-wrapper w-50\">{{ widgetItem?.key }}</p>\r\n \r\n <div class=\"mb-0 text-color font-semibold text-value-wrapper w-50 flex align-items-center justify-content-end\">\r\n <i *ngIf=\"false\" class=\"pi pi-exclamation-triangle text-red-500 mr-1\"\r\n style=\"font-size: 1.3rem\"></i>\r\n <p *ngIf=\"!(widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget')\" class=\"key-field-wrapper\"\r\n [ngStyle]=\"getStyle(widgetItem.style)\">\r\n <ng-container *ngIf=\"widgetItem?.isLink; else plainText\">\r\n <a class=\"cursor-pointer\" (click)=\"handleWidgetItemClick(widgetItem)\">\r\n {{ (widgetItem.value && widgetItem.value !== 'null') ? widgetItem.value : '' }}\r\n </a>\r\n </ng-container>\r\n <ng-template #plainText>\r\n <a (click)=\"handleWidgetItemClick(widgetItem)\"> {{ (widgetItem?.value && widgetItem?.value !== 'null') ? widgetItem?.value : '' }} </a>\r\n </ng-template>\r\n </p>\r\n <i *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\r\n class=\"pi pi-map-marker map-icon map-icon-wrapper\"></i>\r\n </div>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"widgetItem.key === 'Address' && widget.predefinedName === 'PropertyWidget'\"\r\n class=\"address-title-wrapper cursor-pointer\" [ngStyle]=\"getStyle(widgetItem.style)\" (click)=\"onHandleSidebar(widget.recordId)\">\r\n {{ widgetItem?.value }}\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { WidgetModel } from '../../models/widget.model';\r\n\r\n@Component({\r\n selector: 'lib-widget-menu-body',\r\n standalone: false,\r\n templateUrl: './widget-menu-body.component.html',\r\n styleUrl: './widget-menu-body.component.scss'\r\n})\r\nexport class WidgetMenuBodyComponent {\r\n @Input() widget!: WidgetModel;\r\n}\r\n","<div class=\"widget-body-container\">\r\n <div *ngFor=\"let dataItem of widget?.dataItems || []; let i = index\">\r\n @if(!dataItem.isHidden){\r\n <div [ngClass]=\"i !== ((widget.dataItems || []).length - 1) ? 'widget-item-wrapper' : ''\">\r\n <div [ngClass]=\"\r\n dataItem?.key === 'Vulnerability' && widget.predefinedName === 'ApplicantWidget'\r\n ? 'vulnerability-title-wrapper'\r\n : ( i !== ((widget.dataItems || []).length - 1) ? 'widget-wrapper' : 'widget-last-wrapper' )\r\n \" class=\"px-3\">\r\n <lib-widget-menu-item [widgetItem]=\"dataItem\" [widget]=\"widget\"></lib-widget-menu-item>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ERROR, ROUTES, SHARED } from '../../../shared';\r\nimport { WidgetService } from '../../state/widget.service';\r\nimport { WidgetModel } from '../../models/widget.model';\r\nimport { WidgetQuery } from '../../state/widget.query';\r\nimport { Subject, Subscription, takeUntil } from 'rxjs';\r\nimport { WidgetStore } from '../../state/widget.store';\r\nimport { CustomWidgetModel } from '../../../shared/models/custom-widget.model';\r\nimport { ProgressChartModel } from '../../models/progress-chart.model';\r\n\r\n/**\r\n * Widget Container Component\r\n */\r\n@Component({\r\n selector: 'lib-widget-menu-container',\r\n standalone: false,\r\n templateUrl: './widget-menu-container.component.html',\r\n styleUrl: './widget-menu-container.component.scss'\r\n})\r\nexport class WidgetMenuContainerComponent implements OnInit, OnChanges, OnDestroy {\r\n constructor(\r\n private widgetService: WidgetService,\r\n public activatedRoute: ActivatedRoute,\r\n private widgetQuery: WidgetQuery,\r\n private widgetStore: WidgetStore,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n private destroy$ = new Subject<void>();\r\n widgets: WidgetModel[] = [];\r\n private subscriptions :Subscription[]=[];\r\n isLoading: boolean = true;\r\n \r\n @Input() widgetName!: string | null;\r\n @Input() recordId!: string | null;\r\n @Output() onViewAllDetails = new EventEmitter<any>();\r\n @Output() onViewAllProperties = new EventEmitter<any>();\r\n @Output() onWidgetItemClick = new EventEmitter<any>();\r\n @Output() getWidgetData = new EventEmitter<any>();\r\n @Output() onDirectDebitClick = new EventEmitter<any>();\r\n @Output() onWidgetLoaded = new EventEmitter<any>();\r\n @Input() isRouteChanged: string = SHARED.EMPTY;\r\n @Input() isSidebarVisible: boolean = SHARED.FALSE;\r\n @Input() offerWidgetData!: CustomWidgetModel;\r\n @Input() valuationWidgetData!: CustomWidgetModel;\r\n @Input() progressChartData!: ProgressChartModel;\r\n\r\n ngOnInit(): void {\r\n this.handleEventFromPropertyDetails();\r\n this.handleOnViewAllDetails();\r\n\r\n if (!this.widgetName || !this.recordId) {\r\n console.error(ERROR.ERROR_MISSING_PARAMETERS, {\r\n widgetName: this.widgetName || SHARED.MISSING_WIDGETNAME,\r\n recordId: this.recordId || SHARED.MISSING_RECORD_ID\r\n });\r\n this.isLoading = false;\r\n return;\r\n }\r\n\r\n this.getWidgetFromCacheList(this.recordId, this.widgetName);\r\n this.getAllWidgetList(this.recordId, this.widgetName);\r\n this.handleGetWidgetData()\r\n this.handleWidgetItemClick();\r\n }\r\n\r\n handleWidgetItemClick() {\r\n this.widgetQuery.getOnWidgetItemClick()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onWidgetItemClick.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnWidgetItemClick subscription:', error);\r\n }\r\n );\r\n\r\n }\r\n\r\n handleGetWidgetData() {\r\n this.widgetQuery.getWidgetData()\r\n .pipe(takeUntil(this.destroy$)) \r\n .subscribe(\r\n (res) => {\r\n if (res) {\r\n this.getWidgetData.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getWidgetData subscription:', error);\r\n }\r\n );\r\n }\r\n\r\n handleEventFromPropertyDetails() {\r\n this.widgetQuery.getViewPropertyDetails()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if (res) {\r\n this.onViewAllProperties.next(res);\r\n }\r\n })\r\n }\r\n\r\n handleOnViewAllDetails() {\r\n this.subscriptions.push(this.widgetQuery.getOnViewAllDetails()?.subscribe(\r\n (res) => {\r\n if (res) {\r\n this.onViewAllDetails.emit(res);\r\n }\r\n },\r\n (error) => {\r\n console.error('Error in getOnViewAllDetails subscription:', error);\r\n }\r\n ));\r\n }\r\n\r\n getAllWidgetList(recordId: string, widgetName: string) {\r\n this.widgetService.getAllWidgets(recordId, widgetName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.onWidgetLoaded.emit(this.widgets);\r\n this.cdr.detectChanges();\r\n },\r\n (error) => {\r\n this.onWidgetLoaded.emit(true);\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.cdr.detectChanges();\r\n }\r\n )\r\n }\r\n\r\n getWidgetFromCacheList(recordId: string, widgetName: string) {\r\n this.widgetService.getEvaluateFromCache(recordId, widgetName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (res) => {\r\n this.widgets = res.sort((a: any, b: any) => a.order - b.order);\r\n this.isLoading = false;\r\n },\r\n (error) => {\r\n console.error(ERROR.ERROR_FETCHING_WIDGET_DATA, error);\r\n this.isLoading = false;\r\n }\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.isSidebarVisible) {\r\n this.widgetStore.setOnViewPropertyDetails({propertyId: null, isDailogShow: false});\r\n }\r\n if(changes['isRouteChanged'] && this.widgetName && this.recordId) {\r\n console.log(this.isRouteChanged);\r\n this.getAllWidgetList(this.recordId, this.widgetName);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.widgets = [];\r\n this.widgetStore.resetOnViewAllDetails();\r\n this.onWidgetLoaded.emit(SHARED.EMPTY);\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n}","<p-card class=\"widget-block-wrapper block\">\r\n <div class=\"widget-section-wrapper pt-2\">\r\n <!-- Loading state -->\r\n <ng-container *ngIf=\"isLoading; else widgetContent\">\r\n <p class=\"text-color ml-3 font-semibold\">Widget configuration loading...</p>\r\n </ng-container>\r\n \r\n <!-- Content after API call -->\r\n <ng-template #widgetContent>\r\n <ng-container *ngIf=\"(widgets && widgets.length > 0) || (valuationWidgetData || offerWidgetData); else noWidgets\">\r\n <ng-container *ngFor=\"let widget of widgets; let i = index\">\r\n <div class=\"widget-container-wrapper pl-1\" [ngClass]=\"i !== 0 ? 'mt-4' : ''\">\r\n <lib-widget-menu-header [widget]=\"widget\" [progressChartData]=\"progressChartData\"></lib-widget-menu-header>\r\n <div class=\"widget-content-wrapper mt-3 py-3\">\r\n <lib-widget-menu-body [widget]=\"widget\"></lib-widget-menu-body>\r\n <lib-widget-footer [widget]=\"widget\"></lib-widget-footer>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- No widget configured state -->\r\n <ng-template #noWidgets>\r\n <p class=\"text-color ml-3 font-semibold\">No Widgets Configured</p>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n </p-card>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { CardModule } from 'primeng/card';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SharedModule } from '../shared';\r\nimport { WidgetContainerComponent } from './components/widget-container/widget-container.component';\r\nimport { WidgetHeaderComponent } from './components/widget-header/widget-header.component';\r\nimport { WidgetFooterComponent } from './components/widget-footer/widget-footer.component';\r\nimport { WidgetBodyComponent } from './components/widget-body/widget-body.component';\r\nimport { WidgetItemComponent } from './components/widget-item/widget-item.component';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { ChartModule } from 'primeng/chart';\r\nimport { WidgetMainComponent } from './components/widget-main/widget-main.component';\r\nimport { WidgetMenuComponent } from './components/widget-menu/widget-menu.component';\r\nimport { WidgetRowTileComponent } from './components/widget-row-tile/widget-row-tile.component';\r\nimport { WidgetMenuContainerComponent } from './components/widget-menu-container/widget-menu-container.component';\r\nimport { WidgetMenuHeaderComponent } from './components/widget-menu-header/widget-menu-header.component';\r\nimport { WidgetMenuBodyComponent } from './components/widget-menu-body/widget-menu-body.component';\r\nimport { WidgetMenuItemComponent } from './components/widget-menu-item/widget-menu-item.component';\r\nimport { CustomWidgetComponent } from './components/custom-widget/custom-widget.component';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n\r\n\r\n@NgModule({\r\n declarations: [WidgetContainerComponent, WidgetMenuComponent, WidgetMainComponent, WidgetHeaderComponent, WidgetFooterComponent, WidgetBodyComponent, WidgetItemComponent, WidgetRowTileComponent, WidgetMenuContainerComponent, WidgetMenuHeaderComponent, WidgetMenuBodyComponent, WidgetMenuItemComponent, CustomWidgetComponent],\r\n imports: [\r\n CommonModule,\r\n ButtonModule,\r\n DividerModule,\r\n CardModule,\r\n SharedModule,\r\n SidebarModule,\r\n TimelineModule,\r\n ChartModule,\r\n SkeletonModule\r\n ],\r\n exports: [WidgetContainerComponent, WidgetMenuContainerComponent, CustomWidgetComponent]\r\n})\r\nexport class WidgetModule { }","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { QueueModel } from \"../models/queue.model\";\r\nimport { QueueStore } from \"./queue.store\";\r\nimport { Observable, tap } from \"rxjs\";\r\nimport { DATASOURCES } from \"../../shared/constant/DATASOURCES\";\r\nimport { BaseService } from \"../../shared/state/base.service\";\r\nimport { AppConfigService } from \"../../shared/services/app-config.service\";\r\nimport { ListService } from \"../../shared/services/list.service\";\r\nimport { SHARED } from \"../../shared/constant/SHARED\";\r\n\r\n/**\r\n * Service for managing queue-related operations such as retrieving,\r\n * searching, and storing queue data in the QueueStore.\r\n */\r\n@Injectable({ providedIn: \"root\" })\r\nexport class QueueService extends BaseService<QueueModel> {\r\n\r\n /**\r\n * Creates an instance of QueueService.\r\n * @param {QueueStore} queueStore - The store that manages the QueueModel state\r\n * @param {HttpClient} http - Angular HttpClient for making HTTP requests\r\n * @param {AppConfigService} appConfigService - Service for accessing application configuration\r\n * @param {ListService} listService - Service for handling list-related operations\r\n */\r\n constructor(\r\n public queueStore: QueueStore,\r\n http: HttpClient,\r\n appConfigService: AppConfigService,\r\n listService: ListService\r\n ) {\r\n super(http, queueStore, appConfigService, listService);\r\n this._pathName = DATASOURCES.QUEUES;\r\n }\r\n\r\n /**\r\n * Fetches queue records using the provided apiConfig URL and optional params.\r\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\r\n * @param {any} [params] - Optional query parameters as an object\r\n * @returns {Observable<any>} Observable emitting the queue records\r\n */\r\n getQueueRecordsByApiConfig(apiConfig: string, params?: any): Observable<any> {\r\n let url = apiConfig;\r\n if (params && typeof params === 'object') {\r\n const queryString = new URLSearchParams(params).toString();\r\n if (queryString) {\r\n url += (url.includes('?') ? '&' : '?') + queryString;\r\n }\r\n }\r\n return this.http.get<any>(url).pipe(\r\n tap((response: any) => {\r\n if (response && response.data) {\r\n this.queueStore.set(response.data);\r\n } else if (Array.isArray(response)) {\r\n this.queueStore.set(response);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Fetches paginated queue records using the provided apiConfig URL with search and pagination support.\r\n * This is the unified method used for both initial data loading and search functionality.\r\n * @param {string} apiConfig - The full API endpoint to fetch records for the selected queue\r\n * @param {string} [searchKey] - Optional search term\r\n * @param {number} [page] - Page number (default: 1)\r\n * @param {number} [limit] - Number of records per page (default: 10)\r\n * @param {string} [query] - Optional query string for filtering\r\n * @param {string} [sortBy] - Optional sort field\r\n * @param {string} [sortOrder] - Optional sort order ('asc' or 'desc')\r\n * @returns {Observable<any>} Observable emitting the paginated queue records\r\n */\r\n getPaginatedQueueRecords(apiConfig: string, searchKey?: string, page: number = 1, limit: number = 10, query?: string, sortBy?: string, sortOrder?: string): Observable<any> {\r\n let url = apiConfig;\r\n const params: any = {\r\n page: page.toString(),\r\n limit: limit.toString(),\r\n ...(searchKey ? { searchKey } : {}),\r\n ...(sortBy ? { sortBy } : {}),\r\n ...(sortOrder ? { sortOrder } : {})\r\n };\r\n \r\n // Add query parameters if they exist\r\n if (query) {\r\n const queryParams = new URLSearchParams(query);\r\n queryParams.forEach((value, key) => {\r\n params[key] = value;\r\n });\r\n }\r\n \r\n const paramsString = new URLSearchParams(params).toString();\r\n url += (url.includes('?') ? '&' : '?') + paramsString;\r\n \r\n return this.http.get<any>(url).pipe(\r\n tap((response: any) => {\r\n if (response && response.data) {\r\n this.queueStore.set(response.data);\r\n } else if (Array.isArray(response)) {\r\n this.queueStore.set(response);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Fetches all queue entities from the configured data source.\r\n * The entities are stored in the queueStore upon retrieval.\r\n * @returns {Observable<any>} Observable emitting the fetched queue entities\r\n */\r\n getAllQueue(): Observable<any> {\r\n return this.http.get<any>(this.apiUrl + this._pathName).pipe(\r\n tap((entities: any) => { this.queueStore.set(entities); })\r\n );\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { TableBuilder } from '../../shared/services/table.builder';\r\nimport { TableSecondaryModel } from '../../shared/table-secondary/models/table-secondary.model';\r\nimport { QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST, SHARED, FIELD_DISPLAY_NAMES, QUEUE_RECORD_TABLE_COLUMN_ORDER } from '../../shared/constant/SHARED';\r\nimport * as columnStylesJson from '../constants/column-styles.json';\r\nimport { logAction } from '@datorama/akita';\r\n\r\n/**\r\n *\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class QueueRecordTableBuilderService extends TableBuilder {\r\n private columnStyles: any = (columnStylesJson as any).columnStyles;\r\n\r\n buildSecondaryTable(records: any[], headerWidths?: { [key: string]: string; }, editPermission?: string, deletePermission?: string): TableSecondaryModel {\r\n const table = new TableSecondaryModel();\r\n table.headers = [];\r\n table.records = [];\r\n\r\n if (records.length === 0) {\r\n return table;\r\n }\r\n\r\n // Get the first record to determine available fields\r\n const firstRecord = records[0];\r\n const excludedFields = [\r\n SHARED._ID,\r\n SHARED.COMPANY_NAME,\r\n SHARED.APPLICATION_TYPE,\r\n SHARED.ASSIGNED_TO,\r\n SHARED.TASK_COMPLETION_PERCENT,\r\n SHARED.RISK_RATING,\r\n SHARED.LENDING,\r\n SHARED.BROKERCOMPANY_NAME\r\n\r\n ]; // Fields to exclude from table columns\r\n\r\n // Get all fields from the first record, excluding specified fields\r\n let availableFields = QUEUE_RECORD_TABLE_COLUMN_ORDER\r\n .filter(field => !excludedFields.includes(field) && firstRecord.hasOwnProperty(field));\r\n\r\n const columnWidths: { [key: string]: string } = QUEUE_RECORD_TABLE_COLUMN_WIDTH_LIST;\r\n\r\n table.records = records.map((apiRecord, index) => {\r\n const record: any = {\r\n recordData: {\r\n recordId: apiRecord._id, // The nested recordData expected by table-secondary.component.ts\r\n ...apiRecord\r\n },\r\n ...apiRecord\r\n };\r\n\r\n // Add column widths for row alignment\r\n record._columnWidths = {};\r\n availableFields.forEach(field => {\r\n record._columnWidths[field] = columnWidths[field] || 'w-2';\r\n });\r\n\r\n // Add formatted values for each field\r\n availableFields.forEach(field => {\r\n let value = apiRecord[field];\r\n let cellValue: any = value;\r\n\r\n // Format specific fields\r\n if (field === SHARED.APPLICANTS && Array.isArray(value)) {\r\n const companyName = apiRecord.companyName || '';\r\n const bubbles = [];\r\n\r\n // If we have both company and applicants, show only company name\r\n if (companyName && value.length > 0) {\r\n const truncatedName = companyName.length > 15 ? companyName.substring(0, 12) + '...' : companyName;\r\n bubbles.push({\r\n fullName: truncatedName,\r\n isCompany: true\r\n });\r\n } else if (companyName) {\r\n // Only company, no applicants\r\n const truncatedName = companyName.length > 15 ? companyName.substring(0, 12) + '...' : companyName;\r\n bubbles.push({\r\n fullName: truncatedName,\r\n isCompany: true\r\n });\r\n } else {\r\n // Only applicants, show full names\r\n value.forEach((applicant) => {\r\n if (applicant.fullName) {\r\n const truncatedName = applicant.fullName.length > 15 ? applicant.fullName.substring(0, 12) + '...' : applicant.fullName;\r\n bubbles.push({\r\n fullName: truncatedName,\r\n isCompany: false,\r\n riskRating: applicant.riskRating,\r\n isCustomerVulnerable: applicant.isCustomerVulnerable\r\n });\r\n }\r\n });\r\n }\r\n cellValue = bubbles;\r\n }\r\n else if (field === SHARED.TASKS) {\r\n // Format tasks as task items with badges\r\n const taskItems = [];\r\n\r\n // Parse the string format \"brokerTasks/underwriterTasks\" (e.g., \"2/0\", \"0/3\", \"2/3\")\r\n if (typeof value === SHARED.STRING && value.includes(SHARED.SLASH)) {\r\n const [brokerTasksStr, underwriterTasksStr] = value.split(SHARED.SLASH);\r\n const brokerTasks = parseInt(brokerTasksStr) || 0;\r\n const underwriterTasks = parseInt(underwriterTasksStr) || 0;\r\n\r\n // Always show both badges, even if count is 0\r\n taskItems.push({\r\n type: SHARED.TASK_BROKER_LABEL,\r\n count: brokerTasks,\r\n status: SHARED.WARNING\r\n });\r\n taskItems.push({\r\n type: SHARED.TASK_UNDERWRITER_LABEL,\r\n count: underwriterTasks,\r\n status: SHARED.SUCCESS\r\n });\r\n }\r\n\r\n cellValue = taskItems;\r\n }\r\n else if (field === SHARED.APP_ID) {\r\n // Format App ID with type and risk tags below\r\n cellValue = {\r\n appId: value,\r\n type: apiRecord.lending || apiRecord.applicationType || undefined,\r\n risk: apiRecord.riskRating || undefined\r\n };\r\n }\r\n else if (field === SHARED.BROKER_NAME) {\r\n // Format broker with name and company name in multi-line format\r\n const brokerName = value && value.length > 15 ? value.substring(0, 12) + '...' : value;\r\n const brokerCompanyName = apiRecord[SHARED.BROKERCOMPANY_NAME];\r\n cellValue = {\r\n brokerName: brokerName || '',\r\n brokerCompanyName: brokerCompanyName || ''\r\n };\r\n }\r\n else if (field === 'finance') {\r\n // Remove decimal part from finance amount\r\n if (value && typeof value === 'string') {\r\n cellValue = {\r\n amount: value.replace(/\\.\\d{2}$/, ''),\r\n isFinance: true\r\n };\r\n } else {\r\n cellValue = value;\r\n }\r\n }\r\n else if (field === SHARED.SECURITY_ADDRESS && value) {\r\n const addressLine1 = value.addressLine1 || '';\r\n const truncatedAddress = addressLine1.length > 15 ? addressLine1.substring(0, 12) + '...' : addressLine1;\r\n record[field] = {\r\n line1: truncatedAddress,\r\n line2: value.postCode || ''\r\n };\r\n\r\n }\r\n else if (!value || value === 'null') {\r\n cellValue = SHARED.EMPTY;\r\n }\r\n\r\n record[field] = cellValue;\r\n });\r\n\r\n // Attach row-level ngClass expression for dynamic row styling\r\n const rowStyles = (columnStylesJson as any).rowStyles;\r\n if (rowStyles && rowStyles.ngClass) {\r\n record.rowNgClassExpression = rowStyles.ngClass;\r\n }\r\n return record;\r\n });\r\n\r\n\r\n\r\n table.headers = availableFields.map(field => {\r\n const header: any = {\r\n name: field,\r\n displayName: FIELD_DISPLAY_NAMES[field] || field,\r\n width: columnWidths[field] || 'w-2' // Default width for all columns\r\n };\r\n if (field === SHARED.SECURITY_ADDRESS) {\r\n header.isTwoLine = true;\r\n }\r\n\r\n if (field === SHARED.APPLICANTS) {\r\n header.skipParentNgClass = true;\r\n }\r\n if (field) {\r\n // Add containerNgClass and textNgClass expressions for dynamic styling\r\n if (this.columnStyles[field]) {\r\n if (this.columnStyles[field].containerNgClass) {\r\n header.containerNgClassExpression = this.columnStyles[field].containerNgClass;\r\n }\r\n if (this.columnStyles[field].containerNgStyle) {\r\n header.containerNgStyleExpression = this.columnStyles[field].containerNgStyle;\r\n }\r\n if (this.columnStyles[field].isShowSortIcon) {\r\n header.isShowSortIcon = this.columnStyles[field].isShowSortIcon;\r\n }\r\n if (this.columnStyles[field].textNgClass) {\r\n header.textNgClassExpression = this.columnStyles[field].textNgClass;\r\n }\r\n if (this.columnStyles[field].line1NgClass) {\r\n header.line1NgClassExpression = this.columnStyles[field].line1NgClass;\r\n }\r\n }\r\n }\r\n return header;\r\n });\r\n\r\n // Set TableSecondaryModel specific properties\r\n table.isSortingAllow = SHARED.TRUE;\r\n return table;\r\n }\r\n\r\n}","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n/**\r\n * `QueueSearchComponent` is responsible for displaying a search input and emitting\r\n * search terms to parent components for handling API calls with proper pagination.\r\n * Selector: `queue-search`\r\n * Template: `./queue-search.component.html`\r\n * Styles: `./queue-search.component.scss`\r\n */\r\n@Component({\r\n selector: 'queue-search',\r\n standalone: false,\r\n templateUrl: './queue-search.component.html',\r\n styleUrl: './queue-search.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueSearchComponent implements OnInit, OnDestroy {\r\n @Input() searchText: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() debounceTime: number = 400;\r\n @Output() searchInputChanged = new EventEmitter<string>();\r\n @Output() searchRequested = new EventEmitter<string>();\r\n @Output() searchCleared = new EventEmitter<void>();\r\n\r\n private searchUpdate = new Subject<string>();\r\n private subscription!: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.searchUpdate.pipe(\r\n debounceTime(this.debounceTime),\r\n distinctUntilChanged()\r\n ).subscribe(value => {\r\n this.searchRequested.emit(value);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onSearchInputChange(): void {\r\n this.searchInputChanged.emit(this.searchText);\r\n this.searchUpdate.next(this.searchText);\r\n }\r\n\r\n onSearch(): void {\r\n this.searchRequested.emit(this.searchText);\r\n }\r\n\r\n onClearSearch(): void {\r\n this.searchCleared.emit();\r\n }\r\n\r\n get hasSearchText(): boolean {\r\n return !!this.searchText;\r\n }\r\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;\">\r\n <div class=\"p-field m-0 p-0 w-full bg-white border-round\" >\r\n <div class=\"p-inputgroup border-round bg-white\" style=\"height: 100%;\">\r\n <span class=\"p-inputgroup-addon bg-white\" style=\"height: 100%; display: flex; align-items: center;\">\r\n <i class=\"pi pi-search\"></i>\r\n </span>\r\n <input \r\n type=\"text\" \r\n [(ngModel)]=\"searchText\" \r\n class=\"border-none p-0 border-noround-right bg-white w-full outline-none\" \r\n style=\"height: 100%;\" \r\n pInputText \r\n [placeholder]=\"placeholder\" \r\n (input)=\"onSearchInputChange()\"\r\n (keydown.enter)=\"onSearch()\" \r\n />\r\n <button \r\n *ngIf=\"hasSearchText\" \r\n type=\"button\" \r\n class=\"p-inputgroup-addon bg-white border-none cursor-pointer\" \r\n (click)=\"onClearSearch()\"\r\n pButton \r\n icon=\"pi pi-times\"\r\n [text]=\"true\"\r\n style=\"height: 100%; display: flex; align-items: center; border-radius: 8px;\"\r\n ></button>\r\n </div>\r\n </div>\r\n </div>\r\n ","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { QueueStore } from '../../state/queue.store';\r\n\r\n@Component({\r\n selector: 'app-queue-item',\r\n standalone: false,\r\n templateUrl: './queue-item.component.html',\r\n styleUrls: ['./queue-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueItemComponent {\r\n @Input() filteredQueueData: any[] = [];\r\n @Input() selectedQueueId: string | null = null;\r\n @Input() selectedStatus: string = 'active';\r\n @Input() userRole: boolean = false;\r\n @Input() showQueueDataForm: boolean = true;\r\n @Output() queueSelected = new EventEmitter<string>();\r\n @Output() statusChanged = new EventEmitter<string>();\r\n @Output() insertQueueRequested = new EventEmitter<void>();\r\n\r\n constructor(private queueStore: QueueStore) {}\r\n\r\n onQueueClick(queueId: string): void {\r\n this.queueSelected.emit(queueId);\r\n this.queueStore.setSelectedQueueId(queueId);\r\n }\r\n\r\n onStatusChange(event: any): void {\r\n this.statusChanged.emit(event.target.value);\r\n }\r\n\r\n onInsertQueue(): void {\r\n this.insertQueueRequested.emit();\r\n }\r\n\r\n isQueueActive(queue: any): boolean {\r\n return queue.isActive;\r\n }\r\n\r\n isQueueSelected(queueId: string): boolean {\r\n return queueId === this.selectedQueueId;\r\n }\r\n}","<div class=\"p-4 pt-3 mb-0\">\r\n <div class=\"queues overflow-x-hidden queue-item-wrapper\">\r\n <h4 class=\"queue-title-wrapper m-0 mb-3 pb-1\">Queues</h4>\r\n @for(queue of filteredQueueData; let i = $index; track queue){\r\n\r\n <div class=\"flex m-0 kanban-list\" [ngClass]=\"{'mt-2 pt-1': i !== 0}\" #listEl style=\"min-height:2rem\" (click)=\"onQueueClick(queue._id)\" >\r\n <div class=\"flex align-items-center p-0 w-full\">\r\n <div class=\"py-4 px-3 cursor-pointer w-full\" [ngClass]=\"{\r\n 'active-queue-wrapper': isQueueSelected(queue._id),\r\n 'inActiveQueue': !isQueueActive(queue),\r\n 'queue-list-wrapper': isQueueActive(queue)\r\n }\"\r\n >\r\n <div class=\"flex justify-content-between flex align-items-center\">\r\n <span class=\"text-color queue-name font-semibold\"\r\n [ngClass]=\"{'active-title-wrapper': isQueueSelected(queue._id)}\"\r\n >{{queue.name}}</span>\r\n <div class=\"elipsesWithCount flex align-items-center\">\r\n <p-badge [value]=\"queue.itemCount\" severity=\"primary\" [ngClass]=\"{\r\n 'inActiveBadgeColor': !isQueueActive(queue),\r\n }\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- <div *ngIf=\"userRole\" class=\"w-full mt-4\">\r\n <p-button class=\"add-queue-btn-wrapper\" (onClick)=\"onInsertQueue()\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <i class=\"pi pi-plus mr-2\"></i>\r\n <p class=\"mb-0\">Add Queue</p>\r\n </div>\r\n </p-button>\r\n </div> -->\r\n </div> ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-queue-list',\r\n standalone: false,\r\n templateUrl: './queue-list.component.html',\r\n styleUrls: ['./queue-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueListComponent {\r\n @Input() queueData: any[] = [];\r\n @Input() selectedQueueId: string | null = null;\r\n @Input() selectedStatus: string = 'active';\r\n @Input() userRole: boolean = false;\r\n @Input() showQueueDataForm: boolean = true;\r\n @Output() queueSelected = new EventEmitter<string>();\r\n @Output() statusChanged = new EventEmitter<string>();\r\n @Output() insertQueueRequested = new EventEmitter<void>();\r\n\r\n onQueueSelected(queueId: string): void {\r\n this.queueSelected.emit(queueId);\r\n }\r\n\r\n onStatusChanged(status: string): void {\r\n this.statusChanged.emit(status);\r\n }\r\n\r\n onInsertQueue(): void {\r\n this.insertQueueRequested.emit();\r\n }\r\n}\r\n","<app-queue-item\r\n [filteredQueueData]=\"queueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"showQueueDataForm\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueue()\"\r\n></app-queue-item>\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\r\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\r\n\r\n@Component({\r\n selector: 'app-queue-record-table',\r\n standalone: false,\r\n templateUrl: './queue-record-table.component.html',\r\n styleUrls: ['./queue-record-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class QueueRecordTableComponent implements OnChanges{\r\n public sortField: string = '';\r\n public sortOrder: number = 1;\r\n\r\n @Input() table!: TableSecondaryModel;\r\n @Input() metaData!: MetaDataModel;\r\n @Input() loading: boolean = false;\r\n @Input() selectedRows: any[] = [];\r\n @Input() resetSort!: boolean;\r\n @Input() isShowSkeleton: boolean = false;\r\n @Input() selectedQueue: any;\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n @Output() selectedRowsData = new EventEmitter<any[]>();\r\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\r\n @Output() rowClick = new EventEmitter<any>();\r\n @Output() paginationChanged = new EventEmitter<any>();\r\n @Output() filterApplied = new EventEmitter<any>();\r\n @Output() sortApplied = new EventEmitter<any>();\r\n\r\n onSelectionChange(selection: any[]): void {\r\n this.selectionChange.emit(selection);\r\n this.selectedRowsData.emit(selection);\r\n }\r\n\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes['resetSort']){\r\n this.sortField = '';\r\n this.sortOrder = 1;\r\n } \r\n }\r\n\r\n onRowClick(record: any): void {\r\n this.rowClick.emit(record);\r\n }\r\n\r\n onPaginationChange(event: any): void {\r\n this.paginationChanged.emit(event);\r\n }\r\n\r\n onFilterApplied(record: any): void {\r\n this.filterApplied.emit(record);\r\n }\r\n\r\n onSort(event: any): void {\r\n this.sortField = event.field;\r\n this.sortOrder = event.order;\r\n this.sortApplied.emit(event);\r\n }\r\n\r\n get hasData(): boolean {\r\n return this.table?.records && this.table.records.length > 0;\r\n }\r\n\r\n get selectedCount(): number {\r\n return this.selectedRows?.length || 0;\r\n }\r\n} ","<div class=\"bg-white queue-table-wrapper border-round-xl\">\r\n <lib-table-secondary \r\n [table]=\"table\" \r\n [metaData]=\"metaData\"\r\n [enableSelection]=\"true\"\r\n [selectionMode]=\"'multiple'\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selection]=\"selectedRows\"\r\n [showActions]=\"false\"\r\n [noRecordsMessage]=\"selectedQueue?.name === 'Assigned To Me' ? 'No applications are currently assigned.' : 'No Records Found'\"\r\n (onPage)=\"onPaginationChange($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n (rowSelectionChange)=\"onRowClick($event)\"\r\n (sortChanged)=\"onSort($event)\"\r\n [sortField]=\"sortField\"\r\n [sortOrder]=\"sortOrder\">\r\n </lib-table-secondary>\r\n</div>","import { Component, ElementRef, HostListener, ViewChild, Output, EventEmitter, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { QueueFilterDropdownService, RiskRating, ApplicationType, PurchaseType, TaskStatus, QueueFilter, EPC } from '../../services/queue-filter-dropdown.service';\r\n\r\n/**\r\n *\r\n */\r\n@Component({\r\n selector: 'lib-queue-filter-dropdown',\r\n standalone: false,\r\n templateUrl: './queue-filter-dropdown.component.html',\r\n styleUrl: './queue-filter-dropdown.component.scss'\r\n})\r\nexport class QueueFilterDropdownComponent implements OnChanges {\r\n showDropdown = false;\r\n @ViewChild('dropdownPanel', { static: false }) dropdownPanel!: ElementRef;\r\n skipNextDocumentClick = false;\r\n private originalFilters: QueueFilter | null = null;\r\n private filtersApplied = false; // Track if filters have been applied\r\n // Placeholder options; wire to API later\r\n underwriterOptions: Array<{ id: string; name: string }> = [];\r\n // Cache filters for template bindings to avoid repeated object creation\r\n public filters!: QueueFilter;\r\n\r\n @Input() appliedFilters: any = {}; // Input to sync with container's applied filters\r\n @Output() filterApplied = new EventEmitter<any>();\r\n @Output() filtersCleared = new EventEmitter<void>();\r\n\r\n constructor(public filterService: QueueFilterDropdownService) {\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['appliedFilters'] && !changes['appliedFilters'].firstChange) {\r\n this.syncWithAppliedFilters(this.appliedFilters);\r\n }\r\n }\r\n\r\n get filterCount(): number {\r\n return this.filterService.getFilterCount();\r\n }\r\n\r\n onFilterBtnClick() {\r\n if (!this.showDropdown) {\r\n // Store current state when opening dropdown (this will be the applied filters)\r\n this.originalFilters = this.filterService.getFilters();\r\n }\r\n this.showDropdown = !this.showDropdown;\r\n this.skipNextDocumentClick = true;\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n setRiskRating(rating: RiskRating) {\r\n this.filterService.setRiskRating(rating);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setApplicationType(type: ApplicationType) {\r\n this.filterService.setApplicationType(type);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setPurchaseType(type: PurchaseType) {\r\n this.filterService.setPurchaseType(type);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setTaskStatus(status: TaskStatus) {\r\n this.filterService.setTaskStatus(status);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setFinanceMin(min: number | null) {\r\n this.filterService.setFinanceMin(min);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setFinanceMax(max: number | null) {\r\n this.filterService.setFinanceMax(max);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n setPendingDays(days: number | null) {\r\n this.filterService.setPendingDays(days);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Category (UK, Ex-Pat, Intl)\r\n setCategory(category: 'UK' | 'Ex-Pat' | 'Intl') {\r\n this.filterService.setCategory(category);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // EPC (A or B (Green))\r\n setEpc(epc: EPC) {\r\n this.filterService.setEpc(epc);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Vulnerable Customer (boolean)\r\n setVulnerableCustomer(value: boolean | null) {\r\n this.filterService.setVulnerableCustomer(value);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Assigned Underwriter (multi-select ids)\r\n setAssignedUnderwriter(ids: string[]) {\r\n this.filterService.setAssignedUnderwriter(ids);\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n applyFilters() {\r\n const filterData = this.filterService.getFilters();\r\n if (this.filterService.hasFilters()) {\r\n this.filterApplied.emit(filterData);\r\n this.filtersApplied = true; // Mark that filters have been applied\r\n }\r\n this.showDropdown = false;\r\n this.originalFilters = null; // Clear stored state after applying\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n clearAll() {\r\n this.filterService.clearAll();\r\n this.filtersCleared.emit();\r\n this.filtersApplied = false; // Reset the applied flag when clearing all\r\n this.originalFilters = null; // Clear originalFilters to prevent restoring old filters\r\n this.filters = this.filterService.getFilters();\r\n }\r\n\r\n // Method to sync with container's applied filters\r\n syncWithAppliedFilters(appliedFilters: any) {\r\n if (appliedFilters && Object.keys(appliedFilters).length > 0) {\r\n const filters: QueueFilter = {\r\n riskRating: appliedFilters.riskRating || null,\r\n applicationType: appliedFilters.applicationType || null,\r\n purchaseType: appliedFilters.purchaseType || null,\r\n taskStatus: appliedFilters.taskStatus || null,\r\n category: appliedFilters.category || [],\r\n epc: appliedFilters.epc || [],\r\n vulnerableCustomer: appliedFilters.vulnerableCustomer ?? null,\r\n financeMin: appliedFilters.financeMin || null,\r\n financeMax: appliedFilters.financeMax || null,\r\n pendingDays: appliedFilters.pendingDays || null,\r\n assignedUnderwriter: appliedFilters.assignedUnderwriter || []\r\n };\r\n this.filterService.setAllFilters(filters);\r\n this.filtersApplied = true;\r\n this.filters = this.filterService.getFilters();\r\n } else {\r\n this.filterService.clearAll();\r\n this.filtersApplied = false;\r\n this.filters = this.filterService.getFilters();\r\n }\r\n }\r\n\r\n private restoreOriginalFilters() {\r\n if (this.originalFilters && !this.filtersApplied) {\r\n // Only restore original filters if no filters have been applied yet\r\n this.filterService.setAllFilters(this.originalFilters);\r\n }\r\n this.originalFilters = null;\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent) {\r\n if (this.skipNextDocumentClick) {\r\n this.skipNextDocumentClick = false;\r\n return;\r\n }\r\n if (this.showDropdown) {\r\n const clickedInside = this.dropdownPanel && this.dropdownPanel.nativeElement.contains(event.target);\r\n if (!clickedInside) {\r\n this.restoreOriginalFilters(); // Restore original state when closing without applying\r\n this.showDropdown = false;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"queue-filter-dropdown-wrapper\">\r\n <p-button class=\"filter-btn-wrapper\" (onClick)=\"onFilterBtnClick()\">\r\n <div class=\"flex align-items-center\">\r\n <i class=\"ri-filter-3-line mr-2 mt-1\"></i>\r\n <p class=\"filter-count mb-0 mr-2\">{{ filterCount }}</p>\r\n <p class=\"mb-0\">Filter(s) Applied</p>\r\n <i class=\"pi pi-angle-down ml-2 mt-1\"></i>\r\n </div>\r\n </p-button>\r\n\r\n <div class=\"filter-dropdown-panel\" *ngIf=\"showDropdown\" #dropdownPanel>\r\n <h3 class=\"filter-title\">Queue Filters</h3>\r\n <div class=\"grid form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n\r\n\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Risk Rating</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Low')\"\r\n (onClick)=\"setRiskRating('Low')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Low</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('Medium')\"\r\n (onClick)=\"setRiskRating('Medium')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Medium</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.riskRating.includes('High')\"\r\n (onClick)=\"setRiskRating('High')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">High</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 p-0 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Application Type</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('BTL')\"\r\n (onClick)=\"setApplicationType('BTL')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">BTL</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.applicationType.includes('HPP')\"\r\n (onClick)=\"setApplicationType('HPP')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">HPP</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Category</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('UK')\"\r\n (onClick)=\"setCategory('UK')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">UK</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Ex-Pat')\"\r\n (onClick)=\"setCategory('Ex-Pat')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Ex-Pat</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.category.includes('Intl')\"\r\n (onClick)=\"setCategory('Intl')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Intl</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">EPC</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.epc?.includes('A or B (Green)')\"\r\n (onClick)=\"setEpc('A or B (Green)')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">A or B (Green)</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Purchase Type</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.purchaseType.includes('Purchase')\"\r\n (onClick)=\"setPurchaseType('Purchase')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Purchase</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\"\r\n [class.selected]=\"filters.purchaseType.includes('Refinance')\"\r\n (onClick)=\"setPurchaseType('Refinance')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Refinance</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Task Status</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\"\r\n [class.selected]=\"filters.taskStatus.includes('Not Started')\"\r\n (onClick)=\"setTaskStatus('Not Started')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Not Started</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\"\r\n [class.selected]=\"filters.taskStatus.includes('In-progress')\"\r\n (onClick)=\"setTaskStatus('In-progress')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">In-progress</p>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.taskStatus.includes('Completed')\"\r\n (onClick)=\"setTaskStatus('Completed')\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Completed</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid p-0 form-grid col-12\">\r\n <div class=\"col-12 pl-3 md:col-6\"> \r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Finance Amount</p>\r\n <div class=\"filter-options two-inputs\">\r\n <div class=\"grid p-0 form-grid col-12\">\r\n <div class=\"col-12 md:col-6\">\r\n <input type=\"number\" class=\"w-full\" placeholder=\"Min\" [ngModel]=\"filters.financeMin\"\r\n (ngModelChange)=\"setFinanceMin($event)\" min=\"0\" />\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <input type=\"number\" class=\"w-full\" placeholder=\"Max\" [ngModel]=\"filters.financeMax\"\r\n (ngModelChange)=\"setFinanceMax($event)\" min=\"0\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Pending Days</p>\r\n <div class=\"filter-options one-input\">\r\n <input type=\"number\" placeholder=\"No. of days\" [ngModel]=\"filters.pendingDays\"\r\n (ngModelChange)=\"setPendingDays($event)\" min=\"0\" />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid p-0 form-grid col-12\">\r\n <div class=\"col-12 pl-4 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Vulnerable Customer</p>\r\n <div class=\"filter-options\">\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === true\"\r\n (onClick)=\"setVulnerableCustomer(true)\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Yes</p>\r\n </div>\r\n </p-button>\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === false\"\r\n (onClick)=\"setVulnerableCustomer(false)\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">No</p>\r\n </div>\r\n </p-button>\r\n <p-button class=\"filter-option-btn-wrapper\" [class.selected]=\"filters.vulnerableCustomer === null\"\r\n (onClick)=\"setVulnerableCustomer(null)\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Any</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-12 pl-3 md:col-6\">\r\n <div class=\"filter-section\">\r\n <p class=\"filter-label m-0 mb-2\">Assigned Underwriter</p>\r\n <div class=\"filter-options one-input\">\r\n <!-- Expecting an array of IDs; integrate with your user list later -->\r\n <p-multiSelect [options]=\"underwriterOptions\" optionLabel=\"name\" optionValue=\"id\"\r\n placeholder=\"Select underwriter(s)\" [appendTo]=\"'body'\" [panelStyle]=\"{ zIndex: 1100 }\"\r\n [ngModel]=\"filters.assignedUnderwriter\" (ngModelChange)=\"setAssignedUnderwriter($event)\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"filter-actions w-full flex justify-content-between\">\r\n <p-button class=\"pl-3 clear-btn-wrapper\" (onClick)=\"clearAll()\">\r\n <div class=\"flex align-items-center btn-text-wrapper\">\r\n <p class=\"mb-0 mr-2\">Clear All</p>\r\n <i class=\"pi pi-times\"></i>\r\n </div>\r\n </p-button>\r\n\r\n <p-button class=\"apply-btn-wrapper\" (onClick)=\"applyFilters()\">\r\n <div class=\"flex align-items-center\">\r\n <p class=\"mb-0\">Apply Filters</p>\r\n </div>\r\n </p-button>\r\n </div>\r\n </div>\r\n </div>","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { QueueModel } from '../../models/queue.model';\r\nimport { QueueService } from '../../state/queue.service';\r\nimport { QueueStore } from '../../state/queue.store';\r\nimport { BaseContainerComponent } from '../../../shared/_base/base-container/base-container.component';\r\nimport { ERROR } from '../../../shared/constant/ERROR';\r\nimport { SHARED } from '../../../shared/constant/SHARED';\r\nimport { BaseStore } from '../../../shared/state/base.store';\r\nimport { QueueBusinessService } from '../../services/queue-business.service';\r\nimport { TableSecondaryModel } from '../../../shared/table-secondary/models/table-secondary.model';\r\nimport { MetaDataModel } from '../../../shared/models/meta-data.model';\r\nimport { QueueRecordTableBuilderService } from '../../services/queue-record-table-builder.service';\r\nimport { QueueFilterDropdownComponent } from '../queue-filter-dropdown/queue-filter-dropdown.component';\r\nimport { QueueFilterDropdownService } from '../../services/queue-filter-dropdown.service';\r\nimport { BaseQuery } from '../../../shared';\r\n\r\n/**\r\n * Container component for managing queue-related data and interactions.\r\n * Extends the BaseContainerComponent with a generic type of QueueModel.\r\n */\r\n@Component({\r\n selector: 'lib-queue-container',\r\n standalone: false,\r\n templateUrl: './queue-container.component.html',\r\n styleUrl: './queue-container.component.scss'\r\n})\r\nexport class QueueContainerComponent extends BaseContainerComponent<QueueModel> implements OnInit, OnDestroy {\r\n private destroy$ = new Subject<void>();\r\n private searchSubject = new Subject<string>();\r\n\r\n public queueList: QueueModel[] = [];\r\n public selectedQueue: any;\r\n public currentSearchTerm: string = '';\r\n public selectedRows: any[] = [];\r\n public loading: boolean = false;\r\n public error: string | null = null;\r\n public filteredQueueData: any[] = [];\r\n public selectedStatus: string = 'active';\r\n public userRole: boolean = false;\r\n public selectedQueueId: string | null = null;\r\n public table!: TableSecondaryModel;\r\n public metaData!: MetaDataModel;\r\n public currentPage: number = 1;\r\n public currentLimit: number = 10;\r\n public queryString: string = SHARED.EMPTY;\r\n public searchText: string = SHARED.EMPTY;\r\n public sortBy: string = SHARED.EMPTY;\r\n public sortOrder: number = 1;\r\n isShowSkeleton: boolean = false;\r\n resetSort: boolean = false;\r\n public appliedFilters: any = {};\r\n @Input() placeholder: string = '';\r\n\r\n @ViewChild('filterDropdown') filterDropdown!: QueueFilterDropdownComponent;\r\n\r\n // Input properties for content projection\r\n @Input() set selectedRowsInput(rows: any[]) {\r\n this.selectedRows = rows || [];\r\n }\r\n get selectedRowsInput(): any[] {\r\n return this.selectedRows;\r\n }\r\n\r\n // Output events for content projection\r\n @Output() assignmentComplete = new EventEmitter<{ success: boolean, message: string }>();\r\n @Output() userAssigned = new EventEmitter<{ user: any, selectedRows: any[] }>();\r\n @Output() selectedRowsData = new EventEmitter<any[]>();\r\n @Output() assignmentDataReady = new EventEmitter<{ selectedRows: any[], queueData: QueueModel }>();\r\n @Output() rowClick = new EventEmitter<any>();\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n @Output() isAllRowSelected = new EventEmitter<boolean>(false);\r\n @Output() excludedApplicationIds = new EventEmitter<any[]>();\r\n\r\n\r\n constructor(\r\n public queueStore: QueueStore,\r\n private queueService: QueueService,\r\n private baseStore: BaseStore<QueueModel>,\r\n private queueBusinessService: QueueBusinessService,\r\n private tableBuilder: QueueRecordTableBuilderService,\r\n private queueFilterDropdownService: QueueFilterDropdownService,\r\n private baseQuery: BaseQuery<any>\r\n ) {\r\n super(queueService);\r\n }\r\n\r\n ngOnInit() {\r\n this.isShowSkeleton = true;\r\n const storedQueueId = this.getStoredQueueId();\r\n this.initializeComponent(storedQueueId ?? undefined);\r\n this.setupSearchDebounce();\r\n // Sync filter dropdown after initialization\r\n setTimeout(() => {\r\n this.syncFilterDropdown();\r\n }, 0);\r\n\r\n this.baseQuery.getIsAllRowSelected()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if(res) {\r\n this.isAllRowSelected.emit(res);\r\n }\r\n })\r\n\r\n this.baseQuery.getExcludedApplicationIds()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((res) => {\r\n if(res) {\r\n this.excludedApplicationIds.emit(res);\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.queueFilterDropdownService.clearAll();\r\n }\r\n\r\n onQueueSelected(queueId: string): void {\r\n this.handleQueueData(queueId);\r\n }\r\n\r\n onStatusChanged(status: string): void {\r\n this.selectedStatus = status;\r\n this.filterQueues();\r\n }\r\n\r\n onInsertQueueRequested(): void {\r\n this.queueBusinessService.navigateToInsertQueue();\r\n }\r\n\r\n onSearchInputChanged(searchTerm: string): void {\r\n this.searchText = searchTerm;\r\n this.searchSubject.next(searchTerm);\r\n }\r\n\r\n onSearchRequested(searchTerm: string): void {\r\n this.currentSearchTerm = searchTerm;\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n }\r\n\r\n onSearchCleared(): void {\r\n this.searchText = SHARED.EMPTY;\r\n this.currentSearchTerm = SHARED.EMPTY;\r\n this.resetPage();\r\n this.clearSelection();\r\n this.getQueueRecordsData();\r\n }\r\n\r\n onPaginationChanged(event: any): void {\r\n const { page, limit } = this.queueBusinessService.calculatePagination(event);\r\n this.getQueueRecordsData(page, limit);\r\n }\r\n\r\n onFilterApplied(record: any): void {\r\n this.queryString = this.queueBusinessService.buildQueryString(record);\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n this.clearSelection();\r\n }\r\n\r\n get hasActiveFilters(): boolean {\r\n return this.appliedFilters && Object.values(this.appliedFilters).some(val => val !== null && val !== '' && val !== undefined);\r\n }\r\n\r\n onTableRowClick(record: any): void {\r\n this.rowClick.emit(record);\r\n this.clearFilters();\r\n this.syncFilterDropdown();\r\n }\r\n\r\n onTableSelectionChange(selection: any[]): void {\r\n this.selectedRows = selection;\r\n this.selectionChange.emit(this.selectedRows);\r\n this.selectedRowsData.emit(this.selectedRows);\r\n this.assignmentDataReady.emit({\r\n selectedRows: this.selectedRows,\r\n queueData: this.selectedQueue\r\n });\r\n }\r\n\r\n onAssignmentDataReady(event: { selectedRows: any[], queueData: QueueModel }): void {\r\n this.assignmentDataReady.emit(event);\r\n }\r\n\r\n onSortApplied(event: any): void {\r\n if (event.field === SHARED.APPLICANTS || event.field === SHARED.SECURITY_ADDRESS) {\r\n return;\r\n }\r\n this.sortBy = event.field;\r\n this.sortOrder = event.order;\r\n this.getQueueRecordsData();\r\n }\r\n\r\n onFilterDropdownApplied(filterData: any): void {\r\n this.appliedFilters = filterData;\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n this.clearSelection();\r\n this.syncFilterDropdown();\r\n }\r\n\r\n onFiltersCleared(): void {\r\n this.clearFilters();\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n this.clearSelection();\r\n this.syncFilterDropdown();\r\n }\r\n\r\n onClearAllFilters(): void {\r\n if (this.filterDropdown) {\r\n this.filterDropdown.clearAll();\r\n }\r\n this.onFiltersCleared();\r\n }\r\n\r\n private syncFilterDropdown(): void {\r\n if (this.filterDropdown) {\r\n this.filterDropdown.syncWithAppliedFilters(this.appliedFilters);\r\n }\r\n }\r\n\r\n private initializeComponent(preferredQueueId?: string): void {\r\n this.getAllQueueList(preferredQueueId);\r\n this.userRole = this.queueBusinessService.getUserRole();\r\n }\r\n\r\n private setupSearchDebounce(): void {\r\n const debouncedSearch = this.queueBusinessService.createDebouncedSearch(300);\r\n debouncedSearch.pipe(takeUntil(this.destroy$)).subscribe(searchTerm => {\r\n if (this.selectedQueue) {\r\n this.currentSearchTerm = searchTerm;\r\n this.resetPage();\r\n this.getQueueRecordsData();\r\n }\r\n });\r\n }\r\n\r\n private getAllQueueList(preferredQueueId?: string): void {\r\n this.loading = true;\r\n this.error = null;\r\n this.queueService.getAllQueue().subscribe({\r\n next: (res) => {\r\n this.queueList = Array.isArray(res) ? res : (res.data || res);\r\n this.baseStore.setQueueList(this.queueList);\r\n this.filterQueues(preferredQueueId);\r\n this.loading = false;\r\n },\r\n error: (err) => {\r\n this.error = ERROR.UNABLE_TO_FETCH_QUEUE_LIST;\r\n this.loading = false;\r\n console.error(ERROR.UNABLE_TO_FETCH_QUEUE_LIST, err);\r\n }\r\n });\r\n }\r\n\r\n private handleQueueData(queueId: string): void {\r\n const newQueue = this.queueList.find((i) => i._id == queueId);\r\n if (newQueue) {\r\n this.selectedQueue = Object.assign({}, newQueue);\r\n this.selectedQueueId = queueId;\r\n this.queueStore.setSelectedQueueId(queueId);\r\n this.queueBusinessService.storeSelectedQueue(queueId);\r\n sessionStorage.setItem(SHARED.selectedQueue, JSON.stringify(this.selectedQueue));\r\n this.clearSelection();\r\n this.resetPaginationState();\r\n this.resetSorting();\r\n this.getQueueRecordsData();\r\n this.syncFilterDropdown();\r\n } else {\r\n console.warn(ERROR.NO_QUEUE_FOUND_WITH_ID);\r\n }\r\n }\r\n\r\n private resetSorting(){\r\n this.sortBy = SHARED.EMPTY;\r\n this.sortOrder = 1;\r\n this.resetSort = !this.resetSort;\r\n }\r\n\r\n private filterQueues(preferredQueueId?: string): void {\r\n this.filteredQueueData = this.queueBusinessService.filterQueuesByStatus(this.queueList, this.selectedStatus);\r\n this.filteredQueueData = this.queueBusinessService.orderQueuesByPriority(this.filteredQueueData);\r\n let queueIdToSelect = preferredQueueId;\r\n if (queueIdToSelect && this.filteredQueueData.some(q => q._id == queueIdToSelect)) {\r\n // keep the same queue if it exists\r\n this.selectedQueueId = queueIdToSelect;\r\n this.handleQueueData(this.selectedQueueId);\r\n } else if (this.filteredQueueData.length > 0) {\r\n this.selectedQueueId = this.queueBusinessService.getFirstQueueId(this.filteredQueueData);\r\n if (this.selectedQueueId) {\r\n this.handleQueueData(this.selectedQueueId);\r\n }\r\n }\r\n }\r\n\r\n private getQueueRecordsData(page?: number, limit?: number): void {\r\n this.isShowSkeleton = true;\r\n if (!this.selectedQueue?.apiConfig) {\r\n console.log(\"Queue data or apiConfig not available\");\r\n return;\r\n }\r\n const targetPage = page || this.currentPage;\r\n const targetLimit = limit || this.currentLimit;\r\n \r\n // Build filter query string\r\n let filterQueryString = this.queryString;\r\n if (this.appliedFilters && Object.keys(this.appliedFilters).length > 0) {\r\n const filterQuery = this.queueFilterDropdownService.buildFilterQueryString(this.appliedFilters);\r\n \r\n // Combine existing query string with filter parameters\r\n const existingParams = new URLSearchParams(filterQueryString);\r\n const filterParams = new URLSearchParams(filterQuery);\r\n filterParams.forEach((value, key) => {\r\n existingParams.set(key, value);\r\n });\r\n filterQueryString = existingParams.toString();\r\n }\r\n \r\n this.queueService.getPaginatedQueueRecords(\r\n this.selectedQueue.apiConfig,\r\n this.currentSearchTerm,\r\n targetPage,\r\n targetLimit,\r\n filterQueryString,\r\n this.sortBy,\r\n this.getSortOrderString(this.sortOrder)\r\n ).subscribe({\r\n next: (res: any) => {\r\n const apiData = res?.data || res?.paginatedResults || res || [];\r\n if (apiData && apiData.length > 0) {\r\n this.isShowSkeleton = false;\r\n this.table = this.tableBuilder.buildSecondaryTable(apiData);\r\n } else if (this.table) {\r\n this.table = { ...this.table, records: [] };\r\n this.isShowSkeleton = false;\r\n } else {\r\n this.table = this.tableBuilder.buildSecondaryTable([]);\r\n this.isShowSkeleton = false;\r\n }\r\n this.currentPage = targetPage;\r\n this.currentLimit = targetLimit;\r\n this.metaData = this.queueBusinessService.mapApiMetadata(res, targetPage, targetLimit);\r\n },\r\n error: (error) => {\r\n this.loading = false;\r\n this.isShowSkeleton = false;\r\n console.error(\"Error fetching data:\", error);\r\n if (this.table) {\r\n this.table = { ...this.table, records: [] };\r\n } else {\r\n this.table = this.tableBuilder.buildSecondaryTable([]);\r\n }\r\n this.metaData = {\r\n totalItems: 0,\r\n currentPage: targetPage,\r\n itemsPerPage: targetLimit,\r\n totalPages: 0\r\n };\r\n }\r\n });\r\n }\r\n\r\n private getSortOrderString(order: number): string {\r\n if (order === 1) return 'asc';\r\n if (order === -1) return 'desc';\r\n return '';\r\n }\r\n\r\n private resetPaginationState(): void {\r\n this.currentPage = 1;\r\n this.currentLimit = 10;\r\n }\r\n\r\n private resetPage(): void {\r\n this.currentPage = 1;\r\n }\r\n\r\n private clearSelection(): void {\r\n this.selectedRows = [];\r\n }\r\n\r\n private clearFilters(): void {\r\n this.appliedFilters = {};\r\n }\r\n\r\n onSearchTermChanged(searchTerm: string) {\r\n this.onSearchRequested(searchTerm);\r\n }\r\n\r\n onSelectionChange(selection: any[]): void {\r\n this.onTableSelectionChange(selection);\r\n }\r\n\r\n onAssignmentComplete(event: { success: boolean, message: string }): void {\r\n if (event.success) {\r\n // Pass the current selectedQueueId to preserve selection after refresh, but ensure it's not null\r\n this.getAllQueueList(this.selectedQueueId ?? undefined);\r\n }\r\n this.assignmentComplete.emit(event);\r\n }\r\n\r\n onUserAssigned(event: { user: any, selectedRows: any[] }): void {\r\n this.userAssigned.emit(event);\r\n }\r\n\r\n isAssignButtonEnabled(): boolean {\r\n return this.selectedRows && this.selectedRows.length > 0;\r\n }\r\n\r\n private getStoredQueueId(): string | null {\r\n try {\r\n return localStorage.getItem(SHARED.SELECTED_QUEUE_ID);\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}","<div class=\"container grid m-0 h-full\">\r\n <div class=\"col-12 xl:col-2 md:col-12 py-0 pl-0 h-full\">\r\n <lib-skeleton *ngIf=\"loading\" [isAllowCard]=\"true\" [count]=\"5\" [width]=\"'100%'\" [height]=\"'4.5rem'\"></lib-skeleton>\r\n @if(!loading){\r\n <div class=\"queue-list-container-wrapper p-0\">\r\n <app-queue-list\r\n [queueData]=\"filteredQueueData\"\r\n [selectedQueueId]=\"selectedQueueId\"\r\n [selectedStatus]=\"selectedStatus\"\r\n [userRole]=\"userRole\"\r\n [showQueueDataForm]=\"true\"\r\n (queueSelected)=\"onQueueSelected($event)\"\r\n (statusChanged)=\"onStatusChanged($event)\"\r\n (insertQueueRequested)=\"onInsertQueueRequested()\"\r\n ></app-queue-list>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"col-12 xl:col-10 md:col-12 py-0 h-full\">\r\n @if(selectedQueue){\r\n <div class=\"queue-application-container-wrapper h-full\">\r\n <div class=\"grid m-0 justify-content-between align-items-center mb-3\">\r\n <div class=\"col-8 p-0 flex align-items-center\">\r\n <h4 class=\"queue-title-wrapper m-0 mr-3 pr-1\">Queues</h4>\r\n <div class=\"col-7 p-0 mr-3\">\r\n <queue-search \r\n [placeholder]=\"placeholder\"\r\n [searchText]=\"searchText\"\r\n (searchInputChanged)=\"onSearchInputChanged($event)\"\r\n (searchRequested)=\"onSearchRequested($event)\"\r\n (searchCleared)=\"onSearchCleared()\">\r\n </queue-search>\r\n </div>\r\n <div>\r\n <lib-queue-filter-dropdown \r\n #filterDropdown\r\n [appliedFilters]=\"appliedFilters\"\r\n (filterApplied)=\"onFilterDropdownApplied($event)\"\r\n (filtersCleared)=\"onFiltersCleared()\">\r\n </lib-queue-filter-dropdown>\r\n </div>\r\n <div *ngIf=\"hasActiveFilters\">\r\n <button \r\n class=\"clear-filters-btn\"\r\n type=\"button\"\r\n (click)=\"onClearAllFilters()\">\r\n Clear <i class=\"pi pi-times ml-2\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n \r\n <div class=\"flex align-items-center gap-3 col-3 py-0 pl-0 justify-content-end\">\r\n <ng-content select=\"[user-dropdown]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"animation-duration-500 associated-list queue-table-container-wrapper custom-scroll mb-0 p-0\">\r\n \r\n <app-queue-record-table\r\n [table]=\"table\"\r\n [metaData]=\"metaData\"\r\n [loading]=\"loading\"\r\n [selectedRows]=\"selectedRows\"\r\n [resetSort]=\"resetSort\"\r\n [isShowSkeleton]=\"isShowSkeleton\"\r\n [selectedQueue]=\"selectedQueue\"\r\n (selectionChange)=\"onTableSelectionChange($event)\"\r\n (selectedRowsData)=\"onTableSelectionChange($event)\"\r\n (assignmentDataReady)=\"onAssignmentDataReady($event)\"\r\n (rowClick)=\"onTableRowClick($event)\"\r\n (paginationChanged)=\"onPaginationChanged($event)\"\r\n (filterApplied)=\"onFilterApplied($event)\"\r\n (sortApplied)=\"onSortApplied($event)\">\r\n </app-queue-record-table>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n </div>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\r\nimport { AuthGuard } from '../shared/services/auth/auth.guard';\r\nimport { PERMISSION } from '../shared/constant/PERMISSION';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: QueueContainerComponent,\r\n canActivate : [AuthGuard],\r\n data : {accessPermission : PERMISSION.QUEUES_GET}\r\n\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class QueueRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { QueueRoutingModule } from './queue-routing.module';\r\nimport { QueueContainerComponent } from './components/queue-container/queue-container.component';\r\nimport { QueueSearchComponent } from './components/queue-search/queue-search.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { PaginatorModule } from 'primeng/paginator';\r\nimport { QueueItemComponent } from './components/queue-item/queue-item.component';\r\nimport { QueueListComponent } from './components/queue-list/queue-list.component';\r\nimport { QueueRecordTableComponent } from './components/queue-record-table/queue-record-table.component';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { TableSecondaryComponent } from '../shared/table-secondary/components/table-secondary.component';\r\nimport { QueueFilterDropdownComponent } from './components/queue-filter-dropdown/queue-filter-dropdown.component';\r\nimport { SkeletonComponent } from '../shared/components/skeleton/skeleton.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n QueueContainerComponent,\r\n QueueSearchComponent,\r\n QueueItemComponent,\r\n QueueListComponent,\r\n QueueRecordTableComponent,\r\n QueueFilterDropdownComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n QueueRoutingModule,\r\n FormsModule,\r\n DropdownModule,\r\n MultiSelectModule,\r\n RippleModule, ButtonModule, RouterModule, BadgeModule,\r\n PaginatorModule,\r\n SharedModule,\r\n TagModule,\r\n TableSecondaryComponent,\r\n SkeletonComponent\r\n ],\r\n exports: [\r\n QueueContainerComponent\r\n ]\r\n})\r\nexport class QueueModule { }\r\n","/*\r\n * Public API Surface of cat-qw-lib\r\n */\r\n\r\nexport * from './lib/admin/api-admin/api-admin.module';\r\nexport * from './lib/admin/widget-admin/widget-admin.module';\r\nexport * from './lib/admin/queue-admin/queue-admin.module';\r\n\r\nexport * from './lib/admin/api-admin/components/api-admin-form/api-admin-form.component';\r\nexport * from './lib/admin/api-admin/components/api-admin-list/api-admin-list.component';\r\nexport * from './lib/admin/widget-admin/components/widget-admin-form/widget-admin-form.component';\r\nexport * from './lib/admin/widget-admin/components/widget-admin-list/widget-admin-list.component';\r\nexport * from './lib/admin/queue-admin/components/queue-admin-form/queue-admin-form.component';\r\nexport * from './lib/admin/queue-admin/components/queue-admin-list/queue-admin-list.component';\r\nexport * from './lib/admin/queue-admin/components/queue-application-list/queue-application-list.component';\r\n\r\nexport * from './lib/admin/action-admin/action-admin.module';\r\nexport * from './lib/admin/action-admin/components/admin-action-list/admin-action-list.component';\r\nexport * from './lib/admin/action-admin/components/admin-action-form/admin-action-form.component';\r\nexport * from './lib/admin/dd-admin/dd-admin.module'\r\nexport * from './lib/admin/dd-admin/components/dd-admin-form/dd-admin-form.component'\r\nexport * from './lib/admin/dd-admin/components/dd-admin-list/dd-admin-list.component'\r\n\r\nexport * from './lib/admin/template-admin/template-admin.module'\r\nexport * from './lib/admin/template-admin/components/template-admin-form/template-admin-form.component'\r\nexport * from './lib/admin/template-admin/components/template-admin-list/template-admin-list.component'\r\n\r\nexport * from './lib/widget/widget.module';\r\nexport * from './lib/widget/components/widget-container/widget-container.component';\r\nexport * from './lib/widget/components/widget-menu-container/widget-menu-container.component';\r\nexport * from './lib/widget/components/custom-widget/custom-widget.component';\r\n\r\nexport * from './lib/queue/queue.module';\r\nexport * from './lib/queue/components/queue-container/queue-container.component';\r\n\r\nexport * from './lib/shared/services/form-state.service';\r\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","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","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","i3.WidgetMenuComponent","i4.WidgetRowTileComponent","i2.WidgetMenuItemComponent","i7.WidgetFooterComponent","i8.WidgetMenuHeaderComponent","i9.WidgetMenuBodyComponent","rowStyles","columnStylesJson.rowStyles","debounceTime","distinctUntilChanged","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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"}