ngx-techlify-core 11.4.7 → 11.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ngx-techlify-core.umd.js +163 -1
- package/bundles/ngx-techlify-core.umd.js.map +1 -1
- package/bundles/ngx-techlify-core.umd.min.js +1 -16
- package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
- package/esm2015/lib/base-model/index.js +4 -0
- package/esm2015/lib/base-model/techlify-form-component.class.js +51 -0
- package/esm2015/lib/base-model/techlify-listing-component.class.js +41 -0
- package/esm2015/lib/base-model/techlify-service.class.js +64 -0
- package/esm2015/lib/entity-files/entity-files-view-all.component.js +2 -2
- package/esm2015/public-api.js +2 -1
- package/fesm2015/ngx-techlify-core.js +158 -2
- package/fesm2015/ngx-techlify-core.js.map +1 -1
- package/lib/base-model/index.d.ts +3 -0
- package/lib/base-model/techlify-form-component.class.d.ts +43 -0
- package/lib/base-model/techlify-listing-component.class.d.ts +47 -0
- package/lib/base-model/techlify-service.class.d.ts +52 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-techlify-core.js","sources":["../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.model.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.component.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.component.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.model.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.component.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/viewer-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/logger.service.ts","../../../projects/ngx-techlify-core/src/lib/core/techlify-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/config.service.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.component.ts","../../../projects/ngx-techlify-core/src/lib/core/alert.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http-cache.service.ts","../../../projects/ngx-techlify-core/src/lib/core/cache.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/api-prefix.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/credentials.service.ts","../../../projects/ngx-techlify-core/src/lib/core/token.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/header.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file.service.ts","../../../projects/ngx-techlify-core/src/lib/core/form-validator.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file-form/entity-file-form.component.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.model.ts","../../../projects/ngx-techlify-core/src/lib/note/note.service.ts","../../../projects/ngx-techlify-core/src/lib/note/note-form/note-form.component.ts","../../../projects/ngx-techlify-core/src/lib/note/note-list/note-list.component.ts","../../../projects/ngx-techlify-core/src/lib/note/comment-form/comment-form.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/mat-select-infinite-scroll.directive.ts","../../../projects/ngx-techlify-core/src/lib/utility/num-items-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/utility/date-utils.service.ts","../../../projects/ngx-techlify-core/src/lib/utility/number-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline.model.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/calculate-timeline.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.component.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.module.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.guard.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.service.ts","../../../projects/ngx-techlify-core/src/lib/core/route-reusable-strategy.ts","../../../projects/ngx-techlify-core/src/lib/core/storage.service.ts","../../../projects/ngx-techlify-core/src/lib/core/dataManager.service.ts","../../../projects/ngx-techlify-core/src/lib/material.module.ts","../../../projects/ngx-techlify-core/src/lib/core/core.module.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.module.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.module.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.module.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.module.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.module.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.component.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.module.ts","../../../projects/ngx-techlify-core/src/lib/note/note.module.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/utility/utility.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.module.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel-button/export-excel-button.component.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/date-validator.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log.module.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-success/import-success.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-history-list/import-history-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/field-mapping/field-mapping.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/failed-items-list/failed-items-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/data-import/data-import.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-listing.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.routing.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/on-off-switch/on-off-switch.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-enabled.directive.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.module.ts","../../../projects/ngx-techlify-core/src/public-api.ts","../../../projects/ngx-techlify-core/src/ngx-techlify-core.ts"],"sourcesContent":["export class ActionPopup {\r\n name: string;\r\n title: string;\r\n message: string;\r\n}","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActionPopup } from './action-popup.model';\r\n\r\n@Component({\r\n selector: 'app-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrls: ['./action-popup.component.scss']\r\n})\r\nexport class ActionPopupComponent implements OnInit {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ActionPopupComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: ActionPopup,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n /**Method to close dialog box */\r\n closeDialog() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to close dialog box with the data given from parent component\r\n */\r\n confirm() {\r\n this.dialogRef.close(this.data);\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n AfterViewInit,\r\n ViewChild\r\n} from \"@angular/core\";\r\n\r\nimport { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { DataTable } from './data-table.model';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: \"app-data-table\",\r\n templateUrl: \"./data-table.component.html\",\r\n styleUrls: [\"./data-table.component.scss\"]\r\n})\r\nexport class DataTableComponent implements OnInit, OnChanges, AfterViewInit {\r\n\r\n trigger: MatMenuTrigger;\r\n\r\n @Input() data: any;\r\n\r\n @Input() config: DataTable;\r\n\r\n dataSource: MatTableDataSource<any> = new MatTableDataSource([]);\r\n\r\n @Input() selection: SelectionModel<any>;\r\n\r\n @Output() action = new EventEmitter();\r\n @Output() selctionChange = new EventEmitter();\r\n @Output() rowClick = new EventEmitter();\r\n @Output() tableScroll = new EventEmitter();\r\n @Output() sortChanged = new EventEmitter();\r\n\r\n page: number;\r\n lastPage: number;\r\n perPage: number;\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n static nextId = 0;\r\n @Input() elementId: string = `data-table-${DataTableComponent.nextId++}`;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n /**Life cycle hook method */\r\n ngAfterViewInit() {\r\n // Assign the data to the data source for the table to render\r\n this.dataSource = new MatTableDataSource(this.data);\r\n\r\n // Emit change in selection\r\n if (this.selection) {\r\n this.selection.changed.pipe().subscribe((change: any) => {\r\n if (this.selection.selected) {\r\n this.selctionChange.emit(this.selection.selected);\r\n }\r\n });\r\n }\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.sortChanged.emit(value);\r\n })\r\n }\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected()\r\n ? this.clearSelection()\r\n : this.dataSource.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n /**clear selection*/\r\n clearSelection() {\r\n this.selection.clear();\r\n this.selctionChange.emit(this.selection.selected);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.initializeConfig(changes);\r\n if (changes.data && !changes.data.isFirstChange() && this.dataSource) {\r\n // If not first change\r\n this.dataSource.data = changes.data.currentValue;\r\n }\r\n }\r\n\r\n initializeConfig(changes: SimpleChanges) {\r\n if (changes.config && !changes.config.isFirstChange()) {\r\n this.config = changes.config.currentValue;\r\n }\r\n this.page = this.config.page || 1;\r\n this.lastPage = this.config.lastPage || this.page;\r\n this.perPage = this.config.perPage || 20;\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage) {\r\n this.page += 1;\r\n this.tableScroll.emit({ page: this.page, lastPage: this.lastPage, perPage: this.perPage });\r\n }\r\n }\r\n\r\n /**Method invokes when edit action icon is clickes */\r\n editClicked(event: any, element: any) {\r\n this.action.emit({ action: \"edit\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when view action icon is clickes */\r\n viewClicked(event: any, element: any) {\r\n this.action.emit({ action: \"view\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when edit action icon is clickes */\r\n deactivateClicked(event: any, element: any) {\r\n this.action.emit({ action: \"deactivate\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when download action icon is clickes */\r\n downloadClicked(event: any, element: any) {\r\n this.action.emit({ action: \"download\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when print action icon is clickes */\r\n printClicked(event: any, element: any) {\r\n\r\n this.action.emit({ action: 'print', value: element });\r\n event.stopPropagation();\r\n\r\n }\r\n\r\n /**Method invokes when a row is clicked */\r\n rowClicked(event: any, element: any) {\r\n this.rowClick.emit(element);\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when menu action icon is hovered */\r\n actionMenuClick(event: any, element: any, menuValue: string) {\r\n this.action.emit({ action: menuValue, value: element });\r\n this.trigger.closeMenu();\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when menu action icon is hovered and selects for particular action*/\r\n actionMenuTriggerClick(event: any, trigger: MatMenuTrigger) {\r\n this.trigger = trigger;\r\n event.stopPropagation();\r\n }\r\n\r\n checkEdit(ele: any) {\r\n if (this.config.editDisableFunction) {\r\n return this.config.editDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkView(ele: any) {\r\n if (this.config.viewDisableFunction) {\r\n return this.config.viewDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkPrint(ele: any) {\r\n if (this.config.printDisableFunction) {\r\n return this.config.printDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkActions(ele: any) {\r\n if (this.config.actionsMenuFunction) {\r\n return this.config.actionsMenuFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkActionButton(ele: any, value: any) {\r\n if (this.config.actionsMenuButtonFunction) {\r\n return this.config.actionsMenuButtonFunction(ele, value);\r\n }\r\n return true;\r\n }\r\n\r\n getValue(ele: any, keyString: string) {\r\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\r\n const keyList = keyString.split(\".\");\r\n for (let i = 0, n = keyList.length; i < n; ++i) {\r\n const key = keyList[i];\r\n if (ele && key in ele) {\r\n ele = ele[key];\r\n } else {\r\n return;\r\n }\r\n }\r\n return ele;\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until Destroy uses it.\r\n }\r\n}\r\n","export class DataTable {\r\n displayedColumns: string[];\r\n columnsConfig: ColumnConfig[];\r\n actionsConfig?: ActionConfig;\r\n enableRowClick?: boolean;\r\n disableElevation?: boolean;\r\n downloadLink?: string;\r\n actionsMenuFunction?: any;\r\n actionsMenuButtonFunction?: any;\r\n editDisableFunction?: any;\r\n viewDisableFunction?: any;\r\n printDisableFunction?: any;\r\n customActionLabel?: string;\r\n stickyHeader?: boolean;\r\n page?: number;\r\n lastPage?: number;\r\n perPage?: number;\r\n pageSizeOptions?: number[];\r\n style?: any;\r\n}\r\n\r\nclass ColumnConfig {\r\n title: string;\r\n value: string;\r\n sort?: boolean;\r\n dateField?: boolean;\r\n currencyField?: boolean;\r\n format?: string;\r\n}\r\n\r\nclass ActionConfig {\r\n edit?: boolean;\r\n view?: boolean;\r\n download?: boolean;\r\n print?: boolean;\r\n deactivate?: boolean;\r\n actionsMenu?: ActionsMenu[];\r\n}\r\n\r\nclass ActionsMenu {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport class PageEvent {\r\n page: number;\r\n lastPage?: number;\r\n perPage: number;\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { ViewerConfig } from './viewer-config.model';\r\n\r\n@Component({\r\n selector: 'app-document-viewer',\r\n templateUrl: './document-viewer.component.html',\r\n styleUrls: ['./document-viewer.component.css']\r\n})\r\nexport class DocumentViewerComponent implements OnInit {\r\n\r\n\r\n @Input() config!: ViewerConfig;\r\n\r\n @Input() file!: any;\r\n\r\n @Input() fileUrl!: any;\r\n\r\n @Input() disableEdit: boolean;\r\n\r\n @Output() remove = new EventEmitter();\r\n viewerType: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.initData();\r\n }\r\n\r\n removeFile() {\r\n this.remove.emit();\r\n }\r\n\r\n initData() {\r\n if (this.file) {\r\n var ext = this.getFileExtension(this.file);\r\n if (ext === 'ppt' || ext === 'pptx' || ext === 'doc' || ext === 'docx' || ext === 'xls' || ext === 'xlsx') {\r\n this.viewerType = \"office\";\r\n }\r\n else if (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif') {\r\n this.viewerType = \"image\";\r\n }\r\n else if (ext === 'pdf') {\r\n this.viewerType = \"pdf\";\r\n }\r\n else {\r\n this.viewerType = null;\r\n }\r\n }\r\n }\r\n\r\n get fileName() {\r\n if (this.file) {\r\n let nameArray = this.file.split('/');\r\n if (nameArray.length === 2) {\r\n return nameArray[1];\r\n }\r\n return nameArray[0];\r\n }\r\n return '';\r\n }\r\n\r\n getFileExtension(file: any) {\r\n return file.split('.').pop();\r\n }\r\n\r\n}\r\n","export class ViewerConfig {\r\n imageStyle?: any;\r\n viewerStyle?: any;\r\n hideRemove?: boolean;\r\n}\r\n","/**\r\n * Simple logger system with the possibility of registering custom outputs.\r\n *\r\n * 4 different log levels are provided, with corresponding methods:\r\n * - debug : for debug information\r\n * - info : for informative status of the application (success, ...)\r\n * - warning : for non-critical errors that do not prevent normal application behavior\r\n * - error : for critical errors that prevent normal application behavior\r\n *\r\n * Example usage:\r\n * ```\r\n * import { Logger } from 'app/core/logger.service';\r\n *\r\n * const log = new Logger('myFile');\r\n * ...\r\n * log.debug('something happened');\r\n * ```\r\n *\r\n * To disable debug and info logs in production, add this snippet to your root component:\r\n * ```\r\n * export class AppComponent implements OnInit {\r\n * ngOnInit() {\r\n * if (environment.production) {\r\n * Logger.enableProductionMode();\r\n * }\r\n * ...\r\n * }\r\n * }\r\n *\r\n * If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.\r\n */\r\n\r\n/**\r\n * The possible log levels.\r\n * LogLevel.Off is never emitted and only used with Logger.level property to disable logs.\r\n */\r\nexport enum LogLevel {\r\n Off = 0,\r\n Error,\r\n Warning,\r\n Info,\r\n Debug\r\n}\r\n\r\n/**\r\n * Log output handler function.\r\n */\r\nexport type LogOutput = (source: string | undefined, level: LogLevel, ...objects: any[]) => void;\r\n\r\nexport class Logger {\r\n\r\n /**\r\n * Current logging level.\r\n * Set it to LogLevel.Off to disable logs completely.\r\n */\r\n static level = LogLevel.Debug;\r\n\r\n /**\r\n * Additional log outputs.\r\n */\r\n static outputs: LogOutput[] = [];\r\n\r\n /**\r\n * Enables production mode.\r\n * Sets logging level to LogLevel.Warning.\r\n */\r\n static enableProductionMode() {\r\n Logger.level = LogLevel.Warning;\r\n }\r\n\r\n constructor(private source?: string) { }\r\n\r\n /**\r\n * Logs messages or objects with the debug level.\r\n * Works the same as console.log().\r\n */\r\n debug(...objects: any[]) {\r\n this.log(console.log, LogLevel.Debug, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the info level.\r\n * Works the same as console.log().\r\n */\r\n info(...objects: any[]) {\r\n this.log(console.info, LogLevel.Info, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the warning level.\r\n * Works the same as console.log().\r\n */\r\n warn(...objects: any[]) {\r\n this.log(console.warn, LogLevel.Warning, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the error level.\r\n * Works the same as console.log().\r\n */\r\n error(...objects: any[]) {\r\n this.log(console.error, LogLevel.Error, objects);\r\n }\r\n\r\n private log(func: (...args: any[]) => void, level: LogLevel, objects: any[]) {\r\n if (level <= Logger.level) {\r\n const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;\r\n func.apply(console, log);\r\n Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n * Class that stores the configuration data\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20180724\r\n */\r\nexport class TechlifyConfig {\r\n projectKey: string = '';\r\n environment: string = '';\r\n authClientSecret: string = '';\r\n authGrantType: string = '';\r\n apiUrl: string = '';\r\n rawConfigs: any;\r\n storage: Storage;\r\n isLogoutWhileApiGetsFailed: boolean = false;\r\n\r\n constructor(data: any) {\r\n this.loadFromMap(data);\r\n }\r\n\r\n loadFromMap(data: any) {\r\n this.projectKey = data.projectKey;\r\n this.environment = data.environment;\r\n this.authClientSecret = data.authClientSecret;\r\n this.authGrantType = data.authGrantType;\r\n this.apiUrl = data.apiUrl;\r\n this.storage = data?.storage;\r\n this.rawConfigs = data;\r\n this.isLogoutWhileApiGetsFailed = data?.isLogoutWhileApiGetsFailed;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { TechlifyConfig } from \"./techlify-config.model\";\r\n\r\n/**\r\n * Service that provides settings for all other services\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigService {\r\n\r\n public static BASE_CREDENTIALS = \"credentials\";\r\n\r\n private config: TechlifyConfig;\r\n\r\n constructor(config: TechlifyConfig) {\r\n this.config = config;\r\n }\r\n\r\n getConfigsRaw() {\r\n return this.config.rawConfigs;\r\n }\r\n\r\n getProjectKey() {\r\n return this.config.projectKey;\r\n }\r\n\r\n getApiUrl() {\r\n return this.config.apiUrl;\r\n }\r\n\r\n getAuthClientSecret() {\r\n return this.config.authClientSecret;\r\n }\r\n\r\n getStorage() {\r\n return this.config.storage ? this.config.storage : localStorage;\r\n }\r\n\r\n getAuthGrantType() {\r\n return this.config.authGrantType;\r\n }\r\n\r\n getCredentialsKey() {\r\n return this.config.projectKey + \"_\" + ConfigService.BASE_CREDENTIALS;\r\n }\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\n\r\n@Component({\r\n selector: 'snack-bar-component-example-snack',\r\n templateUrl: 'success-snack.html',\r\n styleUrls: ['./snack.scss'],\r\n})\r\nexport class SuccessSnackComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\r\n}\r\n@Component({\r\n selector: 'snack-bar-component-example-snack',\r\n templateUrl: 'error-snack.html',\r\n styleUrls: ['./snack.scss'],\r\n})\r\nexport class ErrorSnackComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { ErrorSnackComponent, SuccessSnackComponent } from './snack/snack.component';\r\n\r\n/**\r\n * Service used to manage alerts in the entire system frontend\r\n * \r\n * @author Gokula Prasanna\r\n * @since 20210131\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(public snackBar: MatSnackBar) { }\r\n\r\n addAlert(message: string, alertType: string, duration = 3) {\r\n if (alertType == \"success\") {\r\n this.snackBar.openFromComponent(SuccessSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n else {\r\n this.snackBar.openFromComponent(ErrorSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n }\r\n}\r\n","import { TechlifyConfig } from './techlify-config.model';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { AlertService } from \"./alert.service\";\r\n\r\n\r\n/**\r\n * Service used to handle errors from the request\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20171202\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerService {\r\n\r\n constructor(private alerter: AlertService,\r\n private config: TechlifyConfig,\r\n ) {\r\n }\r\n\r\n handleError(errorResponse: any, msg: string = '') {\r\n // 1 - Create empty array to store errors\r\n const errors = [];\r\n\r\n // 2 - check if the error object is present in the response\r\n if (errorResponse?.error) {\r\n\r\n // 3 - Check for Laravel form validation error messages object\r\n if (errorResponse?.error?.errors) {\r\n\r\n // 4 - For each error property (which is a form field)\r\n for (const property in errorResponse.error.errors) {\r\n\r\n if (errorResponse.error.errors?.hasOwnProperty(property)) {\r\n\r\n // 5 - Extract it's array of errors\r\n const propertyErrors: Array<string> = errorResponse?.error?.errors[property];\r\n\r\n // 6 - Push all errors in the array to the errors array\r\n propertyErrors.forEach(error => errors.push(error));\r\n }\r\n\r\n }\r\n }\r\n\r\n if (errors.length === 0) {\r\n // 7 - Push the main error message to the array of errors if there is no validation error\r\n errors.push(errorResponse.error.message ? errorResponse.error.message : errorResponse.error?.error);\r\n }\r\n }\r\n var errMessage = errors.length ? errors[0] : msg;\r\n this.alerter.addAlert(\"Error: \" + errMessage, \"warning\");\r\n\r\n if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n location.reload();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Logger } from './logger.service';\r\nimport { ConfigService } from './config.service';\r\nimport { ErrorHandlerService } from './error-handler.service';\r\n\r\nconst log = new Logger('ErrorHandlerInterceptor');\r\n\r\n/**\r\n * Adds a default error handler to all requests.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\r\n\r\n constructor(private configService: ConfigService, private errorHandler: ErrorHandlerService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(error => this.handleError(error)));\r\n }\r\n\r\n // Customize the default error handler here if needed\r\n private handleError(error: HttpErrorResponse): Observable<HttpEvent<any>> {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n // client-side error\r\n errorMessage = `Client Error: ${this.configService?.getProjectKey()}: ${error.error.message}`;\r\n } else {\r\n // server-side error\r\n errorMessage = `Server Error: ${this.configService?.getProjectKey()}`;\r\n try {\r\n this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');\r\n } catch (e) {\r\n console.log(\"Unable to handle server error\", e);\r\n }\r\n }\r\n return throwError(error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '@angular/common/http';\r\nimport { ConfigService } from './config.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('HttpCacheService');\r\n\r\n\r\nexport interface HttpCacheEntry {\r\n lastUpdated: Date;\r\n data: HttpResponse<any>;\r\n}\r\n\r\n/**\r\n * Provides a cache facility for HTTP requests with configurable persistence policy.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpCacheService {\r\n\r\n private cachedData: { [key: string]: HttpCacheEntry; } = {};\r\n private storage: Storage | any | null;\r\n private cachePersistenceKey: String | any;\r\n\r\n constructor(private configService: ConfigService) {\r\n this.storage = this.configService.getStorage();\r\n this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';\r\n this.loadCacheData();\r\n }\r\n\r\n /**\r\n * Sets the cache data for the specified request.\r\n * @param {!string} url The request URL.\r\n * @param {ResponseOptions} data The received data.\r\n * @param {Date=} lastUpdated The cache last update, current date is used if not specified.\r\n */\r\n setCacheData(url: string, data: HttpResponse<any>, lastUpdated?: Date) {\r\n this.cachedData[url] = {\r\n lastUpdated: lastUpdated || new Date(),\r\n data: data\r\n };\r\n log.debug(`Cache set for key: \"${url}\"`);\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Gets the cached data for the specified request.\r\n * @param {!string} url The request URL.\r\n * @return {?ResponseOptions} The cached data or null if no cached data exists for this request.\r\n */\r\n getCacheData(url: string): HttpResponse<any> | null {\r\n const cacheEntry = this.cachedData[url];\r\n\r\n if (cacheEntry) {\r\n log.debug(`Cache hit for key: \"${url}\"`);\r\n return cacheEntry.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the cached entry for the specified request.\r\n * @param {!string} url The request URL.\r\n * @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.\r\n */\r\n getHttpCacheEntry(url: string): HttpCacheEntry | null {\r\n return this.cachedData[url] || null;\r\n }\r\n\r\n /**\r\n * Clears the cached entry (if exists) for the specified request.\r\n * @param {!string} url The request URL.\r\n */\r\n clearCache(url: string): void {\r\n delete this.cachedData[url];\r\n log.debug(`Cache cleared for key: \"${url}\"`);\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Cleans cache entries older than the specified date.\r\n * @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.\r\n */\r\n cleanCache(expirationDate?: Date) {\r\n if (expirationDate) {\r\n Object(this.cachedData).keys.forEach((key: string) => {\r\n if (expirationDate >= this.cachedData[key]?.lastUpdated) {\r\n delete this.cachedData[key];\r\n }\r\n });\r\n } else {\r\n this.cachedData = {};\r\n }\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Sets the cache persistence policy.\r\n * Note that changing the cache persistence will also clear the cache from its previous storage.\r\n * @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session\r\n * storage, or if no value is provided it will be only in-memory (default).\r\n */\r\n setPersistence(persistence?: 'local' | 'session') {\r\n this.cleanCache();\r\n this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;\r\n this.loadCacheData();\r\n }\r\n\r\n private saveCacheData() {\r\n if (this.storage) {\r\n this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);\r\n }\r\n }\r\n\r\n private loadCacheData() {\r\n const data = this.storage ? this.storage[this.cachePersistenceKey] : null;\r\n this.cachedData = data ? JSON.parse(data) : {};\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { HttpCacheService } from './http-cache.service';\r\nimport { Observable, Subscriber } from 'rxjs';\r\n\r\n/**\r\n * Caches HTTP requests.\r\n * Use ExtendedHttpClient fluent API to configure caching for each request.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n\r\n private forceUpdate = false;\r\n\r\n constructor(private httpCacheService: HttpCacheService) { }\r\n\r\n /**\r\n * Configures interceptor options\r\n * @param {{update: boolean}} options If update option is enabled, forces request to be made and updates cache entry.\r\n * @return {CacheInterceptor} The configured instance.\r\n */\r\n configure(options?: { update?: boolean } | null): CacheInterceptor {\r\n const instance = new CacheInterceptor(this.httpCacheService);\r\n if (options && options.update) {\r\n instance.forceUpdate = true;\r\n }\r\n return instance;\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n return new Observable((subscriber: Subscriber<HttpEvent<any>>) => {\r\n const cachedData = this.forceUpdate ? null : this.httpCacheService.getCacheData(request.urlWithParams);\r\n if (cachedData !== null) {\r\n // Create new response to avoid side-effects\r\n subscriber.next(new HttpResponse(cachedData as Object));\r\n subscriber.complete();\r\n } else {\r\n next.handle(request)\r\n .subscribe(\r\n event => {\r\n if (event instanceof HttpResponse) {\r\n this.httpCacheService.setCacheData(request.urlWithParams, event);\r\n }\r\n subscriber.next(event);\r\n },\r\n error => subscriber.error(error),\r\n () => subscriber.complete()\r\n );\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfigService } from './config.service';\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiPrefixInterceptor implements HttpInterceptor {\r\n\r\n constructor(private configService: ConfigService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (!/^(http|https):/i.test(request.url)) {\r\n request = request.clone({ url: this.configService.getApiUrl() + request.url });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\n\r\nexport interface Credentials {\r\n // Customize received credentials here\r\n user: any;\r\n token: any;\r\n}\r\n\r\n/**\r\n * Provides storage for authentication credentials.\r\n * The Credentials interface should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CredentialsService {\r\n\r\n private _credentials: Credentials | null = null;\r\n\r\n constructor(private configService: ConfigService) {\r\n }\r\n\r\n /**\r\n * Checks is the user is authenticated.\r\n * @return True if the user is authenticated.\r\n */\r\n get isAuthenticated(): boolean {\r\n return !!this.credentials;\r\n }\r\n\r\n /**\r\n * Gets the user credentials.\r\n * @return The user credentials or null if the user is not authenticated.\r\n */\r\n get credentials(): Credentials | null {\r\n if (!this._credentials) {\r\n this._credentials = JSON.parse(sessionStorage.getItem(this.configService.getCredentialsKey()) || localStorage.getItem(this.configService.getCredentialsKey()));\r\n }\r\n return this._credentials;\r\n }\r\n\r\n /**\r\n * Sets the user credentials.\r\n * The credentials may be persisted across sessions by setting the `remember` parameter to true.\r\n * Otherwise, the credentials are only persisted for the current session.\r\n * @param credentials The user credentials.\r\n * @param remember True to remember credentials across sessions.\r\n */\r\n setCredentials(credentials?: Credentials, remember?: boolean) {\r\n this._credentials = credentials || null;\r\n\r\n if (credentials) {\r\n (remember ? localStorage : sessionStorage).setItem(this.configService.getCredentialsKey(), JSON.stringify(credentials));\r\n } else {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n this._credentials = null;\r\n }\r\n }\r\n\r\n getAccessToken(): string | null {\r\n const expiration = this.credentials?.token?.expires_in || '';\r\n const token = this.credentials?.token?.access_token || '';\r\n\r\n if (!token || !expiration) {\r\n return null;\r\n }\r\n\r\n if (Date.now() > parseInt(expiration)) {\r\n this.setCredentials();\r\n return null;\r\n }\r\n\r\n return token;\r\n }\r\n\r\n getExpiration(): string {\r\n return this.credentials?.token?.expires_in || '';\r\n }\r\n\r\n getRefreshToken(): string {\r\n return this.credentials?.token?.refresh_token || '';\r\n }\r\n\r\n refresh(): CredentialsService {\r\n this._credentials = null;\r\n return this;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { CredentialsService } from './credentials.service';\r\n\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(private credentials: CredentialsService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${this.credentials.getAccessToken() || ''}`\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HeaderInterceptor implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n request = request.clone({\r\n setHeaders: {\r\n 'Content-Type': request.headers.get('Content-Type') || 'application/json',\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';\r\nimport { HttpClient, HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\r\nimport { CacheInterceptor } from './cache.interceptor';\r\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\r\nimport { TokenInterceptor } from './token.interceptor';\r\nimport { HeaderInterceptor } from './header.interceptor';\r\n\r\n\r\n// Augment HttpClient with the added configuration methods from HttpService, to allow in-place replacement of\r\n// HttpClient with HttpService using dependency injection\r\nexport interface HttpCustomClient {\r\n\r\n /**\r\n * Enables caching for this request.\r\n * @param {boolean} forceUpdate Forces request to be made and updates cache entry.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n cache(forceUpdate?: boolean): HttpCustomClient;\r\n\r\n /**\r\n * Skips default error handler for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipErrorHandler(): HttpCustomClient;\r\n\r\n /**\r\n * Skips default API Prefix for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipApiPrefix(): HttpCustomClient;\r\n\r\n\r\n /**\r\n * Skips default Token Interceptor for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipToken(): HttpCustomClient;\r\n\r\n /**\r\n* Skips default Header Interceptor for this request.\r\n* @return {HttpCustomClient} The new instance.\r\n*/\r\n skipHeader(): HttpCustomClient;\r\n\r\n}\r\n\r\n\r\n// From @angular/common/http/src/interceptor: allows to chain interceptors\r\nclass HttpInterceptorHandler implements HttpHandler {\r\n\r\n constructor(private next: HttpHandler, private interceptor: HttpInterceptor) { }\r\n\r\n handle(request: HttpRequest<any>): Observable<HttpEvent<any>> {\r\n return this.interceptor.intercept(request, this.next);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Allows to override default dynamic interceptors that can be disabled with the HttpService extension.\r\n * Except for very specific needs, you should better configure these interceptors directly in the constructor below\r\n * for better readability.\r\n *\r\n * For static interceptors that should always be enabled (like ApiPrefixInterceptor), use the standard\r\n * HTTP_INTERCEPTORS token.\r\n */\r\nexport const HTTP_DYNAMIC_INTERCEPTORS = new InjectionToken<HttpInterceptor>('HTTP_DYNAMIC_INTERCEPTORS');\r\n\r\n/**\r\n * Extends HttpClient with per request configuration using dynamic interceptors.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpService extends HttpClient implements HttpCustomClient {\r\n\r\n constructor(private httpHandler: HttpHandler,\r\n private injector: Injector,\r\n @Optional() @Inject(HTTP_DYNAMIC_INTERCEPTORS) private interceptors: HttpInterceptor[] = []) {\r\n super(httpHandler);\r\n\r\n if (!this.interceptors) {\r\n // Configure default interceptors that can be disabled here\r\n this.interceptors = [this.injector.get(ApiPrefixInterceptor), this.injector.get(HeaderInterceptor), this.injector.get(TokenInterceptor), this.injector.get(ErrorHandlerInterceptor)];\r\n }\r\n }\r\n\r\n cache(forceUpdate?: boolean): HttpService {\r\n const cacheInterceptor = this.injector.get(CacheInterceptor).configure({ update: forceUpdate });\r\n return this.addInterceptor(cacheInterceptor);\r\n }\r\n\r\n skipErrorHandler(): HttpService {\r\n return this.removeInterceptor(ErrorHandlerInterceptor);\r\n }\r\n\r\n skipApiPrefix(): HttpService {\r\n return this.removeInterceptor(ApiPrefixInterceptor);\r\n }\r\n\r\n skipToken(): HttpService {\r\n return this.removeInterceptor(TokenInterceptor);\r\n }\r\n\r\n skipHeader(): HttpService {\r\n return this.removeInterceptor(HeaderInterceptor);\r\n }\r\n\r\n // Override the original method to wire interceptors when triggering the request.\r\n request(method?: any, url?: any, options?: any): any {\r\n const handler = this.interceptors.reduceRight(\r\n (next, interceptor) => new HttpInterceptorHandler(next, interceptor),\r\n this.httpHandler\r\n );\r\n return new HttpClient(handler).request(method, url, options);\r\n }\r\n\r\n private removeInterceptor(interceptorType: Function): HttpService {\r\n return new HttpService(\r\n this.httpHandler,\r\n this.injector,\r\n this.interceptors.filter(i => !(i instanceof interceptorType))\r\n );\r\n }\r\n\r\n private addInterceptor(interceptor: HttpInterceptor): HttpService {\r\n return new HttpService(\r\n this.httpHandler,\r\n this.injector,\r\n this.interceptors.concat([interceptor])\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityFileService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getEntityFiles(filters: any) {\r\n return this.http.get(`api/entity-files`, { params: filters }).toPromise();\r\n }\r\n\r\n createEntityFile(model: any) {\r\n return this.http.post(\"api/entity-files\", model).toPromise();\r\n }\r\n\r\n updateEntityFile(model: any) {\r\n return this.http.put(`api/entity-files/${model.id}`, model).toPromise();\r\n }\r\n\r\n deleteEntityFile(model: any) {\r\n return this.http.delete(`api/entity-files/${model.id}`).toPromise();\r\n }\r\n\r\n uploadEntityFile(file: File, params?: any) {\r\n const formData: FormData = new FormData();\r\n formData.append(\"fileData\", file, file.name);\r\n if (params?.entity_id) {\r\n formData.append('entity_id', params.entity_id);\r\n formData.append('entity_type', params.entity_type);\r\n }\r\n return this.http\r\n .skipHeader()\r\n .post(\r\n \"api/entity-files-upload\",\r\n formData,\r\n ).toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormValidatorService {\r\n\r\n constructor() { }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string, formGroup: FormGroup | any, firstAttempt?: boolean) {\r\n return (!formGroup.get(field).valid && formGroup.get(field).touched) ||\r\n (!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string, formGroup: FormGroup | any, errorMessages: any, errorField?: string) {\r\n const error = Object.keys(formGroup.get(field).errors);\r\n return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from \"@angular/core\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\r\nimport { EntityFileService } from '../entity-file.service';\r\nimport { FileDropperConfig } from '../../file-dropper/file-dropper.model';\r\nimport { ViewerConfig } from '../../document-viewer/viewer-config.model';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { AlertService } from \"../../core/alert.service\";\r\n\r\nconst errorMessages: any = {\r\n url: {\r\n required: \"File is required\"\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'entity-file-form',\r\n templateUrl: './entity-file-form.component.html',\r\n styleUrls: ['./entity-file-form.component.css']\r\n})\r\nexport class EntityFileFormComponent implements OnInit {\r\n\r\n entityFileGroup: FormGroup;\r\n assignmentFileFirstAttempt: boolean;\r\n updateMode: boolean;\r\n fileConfig: FileDropperConfig;\r\n fileList: any[] = [];\r\n viewerConfig: ViewerConfig;\r\n hideTitleAndDetails: boolean;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<EntityFileFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private formValidatorService: FormValidatorService,\r\n private fb: FormBuilder,\r\n private entityFileService: EntityFileService,\r\n private alertService: AlertService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.entityFileGroup = this.fb.group({\r\n id: [''],\r\n title: [''],\r\n details: [''],\r\n entity_type: [''],\r\n entity_id: [],\r\n file: ['', Validators.required],\r\n url: ['', Validators.required],\r\n file_size: ['', Validators.required],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.data.entity) {\r\n this.entityFileGroup.get('entity_type').setValue(this.data.entity.entity_type);\r\n this.entityFileGroup.get('entity_id').setValue(this.data.entity.entity_id);\r\n }\r\n if (this.data.file) {\r\n this.updateMode = true;\r\n this.entityFileGroup.patchValue(this.data.file);\r\n }\r\n\r\n if (this.data?.hideTitleAndDetails) {\r\n this.hideTitleAndDetails = this.data?.hideTitleAndDetails;\r\n }\r\n\r\n //File dropper config\r\n this.fileConfig = {\r\n fileId: \"subjectFile\",\r\n containerId: \"subjectFileContainer\",\r\n styles: {\r\n height: \"200px\"\r\n },\r\n multiple: false,\r\n acceptFile: \"*\",\r\n maxSize: 10,\r\n acceptFileText: \"All Files\"\r\n };\r\n\r\n this.viewerConfig = {\r\n viewerStyle: {\r\n height: '200px',\r\n width: '100%'\r\n }\r\n }\r\n }\r\n\r\n\r\n //Method to trigger submit\r\n async submit() {\r\n this.assignmentFileFirstAttempt = true;\r\n if (!this.entityFileGroup.valid) {\r\n return;\r\n }\r\n const model = this.entityFileGroup.value;\r\n\r\n if (this.hideTitleAndDetails) {\r\n model.title = model.file;\r\n }\r\n\r\n const result: any = this.updateMode\r\n ? await this.entityFileService.updateEntityFile(model)\r\n : await this.entityFileService.createEntityFile(model);\r\n this.dialogRef.close(result.item);\r\n this.alertService.addAlert(\r\n \"File submitted successfully\",\r\n \"success\"\r\n );\r\n\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.fileList = event;\r\n\r\n if (this.fileList.length > 0) {\r\n\r\n const result: any = await this.entityFileService.uploadEntityFile(\r\n this.fileList[0],\r\n );\r\n this.entityFileGroup.patchValue(result.item);;\r\n this.fileList = [];\r\n }\r\n }\r\n\r\n\r\n async removeFile() {\r\n if (this.entityFileGroup.value.file) {\r\n try {\r\n this.entityFileGroup.patchValue({\r\n file: \"\",\r\n url: \"\"\r\n });\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to remove file, try later\", \"warn\");\r\n }\r\n }\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(\r\n field,\r\n this.entityFileGroup,\r\n this.assignmentFileFirstAttempt\r\n );\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(\r\n field,\r\n this.entityFileGroup,\r\n errorMessages\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\r\nimport { EntityFileService } from './entity-file.service';\r\nimport { ActionPopup } from '../action-popup/action-popup.model';\r\nimport { FormControl } from '@angular/forms';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ViewerConfig } from '../document-viewer/viewer-config.model';\r\nimport { FileDropperConfig } from '../file-dropper';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-entity-files-view-all',\r\n templateUrl: './entity-files-view-all.component.html',\r\n styleUrls: ['./entity-files-view-all.component.css']\r\n})\r\nexport class EntityFilesViewAllComponent implements OnInit {\r\n @Input() entityId: number;\r\n @Input() entityType: string;\r\n @Input() viewOnly: boolean = false;\r\n @Input() removeSearch: boolean;\r\n @Input() hideTitleAndDetails: boolean;\r\n @Input() displayMode: boolean;\r\n @Input() allowMultipleFiles: boolean = false;\r\n viewerConfig: ViewerConfig;\r\n @Input() title: string = \"File\";\r\n filters: any = {};\r\n entityFiles: any[] = [];\r\n displayedColumns = [\r\n 'index',\r\n 'title',\r\n 'details',\r\n 'file_size',\r\n 'uploaded_on',\r\n ];\r\n isWorking: boolean = false;\r\n search: FormControl = new FormControl('');\r\n page: number = 1;\r\n perPage: number = 25;\r\n lastPage: number = 0;\r\n fileConfig: FileDropperConfig;\r\n fileList: any[] = [];\r\n\r\n constructor(\r\n private entityFileService: EntityFileService,\r\n public location: Location,\r\n private alertService: AlertService,\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n //File dropper config\r\n this.fileConfig = {\r\n fileId: \"entityDashboardDropper\",\r\n containerId: \"entityDashboardDropperContainer\",\r\n styles: {\r\n height: \"500px\"\r\n },\r\n multiple: this.allowMultipleFiles,\r\n acceptFile: \"*\",\r\n maxSize: 10,\r\n acceptFileText: \"All Files\"\r\n };\r\n\r\n this.viewerConfig = {\r\n imageStyle: {\r\n height: '200px',\r\n width: '200px'\r\n },\r\n viewerStyle: {\r\n height: ' 160px',\r\n width: '200px'\r\n },\r\n hideRemove: true\r\n };\r\n\r\n if (this.hideTitleAndDetails) {\r\n this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));\r\n }\r\n\r\n this.filters = {\r\n entity_type: this.entityType,\r\n entity_id: this.entityId,\r\n title: \"\"\r\n };\r\n this.search.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => {\r\n this.filters.title = value;\r\n this.reload();\r\n })\r\n this.fetchEntityFilesDetails();\r\n if (!this.viewOnly) {\r\n this.displayedColumns.push('actions');\r\n }\r\n }\r\n\r\n async fetchEntityFilesDetails() {\r\n this.filters.page = this.page;\r\n this.filters.perPage = this.perPage;\r\n this.isWorking = true;\r\n const result: any = await this.entityFileService.getEntityFiles(this.filters);\r\n this.lastPage = result.last_page || this.page;\r\n this.entityFiles = this.entityFiles.concat(result.data);\r\n this.isWorking = false;\r\n }\r\n\r\n addEntityFile() {\r\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\r\n width: \"700px\",\r\n data: {\r\n entity: this.filters,\r\n hideTitleAndDetails: this.hideTitleAndDetails\r\n },\r\n autoFocus: false,\r\n restoreFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n const files = [...this.entityFiles];\r\n files.push(result);\r\n this.entityFiles = files;\r\n }\r\n });\r\n }\r\n\r\n editEntityFile(file: any) {\r\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\r\n width: \"700px\",\r\n autoFocus: false,\r\n data: {\r\n file: file,\r\n hideTitleAndDetails: this.hideTitleAndDetails\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEntityFile(file: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: \"Delete File\",\r\n message: `Are you sure to proceed delete the file ${file.title}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n const result = await this.entityFileService.deleteEntityFile(\r\n file\r\n );\r\n this.alertService.addAlert(\r\n \"File successfully deleted\",\r\n \"success\"\r\n );\r\n this.reload();\r\n\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage && !this.isWorking) {\r\n this.page += 1;\r\n this.fetchEntityFilesDetails();\r\n }\r\n }\r\n\r\n reload() {\r\n this.entityFiles = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.fetchEntityFilesDetails();\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n resetFieldValue() {\r\n this.search.setValue(\"\");\r\n }\r\n\r\n sizeOf(bytes) {\r\n if (!bytes) { return \"0.00 B\"; }\r\n var e = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.fileList = event;\r\n if (this.fileList.length > 0) {\r\n\r\n await this.fileList.forEach(async file => {\r\n const result: any = await this.entityFileService.uploadEntityFile(\r\n file,\r\n {\r\n entity_type: this.entityType,\r\n entity_id: this.entityId,\r\n }\r\n );\r\n });\r\n this.fileList = [];\r\n this.alertService.addAlert('Successfull uploaded', 'success');\r\n this.reload();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AlertService } from \"../core/alert.service\";\r\nimport { FileDropperConfig } from './file-dropper.model';\r\n\r\n\r\n@Component({\r\n selector: \"app-file-dropper\",\r\n templateUrl: \"./file-dropper.component.html\",\r\n styleUrls: [\"./file-dropper.component.scss\"]\r\n})\r\nexport class FileDropperComponent implements OnInit {\r\n @Input() fileArray: any[] = [];\r\n\r\n @Input() config: FileDropperConfig;\r\n\r\n @Output() fileChanged: any = new EventEmitter();\r\n\r\n border = \"1px dashed #989898\";\r\n\r\n @Input() styles: any;\r\n\r\n isSingleMode: boolean;\r\n\r\n constructor(private alertService: AlertService) { }\r\n\r\n /**Life cycle hook method */\r\n ngOnInit() {\r\n this.isSingleMode = !Boolean(this.config.multiple);\r\n }\r\n\r\n /**Method for dragging event */\r\n dragEnter(event: any) {\r\n event.target.style.background = this.config.dragColor || \"#c0c0c0\";\r\n\r\n event.target.style.border = \"1px dashed black\";\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drag over event */\r\n dragOver(event: any) {\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drag leave event */\r\n dragLeave(event: any) {\r\n event.target.style.background = \"\";\r\n event.target.style.border = this.border;\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drop event */\r\n dropEvent(event: any) {\r\n event.target.style.background = \"\";\r\n event.target.style.border = this.border;\r\n const droppedFiles: FileList = event.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n const fileArray = Array.from(droppedFiles);\r\n this.addFiles(fileArray);\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n /**Method to list files selected */\r\n onFileChange(event: any) {\r\n if (event.target.files && event.target.files.length) {\r\n const fileArray = Array.from(event.target.files);\r\n this.addFiles(fileArray);\r\n const fileInput = document.getElementById(\r\n this.config.fileId\r\n ) as HTMLInputElement;\r\n fileInput.value = \"\";\r\n }\r\n }\r\n\r\n /**Method to add files in the array */\r\n addFiles(fileArray: any) {\r\n if (!this.isSingleMode) {\r\n fileArray.forEach((file: any) => {\r\n this.fileArray = this.fileArray.filter(\r\n (item: any) => item.name !== file.name\r\n );\r\n if (this.fileSizeAllowed(file)) {\r\n this.fileArray.push(file);\r\n }\r\n });\r\n\r\n this.fileArray.sort(this.sortFiles);\r\n this.fileChanged.emit(this.fileArray);\r\n } else {\r\n // Single Mode\r\n if (this.fileArray.length === 0) {\r\n if (this.fileSizeAllowed(fileArray[0])) {\r\n this.fileArray.push(fileArray[0]);\r\n this.fileArray.sort(this.sortFiles);\r\n this.fileChanged.emit(this.fileArray);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**Method to sort the files in asc */\r\n sortFiles(a: any, b: any) {\r\n const nameA = a.name.toUpperCase();\r\n const nameB = b.name.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**Method tp validate the file size */\r\n fileSizeAllowed(file: any): boolean {\r\n if (!Boolean(this.config.maxSize)) {\r\n return true;\r\n } else if (file.size / (1024 * 1024) < this.config.maxSize) {\r\n return true;\r\n } else {\r\n this.alertService.addAlert(\r\n `The size of the file exceeds the limit ${this.config.maxSize} MB, kindly upload a file with size ${this.config.maxSize} MB or below`,\r\n \"warn\"\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n /**Method invokes when the drop box is clicked to upload the file */\r\n clickEvent(event: any) {\r\n if (!(this.isSingleMode && this.fileArray.length > 0)) {\r\n document.getElementById(this.config.fileId).click();\r\n }\r\n event.preventDefault();\r\n }\r\n}\r\n","export class FileDropperConfig {\r\n containerId: string;\r\n fileId: string;\r\n styles?: any;\r\n multiple?: boolean;\r\n dragColor?: boolean;\r\n acceptFile: string; // use '*' to accept all file types.\r\n maxSize?: number; // size in MB\r\n acceptFileText?: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NoteService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getNotes(filterModel: any) {\r\n return this.http.get('api/notes', { params: filterModel }).toPromise();\r\n }\r\n\r\n addNote(note: any) {\r\n return this.http.post('api/notes', note).toPromise();\r\n }\r\n\r\n editNote(note: any) {\r\n return this.http.put(`api/notes/${note.id}`, note).toPromise();\r\n }\r\n\r\n deleteNote(note: any) {\r\n return this.http.delete(`api/notes/${note.id}`).toPromise();\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from \"@angular/core\";\r\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { NoteService } from \"../note.service\";\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { AlertService } from \"../../core/alert.service\";\r\n\r\nconst errorMessages: any = {\r\n note: {\r\n required: \"Note is required\"\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'app-note-form',\r\n templateUrl: './note-form.component.html',\r\n styleUrls: ['./note-form.component.css']\r\n})\r\nexport class NoteFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n noteFormGroup: FormGroup;\r\n noteFormFirstAttempt: boolean;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<NoteFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n private noteService: NoteService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.noteFormGroup = this.fb.group({\r\n id: [\"\"],\r\n note: [\"\", Validators.compose([Validators.required])],\r\n model_type: [\"\"],\r\n related_model_id: [\"\"],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.update) {\r\n this.updateMode = true;\r\n }\r\n this.noteFormGroup.patchValue(this.data.note);\r\n }\r\n\r\n //Method to trigger login\r\n async submit() {\r\n this.noteFormFirstAttempt = true;\r\n if (this.noteFormGroup.valid) {\r\n const model = this.noteFormGroup.value;\r\n const result = this.updateMode\r\n ? await this.noteService.editNote(model)\r\n : await this.noteService.addNote(model);\r\n\r\n this.alertService.addAlert(\r\n `${this.data?.labelText} saved successfully`,\r\n \"success\"\r\n );\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(\r\n field,\r\n this.noteFormGroup,\r\n this.noteFormFirstAttempt\r\n );\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(\r\n field,\r\n this.noteFormGroup,\r\n errorMessages\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NoteService } from '../note.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NoteFormComponent } from '../note-form/note-form.component';\r\nimport { ActionPopupComponent } from '../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../action-popup/action-popup.model';\r\n\r\n@Component({\r\n selector: 'app-note-list',\r\n templateUrl: './note-list.component.html',\r\n styleUrls: ['./note-list.component.css']\r\n})\r\nexport class NoteListComponent implements OnInit {\r\n\r\n @Input() relatedModelId !: any;\r\n @Input() modelType !: any;\r\n @Input() readonly: boolean = false;\r\n @Input() labelText: string = 'Note';\r\n @Input() commentsView: boolean = false;\r\n\r\n notes: any[] = [];\r\n filters: any;\r\n displayedColumns = [\r\n 'index',\r\n 'note',\r\n 'actions'\r\n ];\r\n\r\n page = 1;\r\n lastPage = 1;\r\n\r\n constructor(private noteService: NoteService,\r\n private dialog: MatDialog\r\n ) {\r\n this.filters = {};\r\n this.filters.sort_by = \"created_at|DESC\";\r\n }\r\n\r\n ngOnInit() {\r\n if (this.readonly) {\r\n this.displayedColumns = this.displayedColumns.filter(x => x !== 'actions');\r\n }\r\n this.filters.related_model_id = this.relatedModelId;\r\n this.filters.model_type = this.modelType;\r\n this.loadData();\r\n }\r\n\r\n async loadData() {\r\n\r\n const result: any = await this.noteService.getNotes({ ...this.filters, page: this.page });\r\n this.notes = this.notes.concat(result.data);\r\n this.page = result.current_page;\r\n this.lastPage = result.last_page;\r\n }\r\n\r\n addNote() {\r\n const dialogRef = this.dialog.open(NoteFormComponent, {\r\n width: \"400px\",\r\n data: {\r\n note: { related_model_id: this.relatedModelId, model_type: this.modelType },\r\n labelText: this.labelText,\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.resetScroll();\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n editNote(note: any) {\r\n const dialogRef = this.dialog.open(NoteFormComponent, {\r\n width: \"400px\",\r\n data: {\r\n note: note,\r\n update: true,\r\n labelText: this.labelText\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.resetScroll();\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n async deleteNote(note: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: `Delete ${this.labelText}`,\r\n message: `Are you sure to delete?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n\r\n const result = await this.noteService.deleteNote(note);\r\n this.notes = this.notes.filter((item: any) => item.id !== note.id);\r\n\r\n }\r\n });\r\n }\r\n\r\n resetScroll() {\r\n this.page = 1;\r\n this.lastPage = 1;\r\n this.notes = [];\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n commentAction(event: any) {\r\n if (event.type === \"save\") {\r\n if (event.value.id) {\r\n this.editComment(event.value);\r\n return;\r\n }\r\n this.addComment(event.value);\r\n return;\r\n }\r\n this.deleteNote(event.value);\r\n }\r\n\r\n async editComment(comment: any) {\r\n const result: any = await this.noteService.editNote(comment);\r\n let index = this.notes.findIndex(\r\n (x: any) => x.id === comment.id\r\n );\r\n if (index !== -1) {\r\n this.notes[index] = result.item;\r\n }\r\n }\r\n\r\n async addComment(comment: any) {\r\n comment.related_model_id = this.relatedModelId;\r\n comment.model_type = this.modelType;\r\n const result: any = await this.noteService.addNote(comment);\r\n this.notes.push(result.item);\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnDestroy\r\n} from \"@angular/core\";\r\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\r\nimport { CredentialsService } from \"../../core/credentials.service\";\r\n\r\n@Component({\r\n selector: \"app-comment-form\",\r\n templateUrl: \"./comment-form.component.html\",\r\n styleUrls: [\"./comment-form.component.scss\"]\r\n})\r\nexport class CommentFormComponent implements OnInit, OnDestroy {\r\n commentFormGroup: FormGroup;\r\n view: boolean;\r\n _commentData: any;\r\n\r\n @Input() set commentData(data: any) {\r\n this.view = !!data;\r\n this._commentData = data;\r\n this.commentFormGroup.patchValue(data);\r\n }\r\n\r\n @Output() action = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder,\r\n private credentialService: CredentialsService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n get isLoggedIn() {\r\n return this.credentialService.isAuthenticated;\r\n }\r\n\r\n get currentUser() {\r\n return this.credentialService.credentials.user;\r\n }\r\n\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.commentFormGroup = this.fb.group({\r\n id: [\"\"],\r\n note: [\"\"],\r\n model_type: [\"\"],\r\n related_model_id: [\"\"],\r\n });\r\n }\r\n\r\n submit() {\r\n if (this.commentFormGroup.get(\"note\").value) {\r\n if (this._commentData) {\r\n this.view = !this.view;\r\n }\r\n this.action.emit({ type: \"save\", value: this.commentFormGroup.value });\r\n this.commentFormGroup.reset();\r\n } else if (this.commentFormGroup.get(\"id\").value) {\r\n this.deleteComment();\r\n }\r\n }\r\n\r\n hideEdit() {\r\n if (this.commentFormGroup.get(\"id\").value) {\r\n this.view = !this.view;\r\n }\r\n }\r\n\r\n editComment() {\r\n this.view = !this.view;\r\n this.commentFormGroup.patchValue(this._commentData);\r\n }\r\n\r\n deleteComment() {\r\n this.action.emit({ type: \"delete\", value: this.commentFormGroup.value });\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, Input, OnDestroy, OnInit, Optional, Self, Output, EventEmitter, TemplateRef } from '@angular/core';\r\nimport { FormBuilder, FormGroup, ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject, of, from } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, startWith, switchMap, finalize } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentType } from '@angular/cdk/portal';\r\nimport { HttpService } from '../core/http.service';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-searchable-selector',\r\n templateUrl: './searchable-selector.component.html',\r\n styleUrls: ['./searchable-selector.component.scss'],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: SearchableSelectorComponent\r\n }\r\n ]\r\n})\r\nexport class SearchableSelectorComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n\r\n @Input() valueField: string = 'id';\r\n @Input() titleField: string = 'title';\r\n @Input() apiUrl!: string;\r\n @Input() multiple: boolean = false;\r\n @Input() selectedValue: any;\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Input() enableSearch: boolean = true;\r\n @Input() add: boolean = false;\r\n @Input() addConfig: any;\r\n @Input() edit: boolean = false;\r\n @Input() editConfig: any;\r\n @Input() sort: boolean = true;\r\n @Input() sortBy: string;\r\n @Input() searchField: string;\r\n @Input() itemComponent: ComponentType<unknown> | TemplateRef<unknown>;\r\n @Input() items: any[] = [];\r\n @Input() apiDataProperty: string = 'data';\r\n @Input() cache: boolean = false;\r\n @Input() perPage: number = 25;\r\n @Input() inDataSearch: boolean = false;\r\n @Output() selectionChange = new EventEmitter();\r\n @Output() itemsChange = new EventEmitter();\r\n\r\n\r\n isLoading: boolean = false;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n static nextId = 0;\r\n selectorForm: FormGroup;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'searchable-selctor';\r\n id = `searchable-selctor-${SearchableSelectorComponent.nextId++}`;\r\n describedBy = '';\r\n filters: any;\r\n cachedItems: any[] = [];\r\n\r\n\r\n get empty() {\r\n const { value: { select_value } } = this.selectorForm;\r\n return !select_value;\r\n }\r\n\r\n get shouldLabelFloat() { return this.focused || !this.empty; }\r\n\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: boolean) {\r\n this.selectorForm.get('select_value').setValidators(Validators.required);\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n @Input()\r\n get value(): any {\r\n if (this.selectorForm.valid) {\r\n return this.selectorForm.value.select_value;\r\n }\r\n return '';\r\n }\r\n set value(data: any) {\r\n this.selectorForm.patchValue({ select_value: data || '' });\r\n this.stateChanges.next();\r\n }\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n private _focusMonitor: FocusMonitor,\r\n private http: HttpService,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private dialog: MatDialog,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n this.selectorForm = formBuilder.group({\r\n select_value: [null],\r\n search: ''\r\n });\r\n\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n openedChange(event: any) {\r\n if (this.dataItems.length === 0 && this.selectorForm.get('search').value) {\r\n this.selectorForm.get('search').setValue('');\r\n }\r\n }\r\n\r\n get dataItems(): any[] {\r\n let items: any[] = [];\r\n if (this.multiple && this.selectedValue && (this.selectedValue.length > 0))\r\n items = [...this.selectedValue, ...this.items];\r\n else if ((!this.multiple) && this.selectedValue)\r\n items = [this.selectedValue, ...this.items];\r\n else\r\n items = this.items;\r\n items = items.filter((v, i, a) => a.findIndex(v => v[this.valueField] === a[i][this.valueField]) === i);\r\n //Emit the items to any child component\r\n this.itemsChange.emit(items);\r\n return items;\r\n }\r\n\r\n ngOnInit() {\r\n this.selectorForm.get('search').valueChanges\r\n .pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n if (this.enableSearch)\r\n this.search(value);\r\n });\r\n\r\n this.filters = {\r\n perPage: this.perPage,\r\n search: '',\r\n page: 1,\r\n lastPage: 1\r\n }\r\n if (this.sort) {\r\n this.filters.sort_by = this.sortBy || `${this.titleField}|asc`;\r\n }\r\n\r\n //Fetch Items only if it is not present, can be used in places where we load many entries.\r\n if (this.items.length === 0) {\r\n this.fetchItemList();\r\n }\r\n }\r\n\r\n fetchItemList() {\r\n this.isLoading = true;\r\n let request = this.http.get(this.apiUrl, { params: this.filters })\r\n if (this.cache) {\r\n request = this.http.cache().get(this.apiUrl, { params: this.filters })\r\n }\r\n of().pipe(\r\n startWith(true),\r\n switchMap((_) => from(request)),\r\n finalize(() => this.isLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.items = this.items.concat(result[this.apiDataProperty]);\r\n if (this.cache) {\r\n this.cachedItems = this.items;\r\n }\r\n this.filters.page = result?.current_page || 1;\r\n this.filters.lastPage = result?.last_page || 1;\r\n });\r\n }\r\n\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n writeValue(data: any): void {\r\n this.value = data;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n getPropertyValue(ele: any, keyString: string) {\r\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\r\n const keyList = keyString.split(\".\");\r\n for (let i = 0, n = keyList.length; i < n; ++i) {\r\n const key = keyList[i];\r\n if (ele && key in ele) {\r\n ele = ele[key];\r\n } else {\r\n return;\r\n }\r\n }\r\n return ele;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n if (this.multiple)\r\n this.selectedValue = (this.value as []).map(x => this.dataItems.find(y => y[this.valueField] === x));\r\n else\r\n this.selectedValue = this.dataItems.find(x => x[this.valueField] === this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(this.value);\r\n }\r\n\r\n get errorState(): boolean {\r\n return (this.ngControl && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty));\r\n }\r\n\r\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\r\n static ngAcceptInputType_required: boolean | string | null | undefined;\r\n\r\n onScroll() {\r\n if (this.filters.lastPage > this.filters.page) {\r\n this.filters.page += 1;\r\n this.fetchItemList();\r\n }\r\n }\r\n\r\n reloadData() {\r\n this.items = [];\r\n this.filters.page = 1;\r\n this.filters.lastPage = 1;\r\n this.fetchItemList();\r\n }\r\n\r\n search(event: any) {\r\n if (this.searchField) {\r\n this.filters[this.searchField] = event;\r\n } else {\r\n this.filters.search = event;\r\n }\r\n // we need search field to search in data\r\n if (this.inDataSearch && this.searchField) {\r\n this.filterItems(event);\r\n } else {\r\n this.reloadData();\r\n }\r\n }\r\n\r\n filterItems(event: string) {\r\n if (event) {\r\n this.items = this.cachedItems.filter((value: any) => {\r\n return (value[this.searchField] as string).toLowerCase().search(event.toLowerCase()) != -1\r\n })\r\n } else {\r\n this.items = this.cachedItems;\r\n }\r\n }\r\n\r\n addItem(event: any) {\r\n const dialogRef = this.dialog.open(this.itemComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {},\r\n ...this.addConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.items.push(result.item);\r\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\r\n this._handleInput();\r\n }\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n editItem(event: any) {\r\n const dialogRef = this.dialog.open(this.itemComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {\r\n item: this.selectedValue\r\n },\r\n ...this.editConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.items = this.items.filter(x => x[this.valueField] !== this.selectedValue[this.valueField]);\r\n this.items.push(result.item);\r\n this.selectedValue = null;\r\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\r\n this._handleInput();\r\n }\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatSelect, SELECT_ITEM_HEIGHT_EM } from '@angular/material/select';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\nimport { fromEvent, Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[msInfiniteScroll]'\r\n})\r\nexport class MatSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() threshold = '15%';\r\n @Input() debounceTime = 150;\r\n @Input() complete: boolean;\r\n @Output() infiniteScroll = new EventEmitter<void>();\r\n\r\n private panel: Element;\r\n private thrPx = 0;\r\n private thrPc = 0;\r\n private singleOptionHeight = SELECT_ITEM_HEIGHT_EM;\r\n\r\n private destroyed$ = new Subject<boolean>();\r\n\r\n constructor(private matSelect: MatSelect, private ngZone: NgZone) {\r\n }\r\n\r\n ngOnInit() {\r\n this.evaluateThreshold();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.matSelect.openedChange.pipe(\r\n takeUntil(this.destroyed$)\r\n ).subscribe((opened) => {\r\n if (opened) {\r\n this.panel = this.matSelect.panel.nativeElement;\r\n this.singleOptionHeight = this.getSelectItemHeightPx();\r\n this.registerScrollListener();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n evaluateThreshold() {\r\n if (this.threshold.lastIndexOf('%') > -1) {\r\n this.thrPx = 0;\r\n this.thrPc = (parseFloat(this.threshold) / 100);\r\n\r\n } else {\r\n this.thrPx = parseFloat(this.threshold);\r\n this.thrPc = 0;\r\n }\r\n }\r\n\r\n registerScrollListener() {\r\n fromEvent(this.panel, 'scroll').pipe(\r\n takeUntil(this.destroyed$),\r\n debounceTime(this.debounceTime),\r\n tap((event) => {\r\n this.handleScrollEvent(event);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n handleScrollEvent(event) {\r\n this.ngZone.runOutsideAngular(() => {\r\n if (this.complete) {\r\n return;\r\n }\r\n const countOfRenderedOptions = this.matSelect.options.length;\r\n const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;\r\n const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;\r\n\r\n const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;\r\n\r\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\r\n this.ngZone.run(() => this.infiniteScroll.emit());\r\n }\r\n });\r\n }\r\n\r\n getSelectItemHeightPx(): number {\r\n return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\r\n }\r\n\r\n}","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a num items selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20170817\r\n */\r\n@Component({\r\n selector: \"num-items-selector\",\r\n templateUrl: \"./num-items-selector.html\"\r\n})\r\nexport class NumItemsSelector {\r\n @Input() numItems: number;\r\n @Output() numItemsChange: EventEmitter<number>;\r\n\r\n constructor() {\r\n this.numItemsChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numItemsChanged() {\r\n this.numItemsChange.emit(this.numItems);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Service that provides utility functions for dates\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20170726\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateUtils {\r\n\r\n /**\r\n * Takes in a date object and outputs the string value\r\n */\r\n getYYYYMMDDString(inputDate: Date): string {\r\n var year = inputDate.getFullYear();\r\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\r\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\r\n\r\n return year + \"-\" + month + \"-\" + date;\r\n }\r\n\r\n /**\r\n * Takes in a date object and outputs the year\r\n */\r\n getYYYY(inputDate: Date): number {\r\n var year = inputDate.getFullYear();\r\n return year;\r\n }\r\n\r\n /**\r\n * Takes in a date object and outputs the Month\r\n */\r\n getMM(inputDate: Date): number {\r\n var month = inputDate.getMonth() + 1;\r\n return month;\r\n }\r\n // var n = this.rfidCardUseManualEntry.manual_date.toLocaleTimeString();\r\n\r\n getDateTime(inputDate: Date): string {\r\n var year = inputDate.getFullYear();\r\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\r\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\r\n var time = inputDate.toLocaleTimeString();\r\n\r\n return year + \"-\" + month + \"-\" + date + \" \" + time;\r\n }\r\n\r\n}","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a number selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20180628\r\n */\r\n@Component({\r\n selector: \"number-selector\",\r\n templateUrl: \"./number-selector.html\"\r\n})\r\nexport class NumberSelector implements OnInit {\r\n @Input() start_value: number;\r\n @Input() end_value: number\r\n @Output() selectedValueChange: EventEmitter<number>;\r\n @Input() selectedValue: number;\r\n\r\n items = new Array();\r\n\r\n constructor() {\r\n this.selectedValueChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numChanged() {\r\n this.selectedValueChange.emit(this.selectedValue);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n for (var i = this.start_value; i < this.end_value + 1; i++) {\r\n this.items.push(i);\r\n }\r\n }\r\n}\r\n","export class Timeline {\r\n public static CUSTOM: number = 1;\r\n public static TODAY: number = 2;\r\n public static YESTERDAY: number = 3;\r\n public static THIS_WEEK: number = 4;\r\n public static LAST_WEEK: number = 5;\r\n public static THIS_MONTH: number = 6;\r\n public static LAST_MONTH: number = 7;\r\n public static THIS_QUARTER: number = 8;\r\n public static LAST_QUARTER: number = 9;\r\n public static THIS_YEAR: number = 10;\r\n public static LAST_YEAR: number = 11;\r\n public static ALL: number = 12;\r\n public static TOMMOROW: number = 13;\r\n public static NEXT_WEEK: number = 14;\r\n public static NEXT_MONTH: number = 15;\r\n}\r\n","import * as moment_ from 'moment';\r\nconst moment = moment_;\r\nimport { Timeline } from \"./timeline.model\";\r\n\r\n\r\nexport interface TimelineValue {\r\n date_from: Date,\r\n date_to: Date,\r\n show_custom_field: boolean\r\n}\r\nexport function calculateTimeline(value: any) {\r\n const date = new Date();\r\n const data: any = {\r\n 'date_from': date,\r\n 'date_to': date,\r\n 'show_custom_field': false\r\n };\r\n switch (value) {\r\n case Timeline.CUSTOM: { //Custom\r\n data.show_custom_field = true;\r\n break;\r\n }\r\n case Timeline.TODAY: { // Today\r\n let now = moment();\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.YESTERDAY: { // Yesterday\r\n let now = moment().subtract(1, 'day');\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_WEEK: { // This Week\r\n let now = moment();\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_WEEK: { // Last Week\r\n let now = moment().subtract(1, 'week');\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_MONTH: { //This Month\r\n let now = moment();\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_MONTH: { // Last Month\r\n let now = moment().subtract(1, 'month');\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_QUARTER: { // This Quarter\r\n let now = moment();\r\n data.date_from = now.startOf('quarter').toISOString();\r\n data.date_to = now.endOf('quarter').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_QUARTER: { // Last Quarter\r\n let now = moment().subtract(1, 'quarter');\r\n data.date_from = now.startOf('quarter').toISOString();\r\n data.date_to = now.endOf('quarter').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_YEAR: { // This Year\r\n let now = moment();\r\n data.date_from = now.startOf('year').toISOString();\r\n data.date_to = now.endOf('year').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_YEAR: { // Last Year\r\n let now = moment().subtract(1, 'year');\r\n data.date_from = now.startOf('year').toISOString();\r\n data.date_to = now.endOf('year').toISOString();\r\n break;\r\n }\r\n case Timeline.TOMMOROW: {\r\n let now = moment().add(1, 'day');\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.NEXT_WEEK: {\r\n let now = moment().add(1, 'week');\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.NEXT_MONTH: {\r\n let now = moment().add(1, 'month');\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n default: { // All\r\n data.date_from = '';\r\n data.date_to = '';\r\n break;\r\n }\r\n\r\n }\r\n return data;\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NgControl, Validators } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\nimport { TimelineValue, calculateTimeline } from './calculate-timeline';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Timeline } from './timeline.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-timeline-filter',\r\n templateUrl: './timeline-filter.component.html',\r\n styleUrls: ['./timeline-filter.component.scss'],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: TimelineFilterComponent\r\n }\r\n ]\r\n})\r\nexport class TimelineFilterComponent implements OnInit, ControlValueAccessor {\r\n\r\n @ViewChild('picker') picker;\r\n @Input() timelineValue: FormControl = new FormControl('');\r\n @Input() timelines: any[] = [\r\n { value: Timeline.CUSTOM, viewValue: 'Custom' },\r\n { value: Timeline.TODAY, viewValue: 'Today' },\r\n { value: Timeline.YESTERDAY, viewValue: 'Yesterday' },\r\n { value: Timeline.TOMMOROW, viewValue: 'Tomorrow' },\r\n { value: Timeline.THIS_WEEK, viewValue: 'This Week' },\r\n { value: Timeline.LAST_WEEK, viewValue: 'Last Week' },\r\n { value: Timeline.NEXT_WEEK, viewValue: 'Next Week' },\r\n { value: Timeline.THIS_MONTH, viewValue: 'This Month' },\r\n { value: Timeline.LAST_MONTH, viewValue: 'Last Month' },\r\n { value: Timeline.NEXT_MONTH, viewValue: 'Next Month' },\r\n { value: Timeline.THIS_QUARTER, viewValue: 'This Quarter' },\r\n { value: Timeline.LAST_QUARTER, viewValue: 'Last Quarter' },\r\n { value: Timeline.THIS_YEAR, viewValue: 'This Year' },\r\n { value: Timeline.LAST_YEAR, viewValue: 'Last Year' },\r\n { value: Timeline.ALL, viewValue: 'All dates' },\r\n ];\r\n @Input() dateFrom: string = 'date_from';\r\n @Input() dateTo: string = 'date_to';\r\n @Input() appearance: any = \"legacy\"\r\n @Input() showClearbutton: boolean = false;\r\n /**\r\n * @deprecated The form input is deprated\r\n */\r\n @Input() form: FormGroup = null;\r\n @Input() labelText: string = 'Select Timeline';\r\n @Input() selectedValue: any;\r\n @Input() touchUi: boolean = true;\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Output() selectionChange = new EventEmitter();\r\n\r\n selectorForm: FormGroup;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n controlType = 'timeline-filter';\r\n id = `timeline-filter-${TimelineFilterComponent.nextId++}`;\r\n describedBy = '';\r\n\r\n selectedRange: TimelineValue;\r\n @Input() set defaultValue(value: any) {\r\n this.timelineValue.setValue(value);\r\n this.changeTimeline(value);\r\n }\r\n\r\n showCustomDateFields: boolean = false;\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n @Optional() @Self() public ngControl: NgControl,\r\n private datePipe: DatePipe\r\n ) {\r\n this.selectorForm = formBuilder.group({\r\n select_value: [null],\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: boolean) {\r\n this.selectorForm.get('select_value').setValidators(Validators.required);\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n @Input()\r\n get value(): any {\r\n if (this.selectorForm.valid) {\r\n return this.selectorForm.value.select_value;\r\n }\r\n return '';\r\n }\r\n set value(data: any) {\r\n this.selectorForm.patchValue({ select_value: data || '' });\r\n this._handleInput();\r\n this.stateChanges.next();\r\n }\r\n\r\n getDateRangeString() {\r\n let str = \"\";\r\n if (this.selectedRange?.show_custom_field) {\r\n if (this.selectedRange?.date_from.toUTCString() != 'Invalid Date') {\r\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_from?.toUTCString())\r\n }\r\n if (this.selectedRange?.date_to.toUTCString() != 'Invalid Date') {\r\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_to?.toUTCString())\r\n }\r\n }\r\n return str;\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.form.get(field).setValue('');\r\n }\r\n\r\n\r\n getFieldValue(field: string) {\r\n return this.form.get(field).value;\r\n }\r\n\r\n setFieldValue(field: string, value: any) {\r\n this.form.get(field).setValue(value);\r\n }\r\n\r\n changeTimeline(value: any) {\r\n const timeline = calculateTimeline(value);\r\n if (timeline) {\r\n this.setFieldValue(this.dateFrom, timeline.date_from)\r\n this.setFieldValue(this.dateTo, timeline.date_to)\r\n this.showCustomDateFields = timeline.show_custom_field;\r\n }\r\n }\r\n\r\n _handleInput(): void {\r\n if (this.value == 1) {\r\n this.picker.open();\r\n return;\r\n }\r\n const range: TimelineValue = calculateTimeline(this.value);\r\n this.selectedRange = range;\r\n this.onChange(this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(range);\r\n }\r\n\r\n dateRangeChange(dateRangeStart: HTMLInputElement, dateRangeEnd: HTMLInputElement) {\r\n const range: TimelineValue = {\r\n date_from : new Date(dateRangeStart.value),\r\n date_to: new Date(dateRangeEnd.value),\r\n show_custom_field: true\r\n }\r\n this.selectedRange = range;\r\n this.onChange(this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(range);\r\n }\r\n\r\n onCustomDateChange(event: any) {\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n writeValue(data: any): void {\r\n this.value = data;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.form);\r\n\r\n this.timelineValue.valueChanges.\r\n pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => this.changeTimeline(value));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n @Input() isLoading = false;\r\n @Input() size = 0.6;\r\n @Input() message: string | undefined;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SuccessSnackComponent, ErrorSnackComponent } from './snack.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n declarations: [\r\n SuccessSnackComponent,\r\n ErrorSnackComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatSnackBarModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n SuccessSnackComponent,\r\n ErrorSnackComponent,\r\n ]\r\n})\r\nexport class SnackModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { CredentialsService } from './credentials.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('AuthenticationGuard');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationGuard implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private credentialsService: CredentialsService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.isUserAuthenticated(route, state);\r\n }\r\n\r\n canLoad(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.isUserAuthenticated(route, state);\r\n }\r\n\r\n isUserAuthenticated(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n if (this.credentialsService.isAuthenticated) {\r\n return true;\r\n }\r\n\r\n log.debug('Not authenticated, redirecting and adding redirect url...');\r\n this.router.navigate(['/login'], { queryParams: { redirect: state.url }, replaceUrl: true });\r\n return false;\r\n }\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { concatMap, map } from 'rxjs/operators';\r\nimport { Credentials, CredentialsService } from './credentials.service';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Provides a base for authentication workflow.\r\n * The login/logout methods should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n\r\n constructor(private credentialsService: CredentialsService, private http: HttpService) { }\r\n\r\n /**\r\n * Authenticates the user.\r\n * @param context The login parameters.\r\n * @return The user credentials.\r\n */\r\n login(context: any): Observable<Credentials> {\r\n const data = <Credentials>{};\r\n return this.http\r\n .skipToken()\r\n .post('oauth/token', context)\r\n .pipe(\r\n concatMap(async (tokenInfo: any) => {\r\n tokenInfo.expires_in = Date.now() + (tokenInfo.expires_in * 1000);\r\n data.token = tokenInfo;\r\n data.user = {};\r\n this.credentialsService.setCredentials(data, context.remember);\r\n const userInfo: any = await this.http.get('api/user/current').toPromise();\r\n data.user = userInfo?.user;\r\n this.credentialsService.setCredentials(data, context.remember);\r\n return data;\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the user and clear credentials.\r\n * @return True if the user was logged out successfully.\r\n */\r\n logout(): Observable<boolean> {\r\n\r\n this.credentialsService.setCredentials();\r\n return of(true);\r\n }\r\n\r\n}\r\n","import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * A route strategy allowing for explicit route reuse.\r\n * Used as a workaround for https://github.com/angular/angular/issues/18374\r\n * To reuse a given route, add `data: { reuse: true }` to the route definition.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouteReusableStrategy extends RouteReuseStrategy {\r\n\r\n public shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle | null): void { }\r\n\r\n public shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\r\n return null;\r\n }\r\n\r\n public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n // Reuse the route if the RouteConfig is the same, or if both routes use the\r\n // same component, because the latter can have different RouteConfigs.\r\n return future.routeConfig === curr.routeConfig ||\r\n Boolean(future.routeConfig?.component &&\r\n future.routeConfig?.component === curr.routeConfig?.component);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n/**\r\n * Service used to manage Local Storage\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20190623\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n private storageSub = new Subject<any>();\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n watch(): Observable<any> {\r\n return this.storageSub.asObservable();\r\n }\r\n\r\n setItem(key: string, data: any) {\r\n localStorage.setItem(key, data);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n\r\n getItem(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n removeItem(key: string) {\r\n const data = this.getItem(key);\r\n localStorage.removeItem(key);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Service that provides a wrapper for retrieving data from the server\r\n * @deprecated use HttpService Instead\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataManager {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n /**\r\n * Callback wrapper for the HTTP GET Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n * @updated 20170711 to add parameters\r\n */\r\n GET(urlq: string, params = {}): any {\r\n return this.http\r\n .get(urlq, { params: params })\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POST(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POSTRAW(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .skipHeader()\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n\r\n /**\r\n * Callback wrapper for the HTTP PUT Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n PUT(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .put(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP PATCH Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20161107\r\n */\r\n PATCH(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .patch(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP DELETE Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n DELETE(urlq: string): any {\r\n return this.http\r\n .delete(urlq)\r\n .toPromise();\r\n }\r\n\r\n}","import { MatTooltipModule } from '@angular/material/tooltip';\r\n/*\r\n * This module imports and re-exports all Angular Material modules for convenience,\r\n * so only 1 module import is needed in your feature modules.\r\n * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.\r\n *\r\n * To optimize your production builds, you should only import the components used in your app.\r\n */\r\n\r\nimport { NgModule } from \"@angular/core\";\r\nimport {\r\n MatCommonModule,\r\n MatLineModule,\r\n MatNativeDateModule,\r\n MatOptionModule,\r\n MatPseudoCheckboxModule,\r\n MatRippleModule\r\n} from \"@angular/material/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatSortModule } from \"@angular/material/sort\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatCardModule } from \"@angular/material/card\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatChipsModule } from \"@angular/material/chips\";\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatListModule } from '@angular/material/list'\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\n\r\n\r\n@NgModule({\r\n exports: [\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatCommonModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatLineModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatOptionModule,\r\n MatProgressSpinnerModule,\r\n MatPseudoCheckboxModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatCardModule,\r\n MatDividerModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatListModule,\r\n MatTooltipModule,\r\n MatButtonToggleModule\r\n ]\r\n})\r\nexport class MaterialModule { }\r\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { RouteReuseStrategy, RouterModule } from '@angular/router';\r\n\r\nimport { RouteReusableStrategy } from './route-reusable-strategy';\r\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\r\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\r\nimport { HttpService } from './http.service';\r\nimport { TokenInterceptor } from './token.interceptor';\r\nimport { CacheInterceptor } from './cache.interceptor';\r\nimport { SnackModule } from './snack/snack.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n SnackModule\r\n ],\r\n providers: [\r\n {\r\n provide: HttpClient,\r\n useClass: HttpService\r\n },\r\n {\r\n provide: RouteReuseStrategy,\r\n useClass: RouteReusableStrategy\r\n }\r\n ],\r\n exports: [\r\n SnackModule\r\n ]\r\n})\r\nexport class CoreModule {\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\r\n // Import guard\r\n if (parentModule) {\r\n throw new Error(`${parentModule} has already been loaded. Import Core module in the root module only.`);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupComponent } from './action-popup.component';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n FlexLayoutModule,\r\n CommonModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n ActionPopupComponent\r\n ],\r\n exports: [\r\n ActionPopupComponent\r\n ],\r\n entryComponents: [\r\n ActionPopupComponent\r\n ]\r\n})\r\nexport class ActionPopupModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { DataTableComponent } from './data-table.component';\r\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n FlexLayoutModule,\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n DataTableComponent\r\n ],\r\n exports: [\r\n DataTableComponent\r\n ]\r\n})\r\nexport class DataTableModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { DocumentViewerComponent } from './document-viewer.component';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n NgxDocViewerModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n DocumentViewerComponent\r\n ],\r\n exports: [\r\n DocumentViewerComponent\r\n ]\r\n})\r\nexport class DocumentViewerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileDropperComponent } from './file-dropper.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n FileDropperComponent\r\n ],\r\n exports: [FileDropperComponent]\r\n})\r\nexport class FileDropperModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\r\nimport { EntityFilesViewAllComponent } from './entity-files-view-all.component';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FileDropperModule } from '../file-dropper/file-dropper.module';\r\nimport { DocumentViewerModule } from '../document-viewer/document-viewer.module';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EntityFileFormComponent, EntityFilesViewAllComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n FileDropperModule,\r\n DocumentViewerModule,\r\n InfiniteScrollModule,\r\n ActionPopupModule,\r\n MaterialModule\r\n ],\r\n exports: [\r\n EntityFilesViewAllComponent\r\n ],\r\n entryComponents: [EntityFileFormComponent]\r\n})\r\nexport class EntityFilesViewAllModule { }\r\n","import { Component, OnInit, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-read-more\",\r\n templateUrl: \"./read-more.component.html\",\r\n styleUrls: [\"./read-more.component.scss\"]\r\n})\r\nexport class ReadMoreComponent implements OnInit {\r\n @Input() text: string;\r\n @Input() maxLength: number = 100;\r\n currentText: string;\r\n hideToggle: boolean = true;\r\n\r\n isCollapsed: boolean = true;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.determineView();\r\n }\r\n\r\n toggleView() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.determineView();\r\n }\r\n\r\n determineView() {\r\n if (!this.text || this.text.length <= this.maxLength) {\r\n this.currentText = this.text;\r\n this.isCollapsed = false;\r\n this.hideToggle = true;\r\n return;\r\n }\r\n this.hideToggle = false;\r\n if (this.isCollapsed == true) {\r\n this.currentText = this.text.substring(0, this.maxLength) + \"...\";\r\n } else if (this.isCollapsed == false) {\r\n this.currentText = this.text;\r\n }\r\n }\r\n}\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReadMoreComponent } from './read-more.component';\r\n\r\n@NgModule({\r\n declarations: [ReadMoreComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule\r\n ],\r\n exports: [\r\n ReadMoreComponent\r\n ]\r\n})\r\nexport class ReadMoreModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NoteListComponent } from './note-list/note-list.component';\r\nimport { NoteFormComponent } from './note-form/note-form.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { CommentFormComponent } from './comment-form/comment-form.component';\r\nimport { ReadMoreModule } from '../read-more/read-more.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n NoteListComponent,\r\n NoteFormComponent,\r\n CommentFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n ActionPopupModule,\r\n MaterialModule,\r\n ReadMoreModule\r\n ],\r\n exports: [\r\n NoteListComponent\r\n ],\r\n entryComponents: [NoteFormComponent]\r\n})\r\nexport class NoteModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SearchableSelectorComponent } from './searchable-selector.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatSelectInfiniteScrollDirective } from './mat-select-infinite-scroll.directive';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n SearchableSelectorComponent,\r\n MatSelectInfiniteScrollDirective\r\n ],\r\n exports: [\r\n SearchableSelectorComponent,\r\n MatSelectInfiniteScrollDirective\r\n ]\r\n})\r\nexport class SearchableSelectorModule { }\r\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n/* Selectors */\r\nimport { NumItemsSelector } from './num-items-selector.component';\r\nimport { NumberSelector } from './number-selector.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n declarations: [\r\n NumItemsSelector, NumberSelector,\r\n ],\r\n exports: [NumItemsSelector, NumberSelector]\r\n})\r\nexport class UtilityModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TimelineFilterRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TimelineFilterRoutingModule } from './timeline-filter-routing.module';\r\nimport { TimelineFilterComponent } from './timeline-filter.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [TimelineFilterComponent],\r\n imports: [\r\n CommonModule,\r\n TimelineFilterRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [TimelineFilterComponent]\r\n})\r\nexport class TimelineFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoaderComponent } from './loader.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoaderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatProgressSpinnerModule\r\n ],\r\n exports: [\r\n LoaderComponent\r\n ]\r\n})\r\nexport class LoaderModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionRoutingModule } from './email-subscription-routing.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserRoutingModule } from './email-subscription-user-routing.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionUserRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionUserModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserFormRoutingModule { }\r\n","\r\nimport { Component, Inject, OnInit, TemplateRef } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AlertService } from '../../../core/alert.service';\r\nimport { FormValidatorService } from '../../../core/form-validator.service';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { Logger } from '../../../core/logger.service';\r\n\r\nconst log = new Logger('EmailSubscriptionUser Form');\r\n\r\nconst errorMessages: any = {\r\n user_id: {\r\n required: \"User is required\"\r\n },\r\n email_type_id: {\r\n required: \"Email Type is required\"\r\n },\r\n};\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-form',\r\n templateUrl: './email-subscription-user-form.component.html',\r\n styleUrls: ['./email-subscription-user-form.component.scss']\r\n})\r\nexport class EmailSubscriptionUserFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n esUserFormGroup: FormGroup;\r\n esUserFormFirstAttempt: boolean;\r\n esUser: any;\r\n isSubmitLoading: boolean;\r\n selectedUser: any;\r\n selectedType: any;\r\n\r\n constructor(private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n public dialogRef: MatDialogRef<EmailSubscriptionUserFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.esUserFormGroup = this.fb.group({\r\n id: [''],\r\n user_id: ['', Validators.required],\r\n email_type_id: ['', Validators.required],\r\n });\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.data?.esUser?.id) {\r\n this.esUser = this.data.esUser;\r\n this.updateMode = true;\r\n this.selectedType = this.esUser?.email_type;\r\n this.selectedUser = this.esUser?.user;\r\n this.esUserFormGroup.patchValue(this.esUser);\r\n }\r\n\r\n }\r\n\r\n //Method to trigger login\r\n submit() {\r\n this.esUserFormGroup.markAllAsTouched();\r\n this.esUserFormFirstAttempt = true;\r\n if (this.esUserFormGroup.valid) {\r\n this.isSubmitLoading = true;\r\n const model = this.esUserFormGroup.value;\r\n (\r\n this.updateMode ?\r\n this.http.put(`api/email-subscription-users/${model?.id}`, model) :\r\n this.http.post(`api/email-subscription-users`, model)\r\n )\r\n .pipe(\r\n finalize(() => this.isSubmitLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe(result => {\r\n this.alertService.addAlert(\"Subscription saved successfully\", \"success\");\r\n this.dialogRef.close(result);\r\n });\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.esUserFormGroup, this.esUserFormFirstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.esUserFormGroup, errorMessages);\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserFormRoutingModule } from './email-subscription-user-form-routing.module';\r\nimport { EmailSubscriptionUserFormComponent } from './email-subscription-user-form.component';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { LoaderModule } from '../../../loader/loader.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserFormComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionUserFormRoutingModule,\r\n LoaderModule\r\n ],\r\n entryComponents: [EmailSubscriptionUserFormComponent]\r\n})\r\nexport class EmailSubscriptionUserFormModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { EmailSubscriptionUserFormComponent } from '../email-subscription-user-form/email-subscription-user-form.component';\r\nimport { Router } from '@angular/router';\r\nimport { Logger } from '../../../core/logger.service';\r\nimport { PageEvent } from '../../../data-table/data-table.model';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\r\n\r\nconst log = new Logger('EmailSubscriptionUser list');\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-list',\r\n templateUrl: './email-subscription-user-list.component.html',\r\n styleUrls: ['./email-subscription-user-list.component.scss']\r\n})\r\nexport class EmailSubscriptionUserListComponent implements OnInit {\r\n\r\n esUserList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n };\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n displayColumns: FormControl = new FormControl(['index', 'user.name', 'email_type.title', 'creator.name', 'created_at', 'actions']);\r\n displayedColumns: any[] = [];\r\n availableDisplayColumns: any[] = [\r\n { order: 1, value: 'index', name: 'Index' },\r\n { order: 2, value: 'user.name', name: 'User' },\r\n { order: 3, value: 'email_type.title', name: 'Email Type' },\r\n { order: 4, value: 'creator.name', name: 'Creator' },\r\n { order: 5, value: 'actions', name: 'Actions' }\r\n ];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpService,\r\n private router: Router,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = this.displayColumns.value;\r\n this.initializeData();\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n }\r\n\r\n get selectedColumns(): string[] {\r\n return this.availableDisplayColumns\r\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\r\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\r\n .map(col => col.value);\r\n }\r\n\r\n columnsChange() {\r\n this.displayedColumns = this.selectedColumns;\r\n }\r\n\r\n\r\n initializeData() {\r\n this.http.get(`api/email-subscription-users`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.esUserList = this.esUserList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n filterChange(event: any) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event\r\n };\r\n this.reload();\r\n }\r\n\r\n addEmailSubscriptionUser() {\r\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {} // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n log.debug(result);\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n\r\n editEmailSubscriptionUser(event: any, esUser: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {\r\n esUser: esUser\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n log.debug(result);\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEmailSubscriptionUser(event: any, esUser: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: '400px',\r\n data: <ActionPopup>{\r\n title: 'Delete Subscription',\r\n message: `Are you sure to proceed delete the esUser ${esUser.name}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n //Action confirmed\r\n this.http.delete(`api/email-subscription-users/${esUser?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.esUserList = this.esUserList.filter(x => x.id !== esUser.id);\r\n });\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n this.esUserList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\r\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\r\n\r\nexport const esulr = {\r\n title: 'Email Subscription Users',\r\n permissions: {\r\n only: ['app_admin'],\r\n redirectTo: '/'\r\n }\r\n};\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionUserListComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: esulr\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserListRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserListFilterRoutingModule { }\r\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-list-filter',\r\n templateUrl: './email-subscription-user-list-filter.component.html',\r\n styleUrls: ['./email-subscription-user-list-filter.component.scss']\r\n})\r\nexport class EmailSubscriptionUserListFilterComponent implements OnInit {\r\n\r\n esUserFilterForm: FormGroup;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.createForm();\r\n }\r\n\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.esUserFilterForm = this.fb.group({\r\n user_id: [''],\r\n email_type_id: [''],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.esUserFilterForm.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n this.valueChange.emit(value);\r\n })\r\n }\r\n\r\n\r\n resetFieldValue(field: string) {\r\n this.esUserFilterForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.esUserFilterForm.get(field).value;\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserListFilterRoutingModule } from './email-subscription-user-list-filter-routing.module';\r\nimport { EmailSubscriptionUserListFilterComponent } from './email-subscription-user-list-filter.component';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserListFilterComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionUserListFilterRoutingModule\r\n ],\r\n exports: [EmailSubscriptionUserListFilterComponent]\r\n})\r\nexport class EmailSubscriptionUserListFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserListRoutingModule } from './email-subscription-user-list-routing.module';\r\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\r\nimport { EmailSubscriptionUserListFilterModule } from '../email-subscription-user-list-filter/email-subscription-user-list-filter.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { EmailSubscriptionUserFormModule } from '../email-subscription-user-form/email-subscription-user-form.module';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserListComponent],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n EmailSubscriptionUserListRoutingModule,\r\n EmailSubscriptionUserFormModule,\r\n EmailSubscriptionUserListFilterModule\r\n ],\r\n exports: [EmailSubscriptionUserListComponent]\r\n})\r\nexport class EmailSubscriptionUserListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class EmailSubscriptionTypeRoutingModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeRoutingModule } from './email-subscription-type-routing.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionTypeRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionTypeModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionTypeFormRoutingModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AlertService } from '../../../core/alert.service';\r\nimport { FormValidatorService } from '../../../core/form-validator.service';\r\nimport { HttpService } from '../../../core/http.service';\r\n\r\nconst errorMessages: any = {\r\n title: {\r\n required: \"Title is required\"\r\n },\r\n code: {\r\n required: \"Code is required\"\r\n },\r\n frequency_id: {\r\n required: \"Frequency is required\"\r\n },\r\n};\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-type-form',\r\n templateUrl: './email-subscription-type-form.component.html',\r\n styleUrls: ['./email-subscription-type-form.component.scss']\r\n})\r\nexport class EmailSubscriptionTypeFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n emailSubscriptionTypeFormGroup: FormGroup;\r\n emailSubscriptionTypeFormFirstAttempt: boolean;\r\n emailSubscriptionType: any;\r\n selectedFrequency: any;\r\n isLoading: boolean;\r\n isSubmitLoading: boolean;\r\n\r\n constructor(private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n public dialogRef: MatDialogRef<EmailSubscriptionTypeFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.emailSubscriptionTypeFormGroup = this.fb.group({\r\n id: [''],\r\n title: ['', Validators.compose([Validators.required])],\r\n code: ['', Validators.compose([Validators.required])],\r\n frequency_id: ['', Validators.required],\r\n description: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.emailSubscriptionType?.id) {\r\n this.isLoading = true;\r\n this.emailSubscriptionType = this.data?.emailSubscriptionType;\r\n this.updateMode = true;\r\n this.selectedFrequency = this.emailSubscriptionType?.frequency || {};\r\n this.emailSubscriptionTypeFormGroup.patchValue(this.emailSubscriptionType);\r\n }\r\n }\r\n\r\n //Method to trigger login\r\n submit() {\r\n this.emailSubscriptionTypeFormGroup.markAllAsTouched();\r\n this.emailSubscriptionTypeFormFirstAttempt = true;\r\n if (this.emailSubscriptionTypeFormGroup.valid) {\r\n this.isSubmitLoading = true;\r\n const model = this.emailSubscriptionTypeFormGroup.value;\r\n (\r\n this.updateMode ?\r\n this.http.put(`api/email-subscription-types/${model?.id}`, model) :\r\n this.http.post(`api/email-subscription-types`, model)\r\n )\r\n .pipe(\r\n finalize(() => this.isSubmitLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe(result => {\r\n this.alertService.addAlert(\"Email Type saved successfully\", \"success\");\r\n this.dialogRef.close(result);\r\n });\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.emailSubscriptionTypeFormGroup, this.emailSubscriptionTypeFormFirstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.emailSubscriptionTypeFormGroup, errorMessages);\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeFormRoutingModule } from './email-subscription-type-form-routing.module';\r\nimport { EmailSubscriptionTypeFormComponent } from './email-subscription-type-form.component';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { LoaderModule } from '../../../loader/loader.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionTypeFormComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionTypeFormRoutingModule,\r\n LoaderModule\r\n ],\r\n exports: [EmailSubscriptionTypeFormComponent],\r\n entryComponents: [EmailSubscriptionTypeFormComponent]\r\n})\r\nexport class EmailSubscriptionTypeFormModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { distinctUntilChanged, debounceTime } from 'rxjs/operators';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { EmailSubscriptionTypeFormComponent } from '../email-subscription-type-form/email-subscription-type-form.component';\r\nimport { PageEvent } from '../../../data-table/data-table.model';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-type-list',\r\n templateUrl: './email-subscription-type-list.component.html',\r\n styleUrls: ['./email-subscription-type-list.component.scss']\r\n})\r\nexport class EmailSubscriptionTypeListComponent implements OnInit {\r\n\r\n emailSubscriptionTypeList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n isLoadRelations: true,\r\n relations: ['frequency']\r\n };\r\n search: FormControl = new FormControl('');\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n displayColumns: FormControl = new FormControl(['index', 'title', 'frequency.title', 'description', 'actions']);\r\n displayedColumns: any[] = [];\r\n availableDisplayColumns: any[] = [\r\n { order: 1, value: 'index', name: 'Index' },\r\n { order: 2, value: 'title', name: 'Title' },\r\n { order: 3, value: 'code', name: 'Code' },\r\n { order: 4, value: 'frequency.title', name: 'Frequency' },\r\n { order: 5, value: 'description', name: 'Description' },\r\n { order: 6, value: 'actions', name: 'Actions' }\r\n ];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = this.displayColumns.value;\r\n this.initializeData();\r\n this.search.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n this.filters.search = value;\r\n this.reload();\r\n });\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n }\r\n\r\n get selectedColumns(): string[] {\r\n return this.availableDisplayColumns\r\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\r\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\r\n .map(col => col.value);\r\n }\r\n\r\n columnsChange() {\r\n this.displayedColumns = this.selectedColumns;\r\n }\r\n\r\n\r\n initializeData() {\r\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n addEmailSubscriptionType() {\r\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {} // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n\r\n editEmailSubscriptionType(event: any, emailSubscriptionType: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {\r\n emailSubscriptionType: emailSubscriptionType\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEmailSubscriptionType(event: any, emailSubscriptionType: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: '400px',\r\n data: <ActionPopup>{\r\n title: 'Delete Email Type',\r\n message: `Are you sure to proceed delete the Email Type ${emailSubscriptionType.title}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n //Action confirmed\r\n this.http.delete(`api/email-subscription-types/${emailSubscriptionType?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.filter(x => x.id !== emailSubscriptionType.id);\r\n });\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n this.emailSubscriptionTypeList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\r\n\r\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\r\n\r\nexport const estlr = {\r\n title: 'Email Subscription Type',\r\n permissions: {\r\n only: ['client_admin'],\r\n redirectTo: '/'\r\n }\r\n};\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionTypeListComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: estlr\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionTypeListRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeListRoutingModule } from './email-subscription-type-list-routing.module';\r\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\r\nimport { EmailSubscriptionTypeFormModule } from '../email-subscription-type-form/email-subscription-type-form.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionTypeListComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n EmailSubscriptionTypeFormModule,\r\n EmailSubscriptionTypeListRoutingModule\r\n ],\r\n exports: [EmailSubscriptionTypeListComponent]\r\n})\r\nexport class EmailSubscriptionTypeListModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { HttpService } from '../../core/http.service';\r\nimport { PageEvent } from '../../data-table/data-table.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-for-user',\r\n templateUrl: './email-subscription-for-user.component.html',\r\n styleUrls: ['./email-subscription-for-user.component.scss']\r\n})\r\nexport class EmailSubscriptionForUserComponent implements OnInit {\r\n\r\n subscriptions: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n isLoadRelations: true,\r\n relations: 'frequency,currentUserSubscription'\r\n };\r\n\r\n constructor(\r\n private http: HttpService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.fetchSubscriptions();\r\n }\r\n\r\n fetchSubscriptions() {\r\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.subscriptions = this.subscriptions.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.fetchSubscriptions();\r\n }\r\n }\r\n\r\n subscribe(sub: any) {\r\n this.http.post(`api/email-subscription-for-user`, { email_type_id: sub?.id })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n sub.current_user_subscription = result?.item;\r\n });\r\n }\r\n\r\n unsubscribe(sub: any) {\r\n this.http.delete(`api/email-subscription-users/${sub?.current_user_subscription?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((_: any) => {\r\n sub.current_user_subscription = null;\r\n });\r\n }\r\n\r\n\r\n reload() {\r\n this.subscriptions = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.fetchSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../core/authentication.guard';\r\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\r\n\r\nexport const esfur = {\r\n permissions: {\r\n only: ['client_admin']\r\n }\r\n};\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionForUserComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: esfur\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionForUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionForUserRoutingModule } from './email-subscription-for-user-routing.module';\r\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionForUserComponent],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n EmailSubscriptionForUserRoutingModule\r\n ],\r\n exports: [EmailSubscriptionForUserComponent]\r\n})\r\nexport class EmailSubscriptionForUserModule { }\r\n","import { HttpService } from '../core/http.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TechlifyUpdateService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getTechlifyUpdates(filters: any) {\r\n return this.http.get(`api/techlify-updates`, { params: filters }).toPromise();\r\n }\r\n\r\n createTechlifyUpdate(techlifyUpdate: any) {\r\n return this.http.post(`api/techlify-updates`, techlifyUpdate).toPromise();\r\n }\r\n\r\n updateTechlifyUpdate(techlifyUpdate: any) {\r\n return this.http.put(`api/techlify-updates/${techlifyUpdate.id}`, techlifyUpdate).toPromise();\r\n }\r\n\r\n deleteTechlifyUpdate(techlifyUpdateId: any) {\r\n return this.http.delete(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\r\n }\r\n\r\n getTechlifyUpdate(techlifyUpdateId: any) {\r\n return this.http.get(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\r\n }\r\n\r\n getNewUpdateForCurrentUser() {\r\n return this.http.get(`api/current-user-techlify-updates`).toPromise();\r\n }\r\n\r\n createUpdateViewRecord(techlifyUpdateView: any) {\r\n return this.http.post(`api/techlify-update-views`, techlifyUpdateView).toPromise();\r\n }\r\n\r\n updateCurrentUserUpdates() {\r\n return this.http.get(`api/techlify-updates/update-view`).toPromise();\r\n }\r\n}\r\n","import { AlertService } from \"../../core/alert.service\";\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Editor, Toolbar } from 'ngx-editor';\r\n\r\nconst errorMessages: any = {\r\n title: {\r\n required: \"Title is required\",\r\n },\r\n released_on: {\r\n required: \"Released On is required\",\r\n },\r\n version: {\r\n required: \"Version is required\",\r\n },\r\n description: {\r\n required: \"Description is required\",\r\n },\r\n learn_more_link: {\r\n pattern: \"Please enter valid link\",\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-techlify-update-form',\r\n templateUrl: './techlify-update-form.component.html',\r\n styleUrls: ['./techlify-update-form.component.scss']\r\n})\r\nexport class TechlifyUpdateFormComponent implements OnInit {\r\n\r\n @Output() onSave = new EventEmitter<any>();\r\n techlifyUpdateForm: FormGroup;\r\n isUpdateMode: boolean = false;\r\n editor: Editor;\r\n toolbar: Toolbar = [\r\n ['bold', 'italic'],\r\n ['bullet_list'],\r\n ];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TechlifyUpdateFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n private techlifyUpdateService: TechlifyUpdateService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n private createForm() {\r\n this.techlifyUpdateForm = this.fb.group({\r\n id: new FormControl(''),\r\n title: new FormControl('', Validators.required),\r\n description: new FormControl('', Validators.required),\r\n version: new FormControl('', Validators.required),\r\n released_on: new FormControl('', Validators.required),\r\n learn_more_link: new FormControl('', Validators.compose([Validators.pattern('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?')])),\r\n });\r\n if (this.data.techlifyUpdateDetails) {\r\n this.isUpdateMode = true;\r\n this.techlifyUpdateForm.patchValue(this.data.techlifyUpdateDetails);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.editor = new Editor();\r\n }\r\n\r\n async submit() {\r\n if (this.techlifyUpdateForm.valid) {\r\n let result;\r\n const model = this.techlifyUpdateForm.value;\r\n\r\n try {\r\n result = this.isUpdateMode ? await this.techlifyUpdateService.updateTechlifyUpdate(model)\r\n : await this.techlifyUpdateService.createTechlifyUpdate(model);\r\n this.alertService.addAlert(\r\n \"Techlify app update saved successfully\",\r\n \"success\"\r\n );\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n } finally {\r\n if (result) {\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n }\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.techlifyUpdateForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.techlifyUpdateForm.get(field).value;\r\n }\r\n\r\n /** Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.techlifyUpdateForm, true);\r\n }\r\n /** Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.techlifyUpdateForm, errorMessages);\r\n }\r\n\r\n}\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdateFormComponent } from './techlify-update-form.component';\r\nimport { NgxEditorModule } from 'ngx-editor';\r\n\r\n@NgModule({\r\n declarations: [TechlifyUpdateFormComponent],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n NgxEditorModule,\r\n ],\r\n exports: [\r\n TechlifyUpdateFormComponent\r\n ],\r\n entryComponents: [\r\n TechlifyUpdateFormComponent\r\n ]\r\n})\r\nexport class TechlifyUpdateFormModule { }\r\n","import { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { untilDestroyed } from '@ngneat/until-destroy';\r\nimport { ActionPopup } from './../../action-popup/action-popup.model';\r\nimport { ActionPopupComponent } from './../../action-popup/action-popup.component';\r\nimport { TechlifyUpdateFormComponent } from './../techlify-update-form/techlify-update-form.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, FormBuilder } from '@angular/forms';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AlertService } from '../../core/alert.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-updates-list',\r\n templateUrl: './techlify-updates-list.component.html',\r\n styleUrls: ['./techlify-updates-list.component.scss']\r\n})\r\nexport class TechlifyUpdatesListComponent implements OnInit {\r\n techlifyUpdates: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'title',\r\n 'version',\r\n 'released_on',\r\n 'learn_more_link',\r\n 'description',\r\n 'creator',\r\n 'actions'\r\n ];\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n isWorking: boolean = false;\r\n filterFormGroup: FormGroup;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private alertService: AlertService,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private fb: FormBuilder,\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n search: new FormControl(''),\r\n version: new FormControl(''),\r\n sort_by: new FormControl('released_on|DESC'),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData();\r\n this.listenChanges();\r\n }\r\n\r\n listenChanges() {\r\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe(changes => {\r\n this.reload();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n async loadData() {\r\n try {\r\n this.isWorking = true;\r\n var filters: any = this.filterFormGroup.value;\r\n filters.perPage = this.perPage;\r\n filters.page = this.page;\r\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\r\n filters\r\n );\r\n this.lastPage = result.last_page || this.page;\r\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n reload() {\r\n this.techlifyUpdates = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n modifyTechlifyUpdate(model?: any) {\r\n const dialogRef = this.dialog.open(TechlifyUpdateFormComponent, {\r\n width: \"600px\",\r\n data: {\r\n techlifyUpdateDetails: model,\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n async deleteTechlifyUpdate(model: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: \"Delete Update\",\r\n message: `Are you sure to delete this update?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n try {\r\n await this.techlifyUpdateService.deleteTechlifyUpdate(model.id);\r\n this.alertService.addAlert(\r\n \"Successfully deleted the update\",\r\n \"success\"\r\n );\r\n this.reload();\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.filterFormGroup.get(field).setValue(\"\");\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase();\r\n this.assignFilter(event.active, direction);\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'title': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\r\n }\r\n case 'released_on': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\r\n }\r\n case 'version': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\r\n }\r\n default: {\r\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\r\n }\r\n };\r\n }\r\n\r\n}\r\n","import { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'all', pathMatch: 'full' },\r\n { path: 'all', component: TechlifyUpdatesListComponent },\r\n\r\n //fallback\r\n {\r\n path: '**',\r\n redirectTo: 'all',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TechlifyUpdateRoutingModule { }\r\n","import { ReadMoreModule } from '../read-more/read-more.module';\r\nimport { TechlifyUpdateFormModule } from './techlify-update-form/techlify-update-form.module';\r\nimport { TechlifyUpdateRoutingModule } from './techlify-update-routing.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\n\r\n@NgModule({\r\n declarations: [TechlifyUpdatesListComponent],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ActionPopupModule,\r\n TechlifyUpdateRoutingModule,\r\n TechlifyUpdateFormModule,\r\n ReadMoreModule,\r\n ]\r\n})\r\nexport class TechlifyUpdateModule { }\r\n","import { Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-update-view',\r\n templateUrl: './update-view.component.html',\r\n styleUrls: ['./update-view.component.scss']\r\n})\r\nexport class UpdateViewComponent implements OnInit {\r\n techlifyUpdate: any;\r\n rootNavUrl: any;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<UpdateViewComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.techlifyUpdate = this.data.techlifyUpdate;\r\n this.rootNavUrl = this.data.rootNavUrl;\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n openUpdateHistory(): void {\r\n this.close();\r\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\r\n }\r\n\r\n}\r\n","import { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { untilDestroyed } from '@ngneat/until-destroy';\r\nimport { AlertService } from './../../core/alert.service';\r\nimport { UpdateViewComponent } from './../update-view/update-view.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, FormBuilder } from '@angular/forms';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-update-history',\r\n templateUrl: './techlify-update-history.component.html',\r\n styleUrls: ['./techlify-update-history.component.scss']\r\n})\r\nexport class TechlifyUpdateHistoryComponent implements OnInit {\r\n techlifyUpdates: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'title',\r\n 'version',\r\n 'released_on',\r\n 'learn_more_link',\r\n 'description',\r\n 'creator',\r\n 'actions'\r\n ];\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n isWorking: boolean = false;\r\n filterFormGroup: FormGroup;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private fb: FormBuilder,\r\n private alertService: AlertService\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n search: new FormControl(''),\r\n version: new FormControl(''),\r\n sort_by: new FormControl('released_on|DESC'),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData();\r\n this.listenChanges();\r\n this.updateCurrentUserUpdates();\r\n }\r\n\r\n listenChanges() {\r\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe(changes => {\r\n this.reload();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n async loadData() {\r\n try {\r\n this.isWorking = true;\r\n var filters: any = this.filterFormGroup.value;\r\n filters.perPage = this.perPage;\r\n filters.page = this.page;\r\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\r\n filters\r\n );\r\n this.lastPage = result.last_page || this.page;\r\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n reload() {\r\n this.techlifyUpdates = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.filterFormGroup.get(field).setValue(\"\");\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase();\r\n this.assignFilter(event.active, direction);\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'title': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\r\n }\r\n case 'released_on': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\r\n }\r\n case 'version': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\r\n }\r\n default: {\r\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\r\n }\r\n };\r\n }\r\n\r\n openUpdateView(techlifyUpdate: any): void {\r\n const dialogRef = this.dialog.open(UpdateViewComponent, {\r\n width: \"800px\",\r\n autoFocus: false,\r\n data: {\r\n techlifyUpdate: techlifyUpdate,\r\n isFromHistory: true,\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n async updateCurrentUserUpdates() {\r\n try {\r\n await this.techlifyUpdateService.updateCurrentUserUpdates();\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n}\r\n","import { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'update-history', pathMatch: 'full' },\r\n { path: 'update-history', component: TechlifyUpdateHistoryComponent },\r\n\r\n //fallback\r\n {\r\n path: '**',\r\n redirectTo: 'all',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TechlifyUpdateHistoryRoutingModule { }\r\n","import { ReactiveFormsModule } from '@angular/forms';\r\nimport { TechlifyUpdateHistoryRoutingModule } from './techlify-update-history-routing.module';\r\nimport { ReadMoreModule } from '../../read-more/read-more.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../../action-popup/action-popup.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ActionPopupModule,\r\n ReadMoreModule,\r\n TechlifyUpdateHistoryRoutingModule\r\n ],\r\n declarations: [TechlifyUpdateHistoryComponent]\r\n})\r\nexport class TechlifyUpdateHistoryModule { }\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UpdateViewComponent } from './update-view.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [UpdateViewComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule\r\n ],\r\n exports: [\r\n UpdateViewComponent\r\n ],\r\n entryComponents: [\r\n UpdateViewComponent\r\n ]\r\n})\r\nexport class UpdateViewModule { }\r\n","import { AlertService } from './../../../core/alert.service';\r\nimport { TechlifyUpdateService } from './../../techlify-update.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Component, EmbeddedViewRef, Inject, OnInit } from '@angular/core';\r\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\nimport { UpdateViewComponent } from '../../update-view/update-view.component';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-update-notifier-snack',\r\n templateUrl: './update-notifier-snack.component.html',\r\n styleUrls: ['./update-notifier-snack.component.scss']\r\n})\r\nexport class UpdateNotifierSnackComponent implements OnInit {\r\n maxDescriptionLength: any = 70;\r\n descriptionText: any = '';\r\n techlifyUpdate: any;\r\n rootNavUrl: any;\r\n\r\n constructor(\r\n @Inject(MAT_SNACK_BAR_DATA) public data: any,\r\n private snackBarRef: MatSnackBarRef<EmbeddedViewRef<any>>,\r\n private dialog: MatDialog,\r\n private router: Router,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.techlifyUpdate = this.data.techlifyUpdate;\r\n this.rootNavUrl = this.data.rootNavUrl;\r\n this.determineDescription(this.techlifyUpdate?.description)\r\n }\r\n\r\n close(): void {\r\n this.createUpdateViewRecord();\r\n this.snackBarRef.dismiss();\r\n }\r\n\r\n determineDescription(description: any) {\r\n if (!description || description.length <= this.maxDescriptionLength) {\r\n this.descriptionText = description;\r\n return;\r\n }\r\n this.descriptionText = description.substring(0, this.maxDescriptionLength) + \"...\";\r\n }\r\n\r\n openUpdateView(): void {\r\n this.close();\r\n const dialogRef = this.dialog.open(UpdateViewComponent, {\r\n width: \"800px\",\r\n autoFocus: false,\r\n data: {\r\n techlifyUpdate: this.techlifyUpdate,\r\n rootNavUrl: this.data.rootNavUrl\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n openUpdateHistory(): void {\r\n this.close();\r\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\r\n }\r\n\r\n async createUpdateViewRecord() {\r\n try {\r\n var techlifyUpdateView = {\r\n update_id: this.techlifyUpdate?.id\r\n };\r\n let result: any = await this.techlifyUpdateService.createUpdateViewRecord(techlifyUpdateView);\r\n }\r\n catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n}\r\n","import { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { AlertService } from '../../core/alert.service';\r\n\r\n@Component({\r\n selector: 'app-update-notifier',\r\n templateUrl: './update-notifier.component.html',\r\n styleUrls: ['./update-notifier.component.scss']\r\n})\r\nexport class UpdateNotifierComponent implements OnInit {\r\n techlifyUpdate: any;\r\n @Input() rootNavUrl: string = '/techlify-updates';\r\n\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(x => {\r\n this.getNewUpdate();\r\n }, 5000);\r\n }\r\n\r\n async getNewUpdate() {\r\n try {\r\n let result: any = await this.techlifyUpdateService.getNewUpdateForCurrentUser();\r\n this.techlifyUpdate = result.item;\r\n if (this.techlifyUpdate) {\r\n this.showUpdate();\r\n }\r\n }\r\n catch (error) {\r\n console.log(\"Current user updates failed\");\r\n }\r\n }\r\n\r\n showUpdate() {\r\n this.snackBar.openFromComponent(UpdateNotifierSnackComponent, {\r\n data: {\r\n techlifyUpdate: this.techlifyUpdate,\r\n rootNavUrl: this.rootNavUrl\r\n },\r\n horizontalPosition: 'right',\r\n verticalPosition: 'top',\r\n panelClass: ['white-bg']\r\n });\r\n }\r\n\r\n}\r\n","import { ActionPopupModule } from './../../action-popup/action-popup.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { UpdateViewModule } from './../update-view/update-view.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UpdateNotifierComponent } from './update-notifier.component';\r\nimport { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [UpdateNotifierComponent, UpdateNotifierSnackComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n UpdateViewModule,\r\n FlexLayoutModule,\r\n ActionPopupModule\r\n ],\r\n exports: [\r\n UpdateNotifierComponent,\r\n ],\r\n entryComponents: [\r\n UpdateNotifierSnackComponent\r\n ]\r\n})\r\nexport class UpdateNotifierModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component({\r\n selector: 'app-export-excel-button',\r\n templateUrl: './export-excel-button.component.html',\r\n styleUrls: ['./export-excel-button.component.scss']\r\n})\r\nexport class ExportExcelButtonComponent implements OnInit {\r\n\r\n @Input() name: string = 'Export_Data';\r\n @Input() data: any[] = [];\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n exportExcel() {\r\n const fileName = `${this.name}_${new Date().getTime()}.xlsx`;\r\n const ws = XLSX.utils.json_to_sheet(this.data);\r\n /* generate workbook and add the worksheet */\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n\r\n /* save to file */\r\n XLSX.writeFile(wb, fileName);\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExportExcelButtonComponent } from './export-excel-button/export-excel-button.component';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ExportExcelButtonComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule\r\n ],\r\n exports: [ExportExcelButtonComponent]\r\n})\r\nexport class ExportExcelModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { HttpService } from '../../core/http.service';\r\n\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-view',\r\n templateUrl: './audit-log-view-model.component.html',\r\n styleUrls: ['./audit-log-view-model.component.scss']\r\n})\r\nexport class AuditLogViewModelComponent implements OnInit {\r\n\r\n logInfo: any;\r\n showDeltaChanges: boolean = false;\r\n changeList: any[] = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.data) {\r\n this.http.get(`api/recent-log-for-model`, {\r\n params: {\r\n model_type: this.data?.modelType,\r\n model_id: this.data?.modelId\r\n }\r\n }).pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.logInfo = result?.item;\r\n this.getTransformedChanges();\r\n });\r\n }\r\n }\r\n\r\n getTransformedChanges() {\r\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\r\n });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { filter } from 'rxjs/operators';\r\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-logs-view-model',\r\n templateUrl: './audit-logs-view-model.component.html',\r\n styleUrls: ['./audit-logs-view-model.component.scss']\r\n})\r\nexport class AuditLogsViewModelComponent implements OnInit {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd), untilDestroyed(this))\r\n .subscribe(_ => this.dialogRef.close());\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\r\nimport { AuditLogsViewModelComponent } from '../audit-logs-view-model/audit-logs-view-model.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-audit-log-for-model',\r\n templateUrl: './audit-log-for-model.component.html',\r\n styleUrls: ['./audit-log-for-model.component.scss']\r\n})\r\nexport class AuditLogForModelComponent implements OnInit {\r\n\r\n @Input() modelType: string;\r\n @Input() modelId: any;\r\n @Input() logView: 'recent' | 'all' = 'recent';\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n getLogView() {\r\n const dialogRef = this.dialog.open(AuditLogViewModelComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {\r\n modelType: this.modelType,\r\n modelId: this.modelId\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n getLogsView() {\r\n const dialogRef = this.dialog.open(AuditLogsViewModelComponent, {\r\n width: '95%',\r\n maxWidth: 'unset',\r\n autoFocus: false,\r\n data: {\r\n modelType: this.modelType,\r\n modelId: this.modelId\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogForModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogViewModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogViewModelRoutingModule } from './audit-log-view-model-routing.module';\r\nimport { AuditLogViewModelComponent } from './audit-log-view-model.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogViewModelComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogViewModelRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n exports: [AuditLogViewModelComponent]\r\n})\r\nexport class AuditLogViewModelModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogsViewModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogListRoutingModule { }\r\n","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\n\r\n\r\nimport { Router } from '@angular/router';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { PageEvent } from '../../data-table/data-table.model';\r\nimport { DataManager } from '../../core/dataManager.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-list',\r\n templateUrl: './audit-log-list.component.html',\r\n styleUrls: ['./audit-log-list.component.scss'],\r\n})\r\nexport class AuditLogListComponent implements OnInit, OnDestroy {\r\n\r\n auditLogList: any[] = [];\r\n @Input() objectId: any;\r\n @Input() objectType: any;\r\n @Input() showFilter: boolean = true;\r\n @Input() showExportButtons: boolean = true;\r\n @Input() userId: any;\r\n\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = { sort_by: 'created_at|desc' };\r\n displayedColumns: any[] = ['index', 'id', 'object_type', 'object_id', 'action', 'changes', 'created_at', 'user.email'];\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private router: Router,\r\n public sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.initializeData();\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n\r\n }\r\n\r\n get excelData(): any[] {\r\n if (this.auditLogList.length > 0) {\r\n return this.auditLogList.map(item => {\r\n return {\r\n 'Type': item?.object_type,\r\n 'Action': item?.action,\r\n 'Data': JSON.stringify(item?.data || {}),\r\n 'Object': JSON.stringify(item?.object || {}),\r\n 'Pre-Object': JSON.stringify(item?.pre_object || {}),\r\n 'Created At': new Date(item?.created_at).toDateString(),\r\n 'Created By': item?.user?.email\r\n };\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n logClicked(log: any) {\r\n this.router.navigate(['/system/audit-logs/log-view', log.id]);\r\n }\r\n\r\n\r\n async initializeData() {\r\n if (this.objectType) {\r\n this.filters = { ...this.filters, object_type: this.objectType }\r\n }\r\n if (this.objectId) {\r\n this.filters = { ...this.filters, object_id: this.objectId }\r\n }\r\n if (this.userId) {\r\n this.filters = { ...this.filters, user_id: this.userId }\r\n }\r\n const result = await this.dataManager.GET(`api/audit-logs`, { ...this.filters, ...this.pageEvent });\r\n this.auditLogList = this.auditLogList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n }\r\n\r\n filterChange(event: any) {\r\n if (this.showFilter) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event,\r\n object_type: this.objectType || event?.object_type || '',\r\n object_id: this.objectId || '',\r\n };\r\n this.reload();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n reload() {\r\n this.auditLogList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n getTransformedChanges(log: any) {\r\n if (log?.data?.changes) {\r\n const changes = Object.keys(log?.data?.changes) || [];\r\n let value = '<div>';\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n value = `${value} <div><b>${displayAttribute}:</b> <span id=\"old-value\">${log?.pre_object[key] ?? ''}</span><span id=\"new-value\">${log?.object[key] ?? ''}</span></div>`;\r\n });\r\n value = `${value} </div>`;\r\n return value;\r\n }\r\n return '';\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogListFilterRoutingModule { }\r\n","import { FormControl } from \"@angular/forms\";\r\n\r\nexport function DateValidator(): any {\r\n return (control: FormControl): { [key: string]: any } => {\r\n\r\n const val: any = new Date(control.value);\r\n if (!!control.value && val == 'Invalid Date') {\r\n return { invalidDate: true };\r\n }\r\n return null;\r\n };\r\n}","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { DateValidator } from '../../date-validator';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-list-filter',\r\n templateUrl: './audit-log-list-filter.component.html',\r\n styleUrls: ['./audit-log-list-filter.component.scss']\r\n})\r\nexport class AuditLogListFilterComponent implements OnInit {\r\n\r\n auditLogFilterForm: FormGroup;\r\n\r\n @Input() objectId: any;\r\n @Input() objectType: any;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder, private formValidatorService: FormValidatorService) {\r\n this.createForm();\r\n }\r\n\r\n get showObjectFilter() {\r\n return !(this.objectId || this.objectType);\r\n }\r\n\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.auditLogFilterForm = this.fb.group({\r\n object_type: [''],\r\n action: [''],\r\n data: [''],\r\n date_to: ['', DateValidator()],\r\n date_from: ['', DateValidator()]\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.auditLogFilterForm.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe((value: any) => {\r\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\r\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\r\n this.valueChange.emit(value);\r\n })\r\n }\r\n\r\n\r\n resetFieldValue(field: string) {\r\n this.auditLogFilterForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.auditLogFilterForm.get(field).value;\r\n }\r\n\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.auditLogFilterForm, true);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogListFilterRoutingModule } from './audit-log-list-filter-routing.module';\r\nimport { AuditLogListFilterComponent } from './audit-log-list-filter.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { SearchableSelectorModule } from '../../searchable-selector/searchable-selector.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogListFilterComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogListFilterRoutingModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n SearchableSelectorModule,\r\n ],\r\n exports: [AuditLogListFilterComponent]\r\n})\r\nexport class AuditLogListFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogListRoutingModule } from './audit-log-list-routing.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { AuditLogListComponent } from './audit-log-list.component';\r\nimport { AuditLogListFilterModule } from '../audit-log-list-filter/audit-log-list-filter.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ExportExcelModule } from '../../export-excel/export-excel.module';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogListComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogListRoutingModule,\r\n ExportExcelModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n InfiniteScrollModule,\r\n AuditLogListFilterModule\r\n ],\r\n exports: [AuditLogListComponent]\r\n})\r\nexport class AuditLogListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogsViewModelRoutingModule } from './audit-logs-view-model-routing.module';\r\nimport { AuditLogsViewModelComponent } from './audit-logs-view-model.component';\r\nimport { AuditLogListModule } from '../audit-log-list/audit-log-list.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogsViewModelComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogsViewModelRoutingModule,\r\n FlexLayoutModule,\r\n AuditLogListModule\r\n ],\r\n exports: [AuditLogsViewModelComponent]\r\n})\r\nexport class AuditLogsViewModelModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogForModelRoutingModule } from './audit-log-for-model-routing.module';\r\nimport { AuditLogForModelComponent } from './audit-log-for-model.component';\r\nimport { AuditLogViewModelModule } from '../audit-log-view-model/audit-log-view-model.module';\r\nimport { AuditLogsViewModelModule } from '../audit-logs-view-model/audit-logs-view-model.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogForModelComponent],\r\n imports: [\r\n AuditLogViewModelModule,\r\n AuditLogsViewModelModule,\r\n CommonModule,\r\n AuditLogForModelRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ],\r\n exports: [AuditLogForModelComponent]\r\n})\r\nexport class AuditLogForModelModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport * as jsondiffpatch from \"jsondiffpatch\"\r\nimport { DataManager } from '../../core/dataManager.service';\r\n\r\n@Component({\r\n selector: 'app-audit-log-view',\r\n templateUrl: './audit-log-view.component.html',\r\n styleUrls: ['./audit-log-view.component.scss']\r\n})\r\nexport class AuditLogViewComponent implements OnInit {\r\n\r\n logInfo: any;\r\n showDeltaChanges: boolean = false;\r\n changeList: any[] = [];\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private route: ActivatedRoute,\r\n private location: Location\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.route.paramMap.subscribe(params => {\r\n if (params.get('id')) {\r\n this.fetchLogDetail(params.get('id'));\r\n } else {\r\n this.location.back();\r\n }\r\n });\r\n }\r\n\r\n getTransformedChanges() {\r\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\r\n });\r\n }\r\n\r\n async fetchLogDetail(logId: any) {\r\n const result = await this.dataManager.GET(`api/audit-logs/${logId}`);\r\n this.logInfo = result.item;\r\n this.getTransformedChanges();\r\n this.patchDelta();\r\n }\r\n\r\n patchDelta() {\r\n const delta = jsondiffpatch.diff(this.logInfo?.pre_object, this.logInfo?.object);\r\n document.getElementById('jsondiff').innerHTML = jsondiffpatch.formatters.html.format(delta, this.logInfo?.pre_object);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogViewRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogViewRoutingModule } from './audit-log-view-routing.module';\r\nimport { AuditLogViewComponent } from './audit-log-view.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogViewComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogViewRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n exports: [AuditLogViewComponent]\r\n})\r\nexport class AuditLogViewModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../core/authentication.guard';\r\nimport { AuditLogListComponent } from './audit-log-list/audit-log-list.component';\r\nimport { AuditLogViewComponent } from './audit-log-view/audit-log-view.component';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: 'log-list', component: AuditLogListComponent, canActivate: [AuthenticationGuard] },\r\n { path: 'log-view/:id', component: AuditLogViewComponent, canActivate: [AuthenticationGuard] },\r\n { path: '**', redirectTo: 'log-list', pathMatch: 'full' }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogRoutingModule } from './audit-log-routing.module';\r\nimport { AuditLogListModule } from './audit-log-list/audit-log-list.module';\r\nimport { AuditLogViewModule } from './audit-log-view/audit-log-view.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n AuditLogRoutingModule,\r\n AuditLogListModule,\r\n AuditLogViewModule\r\n ],\r\n exports: []\r\n})\r\nexport class AuditLogModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\n\r\n@Component({\r\n selector: 'app-import-success',\r\n templateUrl: './import-success.component.html',\r\n styleUrls: ['./import-success.component.scss']\r\n})\r\nexport class ImportSuccessComponent implements OnInit {\r\n @Input() data: any;\r\n @Input() config: ImportCsvConfig;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { ErrorHandlerService } from './../../core/error-handler.service';\r\nimport { PageEvent } from './../../data-table/data-table.model';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\nimport { HttpService } from '../../core/http.service';\r\n\r\n@Component({\r\n selector: 'app-import-history-list',\r\n templateUrl: './import-history-list.component.html',\r\n styleUrls: ['./import-history-list.component.scss']\r\n})\r\nexport class ImportHistoryListComponent implements OnInit {\r\n\r\n @Input() config: ImportCsvConfig;\r\n histories: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'imported_by',\r\n 'date',\r\n 'no_of_records'\r\n ];\r\n isWorking: boolean = false;\r\n filter: any;\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n\r\n constructor(\r\n private errorHandler: ErrorHandlerService,\r\n private http: HttpService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.config.importHistory.isEnabled) {\r\n this.filter = {\r\n model_type: this.config.importHistory.type,\r\n };\r\n }\r\n this.loadData();\r\n }\r\n\r\n loadData() {\r\n try {\r\n this.isWorking = true;\r\n this.http.get(this.config.importHistory.apiUrl, { params: { ...this.filter, ...this.pageEvent } }).subscribe((result: any) => {\r\n this.histories = this.histories.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n reload() {\r\n this.histories = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.loadData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { FormValidatorService } from '../../core/form-validator.service';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Location } from '@angular/common';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\n\r\nconst errorMessages: any = {\r\n property: {\r\n required: \"Property is required\",\r\n unavailable: \"Duplicate entry\"\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-field-mapping',\r\n templateUrl: './field-mapping.component.html',\r\n styleUrls: ['./field-mapping.component.scss']\r\n})\r\nexport class FieldMappingComponent implements OnInit {\r\n\r\n importMappingForm: FormGroup;\r\n @Input() data: any[];\r\n @Input() config: ImportCsvConfig;\r\n firstDataArray: any[] = [];\r\n properties: any[] = [];\r\n @Output() onSave = new EventEmitter();\r\n @Output() onReUpload= new EventEmitter();\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n public location: Location\r\n ) {\r\n this.createImportMappingForm();\r\n }\r\n\r\n ngOnInit() {\r\n this.properties = this.config.properties;;\r\n this.reFectorAttributes(this.data[0]);\r\n }\r\n\r\n createImportMappingForm() {\r\n this.importMappingForm = this.fb.group({\r\n fields: this.fb.array([]),\r\n });\r\n }\r\n\r\n get fieldsArray(): FormArray {\r\n return this.importMappingForm.get('fields') as FormArray;\r\n }\r\n\r\n createField(field: any): FormGroup {\r\n var fieldForm: FormGroup = this.fb.group({\r\n id: new FormControl(field.id),\r\n label: new FormControl(field.label),\r\n value: new FormControl(field.value),\r\n property: new FormControl(field.property,\r\n Validators.compose(\r\n [\r\n Validators.required\r\n ]\r\n )\r\n ),\r\n propertyType: new FormControl(field.propertyType)\r\n });\r\n return fieldForm;\r\n }\r\n\r\n reFectorAttributes(data) {\r\n for (var k in data) {\r\n if (data.hasOwnProperty(k)) {\r\n var dataValue = {\r\n id: '',\r\n label: k,\r\n value: data[k],\r\n property: '',\r\n propertyType: ''\r\n };\r\n this.firstDataArray.push(dataValue);\r\n }\r\n }\r\n this.firstDataArray.forEach((element: any, mainIndex: any) => {\r\n element.id = mainIndex;\r\n this.properties.find((property: any, index: any) => {\r\n if (property.label.toLowerCase().includes(element.label.toLowerCase())) {\r\n element.property = property.value;\r\n element.propertyType = property.type;\r\n return element;\r\n }\r\n });\r\n });\r\n }\r\n\r\n next() {\r\n this.importMappingForm.markAllAsTouched();\r\n if (!this.importMappingForm.valid) {\r\n return;\r\n }\r\n this.onSave.emit(this.importMappingForm.value);\r\n }\r\n\r\n /** Method to evaluate form fields*/\r\n isFieldValid(field: string, form: any) {\r\n return this.formValidatorService.isFieldValid(field, form);\r\n }\r\n\r\n /** Method to find error in form fields*/\r\n getErrorMessage(field: string, form: any) {\r\n return this.formValidatorService.getErrorMessage(field, form, errorMessages);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n setTimeout(x => {\r\n this.firstDataArray.forEach((element: any) => {\r\n this.fieldsArray.push(this.createField(element));\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n }, 500);\r\n }\r\n\r\n updatePropertyType(event: any, index: any): void {\r\n var field = this.properties.find((field: any) => field.value == event.value);\r\n if (field) {\r\n this.fieldsArray.controls[index].get('propertyType').setValue(field.type);\r\n this.uniqueValidator();\r\n }\r\n }\r\n\r\n uniqueValidator() {\r\n this.fieldsArray.value.forEach((field: any, index: any) => {\r\n var control = this.fieldsArray.controls[index].get('property');\r\n const isNameUnique = this.fieldsArray.value.find(propertyData =>\r\n propertyData.property === control.value\r\n && propertyData.id != this.fieldsArray.controls[index].get('id').value\r\n )\r\n ? false\r\n : true;\r\n if (!isNameUnique) {\r\n control.setErrors({ unavailable: true });\r\n }\r\n else {\r\n control.setErrors(null);\r\n }\r\n });\r\n }\r\n\r\n removeField(index: number) {\r\n if (index == -1) {\r\n return;\r\n }\r\n this.fieldsArray.removeAt(index);\r\n }\r\n\r\n reUpload() {\r\n this.onReUpload.emit(true);\r\n }\r\n\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-failed-items-list',\r\n templateUrl: './failed-items-list.component.html',\r\n styleUrls: ['./failed-items-list.component.scss']\r\n})\r\nexport class FailedItemsListComponent implements OnInit {\r\n @Input() failedItems: any[];\r\n @Input() selectedFields: any[];\r\n @Output() onReUpload = new EventEmitter();\r\n\r\n constructor(\r\n public location: Location\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n isValidDate(d: any): boolean {\r\n var date = new Date(d);\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n reUpload() {\r\n this.onReUpload.emit(true);\r\n }\r\n\r\n}\r\n","import { ViewerConfig } from '../document-viewer/viewer-config.model';\r\nimport { FileDropperConfig } from '../file-dropper/file-dropper.model';\r\nimport { HttpService } from '../core/http.service';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport * as XLSX from 'xlsx';\r\nimport { ImportCsvConfig } from './import-csv-config';\r\n@UntilDestroy()\r\n\r\n@Component({\r\n selector: 'app-import-csv',\r\n templateUrl: './import-csv.component.html',\r\n styleUrls: ['./import-csv.component.scss']\r\n})\r\nexport class ImportCsvComponent implements OnInit {\r\n result: any;\r\n @Input() config: ImportCsvConfig;\r\n filesConfig: FileDropperConfig;\r\n filesList: any[] = [];\r\n data: any[] = [];\r\n isUploaded: boolean = false;\r\n isImportTypeSelected: boolean = false;\r\n viewerConfig: ViewerConfig;\r\n fileData: any[] = [];\r\n failedItems: any[] = [];\r\n selectedFields: any[] = [];\r\n importSteps: any = [\r\n {\r\n id: 1,\r\n step: 1,\r\n title: 'Upload',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 2,\r\n step: 2,\r\n title: 'Field Mappings',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 3,\r\n step: 3,\r\n title: 'Data Validation',\r\n progressTitle: 'Data Being Validated',\r\n progressDescription: 'The data is currently being validated and checked for errors, please do not navigate away from this page. '\r\n },\r\n {\r\n id: 4,\r\n step: 3,\r\n title: 'Data Validation & Errors',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 5,\r\n step: 4,\r\n title: 'Data Importing',\r\n progressTitle: 'Data Being Imported',\r\n progressDescription: 'The data is currently being imported and saved, please do not navigate away from this page. After the import is completed, you will be redirected to a page with the imported records.'\r\n },\r\n {\r\n id: 6,\r\n step: 5,\r\n title: 'Success Page & Data Preview',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n ];\r\n currentStep: any = 1;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private errorHandler: ErrorHandlerService,\r\n private http: HttpService,\r\n ) {\r\n this.filesConfig = {\r\n fileId: \"file\",\r\n containerId: \"fileContainer\",\r\n styles: {\r\n height: \"200px\"\r\n },\r\n acceptFile: '.csv',\r\n multiple: false,\r\n maxSize: 10,\r\n acceptFileText: \".csv\"\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n get step() {\r\n return this.importSteps.find(step => step.id == this.currentStep);\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.currentStep = 2;\r\n this.filesList = event;\r\n\r\n let selectedFile = null;\r\n let jsonData = null;\r\n const reader = new FileReader();\r\n const file = this.filesList[0];\r\n reader.onload = (event) => {\r\n const data = reader.result;\r\n selectedFile = XLSX.read(data, {\r\n type: 'binary',\r\n cellDates: true,\r\n });\r\n jsonData = selectedFile.SheetNames.reduce((initial, name) => {\r\n const sheet = selectedFile.Sheets[name];\r\n initial = XLSX.utils.sheet_to_json(sheet, {\r\n header: 0,\r\n defval: \"\",\r\n });\r\n return initial;\r\n }, {});\r\n this.fileData = jsonData;\r\n }\r\n reader.readAsBinaryString(file);\r\n return;\r\n }\r\n\r\n mappingProcessed(event: any) {\r\n this.currentStep = 3;\r\n setTimeout(x => {\r\n this.selectedFields = event.fields;\r\n const tempFileData = JSON.parse(JSON.stringify(this.fileData));\r\n tempFileData.forEach(data => {\r\n for (var key in data) {\r\n var field = event.fields.find((field: any) => field.label == key);\r\n if (field) {\r\n if ((field.propertyType == 'date' || field.propertyType == 'dateTime') && this.isValidDate(new Date(data[field.label]))) {\r\n data[field.property] = (new Date(data[field.label]) as Date).toISOString();\r\n }\r\n else {\r\n data[field.property] = data[field.label];\r\n }\r\n delete data[key];\r\n }\r\n else {\r\n delete data[key];\r\n }\r\n }\r\n });\r\n this.save(tempFileData);\r\n }, 2000);\r\n }\r\n\r\n async save(tempFileData: any) {\r\n try {\r\n this.http.post(this.config.apiUrl, { data: tempFileData })\r\n .pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n\r\n this.failedItems = result.failed_items;\r\n if (this.failedItems.length) {\r\n this.alertService.addAlert(result.msg, 'warn');\r\n }\r\n if (!(this.failedItems.length > 0)) {\r\n this.currentStep = 5;\r\n setTimeout(x => {\r\n this.currentStep = 6;\r\n this.result = result;\r\n }, 2000);\r\n }\r\n else {\r\n this.currentStep = 4;\r\n }\r\n });\r\n } catch (error) {\r\n if ((error.status === 422 || error.status === 400) && error.msg) {\r\n this.alertService.addAlert(error.msg, \"warning\");\r\n }\r\n this.errorHandler.handleError(error);\r\n this.reUpload();\r\n }\r\n }\r\n\r\n isValidDate(d: any) {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n\r\n reUpload() {\r\n this.data = [];\r\n this.fileData = [];\r\n this.filesList = [];\r\n this.failedItems = [];\r\n this.selectedFields = [];\r\n this.currentStep = 1;\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-data-import',\r\n templateUrl: './data-import.component.html',\r\n styleUrls: ['./data-import.component.scss']\r\n})\r\nexport class DataImportComponent implements OnInit {\r\n @Input() step: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DocumentViewerModule } from './../document-viewer/document-viewer.module';\r\nimport { FileDropperModule } from './../file-dropper/file-dropper.module';\r\nimport { MaterialModule } from './../material.module';\r\nimport { ImportSuccessComponent } from './import-success/import-success.component';\r\nimport { ImportHistoryListComponent } from './import-history-list/import-history-list.component';\r\nimport { FieldMappingComponent } from './field-mapping/field-mapping.component';\r\nimport { FailedItemsListComponent } from './failed-items-list/failed-items-list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ImportCsvComponent } from './import-csv.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { DataImportComponent } from './data-import/data-import.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n RouterModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n FileDropperModule,\r\n DocumentViewerModule,\r\n InfiniteScrollModule\r\n ],\r\n declarations: [\r\n ImportCsvComponent,\r\n FieldMappingComponent,\r\n FailedItemsListComponent,\r\n ImportHistoryListComponent,\r\n ImportSuccessComponent,\r\n DataImportComponent\r\n ],\r\n providers: [],\r\n exports: [\r\n ImportCsvComponent\r\n ],\r\n})\r\nexport class ImportCsvModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { PageEvent } from '../data-table/data-table.model';\r\nimport { HttpService } from '../core/http.service';\r\nimport { TimelineValue } from '../timeline-filter';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-login-history-for-user',\r\n templateUrl: './login-history-for-user.component.html',\r\n styleUrls: ['./login-history-for-user.component.scss']\r\n})\r\nexport class LoginHistoryForUserComponent implements OnInit {\r\n\r\n loginHistoryList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n };\r\n historyFilterForm: FormGroup;\r\n displayedColumns: any[] = ['index', 'created_at'];\r\n @Input() userId: any;\r\n\r\n constructor(\r\n private http: HttpService,\r\n private fb: FormBuilder,\r\n ) {\r\n this.historyFilterForm = this.fb.group({\r\n 'duration': [''],\r\n 'date_from': [''],\r\n 'date_to': ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.filters.user_id = this.userId;\r\n this.historyFilterForm.valueChanges\r\n .pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\r\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\r\n this.filterChange(value);\r\n });\r\n this.initializeData();\r\n }\r\n\r\n onTimelineChange(range: TimelineValue) {\r\n let date_from = range?.date_from ? new Date(range.date_from) : '';\r\n let date_to = range?.date_to ? new Date(range.date_to) : '';\r\n this.historyFilterForm.patchValue({\r\n date_from,\r\n date_to\r\n });\r\n }\r\n\r\n initializeData() {\r\n this.http.get(`api/user-login-history`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.loginHistoryList = this.loginHistoryList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n filterChange(event: any) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event\r\n };\r\n this.reload();\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n\r\n reload() {\r\n this.loginHistoryList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../core/authentication.guard';\r\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LoginHistoryForUserComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LoginHistoryForUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { LoginHistoryForUserRoutingModule } from './login-history-for-user-routing.module';\r\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TimelineFilterModule } from '../timeline-filter/timeline-filter.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [LoginHistoryForUserComponent],\r\n imports: [\r\n CommonModule,\r\n LoginHistoryForUserRoutingModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n TimelineFilterModule\r\n ],\r\n exports: [LoginHistoryForUserComponent]\r\n})\r\nexport class LoginHistoryForUserModule { }\r\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\n\r\nexport class TechlifyTaggerTagFormConfigModel {\r\n selectable: boolean;\r\n removable: boolean;\r\n separatorKeysCodes: number[];\r\n placeholder: string;\r\n apiUrl: string;\r\n isCreateable: boolean;\r\n createApiUrl: string;\r\n isCacheTags: boolean;\r\n isSingle: boolean;\r\n\r\n constructor() {\r\n this.selectable = true;\r\n this.removable = true;\r\n this.separatorKeysCodes = [ENTER, COMMA];\r\n this.placeholder = 'New Tag..';\r\n this.apiUrl = 'api/techlify-tagger-tags';\r\n this.createApiUrl = 'api/techlify-tagger-tags';\r\n this.isCreateable = true;\r\n this.isCacheTags = false;\r\n this.isSingle = false;\r\n }\r\n}","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, ViewChild, OnInit, Input, OnDestroy, Inject, Optional, Self, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { HttpService } from '../core/http.service';\r\nimport { TechlifyTaggerTagFormConfigModel } from './techlify-tagger-tag-form-config.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-tagger-tag-form-field',\r\n templateUrl: './techlify-tagger-tag-form-field.component.html',\r\n styleUrls: ['./techlify-tagger-tag-form-field.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagFormFieldComponent }],\r\n})\r\nexport class TechlifyTaggerTagFormFieldComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy, OnChanges {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'techlify-tagger-form-field';\r\n id = `techlify-tagger-form-field-${TechlifyTaggerTagFormFieldComponent.nextId++}`;\r\n\r\n onChange = (_: any) => { };\r\n onTouched = () => { };\r\n\r\n tagInputCtrl = new FormControl();\r\n filterString: any;\r\n @ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;\r\n\r\n /**Pass the configuration for Techlify Tagger */\r\n @Input() config: TechlifyTaggerTagFormConfigModel = new TechlifyTaggerTagFormConfigModel();\r\n /**Pass the Model Type for Techlify Tagger, Required */\r\n @Input() modelType!: string;\r\n /**Pass the Model ID for Techlify Tagger */\r\n @Input() modelId: string;\r\n\r\n /**Pass the default list of tags */\r\n private _allTags: any[] = [];\r\n @Input()\r\n get allTags() {\r\n return this._allTags;\r\n }\r\n set allTags(value) {\r\n this._allTags = value;\r\n }\r\n\r\n /**Pass the Categories to filter for a model */\r\n @Input() categories: string[] = [];\r\n /**Pass default category to be used for assigning the tags, when we filter by more than one category */\r\n @Input() defaultCreateCategory: string;\r\n\r\n get tags() {\r\n return this.allTags.filter(x => this.value.some(y => y == x.id));\r\n }\r\n\r\n //Default Getter and Setters for a Form Field Implementation\r\n get empty() {\r\n return this.value.length == 0;\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty || this.tagInputCtrl.value;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.tagInputCtrl.disable() : this.tagInputCtrl.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n\r\n private _value: any[] = [];\r\n @Input()\r\n get value(): any[] {\r\n return this._value;\r\n }\r\n set value(tagIds: any[]) {\r\n this._value = tagIds || [];\r\n this.stateChanges.next();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.tagInputCtrl.dirty && this.required && (this.value.length == 0);\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string;\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n //API to load all tags for the model type\r\n if (this.allTags.length == 0) {\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n perPage: '1000'\r\n }\r\n }).pipe(\r\n debounceTime(500),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.allTags = result.data;\r\n });\r\n }\r\n\r\n //API to load only the selected tags for the model\r\n if (this.modelId && this.value.length == 0) {\r\n //Model Id is passed and no tags are present, so we query db for the avilable tags for the model ID.\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n model_type: this.modelType,\r\n model_id: this.modelId,\r\n perPage: '1000'\r\n }\r\n }).pipe(\r\n debounceTime(500),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.value = (result?.data || []).map((x: any) => x.id);\r\n this._handleInput();\r\n });\r\n }\r\n }\r\n\r\n init() {\r\n if (this.modelId && this.allTags.length == 0) {\r\n //Model Id is passed and no tags are passed, so we query db for the avilable tags for the model ID.\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n model_type: this.modelType,\r\n model_id: this.modelId\r\n }\r\n }).pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.allTags = result.data;\r\n });\r\n }\r\n }\r\n\r\n get filteredTags(): any[] {\r\n return this._filter();\r\n }\r\n\r\n constructor(\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private httpService: HttpService,\r\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n this.tagInputCtrl.valueChanges\r\n .subscribe(filterValue => {\r\n this.filterString = filterValue;\r\n });\r\n\r\n //Set Focus Monitor\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n onContainerClick() {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n\r\n async add(event: MatChipInputEvent) {\r\n const value = (event.value || '').trim();\r\n // Add our tag\r\n // Validate for single mode\r\n if (!this.config.isSingle || (this.value.length === 0)) {\r\n if (value && this.config.isCreateable) {\r\n const tags = this.allTags;\r\n let tag = tags.find((item: any) => item.title.toLowerCase() == value.toLowerCase());\r\n if (!tag) {\r\n //No tag present in the list\r\n try {\r\n const result: any = await this.httpService.post(this.config.createApiUrl, {\r\n title: value,\r\n description: value,\r\n category_title: (this.categories.length > 0) ? (this.defaultCreateCategory ? this.defaultCreateCategory : this.categories[0]) : ''\r\n }).toPromise();\r\n tag = result.item;\r\n } catch (error) {\r\n return;\r\n }\r\n this.allTags.push(tag);\r\n } else {\r\n //Optionally clean the existing value, to avoid duplicate\r\n this.remove(tag);\r\n }\r\n this.value.push(tag.id);\r\n this._handleInput();\r\n }\r\n }\r\n\r\n // Clear the input value\r\n event.input.value = '';\r\n\r\n this.tagInputCtrl.setValue(null);\r\n }\r\n\r\n remove(tag: any): void {\r\n this.value = this.value.filter(x => x !== tag.id);\r\n this._handleInput();\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void {\r\n // Validate for single mode\r\n if (!this.config.isSingle || (this.value.length === 0)) {\r\n //Clean the existing value, to avoid duplicate\r\n this.remove({ id: event.option.value });\r\n this.value.push(event.option.value);\r\n this._handleInput();\r\n }\r\n this.tagInput.nativeElement.value = '';\r\n this.tagInputCtrl.setValue(null);\r\n }\r\n\r\n private _filter(): any[] {\r\n const filterValue = this.filterString ? this.filterString.toString().toLowerCase() : null;\r\n const availableTags = this.allTags.filter((tag: any) => !this.value.some((item: any) => item == tag.id));\r\n return filterValue ? availableTags.filter((tag: any) => tag.title.toLowerCase().includes(filterValue)) : availableTags;\r\n }\r\n\r\n writeValue(tagIds: any[]): void {\r\n this.value = tagIds || [];\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n }\r\n\r\n static ngAcceptInputType_disabled: BooleanInput;\r\n static ngAcceptInputType_required: BooleanInput;\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyTaggerTagFormFieldComponent } from './techlify-tagger-tag-form-field.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TechlifyTaggerTagFormFieldComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n MatAutocompleteModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [TechlifyTaggerTagFormFieldComponent]\r\n})\r\nexport class TechlifyTaggerTagFormFieldModule { }\r\n","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, OnInit, Input, OnDestroy, Inject, Optional, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-tagger-tag-selector',\r\n templateUrl: './techlify-tagger-tag-selector.component.html',\r\n styleUrls: ['./techlify-tagger-tag-selector.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagSelectorComponent }],\r\n})\r\nexport class TechlifyTaggerTagSelectorComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy {\r\n\r\n /**Pass the Categories to filter for a model */\r\n @Input() categories: string[] = [];\r\n @Input() multiple: boolean = false;\r\n @Input() enableSearch: boolean = true;\r\n tagSelectorCtrl = new FormControl();\r\n @Input() showAllTags: boolean = false;\r\n @Input() useSelectButtonStyle: boolean = false;\r\n\r\n tags: any[] = [];\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'techlify-tagger-selector';\r\n id = `techlify-tagger-selector-${TechlifyTaggerTagSelectorComponent.nextId++}`;\r\n\r\n onChange = (_: any) => { };\r\n onTouched = () => { };\r\n\r\n get apiUrl() {\r\n if (this.showAllTags) {\r\n return 'api/techlify-tagger-tags'\r\n }\r\n else if (this.categories?.length > 0) {\r\n return 'api/techlify-tagger-tags?categories=' + this.categories.join(',');\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n\r\n //Default Getter and Setters for a Form Field Implementation\r\n get empty() {\r\n return this.value.length == 0;\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.tagSelectorCtrl.disable() : this.tagSelectorCtrl.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n\r\n private _value: any;\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(val: any) {\r\n this._value = val;\r\n this.tagSelectorCtrl.setValue(val);\r\n this.stateChanges.next();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.tagSelectorCtrl.dirty && this.required && (this.value.length == 0);\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string;\r\n\r\n\r\n ngOnInit(): void {\r\n if (this.useSelectButtonStyle) {\r\n this.httpService.get(this.apiUrl)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((res: any) => {\r\n this.tags = res.data;\r\n })\r\n }\r\n }\r\n\r\n selectionChange(value: any) {\r\n this.value = value;\r\n this._handleInput();\r\n }\r\n\r\n constructor(\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private httpService: HttpService,\r\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n //Set Focus Monitor\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n onContainerClick() {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n writeValue(val: any): void {\r\n this.value = val;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n }\r\n\r\n static ngAcceptInputType_disabled: BooleanInput;\r\n static ngAcceptInputType_required: BooleanInput;\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyTaggerTagSelectorComponent } from './techlify-tagger-tag-selector.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MaterialModule } from '../material.module';\r\nimport { SearchableSelectorModule } from '../searchable-selector/searchable-selector.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TechlifyTaggerTagSelectorComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n MatAutocompleteModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n MatButtonToggleModule\r\n ],\r\n exports: [TechlifyTaggerTagSelectorComponent]\r\n})\r\nexport class TechlifyTaggerTagSelectorModule { }\r\n","import { DataManager } from './../core/dataManager.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TechlifyFeatureService {\r\n\r\n constructor(private dataManager: DataManager) { }\r\n\r\n getFeatures() {\r\n return this.dataManager.GET(`api/features`);\r\n }\r\n\r\n disableFeature(id: any) {\r\n return this.dataManager.GET(`api/feature/${id}/disable`);\r\n }\r\n\r\n enableFeature(id: any) {\r\n return this.dataManager.GET(`api/feature/${id}/enable`);\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { TechlifyFeatureService } from './techlify-feature.service';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ActionPopup, ActionPopupComponent } from '../action-popup';\r\nimport { DataManager } from '../core/dataManager.service';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { StorageService } from '../core/storage.service';\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-listing-feature',\r\n templateUrl: './techlify-feature-listing.component.html',\r\n styleUrls: ['./techlify-feature-listing.component.scss']\r\n})\r\nexport class TechlifyFeatureListingComponent implements OnInit {\r\n\r\n features: any[] = []\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'feature',\r\n 'description',\r\n 'actions',\r\n ]\r\n\r\n dataSource = new MatTableDataSource()\r\n\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n\r\n isWorking: boolean = false\r\n filterFormGroup: FormGroup;\r\n featureToggleForm: FormGroup;\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private errorHandler: ErrorHandlerService,\r\n private fb: FormBuilder,\r\n private alertService: AlertService,\r\n private dialog: MatDialog,\r\n private storage: StorageService,\r\n private featureService: TechlifyFeatureService\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n num_items: [\"\"]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData()\r\n this.listenForChanges()\r\n }\r\n\r\n listenForChanges() {\r\n this.filterFormGroup.valueChanges\r\n .pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe((changes) => {\r\n this.reload()\r\n })\r\n }\r\n\r\n async loadData() {\r\n let result;\r\n try {\r\n this.isWorking = true\r\n var filter = this.filterFormGroup.value\r\n filter.page = this.page;\r\n filter.perPage = this.perPage;\r\n result = await this.dataManager.GET(`api/features`, filter);\r\n this.features = this.features.concat(result.data);\r\n this.dataSource = new MatTableDataSource(this.features);\r\n\r\n if (!this.storage.getItem('features')) {\r\n this.setStorage(this.features);\r\n }\r\n\r\n this.isWorking = false\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n async toggeleFeature(element, feature) {\r\n let status = element ? 'Off' : \"On\";\r\n let data;\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: `Turn this feature ${status}?`,\r\n message: `Would you like to turn ${feature.title} feature ${status}`\r\n }\r\n })\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n try {\r\n data = element\r\n ? await this.featureService.disableFeature(feature.id)\r\n : await this.featureService.enableFeature(feature.id);\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.alertService.addAlert(`You have just turned ${status} the feature ${feature.title}`, 'success');\r\n this.reload();\r\n this.storage.removeItem('features');\r\n this.setStorage(this.features);\r\n this.isWorking = false;\r\n }\r\n } else {\r\n this.reload();\r\n }\r\n })\r\n }\r\n\r\n setStorage(features) {\r\n let localFeatures = [];\r\n for (let feature of features) {\r\n if (!feature.client_feature) {\r\n if (feature.is_enabled_default) {\r\n localFeatures.push(feature.code);\r\n }\r\n } else {\r\n if (feature.client_feature.is_enabled) {\r\n localFeatures.push(feature.code);\r\n }\r\n }\r\n\r\n }\r\n this.storage.setItem(\"features\", localFeatures);\r\n }\r\n\r\n reload() {\r\n this.features = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase()\r\n this.assignFilter(event.active, direction)\r\n this.reload()\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'name': {\r\n return this.filterFormGroup\r\n .get('sort_by')\r\n .setValue('first_name|' + direction)\r\n }\r\n case 'added_on': {\r\n return this.filterFormGroup\r\n .get('sort_by')\r\n .setValue('created_at|' + direction)\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { AuthenticationGuard } from './../core/authentication.guard';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: TechlifyFeatureListingComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n];\r\n\r\nexport const TechlifyFeatureRoutes = RouterModule.forChild(routes);\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-on-off-switch',\r\n templateUrl: './on-off-switch.component.html',\r\n styleUrls: ['./on-off-switch.component.scss']\r\n})\r\n\r\nexport class OnOffSwitchComponent implements OnInit {\r\n\r\n @Input() value: boolean;\r\n slideToggle: FormGroup;\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.slideToggle = this.fb.group({\r\n toggle: [\"\"]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.slideToggle.get('toggle').setValue(this.value);\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport { StorageService } from '../core/storage.service';\r\nimport { TechlifyFeatureService } from './techlify-feature.service';\r\n\r\n@Directive({\r\n selector: '[techlifyFeatureEnabled]'\r\n})\r\nexport class TechlifyFeatureEnabledDirective {\r\n\r\n features: any;\r\n localFeatures: any[] = [];\r\n @Input('techlifyFeatureEnabled') enabledFeature: any;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private featureService: TechlifyFeatureService,\r\n private errorHandler: ErrorHandlerService,\r\n private storage: StorageService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.storage.getItem('features')) {\r\n this.getFeatures();\r\n } else {\r\n this.checkForFeatureEnabled();\r\n }\r\n }\r\n\r\n async getFeatures() {\r\n try {\r\n let features = await this.featureService.getFeatures();\r\n\r\n for (let feature of features.data) {\r\n if (!feature.client_feature) {\r\n if (feature.is_enabled_default) {\r\n this.localFeatures.push(feature.code);\r\n }\r\n } else {\r\n if (feature.client_feature.is_enabled) {\r\n this.localFeatures.push(feature.code);\r\n }\r\n }\r\n\r\n }\r\n this.storage.setItem(\"features\", this.localFeatures);\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.checkForFeatureEnabled()\r\n }\r\n }\r\n\r\n checkForFeatureEnabled() {\r\n try {\r\n let features = this.storage.getItem('features');\r\n let features_split = features.split(',');\r\n\r\n if (features_split.includes(this.enabledFeature)) {\r\n this.el.nativeElement.style.display = \"show\";\r\n } else {\r\n this.el.nativeElement.remove();\r\n }\r\n\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\r\n\r\nimport { TechlifyFeatureRoutes } from './techlify-feature.routing';\r\nimport { OnOffSwitchComponent } from './on-off-switch/on-off-switch.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { TechlifyFeatureEnabledDirective } from './techlify-feature-enabled.directive';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n TechlifyFeatureRoutes,\r\n MatSlideToggleModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule\r\n ],\r\n declarations: [TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],\r\n exports: [TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]\r\n})\r\nexport class TechlifyFeatureModule { }\r\n","/*\r\n * Public API Surface of ngx-techlify-core\r\n */\r\n\r\nimport { from } from 'rxjs';\r\n\r\nexport * from './lib/action-popup';\r\nexport * from './lib/data-table';\r\nexport * from './lib/document-viewer';\r\nexport * from './lib/entity-files';\r\nexport * from './lib/file-dropper';\r\nexport * from './lib/note';\r\nexport * from './lib/searchable-selector';\r\nexport * from './lib/utility';\r\nexport * from './lib/timeline-filter';\r\nexport * from './lib/loader';\r\nexport * from './lib/core';\r\n\r\nexport * from './lib/material.module';\r\nexport * from './lib/core/core.module';\r\nexport * from './lib/action-popup/action-popup.module';\r\nexport * from './lib/data-table/data-table.module';\r\nexport * from './lib/document-viewer/document-viewer.module';\r\nexport * from './lib/entity-files/entity-files-view-all.module';\r\nexport * from './lib/file-dropper/file-dropper.module';\r\nexport * from './lib/note/note.module';\r\nexport * from './lib/searchable-selector/searchable-selector.module';\r\nexport * from './lib/utility/utility.module';\r\nexport * from './lib/timeline-filter/timeline-filter.module';\r\nexport * from './lib/loader/loader.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription.module';\r\nexport * from './lib/email-subscription/email-subscription-routing.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-for-user';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter';\r\n\r\nexport * from './lib/techlify-update/techlify-update.module';\r\nexport * from './lib/techlify-update/techlify-update-history/techlify-update-history.module';\r\nexport * from './lib/techlify-update/update-notifier/update-notifier.module';\r\nexport * from './lib/techlify-update/update-notifier/update-notifier.component';\r\n\r\nexport * from './lib/export-excel/export-excel-button/export-excel-button.component';\r\nexport * from './lib/export-excel/export-excel.module';\r\n\r\n\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.component';\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.module';\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list.component';\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list.module';\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.component';\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.module';\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view.component';\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view.module';\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.component';\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.module';\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.component';\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.module';\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log.module';\r\nexport * from './lib/audit-log/audit-log-routing.module';\r\n\r\nexport * from './lib/date-validator';\r\n\r\nexport * from './lib/import-csv/import-csv.module';\r\nexport * from './lib/import-csv/import-csv.component';\r\nexport * from './lib/import-csv/import-csv-config';\r\n\r\nexport * from './lib/login-history-for-user/login-history-for-user.module';\r\nexport * from './lib/login-history-for-user/login-history-for-user-routing.module';\r\nexport * from './lib/login-history-for-user/login-history-for-user.component';\r\n\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model';\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component';\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module';\r\n\r\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module';\r\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component';\r\n\r\nexport * from './lib/read-more/read-more.module';\r\nexport * from './lib/read-more/read-more.component';\r\n\r\nexport * from './lib/techlify-feature/techlify-feature.module';\r\nexport * from './lib/techlify-feature/techlify-feature.routing';\r\nexport * from './lib/techlify-feature/techlify-feature-listing.component';\r\nexport * from './lib/techlify-feature/techlify-feature-enabled.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ActionPopupComponent as ɵg} from './lib/action-popup/action-popup.component';\nexport {ActionPopup as ɵh} from './lib/action-popup/action-popup.model';\nexport {AlertService as ɵn} from './lib/core/alert.service';\nexport {AuthenticationGuard as ɵbg} from './lib/core/authentication.guard';\nexport {ConfigService as ɵv} from './lib/core/config.service';\nexport {CredentialsService as ɵu} from './lib/core/credentials.service';\nexport {DataManager as ɵbv} from './lib/core/dataManager.service';\nexport {ErrorHandlerService as ɵbw} from './lib/core/error-handler.service';\nexport {FormValidatorService as ɵl} from './lib/core/form-validator.service';\nexport {HTTP_DYNAMIC_INTERCEPTORS as ɵd,HttpService as ɵe} from './lib/core/http.service';\nexport {RouteReusableStrategy as ɵf} from './lib/core/route-reusable-strategy';\nexport {ErrorSnackComponent as ɵc,SuccessSnackComponent as ɵb} from './lib/core/snack/snack.component';\nexport {SnackModule as ɵa} from './lib/core/snack/snack.module';\nexport {StorageService as ɵcc} from './lib/core/storage.service';\nexport {TechlifyConfig as ɵw} from './lib/core/techlify-config.model';\nexport {DataTableComponent as ɵi} from './lib/data-table/data-table.component';\nexport {DocumentViewerComponent as ɵj} from './lib/document-viewer/document-viewer.component';\nexport {EmailSubscriptionForUserComponent as ɵbk} from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component';\nexport {EmailSubscriptionTypeFormComponent as ɵbi} from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component';\nexport {EmailSubscriptionTypeListComponent as ɵbj} from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component';\nexport {EmailSubscriptionUserFormComponent as ɵbe} from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component';\nexport {EmailSubscriptionUserListFilterComponent as ɵbh} from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component';\nexport {EmailSubscriptionUserListComponent as ɵbf} from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component';\nexport {EntityFileFormComponent as ɵk} from './lib/entity-files/entity-file-form/entity-file-form.component';\nexport {EntityFileService as ɵm} from './lib/entity-files/entity-file.service';\nexport {EntityFilesViewAllComponent as ɵo} from './lib/entity-files/entity-files-view-all.component';\nexport {FileDropperComponent as ɵp} from './lib/file-dropper/file-dropper.component';\nexport {DataImportComponent as ɵcb} from './lib/import-csv/data-import/data-import.component';\nexport {FailedItemsListComponent as ɵby} from './lib/import-csv/failed-items-list/failed-items-list.component';\nexport {FieldMappingComponent as ɵbx} from './lib/import-csv/field-mapping/field-mapping.component';\nexport {ImportHistoryListComponent as ɵbz} from './lib/import-csv/import-history-list/import-history-list.component';\nexport {ImportSuccessComponent as ɵca} from './lib/import-csv/import-success/import-success.component';\nexport {LoaderComponent as ɵbd} from './lib/loader/loader.component';\nexport {CommentFormComponent as ɵt} from './lib/note/comment-form/comment-form.component';\nexport {NoteFormComponent as ɵs} from './lib/note/note-form/note-form.component';\nexport {NoteListComponent as ɵq} from './lib/note/note-list/note-list.component';\nexport {NoteService as ɵr} from './lib/note/note.service';\nexport {MatSelectInfiniteScrollDirective as ɵy} from './lib/searchable-selector/mat-select-infinite-scroll.directive';\nexport {SearchableSelectorComponent as ɵx} from './lib/searchable-selector/searchable-selector.component';\nexport {OnOffSwitchComponent as ɵce} from './lib/techlify-feature/on-off-switch/on-off-switch.component';\nexport {TechlifyFeatureService as ɵcd} from './lib/techlify-feature/techlify-feature.service';\nexport {TechlifyUpdateFormComponent as ɵbp} from './lib/techlify-update/techlify-update-form/techlify-update-form.component';\nexport {TechlifyUpdateFormModule as ɵbo} from './lib/techlify-update/techlify-update-form/techlify-update-form.module';\nexport {TechlifyUpdateHistoryRoutingModule as ɵbq} from './lib/techlify-update/techlify-update-history/techlify-update-history-routing.module';\nexport {TechlifyUpdateHistoryComponent as ɵbr} from './lib/techlify-update/techlify-update-history/techlify-update-history.component';\nexport {TechlifyUpdateRoutingModule as ɵbn} from './lib/techlify-update/techlify-update-routing.module';\nexport {TechlifyUpdateService as ɵbm} from './lib/techlify-update/techlify-update.service';\nexport {TechlifyUpdatesListComponent as ɵbl} from './lib/techlify-update/techlify-updates-list/techlify-updates-list.component';\nexport {UpdateNotifierSnackComponent as ɵbs} from './lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component';\nexport {UpdateViewComponent as ɵbu} from './lib/techlify-update/update-view/update-view.component';\nexport {UpdateViewModule as ɵbt} from './lib/techlify-update/update-view/update-view.module';\nexport {TimelineFilterRoutingModule as ɵbc} from './lib/timeline-filter/timeline-filter-routing.module';\nexport {TimelineFilterComponent as ɵbb} from './lib/timeline-filter/timeline-filter.component';\nexport {NumItemsSelector as ɵz} from './lib/utility/num-items-selector.component';\nexport {NumberSelector as ɵba} from './lib/utility/number-selector.component';"],"names":["log","errorMessages","routes","XLSX.utils","XLSX.writeFile","jsondiffpatch.diff","jsondiffpatch.formatters","XLSX.read"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-techlify-core.js","sources":["../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.model.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.component.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-form-component.class.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-listing-component.class.ts","../../../projects/ngx-techlify-core/src/lib/base-model/techlify-service.class.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.component.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.model.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.component.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/viewer-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/logger.service.ts","../../../projects/ngx-techlify-core/src/lib/core/techlify-config.model.ts","../../../projects/ngx-techlify-core/src/lib/core/config.service.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.component.ts","../../../projects/ngx-techlify-core/src/lib/core/alert.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.service.ts","../../../projects/ngx-techlify-core/src/lib/core/error-handler.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http-cache.service.ts","../../../projects/ngx-techlify-core/src/lib/core/cache.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/api-prefix.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/credentials.service.ts","../../../projects/ngx-techlify-core/src/lib/core/token.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/header.interceptor.ts","../../../projects/ngx-techlify-core/src/lib/core/http.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file.service.ts","../../../projects/ngx-techlify-core/src/lib/core/form-validator.service.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-file-form/entity-file-form.component.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.component.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.model.ts","../../../projects/ngx-techlify-core/src/lib/note/note.service.ts","../../../projects/ngx-techlify-core/src/lib/note/note-form/note-form.component.ts","../../../projects/ngx-techlify-core/src/lib/note/note-list/note-list.component.ts","../../../projects/ngx-techlify-core/src/lib/note/comment-form/comment-form.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/mat-select-infinite-scroll.directive.ts","../../../projects/ngx-techlify-core/src/lib/utility/num-items-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/utility/date-utils.service.ts","../../../projects/ngx-techlify-core/src/lib/utility/number-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline.model.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/calculate-timeline.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.component.ts","../../../projects/ngx-techlify-core/src/lib/core/snack/snack.module.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.guard.ts","../../../projects/ngx-techlify-core/src/lib/core/authentication.service.ts","../../../projects/ngx-techlify-core/src/lib/core/route-reusable-strategy.ts","../../../projects/ngx-techlify-core/src/lib/core/storage.service.ts","../../../projects/ngx-techlify-core/src/lib/core/dataManager.service.ts","../../../projects/ngx-techlify-core/src/lib/material.module.ts","../../../projects/ngx-techlify-core/src/lib/core/core.module.ts","../../../projects/ngx-techlify-core/src/lib/action-popup/action-popup.module.ts","../../../projects/ngx-techlify-core/src/lib/data-table/data-table.module.ts","../../../projects/ngx-techlify-core/src/lib/document-viewer/document-viewer.module.ts","../../../projects/ngx-techlify-core/src/lib/file-dropper/file-dropper.module.ts","../../../projects/ngx-techlify-core/src/lib/entity-files/entity-files-view-all.module.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.component.ts","../../../projects/ngx-techlify-core/src/lib/read-more/read-more.module.ts","../../../projects/ngx-techlify-core/src/lib/note/note.module.ts","../../../projects/ngx-techlify-core/src/lib/searchable-selector/searchable-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/utility/utility.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/timeline-filter/timeline-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/loader/loader.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-form/techlify-update-form.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/techlify-update-history/techlify-update-history.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-view/update-view.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-update/update-notifier/update-notifier.module.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel-button/export-excel-button.component.ts","../../../projects/ngx-techlify-core/src/lib/export-excel/export-excel.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view-model/audit-log-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/date-validator.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-list/audit-log-list.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-for-model/audit-log-for-model.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.component.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-view/audit-log-view.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/audit-log/audit-log.module.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-success/import-success.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-history-list/import-history-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/field-mapping/field-mapping.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/failed-items-list/failed-items-list.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/data-import/data-import.component.ts","../../../projects/ngx-techlify-core/src/lib/import-csv/import-csv.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.component.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user-routing.module.ts","../../../projects/ngx-techlify-core/src/lib/login-history-for-user/login-history-for-user.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.service.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-listing.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.routing.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/on-off-switch/on-off-switch.component.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature-enabled.directive.ts","../../../projects/ngx-techlify-core/src/lib/techlify-feature/techlify-feature.module.ts","../../../projects/ngx-techlify-core/src/public-api.ts","../../../projects/ngx-techlify-core/src/ngx-techlify-core.ts"],"sourcesContent":["export class ActionPopup {\r\n name: string;\r\n title: string;\r\n message: string;\r\n}","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ActionPopup } from './action-popup.model';\r\n\r\n@Component({\r\n selector: 'app-action-popup',\r\n templateUrl: './action-popup.component.html',\r\n styleUrls: ['./action-popup.component.scss']\r\n})\r\nexport class ActionPopupComponent implements OnInit {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<ActionPopupComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: ActionPopup,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n /**Method to close dialog box */\r\n closeDialog() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to close dialog box with the data given from parent component\r\n */\r\n confirm() {\r\n this.dialogRef.close(this.data);\r\n }\r\n\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\nimport { FormValidatorService } from '../core/form-validator.service';\r\n\r\n/**\r\n * Interface used to ensure we have a consistent structure across our form components\r\n *\r\n * It also provides some abstraction of repeated code to reduce our codebase size\r\n *\r\n * @todo This should be moved to ngx-techlify-core\r\n *\r\n * Advantages of this abstract class\r\n * - Less code, less maintenance, less bugs\r\n * - more consistent code\r\n * - comments on more code\r\n * - save time, save energy\r\n */\r\nexport abstract class TechlifyFormComponentInterface {\r\n\r\n form: FormGroup;\r\n errorMessages: any;\r\n\r\n constructor(protected formValidatorService: FormValidatorService) {\r\n\r\n }\r\n\r\n /**\r\n * Resets the value of a field in the HTML form\r\n *\r\n * @param event\r\n * @param field\r\n */\r\n resetFieldValue(event: any, field: string) {\r\n this.form?.get(field)?.setValue('');\r\n }\r\n\r\n /**\r\n * Retrieves the value of a field from the HTML form\r\n *\r\n * @param field\r\n * @returns\r\n */\r\n getFieldValue(field: string) {\r\n return this.form?.get(field)?.value;\r\n }\r\n\r\n /**\r\n * Method to evaluate form fields\r\n * */\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.form, true);\r\n }\r\n\r\n /**\r\n * Method to find error in form fields\r\n * */\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.form, this.errorMessages);\r\n }\r\n\r\n}\r\n","/**\r\n * Interface used to ensure we have a consistent structure across our listing pages\r\n *\r\n * @todo This should be moved to ngx-techlify-core\r\n *\r\n * Advantages of this abstract class\r\n * - Less code, less maintenance, less bugs\r\n * - more consistent code\r\n * - comments on more code\r\n * - save time, save energy\r\n */\r\nexport abstract class TechlifyListingControllerInterface {\r\n\r\n models: any[] = [];\r\n page: number = 1;\r\n perPage: number = 25;\r\n lastPage: number = 500;\r\n isWorking: boolean = false;\r\n\r\n /**\r\n * Function that listens for any changes in the form group to apply the filters\r\n */\r\n abstract listenForChanges(): void;\r\n\r\n /**\r\n * Function that loads the main models of the application\r\n */\r\n abstract loadData(): void;\r\n\r\n /**\r\n * Reload all data from page 1\r\n */\r\n reload() {\r\n this.models = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n /**\r\n * Can be called when the user is scrolling,\r\n * to trigger loading a new page of data\r\n */\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Function used to pop up the edit form for the model\r\n *\r\n * @param model\r\n */\r\n abstract editForm(model: any): void;\r\n\r\n /**\r\n * Function used to pop up the delete form for the model\r\n *\r\n * @param model\r\n */\r\n abstract deleteForm(model: any): void;\r\n\r\n}\r\n","import { HttpService } from '../core/http.service';\r\n\r\n/**\r\n * Interface used to ensure we have a consistent structure across our listing pages\r\n *\r\n * @todo This should be moved to ngx-techlify-core\r\n *\r\n * Advantages of this abstract class\r\n * - Less code, less maintenance, less bugs\r\n * - more consistent code\r\n * - comments on more code\r\n * - save time, save energy\r\n */\r\nexport class TechlifyServiceBaseClass {\r\n\r\n protected baseUrl = \"you-forgot-to-set-a-base-url\";\r\n\r\n constructor(protected http: HttpService, baseUrl: string) {\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n /**\r\n * Loads a set of the model this service is for\r\n *\r\n * @param filters Restrictors to filter the set of models\r\n * @returns\r\n */\r\n index(filters: any) {\r\n return this.http.get(`api/${this.baseUrl}`, { params: { ...filters } }).toPromise();\r\n }\r\n\r\n /**\r\n * Add a new record to the database\r\n *\r\n * @param model The data of the model to add\r\n * @returns\r\n */\r\n store(model: any) {\r\n return this.http.post(`api/${this.baseUrl}`, model).toPromise();\r\n }\r\n\r\n /**\r\n * Load a single model record, often with all relations and related data\r\n *\r\n * @param modelId ID of the model to load\r\n * @returns\r\n */\r\n show(modelId: any) {\r\n return this.http.get(`api/${this.baseUrl}/${modelId}`).toPromise();\r\n }\r\n\r\n /**\r\n * Update fields of a single existing model\r\n *\r\n * @param model Model to update\r\n * @returns\r\n */\r\n update(model: any) {\r\n return this.http.put(`api/${this.baseUrl}/${model.id}`, model).toPromise();\r\n }\r\n\r\n /**\r\n * Delete a single model\r\n *\r\n * @param model Model to delete\r\n * @returns\r\n */\r\n delete(model: any) {\r\n return this.http.delete(`api/${this.baseUrl}/${model.id}`).toPromise();\r\n }\r\n\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n SimpleChanges,\r\n AfterViewInit,\r\n ViewChild\r\n} from \"@angular/core\";\r\n\r\nimport { SelectionModel } from \"@angular/cdk/collections\";\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { DataTable } from './data-table.model';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: \"app-data-table\",\r\n templateUrl: \"./data-table.component.html\",\r\n styleUrls: [\"./data-table.component.scss\"]\r\n})\r\nexport class DataTableComponent implements OnInit, OnChanges, AfterViewInit {\r\n\r\n trigger: MatMenuTrigger;\r\n\r\n @Input() data: any;\r\n\r\n @Input() config: DataTable;\r\n\r\n dataSource: MatTableDataSource<any> = new MatTableDataSource([]);\r\n\r\n @Input() selection: SelectionModel<any>;\r\n\r\n @Output() action = new EventEmitter();\r\n @Output() selctionChange = new EventEmitter();\r\n @Output() rowClick = new EventEmitter();\r\n @Output() tableScroll = new EventEmitter();\r\n @Output() sortChanged = new EventEmitter();\r\n\r\n page: number;\r\n lastPage: number;\r\n perPage: number;\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n static nextId = 0;\r\n @Input() elementId: string = `data-table-${DataTableComponent.nextId++}`;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n /**Life cycle hook method */\r\n ngAfterViewInit() {\r\n // Assign the data to the data source for the table to render\r\n this.dataSource = new MatTableDataSource(this.data);\r\n\r\n // Emit change in selection\r\n if (this.selection) {\r\n this.selection.changed.pipe().subscribe((change: any) => {\r\n if (this.selection.selected) {\r\n this.selctionChange.emit(this.selection.selected);\r\n }\r\n });\r\n }\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.sortChanged.emit(value);\r\n })\r\n }\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.data.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.isAllSelected()\r\n ? this.clearSelection()\r\n : this.dataSource.data.forEach(row => this.selection.select(row));\r\n }\r\n\r\n /**clear selection*/\r\n clearSelection() {\r\n this.selection.clear();\r\n this.selctionChange.emit(this.selection.selected);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.initializeConfig(changes);\r\n if (changes.data && !changes.data.isFirstChange() && this.dataSource) {\r\n // If not first change\r\n this.dataSource.data = changes.data.currentValue;\r\n }\r\n }\r\n\r\n initializeConfig(changes: SimpleChanges) {\r\n if (changes.config && !changes.config.isFirstChange()) {\r\n this.config = changes.config.currentValue;\r\n }\r\n this.page = this.config.page || 1;\r\n this.lastPage = this.config.lastPage || this.page;\r\n this.perPage = this.config.perPage || 20;\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage) {\r\n this.page += 1;\r\n this.tableScroll.emit({ page: this.page, lastPage: this.lastPage, perPage: this.perPage });\r\n }\r\n }\r\n\r\n /**Method invokes when edit action icon is clickes */\r\n editClicked(event: any, element: any) {\r\n this.action.emit({ action: \"edit\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when view action icon is clickes */\r\n viewClicked(event: any, element: any) {\r\n this.action.emit({ action: \"view\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when edit action icon is clickes */\r\n deactivateClicked(event: any, element: any) {\r\n this.action.emit({ action: \"deactivate\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when download action icon is clickes */\r\n downloadClicked(event: any, element: any) {\r\n this.action.emit({ action: \"download\", value: element });\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when print action icon is clickes */\r\n printClicked(event: any, element: any) {\r\n\r\n this.action.emit({ action: 'print', value: element });\r\n event.stopPropagation();\r\n\r\n }\r\n\r\n /**Method invokes when a row is clicked */\r\n rowClicked(event: any, element: any) {\r\n this.rowClick.emit(element);\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when menu action icon is hovered */\r\n actionMenuClick(event: any, element: any, menuValue: string) {\r\n this.action.emit({ action: menuValue, value: element });\r\n this.trigger.closeMenu();\r\n event.stopPropagation();\r\n }\r\n\r\n /**Method invokes when menu action icon is hovered and selects for particular action*/\r\n actionMenuTriggerClick(event: any, trigger: MatMenuTrigger) {\r\n this.trigger = trigger;\r\n event.stopPropagation();\r\n }\r\n\r\n checkEdit(ele: any) {\r\n if (this.config.editDisableFunction) {\r\n return this.config.editDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkView(ele: any) {\r\n if (this.config.viewDisableFunction) {\r\n return this.config.viewDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkPrint(ele: any) {\r\n if (this.config.printDisableFunction) {\r\n return this.config.printDisableFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkActions(ele: any) {\r\n if (this.config.actionsMenuFunction) {\r\n return this.config.actionsMenuFunction(ele);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkActionButton(ele: any, value: any) {\r\n if (this.config.actionsMenuButtonFunction) {\r\n return this.config.actionsMenuButtonFunction(ele, value);\r\n }\r\n return true;\r\n }\r\n\r\n getValue(ele: any, keyString: string) {\r\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\r\n const keyList = keyString.split(\".\");\r\n for (let i = 0, n = keyList.length; i < n; ++i) {\r\n const key = keyList[i];\r\n if (ele && key in ele) {\r\n ele = ele[key];\r\n } else {\r\n return;\r\n }\r\n }\r\n return ele;\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until Destroy uses it.\r\n }\r\n}\r\n","export class DataTable {\r\n displayedColumns: string[];\r\n columnsConfig: ColumnConfig[];\r\n actionsConfig?: ActionConfig;\r\n enableRowClick?: boolean;\r\n disableElevation?: boolean;\r\n downloadLink?: string;\r\n actionsMenuFunction?: any;\r\n actionsMenuButtonFunction?: any;\r\n editDisableFunction?: any;\r\n viewDisableFunction?: any;\r\n printDisableFunction?: any;\r\n customActionLabel?: string;\r\n stickyHeader?: boolean;\r\n page?: number;\r\n lastPage?: number;\r\n perPage?: number;\r\n pageSizeOptions?: number[];\r\n style?: any;\r\n}\r\n\r\nclass ColumnConfig {\r\n title: string;\r\n value: string;\r\n sort?: boolean;\r\n dateField?: boolean;\r\n currencyField?: boolean;\r\n format?: string;\r\n}\r\n\r\nclass ActionConfig {\r\n edit?: boolean;\r\n view?: boolean;\r\n download?: boolean;\r\n print?: boolean;\r\n deactivate?: boolean;\r\n actionsMenu?: ActionsMenu[];\r\n}\r\n\r\nclass ActionsMenu {\r\n name: string;\r\n value: string;\r\n}\r\n\r\nexport class PageEvent {\r\n page: number;\r\n lastPage?: number;\r\n perPage: number;\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\r\nimport { ViewerConfig } from './viewer-config.model';\r\n\r\n@Component({\r\n selector: 'app-document-viewer',\r\n templateUrl: './document-viewer.component.html',\r\n styleUrls: ['./document-viewer.component.css']\r\n})\r\nexport class DocumentViewerComponent implements OnInit {\r\n\r\n\r\n @Input() config!: ViewerConfig;\r\n\r\n @Input() file!: any;\r\n\r\n @Input() fileUrl!: any;\r\n\r\n @Input() disableEdit: boolean;\r\n\r\n @Output() remove = new EventEmitter();\r\n viewerType: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.initData();\r\n }\r\n\r\n removeFile() {\r\n this.remove.emit();\r\n }\r\n\r\n initData() {\r\n if (this.file) {\r\n var ext = this.getFileExtension(this.file);\r\n if (ext === 'ppt' || ext === 'pptx' || ext === 'doc' || ext === 'docx' || ext === 'xls' || ext === 'xlsx') {\r\n this.viewerType = \"office\";\r\n }\r\n else if (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'gif') {\r\n this.viewerType = \"image\";\r\n }\r\n else if (ext === 'pdf') {\r\n this.viewerType = \"pdf\";\r\n }\r\n else {\r\n this.viewerType = null;\r\n }\r\n }\r\n }\r\n\r\n get fileName() {\r\n if (this.file) {\r\n let nameArray = this.file.split('/');\r\n if (nameArray.length === 2) {\r\n return nameArray[1];\r\n }\r\n return nameArray[0];\r\n }\r\n return '';\r\n }\r\n\r\n getFileExtension(file: any) {\r\n return file.split('.').pop();\r\n }\r\n\r\n}\r\n","export class ViewerConfig {\r\n imageStyle?: any;\r\n viewerStyle?: any;\r\n hideRemove?: boolean;\r\n}\r\n","/**\r\n * Simple logger system with the possibility of registering custom outputs.\r\n *\r\n * 4 different log levels are provided, with corresponding methods:\r\n * - debug : for debug information\r\n * - info : for informative status of the application (success, ...)\r\n * - warning : for non-critical errors that do not prevent normal application behavior\r\n * - error : for critical errors that prevent normal application behavior\r\n *\r\n * Example usage:\r\n * ```\r\n * import { Logger } from 'app/core/logger.service';\r\n *\r\n * const log = new Logger('myFile');\r\n * ...\r\n * log.debug('something happened');\r\n * ```\r\n *\r\n * To disable debug and info logs in production, add this snippet to your root component:\r\n * ```\r\n * export class AppComponent implements OnInit {\r\n * ngOnInit() {\r\n * if (environment.production) {\r\n * Logger.enableProductionMode();\r\n * }\r\n * ...\r\n * }\r\n * }\r\n *\r\n * If you want to process logs through other outputs than console, you can add LogOutput functions to Logger.outputs.\r\n */\r\n\r\n/**\r\n * The possible log levels.\r\n * LogLevel.Off is never emitted and only used with Logger.level property to disable logs.\r\n */\r\nexport enum LogLevel {\r\n Off = 0,\r\n Error,\r\n Warning,\r\n Info,\r\n Debug\r\n}\r\n\r\n/**\r\n * Log output handler function.\r\n */\r\nexport type LogOutput = (source: string | undefined, level: LogLevel, ...objects: any[]) => void;\r\n\r\nexport class Logger {\r\n\r\n /**\r\n * Current logging level.\r\n * Set it to LogLevel.Off to disable logs completely.\r\n */\r\n static level = LogLevel.Debug;\r\n\r\n /**\r\n * Additional log outputs.\r\n */\r\n static outputs: LogOutput[] = [];\r\n\r\n /**\r\n * Enables production mode.\r\n * Sets logging level to LogLevel.Warning.\r\n */\r\n static enableProductionMode() {\r\n Logger.level = LogLevel.Warning;\r\n }\r\n\r\n constructor(private source?: string) { }\r\n\r\n /**\r\n * Logs messages or objects with the debug level.\r\n * Works the same as console.log().\r\n */\r\n debug(...objects: any[]) {\r\n this.log(console.log, LogLevel.Debug, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the info level.\r\n * Works the same as console.log().\r\n */\r\n info(...objects: any[]) {\r\n this.log(console.info, LogLevel.Info, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the warning level.\r\n * Works the same as console.log().\r\n */\r\n warn(...objects: any[]) {\r\n this.log(console.warn, LogLevel.Warning, objects);\r\n }\r\n\r\n /**\r\n * Logs messages or objects with the error level.\r\n * Works the same as console.log().\r\n */\r\n error(...objects: any[]) {\r\n this.log(console.error, LogLevel.Error, objects);\r\n }\r\n\r\n private log(func: (...args: any[]) => void, level: LogLevel, objects: any[]) {\r\n if (level <= Logger.level) {\r\n const log = this.source ? ['[' + this.source + ']'].concat(objects) : objects;\r\n func.apply(console, log);\r\n Logger.outputs.forEach(output => output.apply(output, [this.source, level, ...objects]));\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n * Class that stores the configuration data\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20180724\r\n */\r\nexport class TechlifyConfig {\r\n projectKey: string = '';\r\n environment: string = '';\r\n authClientSecret: string = '';\r\n authGrantType: string = '';\r\n apiUrl: string = '';\r\n rawConfigs: any;\r\n storage: Storage;\r\n isLogoutWhileApiGetsFailed: boolean = false;\r\n\r\n constructor(data: any) {\r\n this.loadFromMap(data);\r\n }\r\n\r\n loadFromMap(data: any) {\r\n this.projectKey = data.projectKey;\r\n this.environment = data.environment;\r\n this.authClientSecret = data.authClientSecret;\r\n this.authGrantType = data.authGrantType;\r\n this.apiUrl = data.apiUrl;\r\n this.storage = data?.storage;\r\n this.rawConfigs = data;\r\n this.isLogoutWhileApiGetsFailed = data?.isLogoutWhileApiGetsFailed;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { TechlifyConfig } from \"./techlify-config.model\";\r\n\r\n/**\r\n * Service that provides settings for all other services\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigService {\r\n\r\n public static BASE_CREDENTIALS = \"credentials\";\r\n\r\n private config: TechlifyConfig;\r\n\r\n constructor(config: TechlifyConfig) {\r\n this.config = config;\r\n }\r\n\r\n getConfigsRaw() {\r\n return this.config.rawConfigs;\r\n }\r\n\r\n getProjectKey() {\r\n return this.config.projectKey;\r\n }\r\n\r\n getApiUrl() {\r\n return this.config.apiUrl;\r\n }\r\n\r\n getAuthClientSecret() {\r\n return this.config.authClientSecret;\r\n }\r\n\r\n getStorage() {\r\n return this.config.storage ? this.config.storage : localStorage;\r\n }\r\n\r\n getAuthGrantType() {\r\n return this.config.authGrantType;\r\n }\r\n\r\n getCredentialsKey() {\r\n return this.config.projectKey + \"_\" + ConfigService.BASE_CREDENTIALS;\r\n }\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\n\r\n@Component({\r\n selector: 'snack-bar-component-example-snack',\r\n templateUrl: 'success-snack.html',\r\n styleUrls: ['./snack.scss'],\r\n})\r\nexport class SuccessSnackComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\r\n}\r\n@Component({\r\n selector: 'snack-bar-component-example-snack',\r\n templateUrl: 'error-snack.html',\r\n styleUrls: ['./snack.scss'],\r\n})\r\nexport class ErrorSnackComponent {\r\n constructor(@Inject(MAT_SNACK_BAR_DATA) public data: any) { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { ErrorSnackComponent, SuccessSnackComponent } from './snack/snack.component';\r\n\r\n/**\r\n * Service used to manage alerts in the entire system frontend\r\n * \r\n * @author Gokula Prasanna\r\n * @since 20210131\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertService {\r\n\r\n constructor(public snackBar: MatSnackBar) { }\r\n\r\n addAlert(message: string, alertType: string, duration = 3) {\r\n if (alertType == \"success\") {\r\n this.snackBar.openFromComponent(SuccessSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n else {\r\n this.snackBar.openFromComponent(ErrorSnackComponent, {\r\n duration: 1000 * duration,\r\n data: message\r\n });\r\n }\r\n }\r\n}\r\n","import { TechlifyConfig } from './techlify-config.model';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { AlertService } from \"./alert.service\";\r\n\r\n\r\n/**\r\n * Service used to handle errors from the request\r\n *\r\n * @author Joshua Kissoon\r\n * @since 20171202\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerService {\r\n\r\n constructor(private alerter: AlertService,\r\n private config: TechlifyConfig,\r\n ) {\r\n }\r\n\r\n handleError(errorResponse: any, msg: string = '') {\r\n // 1 - Create empty array to store errors\r\n const errors = [];\r\n\r\n // 2 - check if the error object is present in the response\r\n if (errorResponse?.error) {\r\n\r\n // 3 - Check for Laravel form validation error messages object\r\n if (errorResponse?.error?.errors) {\r\n\r\n // 4 - For each error property (which is a form field)\r\n for (const property in errorResponse.error.errors) {\r\n\r\n if (errorResponse.error.errors?.hasOwnProperty(property)) {\r\n\r\n // 5 - Extract it's array of errors\r\n const propertyErrors: Array<string> = errorResponse?.error?.errors[property];\r\n\r\n // 6 - Push all errors in the array to the errors array\r\n propertyErrors.forEach(error => errors.push(error));\r\n }\r\n\r\n }\r\n }\r\n\r\n if (errors.length === 0) {\r\n // 7 - Push the main error message to the array of errors if there is no validation error\r\n errors.push(errorResponse.error.message ? errorResponse.error.message : errorResponse.error?.error);\r\n }\r\n }\r\n var errMessage = errors.length ? errors[0] : msg;\r\n this.alerter.addAlert(\"Error: \" + errMessage, \"warning\");\r\n\r\n if (errorResponse.status == 403 && this.config.isLogoutWhileApiGetsFailed) {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n location.reload();\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Logger } from './logger.service';\r\nimport { ConfigService } from './config.service';\r\nimport { ErrorHandlerService } from './error-handler.service';\r\n\r\nconst log = new Logger('ErrorHandlerInterceptor');\r\n\r\n/**\r\n * Adds a default error handler to all requests.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerInterceptor implements HttpInterceptor {\r\n\r\n constructor(private configService: ConfigService, private errorHandler: ErrorHandlerService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(error => this.handleError(error)));\r\n }\r\n\r\n // Customize the default error handler here if needed\r\n private handleError(error: HttpErrorResponse): Observable<HttpEvent<any>> {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n // client-side error\r\n errorMessage = `Client Error: ${this.configService?.getProjectKey()}: ${error.error.message}`;\r\n } else {\r\n // server-side error\r\n errorMessage = `Server Error: ${this.configService?.getProjectKey()}`;\r\n try {\r\n this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');\r\n } catch (e) {\r\n console.log(\"Unable to handle server error\", e);\r\n }\r\n }\r\n return throwError(error);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpResponse } from '@angular/common/http';\r\nimport { ConfigService } from './config.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('HttpCacheService');\r\n\r\n\r\nexport interface HttpCacheEntry {\r\n lastUpdated: Date;\r\n data: HttpResponse<any>;\r\n}\r\n\r\n/**\r\n * Provides a cache facility for HTTP requests with configurable persistence policy.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpCacheService {\r\n\r\n private cachedData: { [key: string]: HttpCacheEntry; } = {};\r\n private storage: Storage | any | null;\r\n private cachePersistenceKey: String | any;\r\n\r\n constructor(private configService: ConfigService) {\r\n this.storage = this.configService.getStorage();\r\n this.cachePersistenceKey = this.configService.getProjectKey() + '_HTTP_CACHE';\r\n this.loadCacheData();\r\n }\r\n\r\n /**\r\n * Sets the cache data for the specified request.\r\n * @param {!string} url The request URL.\r\n * @param {ResponseOptions} data The received data.\r\n * @param {Date=} lastUpdated The cache last update, current date is used if not specified.\r\n */\r\n setCacheData(url: string, data: HttpResponse<any>, lastUpdated?: Date) {\r\n this.cachedData[url] = {\r\n lastUpdated: lastUpdated || new Date(),\r\n data: data\r\n };\r\n log.debug(`Cache set for key: \"${url}\"`);\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Gets the cached data for the specified request.\r\n * @param {!string} url The request URL.\r\n * @return {?ResponseOptions} The cached data or null if no cached data exists for this request.\r\n */\r\n getCacheData(url: string): HttpResponse<any> | null {\r\n const cacheEntry = this.cachedData[url];\r\n\r\n if (cacheEntry) {\r\n log.debug(`Cache hit for key: \"${url}\"`);\r\n return cacheEntry.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the cached entry for the specified request.\r\n * @param {!string} url The request URL.\r\n * @return {?HttpCacheEntry} The cache entry or null if no cache entry exists for this request.\r\n */\r\n getHttpCacheEntry(url: string): HttpCacheEntry | null {\r\n return this.cachedData[url] || null;\r\n }\r\n\r\n /**\r\n * Clears the cached entry (if exists) for the specified request.\r\n * @param {!string} url The request URL.\r\n */\r\n clearCache(url: string): void {\r\n delete this.cachedData[url];\r\n log.debug(`Cache cleared for key: \"${url}\"`);\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Cleans cache entries older than the specified date.\r\n * @param {date=} expirationDate The cache expiration date. If no date is specified, all cache is cleared.\r\n */\r\n cleanCache(expirationDate?: Date) {\r\n if (expirationDate) {\r\n Object(this.cachedData).keys.forEach((key: string) => {\r\n if (expirationDate >= this.cachedData[key]?.lastUpdated) {\r\n delete this.cachedData[key];\r\n }\r\n });\r\n } else {\r\n this.cachedData = {};\r\n }\r\n this.saveCacheData();\r\n }\r\n\r\n /**\r\n * Sets the cache persistence policy.\r\n * Note that changing the cache persistence will also clear the cache from its previous storage.\r\n * @param {'local'|'session'=} persistence How the cache should be persisted, it can be either local or session\r\n * storage, or if no value is provided it will be only in-memory (default).\r\n */\r\n setPersistence(persistence?: 'local' | 'session') {\r\n this.cleanCache();\r\n this.storage = persistence === 'local' ? localStorage : persistence === 'session' ? sessionStorage : null;\r\n this.loadCacheData();\r\n }\r\n\r\n private saveCacheData() {\r\n if (this.storage) {\r\n this.storage[this.cachePersistenceKey] = JSON.stringify(this.cachedData);\r\n }\r\n }\r\n\r\n private loadCacheData() {\r\n const data = this.storage ? this.storage[this.cachePersistenceKey] : null;\r\n this.cachedData = data ? JSON.parse(data) : {};\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { HttpCacheService } from './http-cache.service';\r\nimport { Observable, Subscriber } from 'rxjs';\r\n\r\n/**\r\n * Caches HTTP requests.\r\n * Use ExtendedHttpClient fluent API to configure caching for each request.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n\r\n private forceUpdate = false;\r\n\r\n constructor(private httpCacheService: HttpCacheService) { }\r\n\r\n /**\r\n * Configures interceptor options\r\n * @param {{update: boolean}} options If update option is enabled, forces request to be made and updates cache entry.\r\n * @return {CacheInterceptor} The configured instance.\r\n */\r\n configure(options?: { update?: boolean } | null): CacheInterceptor {\r\n const instance = new CacheInterceptor(this.httpCacheService);\r\n if (options && options.update) {\r\n instance.forceUpdate = true;\r\n }\r\n return instance;\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n return new Observable((subscriber: Subscriber<HttpEvent<any>>) => {\r\n const cachedData = this.forceUpdate ? null : this.httpCacheService.getCacheData(request.urlWithParams);\r\n if (cachedData !== null) {\r\n // Create new response to avoid side-effects\r\n subscriber.next(new HttpResponse(cachedData as Object));\r\n subscriber.complete();\r\n } else {\r\n next.handle(request)\r\n .subscribe(\r\n event => {\r\n if (event instanceof HttpResponse) {\r\n this.httpCacheService.setCacheData(request.urlWithParams, event);\r\n }\r\n subscriber.next(event);\r\n },\r\n error => subscriber.error(error),\r\n () => subscriber.complete()\r\n );\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { ConfigService } from './config.service';\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiPrefixInterceptor implements HttpInterceptor {\r\n\r\n constructor(private configService: ConfigService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (!/^(http|https):/i.test(request.url)) {\r\n request = request.clone({ url: this.configService.getApiUrl() + request.url });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\n\r\nexport interface Credentials {\r\n // Customize received credentials here\r\n user: any;\r\n token: any;\r\n}\r\n\r\n/**\r\n * Provides storage for authentication credentials.\r\n * The Credentials interface should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CredentialsService {\r\n\r\n private _credentials: Credentials | null = null;\r\n\r\n constructor(private configService: ConfigService) {\r\n }\r\n\r\n /**\r\n * Checks is the user is authenticated.\r\n * @return True if the user is authenticated.\r\n */\r\n get isAuthenticated(): boolean {\r\n return !!this.credentials;\r\n }\r\n\r\n /**\r\n * Gets the user credentials.\r\n * @return The user credentials or null if the user is not authenticated.\r\n */\r\n get credentials(): Credentials | null {\r\n if (!this._credentials) {\r\n this._credentials = JSON.parse(sessionStorage.getItem(this.configService.getCredentialsKey()) || localStorage.getItem(this.configService.getCredentialsKey()));\r\n }\r\n return this._credentials;\r\n }\r\n\r\n /**\r\n * Sets the user credentials.\r\n * The credentials may be persisted across sessions by setting the `remember` parameter to true.\r\n * Otherwise, the credentials are only persisted for the current session.\r\n * @param credentials The user credentials.\r\n * @param remember True to remember credentials across sessions.\r\n */\r\n setCredentials(credentials?: Credentials, remember?: boolean) {\r\n this._credentials = credentials || null;\r\n\r\n if (credentials) {\r\n (remember ? localStorage : sessionStorage).setItem(this.configService.getCredentialsKey(), JSON.stringify(credentials));\r\n } else {\r\n sessionStorage.clear();\r\n localStorage.clear();\r\n this._credentials = null;\r\n }\r\n }\r\n\r\n getAccessToken(): string | null {\r\n const expiration = this.credentials?.token?.expires_in || '';\r\n const token = this.credentials?.token?.access_token || '';\r\n\r\n if (!token || !expiration) {\r\n return null;\r\n }\r\n\r\n if (Date.now() > parseInt(expiration)) {\r\n this.setCredentials();\r\n return null;\r\n }\r\n\r\n return token;\r\n }\r\n\r\n getExpiration(): string {\r\n return this.credentials?.token?.expires_in || '';\r\n }\r\n\r\n getRefreshToken(): string {\r\n return this.credentials?.token?.refresh_token || '';\r\n }\r\n\r\n refresh(): CredentialsService {\r\n this._credentials = null;\r\n return this;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { CredentialsService } from './credentials.service';\r\n\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(private credentials: CredentialsService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${this.credentials.getAccessToken() || ''}`\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n/**\r\n * Prefixes all requests not starting with `http[s]` with `environment.serverUrl`.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HeaderInterceptor implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n request = request.clone({\r\n setHeaders: {\r\n 'Content-Type': request.headers.get('Content-Type') || 'application/json',\r\n }\r\n });\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Inject, Injectable, InjectionToken, Injector, Optional } from '@angular/core';\r\nimport { HttpClient, HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\r\nimport { CacheInterceptor } from './cache.interceptor';\r\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\r\nimport { TokenInterceptor } from './token.interceptor';\r\nimport { HeaderInterceptor } from './header.interceptor';\r\n\r\n\r\n// Augment HttpClient with the added configuration methods from HttpService, to allow in-place replacement of\r\n// HttpClient with HttpService using dependency injection\r\nexport interface HttpCustomClient {\r\n\r\n /**\r\n * Enables caching for this request.\r\n * @param {boolean} forceUpdate Forces request to be made and updates cache entry.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n cache(forceUpdate?: boolean): HttpCustomClient;\r\n\r\n /**\r\n * Skips default error handler for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipErrorHandler(): HttpCustomClient;\r\n\r\n /**\r\n * Skips default API Prefix for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipApiPrefix(): HttpCustomClient;\r\n\r\n\r\n /**\r\n * Skips default Token Interceptor for this request.\r\n * @return {HttpCustomClient} The new instance.\r\n */\r\n skipToken(): HttpCustomClient;\r\n\r\n /**\r\n* Skips default Header Interceptor for this request.\r\n* @return {HttpCustomClient} The new instance.\r\n*/\r\n skipHeader(): HttpCustomClient;\r\n\r\n}\r\n\r\n\r\n// From @angular/common/http/src/interceptor: allows to chain interceptors\r\nclass HttpInterceptorHandler implements HttpHandler {\r\n\r\n constructor(private next: HttpHandler, private interceptor: HttpInterceptor) { }\r\n\r\n handle(request: HttpRequest<any>): Observable<HttpEvent<any>> {\r\n return this.interceptor.intercept(request, this.next);\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Allows to override default dynamic interceptors that can be disabled with the HttpService extension.\r\n * Except for very specific needs, you should better configure these interceptors directly in the constructor below\r\n * for better readability.\r\n *\r\n * For static interceptors that should always be enabled (like ApiPrefixInterceptor), use the standard\r\n * HTTP_INTERCEPTORS token.\r\n */\r\nexport const HTTP_DYNAMIC_INTERCEPTORS = new InjectionToken<HttpInterceptor>('HTTP_DYNAMIC_INTERCEPTORS');\r\n\r\n/**\r\n * Extends HttpClient with per request configuration using dynamic interceptors.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpService extends HttpClient implements HttpCustomClient {\r\n\r\n constructor(private httpHandler: HttpHandler,\r\n private injector: Injector,\r\n @Optional() @Inject(HTTP_DYNAMIC_INTERCEPTORS) private interceptors: HttpInterceptor[] = []) {\r\n super(httpHandler);\r\n\r\n if (!this.interceptors) {\r\n // Configure default interceptors that can be disabled here\r\n this.interceptors = [this.injector.get(ApiPrefixInterceptor), this.injector.get(HeaderInterceptor), this.injector.get(TokenInterceptor), this.injector.get(ErrorHandlerInterceptor)];\r\n }\r\n }\r\n\r\n cache(forceUpdate?: boolean): HttpService {\r\n const cacheInterceptor = this.injector.get(CacheInterceptor).configure({ update: forceUpdate });\r\n return this.addInterceptor(cacheInterceptor);\r\n }\r\n\r\n skipErrorHandler(): HttpService {\r\n return this.removeInterceptor(ErrorHandlerInterceptor);\r\n }\r\n\r\n skipApiPrefix(): HttpService {\r\n return this.removeInterceptor(ApiPrefixInterceptor);\r\n }\r\n\r\n skipToken(): HttpService {\r\n return this.removeInterceptor(TokenInterceptor);\r\n }\r\n\r\n skipHeader(): HttpService {\r\n return this.removeInterceptor(HeaderInterceptor);\r\n }\r\n\r\n // Override the original method to wire interceptors when triggering the request.\r\n request(method?: any, url?: any, options?: any): any {\r\n const handler = this.interceptors.reduceRight(\r\n (next, interceptor) => new HttpInterceptorHandler(next, interceptor),\r\n this.httpHandler\r\n );\r\n return new HttpClient(handler).request(method, url, options);\r\n }\r\n\r\n private removeInterceptor(interceptorType: Function): HttpService {\r\n return new HttpService(\r\n this.httpHandler,\r\n this.injector,\r\n this.interceptors.filter(i => !(i instanceof interceptorType))\r\n );\r\n }\r\n\r\n private addInterceptor(interceptor: HttpInterceptor): HttpService {\r\n return new HttpService(\r\n this.httpHandler,\r\n this.injector,\r\n this.interceptors.concat([interceptor])\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityFileService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getEntityFiles(filters: any) {\r\n return this.http.get(`api/entity-files`, { params: filters }).toPromise();\r\n }\r\n\r\n createEntityFile(model: any) {\r\n return this.http.post(\"api/entity-files\", model).toPromise();\r\n }\r\n\r\n updateEntityFile(model: any) {\r\n return this.http.put(`api/entity-files/${model.id}`, model).toPromise();\r\n }\r\n\r\n deleteEntityFile(model: any) {\r\n return this.http.delete(`api/entity-files/${model.id}`).toPromise();\r\n }\r\n\r\n uploadEntityFile(file: File, params?: any) {\r\n const formData: FormData = new FormData();\r\n formData.append(\"fileData\", file, file.name);\r\n if (params?.entity_id) {\r\n formData.append('entity_id', params.entity_id);\r\n formData.append('entity_type', params.entity_type);\r\n }\r\n return this.http\r\n .skipHeader()\r\n .post(\r\n \"api/entity-files-upload\",\r\n formData,\r\n ).toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormValidatorService {\r\n\r\n constructor() { }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string, formGroup: FormGroup | any, firstAttempt?: boolean) {\r\n return (!formGroup.get(field).valid && formGroup.get(field).touched) ||\r\n (!formGroup.get(field).valid && formGroup.get(field).untouched && firstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string, formGroup: FormGroup | any, errorMessages: any, errorField?: string) {\r\n const error = Object.keys(formGroup.get(field).errors);\r\n return (error.length > 0) ? (errorMessages[errorField || field][error[0]] ? errorMessages[errorField || field][error[0]] : '') : '';\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from \"@angular/core\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\r\nimport { EntityFileService } from '../entity-file.service';\r\nimport { FileDropperConfig } from '../../file-dropper/file-dropper.model';\r\nimport { ViewerConfig } from '../../document-viewer/viewer-config.model';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { AlertService } from \"../../core/alert.service\";\r\n\r\nconst errorMessages: any = {\r\n url: {\r\n required: \"File is required\"\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'entity-file-form',\r\n templateUrl: './entity-file-form.component.html',\r\n styleUrls: ['./entity-file-form.component.css']\r\n})\r\nexport class EntityFileFormComponent implements OnInit {\r\n\r\n entityFileGroup: FormGroup;\r\n assignmentFileFirstAttempt: boolean;\r\n updateMode: boolean;\r\n fileConfig: FileDropperConfig;\r\n fileList: any[] = [];\r\n viewerConfig: ViewerConfig;\r\n hideTitleAndDetails: boolean;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<EntityFileFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private formValidatorService: FormValidatorService,\r\n private fb: FormBuilder,\r\n private entityFileService: EntityFileService,\r\n private alertService: AlertService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.entityFileGroup = this.fb.group({\r\n id: [''],\r\n title: [''],\r\n details: [''],\r\n entity_type: [''],\r\n entity_id: [],\r\n file: ['', Validators.required],\r\n url: ['', Validators.required],\r\n file_size: ['', Validators.required],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.data.entity) {\r\n this.entityFileGroup.get('entity_type').setValue(this.data.entity.entity_type);\r\n this.entityFileGroup.get('entity_id').setValue(this.data.entity.entity_id);\r\n }\r\n if (this.data.file) {\r\n this.updateMode = true;\r\n this.entityFileGroup.patchValue(this.data.file);\r\n }\r\n\r\n if (this.data?.hideTitleAndDetails) {\r\n this.hideTitleAndDetails = this.data?.hideTitleAndDetails;\r\n }\r\n\r\n //File dropper config\r\n this.fileConfig = {\r\n fileId: \"subjectFile\",\r\n containerId: \"subjectFileContainer\",\r\n styles: {\r\n height: \"200px\"\r\n },\r\n multiple: false,\r\n acceptFile: \"*\",\r\n maxSize: 10,\r\n acceptFileText: \"All Files\"\r\n };\r\n\r\n this.viewerConfig = {\r\n viewerStyle: {\r\n height: '200px',\r\n width: '100%'\r\n }\r\n }\r\n }\r\n\r\n\r\n //Method to trigger submit\r\n async submit() {\r\n this.assignmentFileFirstAttempt = true;\r\n if (!this.entityFileGroup.valid) {\r\n return;\r\n }\r\n const model = this.entityFileGroup.value;\r\n\r\n if (this.hideTitleAndDetails) {\r\n model.title = model.file;\r\n }\r\n\r\n const result: any = this.updateMode\r\n ? await this.entityFileService.updateEntityFile(model)\r\n : await this.entityFileService.createEntityFile(model);\r\n this.dialogRef.close(result.item);\r\n this.alertService.addAlert(\r\n \"File submitted successfully\",\r\n \"success\"\r\n );\r\n\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.fileList = event;\r\n\r\n if (this.fileList.length > 0) {\r\n\r\n const result: any = await this.entityFileService.uploadEntityFile(\r\n this.fileList[0],\r\n );\r\n this.entityFileGroup.patchValue(result.item);;\r\n this.fileList = [];\r\n }\r\n }\r\n\r\n\r\n async removeFile() {\r\n if (this.entityFileGroup.value.file) {\r\n try {\r\n this.entityFileGroup.patchValue({\r\n file: \"\",\r\n url: \"\"\r\n });\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to remove file, try later\", \"warn\");\r\n }\r\n }\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(\r\n field,\r\n this.entityFileGroup,\r\n this.assignmentFileFirstAttempt\r\n );\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(\r\n field,\r\n this.entityFileGroup,\r\n errorMessages\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\r\nimport { EntityFileService } from './entity-file.service';\r\nimport { ActionPopup } from '../action-popup/action-popup.model';\r\nimport { FormControl } from '@angular/forms';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { ActionPopupComponent } from '../action-popup/action-popup.component';\r\nimport { ViewerConfig } from '../document-viewer/viewer-config.model';\r\nimport { FileDropperConfig } from '../file-dropper';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-entity-files-view-all',\r\n templateUrl: './entity-files-view-all.component.html',\r\n styleUrls: ['./entity-files-view-all.component.css']\r\n})\r\nexport class EntityFilesViewAllComponent implements OnInit {\r\n @Input() entityId: number;\r\n @Input() entityType: string;\r\n @Input() viewOnly: boolean = false;\r\n @Input() removeSearch: boolean;\r\n @Input() hideTitleAndDetails: boolean;\r\n @Input() displayMode: boolean;\r\n @Input() allowMultipleFiles: boolean = false;\r\n viewerConfig: ViewerConfig;\r\n @Input() title: string = \"File\";\r\n filters: any = {};\r\n entityFiles: any[] = [];\r\n displayedColumns = [\r\n 'index',\r\n 'title',\r\n 'details',\r\n 'file_size',\r\n 'uploaded_on',\r\n ];\r\n isWorking: boolean = false;\r\n search: FormControl = new FormControl('');\r\n page: number = 1;\r\n perPage: number = 25;\r\n lastPage: number = 0;\r\n fileConfig: FileDropperConfig;\r\n fileList: any[] = [];\r\n\r\n constructor(\r\n private entityFileService: EntityFileService,\r\n public location: Location,\r\n private alertService: AlertService,\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n //File dropper config\r\n this.fileConfig = {\r\n fileId: \"entityDashboardDropper\",\r\n containerId: \"entityDashboardDropperContainer\",\r\n styles: {\r\n height: \"500px\"\r\n },\r\n multiple: this.allowMultipleFiles,\r\n acceptFile: \"*\",\r\n maxSize: 10,\r\n acceptFileText: \"All Files\"\r\n };\r\n\r\n this.viewerConfig = {\r\n imageStyle: {\r\n height: '200px',\r\n width: '200px'\r\n },\r\n viewerStyle: {\r\n height: ' 160px',\r\n width: '200px'\r\n },\r\n hideRemove: true\r\n };\r\n\r\n if (this.hideTitleAndDetails) {\r\n this.displayedColumns = this.displayedColumns.filter(x => (x !== 'details') && (x !== 'title'));\r\n }\r\n\r\n this.filters = {\r\n entity_type: this.entityType,\r\n entity_id: this.entityId,\r\n title: \"\"\r\n };\r\n this.search.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => {\r\n this.filters.title = value;\r\n this.reload();\r\n })\r\n this.fetchEntityFilesDetails();\r\n if (!this.viewOnly) {\r\n this.displayedColumns.push('actions');\r\n }\r\n }\r\n\r\n async fetchEntityFilesDetails() {\r\n this.filters.page = this.page;\r\n this.filters.perPage = this.perPage;\r\n this.isWorking = true;\r\n const result: any = await this.entityFileService.getEntityFiles(this.filters);\r\n this.lastPage = result.last_page || this.page;\r\n this.entityFiles = this.entityFiles.concat(result.data);\r\n this.isWorking = false;\r\n }\r\n\r\n addEntityFile() {\r\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\r\n width: \"700px\",\r\n data: {\r\n entity: this.filters,\r\n hideTitleAndDetails: this.hideTitleAndDetails\r\n },\r\n autoFocus: false,\r\n restoreFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n const files = [...this.entityFiles];\r\n files.push(result);\r\n this.entityFiles = files;\r\n }\r\n });\r\n }\r\n\r\n editEntityFile(file: any) {\r\n const dialogRef = this.dialog.open(EntityFileFormComponent, {\r\n width: \"700px\",\r\n autoFocus: false,\r\n data: {\r\n file: file,\r\n hideTitleAndDetails: this.hideTitleAndDetails\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEntityFile(file: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: \"Delete File\",\r\n message: `Are you sure to proceed delete the file ${file.title}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n const result = await this.entityFileService.deleteEntityFile(\r\n file\r\n );\r\n this.alertService.addAlert(\r\n \"File successfully deleted\",\r\n \"success\"\r\n );\r\n this.reload();\r\n\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage && !this.isWorking) {\r\n this.page += 1;\r\n this.fetchEntityFilesDetails();\r\n }\r\n }\r\n\r\n reload() {\r\n this.entityFiles = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.fetchEntityFilesDetails();\r\n }\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n resetFieldValue() {\r\n this.search.setValue(\"\");\r\n }\r\n\r\n sizeOf(bytes) {\r\n if (!bytes) { return \"0.00 B\"; }\r\n var e = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return (bytes / Math.pow(1024, e)).toFixed(2) + ' ' + ' KMGTP'.charAt(e) + 'B';\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.fileList = event;\r\n if (this.fileList.length > 0) {\r\n await this.fileList.forEach(async file => {\r\n const result: any = await this.entityFileService.uploadEntityFile(\r\n file,\r\n {\r\n entity_type: this.entityType,\r\n entity_id: this.entityId,\r\n }\r\n );\r\n this.reload();\r\n });\r\n this.fileList = [];\r\n this.alertService.addAlert('Successfull uploaded', 'success');\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AlertService } from \"../core/alert.service\";\r\nimport { FileDropperConfig } from './file-dropper.model';\r\n\r\n\r\n@Component({\r\n selector: \"app-file-dropper\",\r\n templateUrl: \"./file-dropper.component.html\",\r\n styleUrls: [\"./file-dropper.component.scss\"]\r\n})\r\nexport class FileDropperComponent implements OnInit {\r\n @Input() fileArray: any[] = [];\r\n\r\n @Input() config: FileDropperConfig;\r\n\r\n @Output() fileChanged: any = new EventEmitter();\r\n\r\n border = \"1px dashed #989898\";\r\n\r\n @Input() styles: any;\r\n\r\n isSingleMode: boolean;\r\n\r\n constructor(private alertService: AlertService) { }\r\n\r\n /**Life cycle hook method */\r\n ngOnInit() {\r\n this.isSingleMode = !Boolean(this.config.multiple);\r\n }\r\n\r\n /**Method for dragging event */\r\n dragEnter(event: any) {\r\n event.target.style.background = this.config.dragColor || \"#c0c0c0\";\r\n\r\n event.target.style.border = \"1px dashed black\";\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drag over event */\r\n dragOver(event: any) {\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drag leave event */\r\n dragLeave(event: any) {\r\n event.target.style.background = \"\";\r\n event.target.style.border = this.border;\r\n\r\n event.preventDefault();\r\n }\r\n\r\n /**Method for drop event */\r\n dropEvent(event: any) {\r\n event.target.style.background = \"\";\r\n event.target.style.border = this.border;\r\n const droppedFiles: FileList = event.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n const fileArray = Array.from(droppedFiles);\r\n this.addFiles(fileArray);\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n /**Method to list files selected */\r\n onFileChange(event: any) {\r\n if (event.target.files && event.target.files.length) {\r\n const fileArray = Array.from(event.target.files);\r\n this.addFiles(fileArray);\r\n const fileInput = document.getElementById(\r\n this.config.fileId\r\n ) as HTMLInputElement;\r\n fileInput.value = \"\";\r\n }\r\n }\r\n\r\n /**Method to add files in the array */\r\n addFiles(fileArray: any) {\r\n if (!this.isSingleMode) {\r\n fileArray.forEach((file: any) => {\r\n this.fileArray = this.fileArray.filter(\r\n (item: any) => item.name !== file.name\r\n );\r\n if (this.fileSizeAllowed(file)) {\r\n this.fileArray.push(file);\r\n }\r\n });\r\n\r\n this.fileArray.sort(this.sortFiles);\r\n this.fileChanged.emit(this.fileArray);\r\n } else {\r\n // Single Mode\r\n if (this.fileArray.length === 0) {\r\n if (this.fileSizeAllowed(fileArray[0])) {\r\n this.fileArray.push(fileArray[0]);\r\n this.fileArray.sort(this.sortFiles);\r\n this.fileChanged.emit(this.fileArray);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**Method to sort the files in asc */\r\n sortFiles(a: any, b: any) {\r\n const nameA = a.name.toUpperCase();\r\n const nameB = b.name.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**Method tp validate the file size */\r\n fileSizeAllowed(file: any): boolean {\r\n if (!Boolean(this.config.maxSize)) {\r\n return true;\r\n } else if (file.size / (1024 * 1024) < this.config.maxSize) {\r\n return true;\r\n } else {\r\n this.alertService.addAlert(\r\n `The size of the file exceeds the limit ${this.config.maxSize} MB, kindly upload a file with size ${this.config.maxSize} MB or below`,\r\n \"warn\"\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n /**Method invokes when the drop box is clicked to upload the file */\r\n clickEvent(event: any) {\r\n if (!(this.isSingleMode && this.fileArray.length > 0)) {\r\n document.getElementById(this.config.fileId).click();\r\n }\r\n event.preventDefault();\r\n }\r\n}\r\n","export class FileDropperConfig {\r\n containerId: string;\r\n fileId: string;\r\n styles?: any;\r\n multiple?: boolean;\r\n dragColor?: boolean;\r\n acceptFile: string; // use '*' to accept all file types.\r\n maxSize?: number; // size in MB\r\n acceptFileText?: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NoteService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getNotes(filterModel: any) {\r\n return this.http.get('api/notes', { params: filterModel }).toPromise();\r\n }\r\n\r\n addNote(note: any) {\r\n return this.http.post('api/notes', note).toPromise();\r\n }\r\n\r\n editNote(note: any) {\r\n return this.http.put(`api/notes/${note.id}`, note).toPromise();\r\n }\r\n\r\n deleteNote(note: any) {\r\n return this.http.delete(`api/notes/${note.id}`).toPromise();\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from \"@angular/core\";\r\nimport { FormGroup, FormBuilder, Validators } from \"@angular/forms\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { NoteService } from \"../note.service\";\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { AlertService } from \"../../core/alert.service\";\r\n\r\nconst errorMessages: any = {\r\n note: {\r\n required: \"Note is required\"\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'app-note-form',\r\n templateUrl: './note-form.component.html',\r\n styleUrls: ['./note-form.component.css']\r\n})\r\nexport class NoteFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n noteFormGroup: FormGroup;\r\n noteFormFirstAttempt: boolean;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<NoteFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n private noteService: NoteService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.noteFormGroup = this.fb.group({\r\n id: [\"\"],\r\n note: [\"\", Validators.compose([Validators.required])],\r\n model_type: [\"\"],\r\n related_model_id: [\"\"],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.update) {\r\n this.updateMode = true;\r\n }\r\n this.noteFormGroup.patchValue(this.data.note);\r\n }\r\n\r\n //Method to trigger login\r\n async submit() {\r\n this.noteFormFirstAttempt = true;\r\n if (this.noteFormGroup.valid) {\r\n const model = this.noteFormGroup.value;\r\n const result = this.updateMode\r\n ? await this.noteService.editNote(model)\r\n : await this.noteService.addNote(model);\r\n\r\n this.alertService.addAlert(\r\n `${this.data?.labelText} saved successfully`,\r\n \"success\"\r\n );\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(\r\n field,\r\n this.noteFormGroup,\r\n this.noteFormFirstAttempt\r\n );\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(\r\n field,\r\n this.noteFormGroup,\r\n errorMessages\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NoteService } from '../note.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NoteFormComponent } from '../note-form/note-form.component';\r\nimport { ActionPopupComponent } from '../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../action-popup/action-popup.model';\r\n\r\n@Component({\r\n selector: 'app-note-list',\r\n templateUrl: './note-list.component.html',\r\n styleUrls: ['./note-list.component.css']\r\n})\r\nexport class NoteListComponent implements OnInit {\r\n\r\n @Input() relatedModelId !: any;\r\n @Input() modelType !: any;\r\n @Input() readonly: boolean = false;\r\n @Input() labelText: string = 'Note';\r\n @Input() commentsView: boolean = false;\r\n\r\n notes: any[] = [];\r\n filters: any;\r\n displayedColumns = [\r\n 'index',\r\n 'note',\r\n 'actions'\r\n ];\r\n\r\n page = 1;\r\n lastPage = 1;\r\n\r\n constructor(private noteService: NoteService,\r\n private dialog: MatDialog\r\n ) {\r\n this.filters = {};\r\n this.filters.sort_by = \"created_at|DESC\";\r\n }\r\n\r\n ngOnInit() {\r\n if (this.readonly) {\r\n this.displayedColumns = this.displayedColumns.filter(x => x !== 'actions');\r\n }\r\n this.filters.related_model_id = this.relatedModelId;\r\n this.filters.model_type = this.modelType;\r\n this.loadData();\r\n }\r\n\r\n async loadData() {\r\n\r\n const result: any = await this.noteService.getNotes({ ...this.filters, page: this.page });\r\n this.notes = this.notes.concat(result.data);\r\n this.page = result.current_page;\r\n this.lastPage = result.last_page;\r\n }\r\n\r\n addNote() {\r\n const dialogRef = this.dialog.open(NoteFormComponent, {\r\n width: \"400px\",\r\n data: {\r\n note: { related_model_id: this.relatedModelId, model_type: this.modelType },\r\n labelText: this.labelText,\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.resetScroll();\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n editNote(note: any) {\r\n const dialogRef = this.dialog.open(NoteFormComponent, {\r\n width: \"400px\",\r\n data: {\r\n note: note,\r\n update: true,\r\n labelText: this.labelText\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.resetScroll();\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n async deleteNote(note: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: `Delete ${this.labelText}`,\r\n message: `Are you sure to delete?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n\r\n const result = await this.noteService.deleteNote(note);\r\n this.notes = this.notes.filter((item: any) => item.id !== note.id);\r\n\r\n }\r\n });\r\n }\r\n\r\n resetScroll() {\r\n this.page = 1;\r\n this.lastPage = 1;\r\n this.notes = [];\r\n }\r\n\r\n onScroll() {\r\n if (this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n commentAction(event: any) {\r\n if (event.type === \"save\") {\r\n if (event.value.id) {\r\n this.editComment(event.value);\r\n return;\r\n }\r\n this.addComment(event.value);\r\n return;\r\n }\r\n this.deleteNote(event.value);\r\n }\r\n\r\n async editComment(comment: any) {\r\n const result: any = await this.noteService.editNote(comment);\r\n let index = this.notes.findIndex(\r\n (x: any) => x.id === comment.id\r\n );\r\n if (index !== -1) {\r\n this.notes[index] = result.item;\r\n }\r\n }\r\n\r\n async addComment(comment: any) {\r\n comment.related_model_id = this.relatedModelId;\r\n comment.model_type = this.modelType;\r\n const result: any = await this.noteService.addNote(comment);\r\n this.notes.push(result.item);\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnDestroy\r\n} from \"@angular/core\";\r\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\r\nimport { CredentialsService } from \"../../core/credentials.service\";\r\n\r\n@Component({\r\n selector: \"app-comment-form\",\r\n templateUrl: \"./comment-form.component.html\",\r\n styleUrls: [\"./comment-form.component.scss\"]\r\n})\r\nexport class CommentFormComponent implements OnInit, OnDestroy {\r\n commentFormGroup: FormGroup;\r\n view: boolean;\r\n _commentData: any;\r\n\r\n @Input() set commentData(data: any) {\r\n this.view = !!data;\r\n this._commentData = data;\r\n this.commentFormGroup.patchValue(data);\r\n }\r\n\r\n @Output() action = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder,\r\n private credentialService: CredentialsService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n get isLoggedIn() {\r\n return this.credentialService.isAuthenticated;\r\n }\r\n\r\n get currentUser() {\r\n return this.credentialService.credentials.user;\r\n }\r\n\r\n private createForm() {\r\n //TODO: Finialize and add more validations.\r\n this.commentFormGroup = this.fb.group({\r\n id: [\"\"],\r\n note: [\"\"],\r\n model_type: [\"\"],\r\n related_model_id: [\"\"],\r\n });\r\n }\r\n\r\n submit() {\r\n if (this.commentFormGroup.get(\"note\").value) {\r\n if (this._commentData) {\r\n this.view = !this.view;\r\n }\r\n this.action.emit({ type: \"save\", value: this.commentFormGroup.value });\r\n this.commentFormGroup.reset();\r\n } else if (this.commentFormGroup.get(\"id\").value) {\r\n this.deleteComment();\r\n }\r\n }\r\n\r\n hideEdit() {\r\n if (this.commentFormGroup.get(\"id\").value) {\r\n this.view = !this.view;\r\n }\r\n }\r\n\r\n editComment() {\r\n this.view = !this.view;\r\n this.commentFormGroup.patchValue(this._commentData);\r\n }\r\n\r\n deleteComment() {\r\n this.action.emit({ type: \"delete\", value: this.commentFormGroup.value });\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, Input, OnDestroy, OnInit, Optional, Self, Output, EventEmitter, TemplateRef } from '@angular/core';\r\nimport { FormBuilder, FormGroup, ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject, of, from } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, startWith, switchMap, finalize } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentType } from '@angular/cdk/portal';\r\nimport { HttpService } from '../core/http.service';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-searchable-selector',\r\n templateUrl: './searchable-selector.component.html',\r\n styleUrls: ['./searchable-selector.component.scss'],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: SearchableSelectorComponent\r\n }\r\n ]\r\n})\r\nexport class SearchableSelectorComponent implements ControlValueAccessor, OnInit, OnDestroy {\r\n\r\n @Input() valueField: string = 'id';\r\n @Input() titleField: string = 'title';\r\n @Input() apiUrl!: string;\r\n @Input() multiple: boolean = false;\r\n @Input() selectedValue: any;\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Input() enableSearch: boolean = true;\r\n @Input() add: boolean = false;\r\n @Input() addConfig: any;\r\n @Input() edit: boolean = false;\r\n @Input() editConfig: any;\r\n @Input() sort: boolean = true;\r\n @Input() sortBy: string;\r\n @Input() searchField: string;\r\n @Input() itemComponent: ComponentType<unknown> | TemplateRef<unknown>;\r\n @Input() items: any[] = [];\r\n @Input() apiDataProperty: string = 'data';\r\n @Input() cache: boolean = false;\r\n @Input() perPage: number = 25;\r\n @Input() inDataSearch: boolean = false;\r\n @Output() selectionChange = new EventEmitter();\r\n @Output() itemsChange = new EventEmitter();\r\n\r\n\r\n isLoading: boolean = false;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n static nextId = 0;\r\n selectorForm: FormGroup;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'searchable-selctor';\r\n id = `searchable-selctor-${SearchableSelectorComponent.nextId++}`;\r\n describedBy = '';\r\n filters: any;\r\n cachedItems: any[] = [];\r\n\r\n\r\n get empty() {\r\n const { value: { select_value } } = this.selectorForm;\r\n return !select_value;\r\n }\r\n\r\n get shouldLabelFloat() { return this.focused || !this.empty; }\r\n\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: boolean) {\r\n this.selectorForm.get('select_value').setValidators(Validators.required);\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n @Input()\r\n get value(): any {\r\n if (this.selectorForm.valid) {\r\n return this.selectorForm.value.select_value;\r\n }\r\n return '';\r\n }\r\n set value(data: any) {\r\n this.selectorForm.patchValue({ select_value: data || '' });\r\n this.stateChanges.next();\r\n }\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n private _focusMonitor: FocusMonitor,\r\n private http: HttpService,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private dialog: MatDialog,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n this.selectorForm = formBuilder.group({\r\n select_value: [null],\r\n search: ''\r\n });\r\n\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n openedChange(event: any) {\r\n if (this.dataItems.length === 0 && this.selectorForm.get('search').value) {\r\n this.selectorForm.get('search').setValue('');\r\n }\r\n }\r\n\r\n get dataItems(): any[] {\r\n let items: any[] = [];\r\n if (this.multiple && this.selectedValue && (this.selectedValue.length > 0))\r\n items = [...this.selectedValue, ...this.items];\r\n else if ((!this.multiple) && this.selectedValue)\r\n items = [this.selectedValue, ...this.items];\r\n else\r\n items = this.items;\r\n items = items.filter((v, i, a) => a.findIndex(v => v[this.valueField] === a[i][this.valueField]) === i);\r\n //Emit the items to any child component\r\n this.itemsChange.emit(items);\r\n return items;\r\n }\r\n\r\n ngOnInit() {\r\n this.selectorForm.get('search').valueChanges\r\n .pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n if (this.enableSearch)\r\n this.search(value);\r\n });\r\n\r\n this.filters = {\r\n perPage: this.perPage,\r\n search: '',\r\n page: 1,\r\n lastPage: 1\r\n }\r\n if (this.sort) {\r\n this.filters.sort_by = this.sortBy || `${this.titleField}|asc`;\r\n }\r\n\r\n //Fetch Items only if it is not present, can be used in places where we load many entries.\r\n if (this.items.length === 0) {\r\n this.fetchItemList();\r\n }\r\n }\r\n\r\n fetchItemList() {\r\n this.isLoading = true;\r\n let request = this.http.get(this.apiUrl, { params: this.filters })\r\n if (this.cache) {\r\n request = this.http.cache().get(this.apiUrl, { params: this.filters })\r\n }\r\n of().pipe(\r\n startWith(true),\r\n switchMap((_) => from(request)),\r\n finalize(() => this.isLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.items = this.items.concat(result[this.apiDataProperty]);\r\n if (this.cache) {\r\n this.cachedItems = this.items;\r\n }\r\n this.filters.page = result?.current_page || 1;\r\n this.filters.lastPage = result?.last_page || 1;\r\n });\r\n }\r\n\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n writeValue(data: any): void {\r\n this.value = data;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n getPropertyValue(ele: any, keyString: string) {\r\n keyString = keyString.replace(/\\[(\\w+)\\]/g, \".$1\"); // convert indexes to properties\r\n keyString = keyString.replace(/^\\./, \"\"); // strip a leading dot\r\n const keyList = keyString.split(\".\");\r\n for (let i = 0, n = keyList.length; i < n; ++i) {\r\n const key = keyList[i];\r\n if (ele && key in ele) {\r\n ele = ele[key];\r\n } else {\r\n return;\r\n }\r\n }\r\n return ele;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n if (this.multiple)\r\n this.selectedValue = (this.value as []).map(x => this.dataItems.find(y => y[this.valueField] === x));\r\n else\r\n this.selectedValue = this.dataItems.find(x => x[this.valueField] === this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(this.value);\r\n }\r\n\r\n get errorState(): boolean {\r\n return (this.ngControl && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty));\r\n }\r\n\r\n static ngAcceptInputType_disabled: boolean | string | null | undefined;\r\n static ngAcceptInputType_required: boolean | string | null | undefined;\r\n\r\n onScroll() {\r\n if (this.filters.lastPage > this.filters.page) {\r\n this.filters.page += 1;\r\n this.fetchItemList();\r\n }\r\n }\r\n\r\n reloadData() {\r\n this.items = [];\r\n this.filters.page = 1;\r\n this.filters.lastPage = 1;\r\n this.fetchItemList();\r\n }\r\n\r\n search(event: any) {\r\n if (this.searchField) {\r\n this.filters[this.searchField] = event;\r\n } else {\r\n this.filters.search = event;\r\n }\r\n // we need search field to search in data\r\n if (this.inDataSearch && this.searchField) {\r\n this.filterItems(event);\r\n } else {\r\n this.reloadData();\r\n }\r\n }\r\n\r\n filterItems(event: string) {\r\n if (event) {\r\n this.items = this.cachedItems.filter((value: any) => {\r\n return (value[this.searchField] as string).toLowerCase().search(event.toLowerCase()) != -1\r\n })\r\n } else {\r\n this.items = this.cachedItems;\r\n }\r\n }\r\n\r\n addItem(event: any) {\r\n const dialogRef = this.dialog.open(this.itemComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {},\r\n ...this.addConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.items.push(result.item);\r\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\r\n this._handleInput();\r\n }\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n editItem(event: any) {\r\n const dialogRef = this.dialog.open(this.itemComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {\r\n item: this.selectedValue\r\n },\r\n ...this.editConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.items = this.items.filter(x => x[this.valueField] !== this.selectedValue[this.valueField]);\r\n this.items.push(result.item);\r\n this.selectedValue = null;\r\n this.selectorForm.get('select_value').setValue(result.item[this.valueField]);\r\n this._handleInput();\r\n }\r\n });\r\n event.stopPropagation();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatSelect, SELECT_ITEM_HEIGHT_EM } from '@angular/material/select';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\nimport { fromEvent, Subject } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[msInfiniteScroll]'\r\n})\r\nexport class MatSelectInfiniteScrollDirective implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @Input() threshold = '15%';\r\n @Input() debounceTime = 150;\r\n @Input() complete: boolean;\r\n @Output() infiniteScroll = new EventEmitter<void>();\r\n\r\n private panel: Element;\r\n private thrPx = 0;\r\n private thrPc = 0;\r\n private singleOptionHeight = SELECT_ITEM_HEIGHT_EM;\r\n\r\n private destroyed$ = new Subject<boolean>();\r\n\r\n constructor(private matSelect: MatSelect, private ngZone: NgZone) {\r\n }\r\n\r\n ngOnInit() {\r\n this.evaluateThreshold();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.matSelect.openedChange.pipe(\r\n takeUntil(this.destroyed$)\r\n ).subscribe((opened) => {\r\n if (opened) {\r\n this.panel = this.matSelect.panel.nativeElement;\r\n this.singleOptionHeight = this.getSelectItemHeightPx();\r\n this.registerScrollListener();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n }\r\n\r\n evaluateThreshold() {\r\n if (this.threshold.lastIndexOf('%') > -1) {\r\n this.thrPx = 0;\r\n this.thrPc = (parseFloat(this.threshold) / 100);\r\n\r\n } else {\r\n this.thrPx = parseFloat(this.threshold);\r\n this.thrPc = 0;\r\n }\r\n }\r\n\r\n registerScrollListener() {\r\n fromEvent(this.panel, 'scroll').pipe(\r\n takeUntil(this.destroyed$),\r\n debounceTime(this.debounceTime),\r\n tap((event) => {\r\n this.handleScrollEvent(event);\r\n })\r\n ).subscribe();\r\n }\r\n\r\n handleScrollEvent(event) {\r\n this.ngZone.runOutsideAngular(() => {\r\n if (this.complete) {\r\n return;\r\n }\r\n const countOfRenderedOptions = this.matSelect.options.length;\r\n const infiniteScrollDistance = this.singleOptionHeight * countOfRenderedOptions;\r\n const threshold = this.thrPc !== 0 ? (infiniteScrollDistance * this.thrPc) : this.thrPx;\r\n\r\n const scrolledDistance = this.panel.clientHeight + event.target.scrollTop;\r\n\r\n if ((scrolledDistance + threshold) >= infiniteScrollDistance) {\r\n this.ngZone.run(() => this.infiniteScroll.emit());\r\n }\r\n });\r\n }\r\n\r\n getSelectItemHeightPx(): number {\r\n return parseFloat(getComputedStyle(this.panel).fontSize) * SELECT_ITEM_HEIGHT_EM;\r\n }\r\n\r\n}","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a num items selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20170817\r\n */\r\n@Component({\r\n selector: \"num-items-selector\",\r\n templateUrl: \"./num-items-selector.html\"\r\n})\r\nexport class NumItemsSelector {\r\n @Input() numItems: number;\r\n @Output() numItemsChange: EventEmitter<number>;\r\n\r\n constructor() {\r\n this.numItemsChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numItemsChanged() {\r\n this.numItemsChange.emit(this.numItems);\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Service that provides utility functions for dates\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20170726\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateUtils {\r\n\r\n /**\r\n * Takes in a date object and outputs the string value\r\n */\r\n getYYYYMMDDString(inputDate: Date): string {\r\n var year = inputDate.getFullYear();\r\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\r\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\r\n\r\n return year + \"-\" + month + \"-\" + date;\r\n }\r\n\r\n /**\r\n * Takes in a date object and outputs the year\r\n */\r\n getYYYY(inputDate: Date): number {\r\n var year = inputDate.getFullYear();\r\n return year;\r\n }\r\n\r\n /**\r\n * Takes in a date object and outputs the Month\r\n */\r\n getMM(inputDate: Date): number {\r\n var month = inputDate.getMonth() + 1;\r\n return month;\r\n }\r\n // var n = this.rfidCardUseManualEntry.manual_date.toLocaleTimeString();\r\n\r\n getDateTime(inputDate: Date): string {\r\n var year = inputDate.getFullYear();\r\n var month = (inputDate.getMonth() + 1) < 10 ? (\"0\" + (inputDate.getMonth() + 1)) : (inputDate.getMonth() + 1);\r\n var date = inputDate.getDate() < 10 ? (\"0\" + inputDate.getDate()) : inputDate.getDate();\r\n var time = inputDate.toLocaleTimeString();\r\n\r\n return year + \"-\" + month + \"-\" + date + \" \" + time;\r\n }\r\n\r\n}","import { Component, Input, Output, EventEmitter, OnInit } from \"@angular/core\";\r\n\r\n/**\r\n * Component to generate a number selector\r\n * \r\n * @author Floyd Kissoon\r\n * @since 20180628\r\n */\r\n@Component({\r\n selector: \"number-selector\",\r\n templateUrl: \"./number-selector.html\"\r\n})\r\nexport class NumberSelector implements OnInit {\r\n @Input() start_value: number;\r\n @Input() end_value: number\r\n @Output() selectedValueChange: EventEmitter<number>;\r\n @Input() selectedValue: number;\r\n\r\n items = new Array();\r\n\r\n constructor() {\r\n this.selectedValueChange = new EventEmitter<number>();\r\n }\r\n\r\n /**\r\n * Called when an item has been selected\r\n */\r\n numChanged() {\r\n this.selectedValueChange.emit(this.selectedValue);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n for (var i = this.start_value; i < this.end_value + 1; i++) {\r\n this.items.push(i);\r\n }\r\n }\r\n}\r\n","export class Timeline {\r\n public static CUSTOM: number = 1;\r\n public static TODAY: number = 2;\r\n public static YESTERDAY: number = 3;\r\n public static THIS_WEEK: number = 4;\r\n public static LAST_WEEK: number = 5;\r\n public static THIS_MONTH: number = 6;\r\n public static LAST_MONTH: number = 7;\r\n public static THIS_QUARTER: number = 8;\r\n public static LAST_QUARTER: number = 9;\r\n public static THIS_YEAR: number = 10;\r\n public static LAST_YEAR: number = 11;\r\n public static ALL: number = 12;\r\n public static TOMMOROW: number = 13;\r\n public static NEXT_WEEK: number = 14;\r\n public static NEXT_MONTH: number = 15;\r\n}\r\n","import * as moment_ from 'moment';\r\nconst moment = moment_;\r\nimport { Timeline } from \"./timeline.model\";\r\n\r\n\r\nexport interface TimelineValue {\r\n date_from: Date,\r\n date_to: Date,\r\n show_custom_field: boolean\r\n}\r\nexport function calculateTimeline(value: any) {\r\n const date = new Date();\r\n const data: any = {\r\n 'date_from': date,\r\n 'date_to': date,\r\n 'show_custom_field': false\r\n };\r\n switch (value) {\r\n case Timeline.CUSTOM: { //Custom\r\n data.show_custom_field = true;\r\n break;\r\n }\r\n case Timeline.TODAY: { // Today\r\n let now = moment();\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.YESTERDAY: { // Yesterday\r\n let now = moment().subtract(1, 'day');\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_WEEK: { // This Week\r\n let now = moment();\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_WEEK: { // Last Week\r\n let now = moment().subtract(1, 'week');\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_MONTH: { //This Month\r\n let now = moment();\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_MONTH: { // Last Month\r\n let now = moment().subtract(1, 'month');\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_QUARTER: { // This Quarter\r\n let now = moment();\r\n data.date_from = now.startOf('quarter').toISOString();\r\n data.date_to = now.endOf('quarter').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_QUARTER: { // Last Quarter\r\n let now = moment().subtract(1, 'quarter');\r\n data.date_from = now.startOf('quarter').toISOString();\r\n data.date_to = now.endOf('quarter').toISOString();\r\n break;\r\n }\r\n case Timeline.THIS_YEAR: { // This Year\r\n let now = moment();\r\n data.date_from = now.startOf('year').toISOString();\r\n data.date_to = now.endOf('year').toISOString();\r\n break;\r\n }\r\n case Timeline.LAST_YEAR: { // Last Year\r\n let now = moment().subtract(1, 'year');\r\n data.date_from = now.startOf('year').toISOString();\r\n data.date_to = now.endOf('year').toISOString();\r\n break;\r\n }\r\n case Timeline.TOMMOROW: {\r\n let now = moment().add(1, 'day');\r\n data.date_from = now.startOf('day').toISOString();\r\n data.date_to = now.endOf('day').toISOString();\r\n break;\r\n }\r\n case Timeline.NEXT_WEEK: {\r\n let now = moment().add(1, 'week');\r\n data.date_from = now.startOf('isoWeek').toISOString();\r\n data.date_to = now.endOf('isoWeek').toISOString();\r\n break;\r\n }\r\n case Timeline.NEXT_MONTH: {\r\n let now = moment().add(1, 'month');\r\n data.date_from = now.startOf('month').toISOString();\r\n data.date_to = now.endOf('month').toISOString();\r\n break;\r\n }\r\n default: { // All\r\n data.date_from = '';\r\n data.date_to = '';\r\n break;\r\n }\r\n\r\n }\r\n return data;\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { DatePipe } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, FormBuilder, FormControl, FormGroup, NgControl, Validators } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from \"@ngneat/until-destroy\";\r\nimport { TimelineValue, calculateTimeline } from './calculate-timeline';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Timeline } from './timeline.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-timeline-filter',\r\n templateUrl: './timeline-filter.component.html',\r\n styleUrls: ['./timeline-filter.component.scss'],\r\n providers: [\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: TimelineFilterComponent\r\n }\r\n ]\r\n})\r\nexport class TimelineFilterComponent implements OnInit, ControlValueAccessor {\r\n\r\n @ViewChild('picker') picker;\r\n @Input() timelineValue: FormControl = new FormControl('');\r\n @Input() timelines: any[] = [\r\n { value: Timeline.CUSTOM, viewValue: 'Custom' },\r\n { value: Timeline.TODAY, viewValue: 'Today' },\r\n { value: Timeline.YESTERDAY, viewValue: 'Yesterday' },\r\n { value: Timeline.TOMMOROW, viewValue: 'Tomorrow' },\r\n { value: Timeline.THIS_WEEK, viewValue: 'This Week' },\r\n { value: Timeline.LAST_WEEK, viewValue: 'Last Week' },\r\n { value: Timeline.NEXT_WEEK, viewValue: 'Next Week' },\r\n { value: Timeline.THIS_MONTH, viewValue: 'This Month' },\r\n { value: Timeline.LAST_MONTH, viewValue: 'Last Month' },\r\n { value: Timeline.NEXT_MONTH, viewValue: 'Next Month' },\r\n { value: Timeline.THIS_QUARTER, viewValue: 'This Quarter' },\r\n { value: Timeline.LAST_QUARTER, viewValue: 'Last Quarter' },\r\n { value: Timeline.THIS_YEAR, viewValue: 'This Year' },\r\n { value: Timeline.LAST_YEAR, viewValue: 'Last Year' },\r\n { value: Timeline.ALL, viewValue: 'All dates' },\r\n ];\r\n @Input() dateFrom: string = 'date_from';\r\n @Input() dateTo: string = 'date_to';\r\n @Input() appearance: any = \"legacy\"\r\n @Input() showClearbutton: boolean = false;\r\n /**\r\n * @deprecated The form input is deprated\r\n */\r\n @Input() form: FormGroup = null;\r\n @Input() labelText: string = 'Select Timeline';\r\n @Input() selectedValue: any;\r\n @Input() touchUi: boolean = true;\r\n @Output() selectedValueChange = new EventEmitter();\r\n @Output() selectionChange = new EventEmitter();\r\n\r\n selectorForm: FormGroup;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n controlType = 'timeline-filter';\r\n id = `timeline-filter-${TimelineFilterComponent.nextId++}`;\r\n describedBy = '';\r\n\r\n selectedRange: TimelineValue;\r\n @Input() set defaultValue(value: any) {\r\n this.timelineValue.setValue(value);\r\n this.changeTimeline(value);\r\n }\r\n\r\n showCustomDateFields: boolean = false;\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n @Optional() @Self() public ngControl: NgControl,\r\n private datePipe: DatePipe\r\n ) {\r\n this.selectorForm = formBuilder.group({\r\n select_value: [null],\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean { return this._required; }\r\n set required(value: boolean) {\r\n this.selectorForm.get('select_value').setValidators(Validators.required);\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean { return this._disabled; }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.selectorForm.disable() : this.selectorForm.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n @Input()\r\n get value(): any {\r\n if (this.selectorForm.valid) {\r\n return this.selectorForm.value.select_value;\r\n }\r\n return '';\r\n }\r\n set value(data: any) {\r\n this.selectorForm.patchValue({ select_value: data || '' });\r\n this._handleInput();\r\n this.stateChanges.next();\r\n }\r\n\r\n getDateRangeString() {\r\n let str = \"\";\r\n if (this.selectedRange?.show_custom_field) {\r\n if (this.selectedRange?.date_from.toUTCString() != 'Invalid Date') {\r\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_from?.toUTCString())\r\n }\r\n if (this.selectedRange?.date_to.toUTCString() != 'Invalid Date') {\r\n str += ' - ' + this.datePipe.transform(this.selectedRange?.date_to?.toUTCString())\r\n }\r\n }\r\n return str;\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.form.get(field).setValue('');\r\n }\r\n\r\n\r\n getFieldValue(field: string) {\r\n return this.form.get(field).value;\r\n }\r\n\r\n setFieldValue(field: string, value: any) {\r\n this.form.get(field).setValue(value);\r\n }\r\n\r\n changeTimeline(value: any) {\r\n const timeline = calculateTimeline(value);\r\n if (timeline) {\r\n this.setFieldValue(this.dateFrom, timeline.date_from)\r\n this.setFieldValue(this.dateTo, timeline.date_to)\r\n this.showCustomDateFields = timeline.show_custom_field;\r\n }\r\n }\r\n\r\n _handleInput(): void {\r\n if (this.value == 1) {\r\n this.picker.open();\r\n return;\r\n }\r\n const range: TimelineValue = calculateTimeline(this.value);\r\n this.selectedRange = range;\r\n this.onChange(this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(range);\r\n }\r\n\r\n dateRangeChange(dateRangeStart: HTMLInputElement, dateRangeEnd: HTMLInputElement) {\r\n const range: TimelineValue = {\r\n date_from : new Date(dateRangeStart.value),\r\n date_to: new Date(dateRangeEnd.value),\r\n show_custom_field: true\r\n }\r\n this.selectedRange = range;\r\n this.onChange(this.value);\r\n this.selectedValueChange.emit(this.selectedValue);\r\n this.selectionChange.emit(range);\r\n }\r\n\r\n onCustomDateChange(event: any) {\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.describedBy = ids.join(' ');\r\n }\r\n\r\n onContainerClick(event: MouseEvent) {\r\n event.stopPropagation();\r\n }\r\n\r\n writeValue(data: any): void {\r\n this.value = data;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.form);\r\n\r\n this.timelineValue.valueChanges.\r\n pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => this.changeTimeline(value));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.scss']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n @Input() isLoading = false;\r\n @Input() size = 0.6;\r\n @Input() message: string | undefined;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SuccessSnackComponent, ErrorSnackComponent } from './snack.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n@NgModule({\r\n declarations: [\r\n SuccessSnackComponent,\r\n ErrorSnackComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatSnackBarModule,\r\n MatIconModule\r\n ],\r\n exports: [\r\n SuccessSnackComponent,\r\n ErrorSnackComponent,\r\n ]\r\n})\r\nexport class SnackModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { CredentialsService } from './credentials.service';\r\nimport { Logger } from './logger.service';\r\n\r\nconst log = new Logger('AuthenticationGuard');\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationGuard implements CanActivate {\r\n\r\n constructor(private router: Router,\r\n private credentialsService: CredentialsService) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.isUserAuthenticated(route, state);\r\n }\r\n\r\n canLoad(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n return this.isUserAuthenticated(route, state);\r\n }\r\n\r\n isUserAuthenticated(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\r\n if (this.credentialsService.isAuthenticated) {\r\n return true;\r\n }\r\n\r\n log.debug('Not authenticated, redirecting and adding redirect url...');\r\n this.router.navigate(['/login'], { queryParams: { redirect: state.url }, replaceUrl: true });\r\n return false;\r\n }\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { concatMap, map } from 'rxjs/operators';\r\nimport { Credentials, CredentialsService } from './credentials.service';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Provides a base for authentication workflow.\r\n * The login/logout methods should be replaced with proper implementation.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n\r\n constructor(private credentialsService: CredentialsService, private http: HttpService) { }\r\n\r\n /**\r\n * Authenticates the user.\r\n * @param context The login parameters.\r\n * @return The user credentials.\r\n */\r\n login(context: any): Observable<Credentials> {\r\n const data = <Credentials>{};\r\n return this.http\r\n .skipToken()\r\n .post('oauth/token', context)\r\n .pipe(\r\n concatMap(async (tokenInfo: any) => {\r\n tokenInfo.expires_in = Date.now() + (tokenInfo.expires_in * 1000);\r\n data.token = tokenInfo;\r\n data.user = {};\r\n this.credentialsService.setCredentials(data, context.remember);\r\n const userInfo: any = await this.http.get('api/user/current').toPromise();\r\n data.user = userInfo?.user;\r\n this.credentialsService.setCredentials(data, context.remember);\r\n return data;\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Logs out the user and clear credentials.\r\n * @return True if the user was logged out successfully.\r\n */\r\n logout(): Observable<boolean> {\r\n\r\n this.credentialsService.setCredentials();\r\n return of(true);\r\n }\r\n\r\n}\r\n","import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * A route strategy allowing for explicit route reuse.\r\n * Used as a workaround for https://github.com/angular/angular/issues/18374\r\n * To reuse a given route, add `data: { reuse: true }` to the route definition.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouteReusableStrategy extends RouteReuseStrategy {\r\n\r\n public shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n public store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle | null): void { }\r\n\r\n public shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n return false;\r\n }\r\n\r\n public retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\r\n return null;\r\n }\r\n\r\n public shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n // Reuse the route if the RouteConfig is the same, or if both routes use the\r\n // same component, because the latter can have different RouteConfigs.\r\n return future.routeConfig === curr.routeConfig ||\r\n Boolean(future.routeConfig?.component &&\r\n future.routeConfig?.component === curr.routeConfig?.component);\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n/**\r\n * Service used to manage Local Storage\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20190623\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n private storageSub = new Subject<any>();\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n watch(): Observable<any> {\r\n return this.storageSub.asObservable();\r\n }\r\n\r\n setItem(key: string, data: any) {\r\n localStorage.setItem(key, data);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n\r\n getItem(key: string) {\r\n return localStorage.getItem(key);\r\n }\r\n\r\n removeItem(key: string) {\r\n const data = this.getItem(key);\r\n localStorage.removeItem(key);\r\n this.storageSub.next({ key: key, value: data });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from './http.service';\r\n\r\n/**\r\n * Service that provides a wrapper for retrieving data from the server\r\n * @deprecated use HttpService Instead\r\n * @author Joshua Kissoon\r\n * @since 20170709\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataManager {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n /**\r\n * Callback wrapper for the HTTP GET Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n * @updated 20170711 to add parameters\r\n */\r\n GET(urlq: string, params = {}): any {\r\n return this.http\r\n .get(urlq, { params: params })\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POST(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP POST Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the POST data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n POSTRAW(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .skipHeader()\r\n .post(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n\r\n /**\r\n * Callback wrapper for the HTTP PUT Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n PUT(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .put(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP PATCH Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * @param object The object containing the PUT data to be sent\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20161107\r\n */\r\n PATCH(urlq: string, object: any): any {\r\n if (null == object) {\r\n object = { \"blank\": \"blank\" };\r\n }\r\n\r\n return this.http\r\n .patch(urlq, object)\r\n .toPromise();\r\n }\r\n\r\n /**\r\n * Callback wrapper for the HTTP DELETE Call\r\n * \r\n * @param urlq The query part of the URL to be sent to the server\r\n * \r\n * @author Joshua Kissoon\r\n * @since 20160826\r\n */\r\n DELETE(urlq: string): any {\r\n return this.http\r\n .delete(urlq)\r\n .toPromise();\r\n }\r\n\r\n}","import { MatTooltipModule } from '@angular/material/tooltip';\r\n/*\r\n * This module imports and re-exports all Angular Material modules for convenience,\r\n * so only 1 module import is needed in your feature modules.\r\n * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.\r\n *\r\n * To optimize your production builds, you should only import the components used in your app.\r\n */\r\n\r\nimport { NgModule } from \"@angular/core\";\r\nimport {\r\n MatCommonModule,\r\n MatLineModule,\r\n MatNativeDateModule,\r\n MatOptionModule,\r\n MatPseudoCheckboxModule,\r\n MatRippleModule\r\n} from \"@angular/material/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatSortModule } from \"@angular/material/sort\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatCardModule } from \"@angular/material/card\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatChipsModule } from \"@angular/material/chips\";\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatListModule } from '@angular/material/list'\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\n\r\n\r\n@NgModule({\r\n exports: [\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatCommonModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatLineModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatOptionModule,\r\n MatProgressSpinnerModule,\r\n MatPseudoCheckboxModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatCardModule,\r\n MatDividerModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatListModule,\r\n MatTooltipModule,\r\n MatButtonToggleModule\r\n ]\r\n})\r\nexport class MaterialModule { }\r\n","import { NgModule, Optional, SkipSelf } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { RouteReuseStrategy, RouterModule } from '@angular/router';\r\n\r\nimport { RouteReusableStrategy } from './route-reusable-strategy';\r\nimport { ApiPrefixInterceptor } from './api-prefix.interceptor';\r\nimport { ErrorHandlerInterceptor } from './error-handler.interceptor';\r\nimport { HttpService } from './http.service';\r\nimport { TokenInterceptor } from './token.interceptor';\r\nimport { CacheInterceptor } from './cache.interceptor';\r\nimport { SnackModule } from './snack/snack.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n SnackModule\r\n ],\r\n providers: [\r\n {\r\n provide: HttpClient,\r\n useClass: HttpService\r\n },\r\n {\r\n provide: RouteReuseStrategy,\r\n useClass: RouteReusableStrategy\r\n }\r\n ],\r\n exports: [\r\n SnackModule\r\n ]\r\n})\r\nexport class CoreModule {\r\n\r\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\r\n // Import guard\r\n if (parentModule) {\r\n throw new Error(`${parentModule} has already been loaded. Import Core module in the root module only.`);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupComponent } from './action-popup.component';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n FlexLayoutModule,\r\n CommonModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n ActionPopupComponent\r\n ],\r\n exports: [\r\n ActionPopupComponent\r\n ],\r\n entryComponents: [\r\n ActionPopupComponent\r\n ]\r\n})\r\nexport class ActionPopupModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { DataTableComponent } from './data-table.component';\r\nimport { InfiniteScrollModule } from \"ngx-infinite-scroll\";\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n FlexLayoutModule,\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n DataTableComponent\r\n ],\r\n exports: [\r\n DataTableComponent\r\n ]\r\n})\r\nexport class DataTableModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { DocumentViewerComponent } from './document-viewer.component';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n NgxDocViewerModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n DocumentViewerComponent\r\n ],\r\n exports: [\r\n DocumentViewerComponent\r\n ]\r\n})\r\nexport class DocumentViewerModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileDropperComponent } from './file-dropper.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n FileDropperComponent\r\n ],\r\n exports: [FileDropperComponent]\r\n})\r\nexport class FileDropperModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EntityFileFormComponent } from './entity-file-form/entity-file-form.component';\r\nimport { EntityFilesViewAllComponent } from './entity-files-view-all.component';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FileDropperModule } from '../file-dropper/file-dropper.module';\r\nimport { DocumentViewerModule } from '../document-viewer/document-viewer.module';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EntityFileFormComponent, EntityFilesViewAllComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n FileDropperModule,\r\n DocumentViewerModule,\r\n InfiniteScrollModule,\r\n ActionPopupModule,\r\n MaterialModule\r\n ],\r\n exports: [\r\n EntityFilesViewAllComponent\r\n ],\r\n entryComponents: [EntityFileFormComponent]\r\n})\r\nexport class EntityFilesViewAllModule { }\r\n","import { Component, OnInit, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-read-more\",\r\n templateUrl: \"./read-more.component.html\",\r\n styleUrls: [\"./read-more.component.scss\"]\r\n})\r\nexport class ReadMoreComponent implements OnInit {\r\n @Input() text: string;\r\n @Input() maxLength: number = 100;\r\n currentText: string;\r\n hideToggle: boolean = true;\r\n\r\n isCollapsed: boolean = true;\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.determineView();\r\n }\r\n\r\n toggleView() {\r\n this.isCollapsed = !this.isCollapsed;\r\n this.determineView();\r\n }\r\n\r\n determineView() {\r\n if (!this.text || this.text.length <= this.maxLength) {\r\n this.currentText = this.text;\r\n this.isCollapsed = false;\r\n this.hideToggle = true;\r\n return;\r\n }\r\n this.hideToggle = false;\r\n if (this.isCollapsed == true) {\r\n this.currentText = this.text.substring(0, this.maxLength) + \"...\";\r\n } else if (this.isCollapsed == false) {\r\n this.currentText = this.text;\r\n }\r\n }\r\n}\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReadMoreComponent } from './read-more.component';\r\n\r\n@NgModule({\r\n declarations: [ReadMoreComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule\r\n ],\r\n exports: [\r\n ReadMoreComponent\r\n ]\r\n})\r\nexport class ReadMoreModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NoteListComponent } from './note-list/note-list.component';\r\nimport { NoteFormComponent } from './note-form/note-form.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\nimport { MaterialModule } from '../material.module';\r\nimport { CommentFormComponent } from './comment-form/comment-form.component';\r\nimport { ReadMoreModule } from '../read-more/read-more.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n NoteListComponent,\r\n NoteFormComponent,\r\n CommentFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n ActionPopupModule,\r\n MaterialModule,\r\n ReadMoreModule\r\n ],\r\n exports: [\r\n NoteListComponent\r\n ],\r\n entryComponents: [NoteFormComponent]\r\n})\r\nexport class NoteModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SearchableSelectorComponent } from './searchable-selector.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatSelectInfiniteScrollDirective } from './mat-select-infinite-scroll.directive';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n declarations: [\r\n SearchableSelectorComponent,\r\n MatSelectInfiniteScrollDirective\r\n ],\r\n exports: [\r\n SearchableSelectorComponent,\r\n MatSelectInfiniteScrollDirective\r\n ]\r\n})\r\nexport class SearchableSelectorModule { }\r\n","import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n/* Selectors */\r\nimport { NumItemsSelector } from './num-items-selector.component';\r\nimport { NumberSelector } from './number-selector.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ],\r\n declarations: [\r\n NumItemsSelector, NumberSelector,\r\n ],\r\n exports: [NumItemsSelector, NumberSelector]\r\n})\r\nexport class UtilityModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TimelineFilterRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TimelineFilterRoutingModule } from './timeline-filter-routing.module';\r\nimport { TimelineFilterComponent } from './timeline-filter.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [TimelineFilterComponent],\r\n imports: [\r\n CommonModule,\r\n TimelineFilterRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [TimelineFilterComponent]\r\n})\r\nexport class TimelineFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoaderComponent } from './loader.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\n\r\n@NgModule({\r\n declarations: [\r\n LoaderComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatProgressSpinnerModule\r\n ],\r\n exports: [\r\n LoaderComponent\r\n ]\r\n})\r\nexport class LoaderModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionRoutingModule } from './email-subscription-routing.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserRoutingModule } from './email-subscription-user-routing.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionUserRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionUserModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserFormRoutingModule { }\r\n","\r\nimport { Component, Inject, OnInit, TemplateRef } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AlertService } from '../../../core/alert.service';\r\nimport { FormValidatorService } from '../../../core/form-validator.service';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { Logger } from '../../../core/logger.service';\r\n\r\nconst log = new Logger('EmailSubscriptionUser Form');\r\n\r\nconst errorMessages: any = {\r\n user_id: {\r\n required: \"User is required\"\r\n },\r\n email_type_id: {\r\n required: \"Email Type is required\"\r\n },\r\n};\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-form',\r\n templateUrl: './email-subscription-user-form.component.html',\r\n styleUrls: ['./email-subscription-user-form.component.scss']\r\n})\r\nexport class EmailSubscriptionUserFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n esUserFormGroup: FormGroup;\r\n esUserFormFirstAttempt: boolean;\r\n esUser: any;\r\n isSubmitLoading: boolean;\r\n selectedUser: any;\r\n selectedType: any;\r\n\r\n constructor(private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n public dialogRef: MatDialogRef<EmailSubscriptionUserFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.esUserFormGroup = this.fb.group({\r\n id: [''],\r\n user_id: ['', Validators.required],\r\n email_type_id: ['', Validators.required],\r\n });\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.data?.esUser?.id) {\r\n this.esUser = this.data.esUser;\r\n this.updateMode = true;\r\n this.selectedType = this.esUser?.email_type;\r\n this.selectedUser = this.esUser?.user;\r\n this.esUserFormGroup.patchValue(this.esUser);\r\n }\r\n\r\n }\r\n\r\n //Method to trigger login\r\n submit() {\r\n this.esUserFormGroup.markAllAsTouched();\r\n this.esUserFormFirstAttempt = true;\r\n if (this.esUserFormGroup.valid) {\r\n this.isSubmitLoading = true;\r\n const model = this.esUserFormGroup.value;\r\n (\r\n this.updateMode ?\r\n this.http.put(`api/email-subscription-users/${model?.id}`, model) :\r\n this.http.post(`api/email-subscription-users`, model)\r\n )\r\n .pipe(\r\n finalize(() => this.isSubmitLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe(result => {\r\n this.alertService.addAlert(\"Subscription saved successfully\", \"success\");\r\n this.dialogRef.close(result);\r\n });\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.esUserFormGroup, this.esUserFormFirstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.esUserFormGroup, errorMessages);\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserFormRoutingModule } from './email-subscription-user-form-routing.module';\r\nimport { EmailSubscriptionUserFormComponent } from './email-subscription-user-form.component';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { LoaderModule } from '../../../loader/loader.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserFormComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionUserFormRoutingModule,\r\n LoaderModule\r\n ],\r\n entryComponents: [EmailSubscriptionUserFormComponent]\r\n})\r\nexport class EmailSubscriptionUserFormModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { EmailSubscriptionUserFormComponent } from '../email-subscription-user-form/email-subscription-user-form.component';\r\nimport { Router } from '@angular/router';\r\nimport { Logger } from '../../../core/logger.service';\r\nimport { PageEvent } from '../../../data-table/data-table.model';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\r\n\r\nconst log = new Logger('EmailSubscriptionUser list');\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-list',\r\n templateUrl: './email-subscription-user-list.component.html',\r\n styleUrls: ['./email-subscription-user-list.component.scss']\r\n})\r\nexport class EmailSubscriptionUserListComponent implements OnInit {\r\n\r\n esUserList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n };\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n displayColumns: FormControl = new FormControl(['index', 'user.name', 'email_type.title', 'creator.name', 'created_at', 'actions']);\r\n displayedColumns: any[] = [];\r\n availableDisplayColumns: any[] = [\r\n { order: 1, value: 'index', name: 'Index' },\r\n { order: 2, value: 'user.name', name: 'User' },\r\n { order: 3, value: 'email_type.title', name: 'Email Type' },\r\n { order: 4, value: 'creator.name', name: 'Creator' },\r\n { order: 5, value: 'actions', name: 'Actions' }\r\n ];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpService,\r\n private router: Router,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = this.displayColumns.value;\r\n this.initializeData();\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n }\r\n\r\n get selectedColumns(): string[] {\r\n return this.availableDisplayColumns\r\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\r\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\r\n .map(col => col.value);\r\n }\r\n\r\n columnsChange() {\r\n this.displayedColumns = this.selectedColumns;\r\n }\r\n\r\n\r\n initializeData() {\r\n this.http.get(`api/email-subscription-users`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.esUserList = this.esUserList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n filterChange(event: any) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event\r\n };\r\n this.reload();\r\n }\r\n\r\n addEmailSubscriptionUser() {\r\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {} // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n log.debug(result);\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n\r\n editEmailSubscriptionUser(event: any, esUser: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(EmailSubscriptionUserFormComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {\r\n esUser: esUser\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n log.debug(result);\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEmailSubscriptionUser(event: any, esUser: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: '400px',\r\n data: <ActionPopup>{\r\n title: 'Delete Subscription',\r\n message: `Are you sure to proceed delete the esUser ${esUser.name}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n //Action confirmed\r\n this.http.delete(`api/email-subscription-users/${esUser?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.esUserList = this.esUserList.filter(x => x.id !== esUser.id);\r\n });\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n this.esUserList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\r\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\r\n\r\nexport const esulr = {\r\n title: 'Email Subscription Users',\r\n permissions: {\r\n only: ['app_admin'],\r\n redirectTo: '/'\r\n }\r\n};\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionUserListComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: esulr\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserListRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionUserListFilterRoutingModule { }\r\n","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-user-list-filter',\r\n templateUrl: './email-subscription-user-list-filter.component.html',\r\n styleUrls: ['./email-subscription-user-list-filter.component.scss']\r\n})\r\nexport class EmailSubscriptionUserListFilterComponent implements OnInit {\r\n\r\n esUserFilterForm: FormGroup;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.createForm();\r\n }\r\n\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.esUserFilterForm = this.fb.group({\r\n user_id: [''],\r\n email_type_id: [''],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.esUserFilterForm.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n this.valueChange.emit(value);\r\n })\r\n }\r\n\r\n\r\n resetFieldValue(field: string) {\r\n this.esUserFilterForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.esUserFilterForm.get(field).value;\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserListFilterRoutingModule } from './email-subscription-user-list-filter-routing.module';\r\nimport { EmailSubscriptionUserListFilterComponent } from './email-subscription-user-list-filter.component';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserListFilterComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionUserListFilterRoutingModule\r\n ],\r\n exports: [EmailSubscriptionUserListFilterComponent]\r\n})\r\nexport class EmailSubscriptionUserListFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionUserListRoutingModule } from './email-subscription-user-list-routing.module';\r\nimport { EmailSubscriptionUserListComponent } from './email-subscription-user-list.component';\r\nimport { EmailSubscriptionUserListFilterModule } from '../email-subscription-user-list-filter/email-subscription-user-list-filter.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { EmailSubscriptionUserFormModule } from '../email-subscription-user-form/email-subscription-user-form.module';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionUserListComponent],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n EmailSubscriptionUserListRoutingModule,\r\n EmailSubscriptionUserFormModule,\r\n EmailSubscriptionUserListFilterModule\r\n ],\r\n exports: [EmailSubscriptionUserListComponent]\r\n})\r\nexport class EmailSubscriptionUserListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class EmailSubscriptionTypeRoutingModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeRoutingModule } from './email-subscription-type-routing.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n EmailSubscriptionTypeRoutingModule\r\n ]\r\n})\r\nexport class EmailSubscriptionTypeModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionTypeFormRoutingModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { AlertService } from '../../../core/alert.service';\r\nimport { FormValidatorService } from '../../../core/form-validator.service';\r\nimport { HttpService } from '../../../core/http.service';\r\n\r\nconst errorMessages: any = {\r\n title: {\r\n required: \"Title is required\"\r\n },\r\n code: {\r\n required: \"Code is required\"\r\n },\r\n frequency_id: {\r\n required: \"Frequency is required\"\r\n },\r\n};\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-type-form',\r\n templateUrl: './email-subscription-type-form.component.html',\r\n styleUrls: ['./email-subscription-type-form.component.scss']\r\n})\r\nexport class EmailSubscriptionTypeFormComponent implements OnInit {\r\n\r\n updateMode: boolean;\r\n emailSubscriptionTypeFormGroup: FormGroup;\r\n emailSubscriptionTypeFormFirstAttempt: boolean;\r\n emailSubscriptionType: any;\r\n selectedFrequency: any;\r\n isLoading: boolean;\r\n isSubmitLoading: boolean;\r\n\r\n constructor(private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n public dialogRef: MatDialogRef<EmailSubscriptionTypeFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n /** Method to create a form **/\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.emailSubscriptionTypeFormGroup = this.fb.group({\r\n id: [''],\r\n title: ['', Validators.compose([Validators.required])],\r\n code: ['', Validators.compose([Validators.required])],\r\n frequency_id: ['', Validators.required],\r\n description: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.data.emailSubscriptionType?.id) {\r\n this.isLoading = true;\r\n this.emailSubscriptionType = this.data?.emailSubscriptionType;\r\n this.updateMode = true;\r\n this.selectedFrequency = this.emailSubscriptionType?.frequency || {};\r\n this.emailSubscriptionTypeFormGroup.patchValue(this.emailSubscriptionType);\r\n }\r\n }\r\n\r\n //Method to trigger login\r\n submit() {\r\n this.emailSubscriptionTypeFormGroup.markAllAsTouched();\r\n this.emailSubscriptionTypeFormFirstAttempt = true;\r\n if (this.emailSubscriptionTypeFormGroup.valid) {\r\n this.isSubmitLoading = true;\r\n const model = this.emailSubscriptionTypeFormGroup.value;\r\n (\r\n this.updateMode ?\r\n this.http.put(`api/email-subscription-types/${model?.id}`, model) :\r\n this.http.post(`api/email-subscription-types`, model)\r\n )\r\n .pipe(\r\n finalize(() => this.isSubmitLoading = false),\r\n untilDestroyed(this)\r\n ).subscribe(result => {\r\n this.alertService.addAlert(\"Email Type saved successfully\", \"success\");\r\n this.dialogRef.close(result);\r\n });\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n /**Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.emailSubscriptionTypeFormGroup, this.emailSubscriptionTypeFormFirstAttempt);\r\n }\r\n\r\n /**Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.emailSubscriptionTypeFormGroup, errorMessages);\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeFormRoutingModule } from './email-subscription-type-form-routing.module';\r\nimport { EmailSubscriptionTypeFormComponent } from './email-subscription-type-form.component';\r\nimport { SearchableSelectorModule } from '../../../searchable-selector/searchable-selector.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { LoaderModule } from '../../../loader/loader.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionTypeFormComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n EmailSubscriptionTypeFormRoutingModule,\r\n LoaderModule\r\n ],\r\n exports: [EmailSubscriptionTypeFormComponent],\r\n entryComponents: [EmailSubscriptionTypeFormComponent]\r\n})\r\nexport class EmailSubscriptionTypeFormModule { }\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormControl } from '@angular/forms';\r\nimport { distinctUntilChanged, debounceTime } from 'rxjs/operators';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { EmailSubscriptionTypeFormComponent } from '../email-subscription-type-form/email-subscription-type-form.component';\r\nimport { PageEvent } from '../../../data-table/data-table.model';\r\nimport { HttpService } from '../../../core/http.service';\r\nimport { ActionPopupComponent } from '../../../action-popup/action-popup.component';\r\nimport { ActionPopup } from '../../../action-popup/action-popup.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-type-list',\r\n templateUrl: './email-subscription-type-list.component.html',\r\n styleUrls: ['./email-subscription-type-list.component.scss']\r\n})\r\nexport class EmailSubscriptionTypeListComponent implements OnInit {\r\n\r\n emailSubscriptionTypeList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n isLoadRelations: true,\r\n relations: ['frequency']\r\n };\r\n search: FormControl = new FormControl('');\r\n\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n displayColumns: FormControl = new FormControl(['index', 'title', 'frequency.title', 'description', 'actions']);\r\n displayedColumns: any[] = [];\r\n availableDisplayColumns: any[] = [\r\n { order: 1, value: 'index', name: 'Index' },\r\n { order: 2, value: 'title', name: 'Title' },\r\n { order: 3, value: 'code', name: 'Code' },\r\n { order: 4, value: 'frequency.title', name: 'Frequency' },\r\n { order: 5, value: 'description', name: 'Description' },\r\n { order: 6, value: 'actions', name: 'Actions' }\r\n ];\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private http: HttpService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = this.displayColumns.value;\r\n this.initializeData();\r\n this.search.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe(value => {\r\n this.filters.search = value;\r\n this.reload();\r\n });\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n }\r\n\r\n get selectedColumns(): string[] {\r\n return this.availableDisplayColumns\r\n .filter(col => (this.displayColumns.value as any).some((x: any) => x === col.value))\r\n .sort((a, b) => (a.order > b.order) ? 1 : ((b.order > a.order) ? -1 : 0))\r\n .map(col => col.value);\r\n }\r\n\r\n columnsChange() {\r\n this.displayedColumns = this.selectedColumns;\r\n }\r\n\r\n\r\n initializeData() {\r\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n addEmailSubscriptionType() {\r\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {} // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n\r\n editEmailSubscriptionType(event: any, emailSubscriptionType: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(EmailSubscriptionTypeFormComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n data: {\r\n emailSubscriptionType: emailSubscriptionType\r\n } // Any data passed here will be injected into the model\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result: any) => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n deleteEmailSubscriptionType(event: any, emailSubscriptionType: any) {\r\n event.stopPropagation();\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: '400px',\r\n data: <ActionPopup>{\r\n title: 'Delete Email Type',\r\n message: `Are you sure to proceed delete the Email Type ${emailSubscriptionType.title}?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n //Action confirmed\r\n this.http.delete(`api/email-subscription-types/${emailSubscriptionType?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.emailSubscriptionTypeList = this.emailSubscriptionTypeList.filter(x => x.id !== emailSubscriptionType.id);\r\n });\r\n }\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n reload() {\r\n this.emailSubscriptionTypeList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../../core/authentication.guard';\r\n\r\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\r\n\r\nexport const estlr = {\r\n title: 'Email Subscription Type',\r\n permissions: {\r\n only: ['client_admin'],\r\n redirectTo: '/'\r\n }\r\n};\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionTypeListComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: estlr\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionTypeListRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionTypeListRoutingModule } from './email-subscription-type-list-routing.module';\r\nimport { EmailSubscriptionTypeListComponent } from './email-subscription-type-list.component';\r\nimport { EmailSubscriptionTypeFormModule } from '../email-subscription-type-form/email-subscription-type-form.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../../material.module';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionTypeListComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n EmailSubscriptionTypeFormModule,\r\n EmailSubscriptionTypeListRoutingModule\r\n ],\r\n exports: [EmailSubscriptionTypeListComponent]\r\n})\r\nexport class EmailSubscriptionTypeListModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { HttpService } from '../../core/http.service';\r\nimport { PageEvent } from '../../data-table/data-table.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-email-subscription-for-user',\r\n templateUrl: './email-subscription-for-user.component.html',\r\n styleUrls: ['./email-subscription-for-user.component.scss']\r\n})\r\nexport class EmailSubscriptionForUserComponent implements OnInit {\r\n\r\n subscriptions: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n isLoadRelations: true,\r\n relations: 'frequency,currentUserSubscription'\r\n };\r\n\r\n constructor(\r\n private http: HttpService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.fetchSubscriptions();\r\n }\r\n\r\n fetchSubscriptions() {\r\n this.http.get(`api/email-subscription-types`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.subscriptions = this.subscriptions.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.fetchSubscriptions();\r\n }\r\n }\r\n\r\n subscribe(sub: any) {\r\n this.http.post(`api/email-subscription-for-user`, { email_type_id: sub?.id })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n sub.current_user_subscription = result?.item;\r\n });\r\n }\r\n\r\n unsubscribe(sub: any) {\r\n this.http.delete(`api/email-subscription-users/${sub?.current_user_subscription?.id}`)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((_: any) => {\r\n sub.current_user_subscription = null;\r\n });\r\n }\r\n\r\n\r\n reload() {\r\n this.subscriptions = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.fetchSubscriptions();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../../core/authentication.guard';\r\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\r\n\r\nexport const esfur = {\r\n permissions: {\r\n only: ['client_admin']\r\n }\r\n};\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: EmailSubscriptionForUserComponent,\r\n canActivate: [AuthenticationGuard],\r\n data: esfur\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class EmailSubscriptionForUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { EmailSubscriptionForUserRoutingModule } from './email-subscription-for-user-routing.module';\r\nimport { EmailSubscriptionForUserComponent } from './email-subscription-for-user.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [EmailSubscriptionForUserComponent],\r\n imports: [\r\n CommonModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n EmailSubscriptionForUserRoutingModule\r\n ],\r\n exports: [EmailSubscriptionForUserComponent]\r\n})\r\nexport class EmailSubscriptionForUserModule { }\r\n","import { HttpService } from '../core/http.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TechlifyUpdateService {\r\n\r\n constructor(private http: HttpService) { }\r\n\r\n getTechlifyUpdates(filters: any) {\r\n return this.http.get(`api/techlify-updates`, { params: filters }).toPromise();\r\n }\r\n\r\n createTechlifyUpdate(techlifyUpdate: any) {\r\n return this.http.post(`api/techlify-updates`, techlifyUpdate).toPromise();\r\n }\r\n\r\n updateTechlifyUpdate(techlifyUpdate: any) {\r\n return this.http.put(`api/techlify-updates/${techlifyUpdate.id}`, techlifyUpdate).toPromise();\r\n }\r\n\r\n deleteTechlifyUpdate(techlifyUpdateId: any) {\r\n return this.http.delete(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\r\n }\r\n\r\n getTechlifyUpdate(techlifyUpdateId: any) {\r\n return this.http.get(`api/techlify-updates/${techlifyUpdateId}`).toPromise();\r\n }\r\n\r\n getNewUpdateForCurrentUser() {\r\n return this.http.get(`api/current-user-techlify-updates`).toPromise();\r\n }\r\n\r\n createUpdateViewRecord(techlifyUpdateView: any) {\r\n return this.http.post(`api/techlify-update-views`, techlifyUpdateView).toPromise();\r\n }\r\n\r\n updateCurrentUserUpdates() {\r\n return this.http.get(`api/techlify-updates/update-view`).toPromise();\r\n }\r\n}\r\n","import { AlertService } from \"../../core/alert.service\";\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Editor, Toolbar } from 'ngx-editor';\r\n\r\nconst errorMessages: any = {\r\n title: {\r\n required: \"Title is required\",\r\n },\r\n released_on: {\r\n required: \"Released On is required\",\r\n },\r\n version: {\r\n required: \"Version is required\",\r\n },\r\n description: {\r\n required: \"Description is required\",\r\n },\r\n learn_more_link: {\r\n pattern: \"Please enter valid link\",\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-techlify-update-form',\r\n templateUrl: './techlify-update-form.component.html',\r\n styleUrls: ['./techlify-update-form.component.scss']\r\n})\r\nexport class TechlifyUpdateFormComponent implements OnInit {\r\n\r\n @Output() onSave = new EventEmitter<any>();\r\n techlifyUpdateForm: FormGroup;\r\n isUpdateMode: boolean = false;\r\n editor: Editor;\r\n toolbar: Toolbar = [\r\n ['bold', 'italic'],\r\n ['bullet_list'],\r\n ];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TechlifyUpdateFormComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private alertService: AlertService,\r\n private techlifyUpdateService: TechlifyUpdateService\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n private createForm() {\r\n this.techlifyUpdateForm = this.fb.group({\r\n id: new FormControl(''),\r\n title: new FormControl('', Validators.required),\r\n description: new FormControl('', Validators.required),\r\n version: new FormControl('', Validators.required),\r\n released_on: new FormControl('', Validators.required),\r\n learn_more_link: new FormControl('', Validators.compose([Validators.pattern('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?')])),\r\n });\r\n if (this.data.techlifyUpdateDetails) {\r\n this.isUpdateMode = true;\r\n this.techlifyUpdateForm.patchValue(this.data.techlifyUpdateDetails);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.editor = new Editor();\r\n }\r\n\r\n async submit() {\r\n if (this.techlifyUpdateForm.valid) {\r\n let result;\r\n const model = this.techlifyUpdateForm.value;\r\n\r\n try {\r\n result = this.isUpdateMode ? await this.techlifyUpdateService.updateTechlifyUpdate(model)\r\n : await this.techlifyUpdateService.createTechlifyUpdate(model);\r\n this.alertService.addAlert(\r\n \"Techlify app update saved successfully\",\r\n \"success\"\r\n );\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n } finally {\r\n if (result) {\r\n this.dialogRef.close(result);\r\n }\r\n }\r\n }\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.techlifyUpdateForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.techlifyUpdateForm.get(field).value;\r\n }\r\n\r\n /** Method to evaluate form fields*/\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.techlifyUpdateForm, true);\r\n }\r\n /** Method to find error in form fields*/\r\n getErrorMessage(field: string) {\r\n return this.formValidatorService.getErrorMessage(field, this.techlifyUpdateForm, errorMessages);\r\n }\r\n\r\n}\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdateFormComponent } from './techlify-update-form.component';\r\nimport { NgxEditorModule } from 'ngx-editor';\r\n\r\n@NgModule({\r\n declarations: [TechlifyUpdateFormComponent],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n NgxEditorModule,\r\n ],\r\n exports: [\r\n TechlifyUpdateFormComponent\r\n ],\r\n entryComponents: [\r\n TechlifyUpdateFormComponent\r\n ]\r\n})\r\nexport class TechlifyUpdateFormModule { }\r\n","import { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { untilDestroyed } from '@ngneat/until-destroy';\r\nimport { ActionPopup } from './../../action-popup/action-popup.model';\r\nimport { ActionPopupComponent } from './../../action-popup/action-popup.component';\r\nimport { TechlifyUpdateFormComponent } from './../techlify-update-form/techlify-update-form.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, FormBuilder } from '@angular/forms';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AlertService } from '../../core/alert.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-updates-list',\r\n templateUrl: './techlify-updates-list.component.html',\r\n styleUrls: ['./techlify-updates-list.component.scss']\r\n})\r\nexport class TechlifyUpdatesListComponent implements OnInit {\r\n techlifyUpdates: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'title',\r\n 'version',\r\n 'released_on',\r\n 'learn_more_link',\r\n 'description',\r\n 'creator',\r\n 'actions'\r\n ];\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n isWorking: boolean = false;\r\n filterFormGroup: FormGroup;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private alertService: AlertService,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private fb: FormBuilder,\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n search: new FormControl(''),\r\n version: new FormControl(''),\r\n sort_by: new FormControl('released_on|DESC'),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData();\r\n this.listenChanges();\r\n }\r\n\r\n listenChanges() {\r\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe(changes => {\r\n this.reload();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n async loadData() {\r\n try {\r\n this.isWorking = true;\r\n var filters: any = this.filterFormGroup.value;\r\n filters.perPage = this.perPage;\r\n filters.page = this.page;\r\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\r\n filters\r\n );\r\n this.lastPage = result.last_page || this.page;\r\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n reload() {\r\n this.techlifyUpdates = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n modifyTechlifyUpdate(model?: any) {\r\n const dialogRef = this.dialog.open(TechlifyUpdateFormComponent, {\r\n width: \"600px\",\r\n data: {\r\n techlifyUpdateDetails: model,\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result) {\r\n this.reload();\r\n }\r\n });\r\n }\r\n\r\n async deleteTechlifyUpdate(model: any) {\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: \"Delete Update\",\r\n message: `Are you sure to delete this update?`\r\n },\r\n autoFocus: false\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n //Action confirmed\r\n try {\r\n await this.techlifyUpdateService.deleteTechlifyUpdate(model.id);\r\n this.alertService.addAlert(\r\n \"Successfully deleted the update\",\r\n \"success\"\r\n );\r\n this.reload();\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.filterFormGroup.get(field).setValue(\"\");\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase();\r\n this.assignFilter(event.active, direction);\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'title': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\r\n }\r\n case 'released_on': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\r\n }\r\n case 'version': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\r\n }\r\n default: {\r\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\r\n }\r\n };\r\n }\r\n\r\n}\r\n","import { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'all', pathMatch: 'full' },\r\n { path: 'all', component: TechlifyUpdatesListComponent },\r\n\r\n //fallback\r\n {\r\n path: '**',\r\n redirectTo: 'all',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TechlifyUpdateRoutingModule { }\r\n","import { ReadMoreModule } from '../read-more/read-more.module';\r\nimport { TechlifyUpdateFormModule } from './techlify-update-form/techlify-update-form.module';\r\nimport { TechlifyUpdateRoutingModule } from './techlify-update-routing.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdatesListComponent } from './techlify-updates-list/techlify-updates-list.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../action-popup/action-popup.module';\r\n\r\n@NgModule({\r\n declarations: [TechlifyUpdatesListComponent],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ActionPopupModule,\r\n TechlifyUpdateRoutingModule,\r\n TechlifyUpdateFormModule,\r\n ReadMoreModule,\r\n ]\r\n})\r\nexport class TechlifyUpdateModule { }\r\n","import { Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-update-view',\r\n templateUrl: './update-view.component.html',\r\n styleUrls: ['./update-view.component.scss']\r\n})\r\nexport class UpdateViewComponent implements OnInit {\r\n techlifyUpdate: any;\r\n rootNavUrl: any;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<UpdateViewComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.techlifyUpdate = this.data.techlifyUpdate;\r\n this.rootNavUrl = this.data.rootNavUrl;\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n openUpdateHistory(): void {\r\n this.close();\r\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\r\n }\r\n\r\n}\r\n","import { UntilDestroy } from '@ngneat/until-destroy';\r\nimport { untilDestroyed } from '@ngneat/until-destroy';\r\nimport { AlertService } from './../../core/alert.service';\r\nimport { UpdateViewComponent } from './../update-view/update-view.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { FormControl, FormBuilder } from '@angular/forms';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-update-history',\r\n templateUrl: './techlify-update-history.component.html',\r\n styleUrls: ['./techlify-update-history.component.scss']\r\n})\r\nexport class TechlifyUpdateHistoryComponent implements OnInit {\r\n techlifyUpdates: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'title',\r\n 'version',\r\n 'released_on',\r\n 'learn_more_link',\r\n 'description',\r\n 'creator',\r\n 'actions'\r\n ];\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n isWorking: boolean = false;\r\n filterFormGroup: FormGroup;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private fb: FormBuilder,\r\n private alertService: AlertService\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n search: new FormControl(''),\r\n version: new FormControl(''),\r\n sort_by: new FormControl('released_on|DESC'),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData();\r\n this.listenChanges();\r\n this.updateCurrentUserUpdates();\r\n }\r\n\r\n listenChanges() {\r\n this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe(changes => {\r\n this.reload();\r\n });\r\n }\r\n\r\n ngOnDestroy() { }\r\n\r\n async loadData() {\r\n try {\r\n this.isWorking = true;\r\n var filters: any = this.filterFormGroup.value;\r\n filters.perPage = this.perPage;\r\n filters.page = this.page;\r\n let result: any = await this.techlifyUpdateService.getTechlifyUpdates(\r\n filters\r\n );\r\n this.lastPage = result.last_page || this.page;\r\n this.techlifyUpdates = this.techlifyUpdates.concat(result.data);\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n reload() {\r\n this.techlifyUpdates = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n resetFieldValue(field: string) {\r\n this.filterFormGroup.get(field).setValue(\"\");\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase();\r\n this.assignFilter(event.active, direction);\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'title': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"title|\" + direction);\r\n }\r\n case 'released_on': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"released_on|\" + direction);\r\n }\r\n case 'version': {\r\n return this.filterFormGroup.get('sort_by').setValue(\"version|\" + direction);\r\n }\r\n default: {\r\n return this.filterFormGroup.get('sort_by').setValue(\"created_at|DESC\");\r\n }\r\n };\r\n }\r\n\r\n openUpdateView(techlifyUpdate: any): void {\r\n const dialogRef = this.dialog.open(UpdateViewComponent, {\r\n width: \"800px\",\r\n autoFocus: false,\r\n data: {\r\n techlifyUpdate: techlifyUpdate,\r\n isFromHistory: true,\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n async updateCurrentUserUpdates() {\r\n try {\r\n await this.techlifyUpdateService.updateCurrentUserUpdates();\r\n } catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n}\r\n","import { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'update-history', pathMatch: 'full' },\r\n { path: 'update-history', component: TechlifyUpdateHistoryComponent },\r\n\r\n //fallback\r\n {\r\n path: '**',\r\n redirectTo: 'all',\r\n pathMatch: 'full'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TechlifyUpdateHistoryRoutingModule { }\r\n","import { ReactiveFormsModule } from '@angular/forms';\r\nimport { TechlifyUpdateHistoryRoutingModule } from './techlify-update-history-routing.module';\r\nimport { ReadMoreModule } from '../../read-more/read-more.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyUpdateHistoryComponent } from './techlify-update-history.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ActionPopupModule } from '../../action-popup/action-popup.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ActionPopupModule,\r\n ReadMoreModule,\r\n TechlifyUpdateHistoryRoutingModule\r\n ],\r\n declarations: [TechlifyUpdateHistoryComponent]\r\n})\r\nexport class TechlifyUpdateHistoryModule { }\r\n","import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UpdateViewComponent } from './update-view.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [UpdateViewComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule\r\n ],\r\n exports: [\r\n UpdateViewComponent\r\n ],\r\n entryComponents: [\r\n UpdateViewComponent\r\n ]\r\n})\r\nexport class UpdateViewModule { }\r\n","import { AlertService } from './../../../core/alert.service';\r\nimport { TechlifyUpdateService } from './../../techlify-update.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Component, EmbeddedViewRef, Inject, OnInit } from '@angular/core';\r\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\r\nimport { UpdateViewComponent } from '../../update-view/update-view.component';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-update-notifier-snack',\r\n templateUrl: './update-notifier-snack.component.html',\r\n styleUrls: ['./update-notifier-snack.component.scss']\r\n})\r\nexport class UpdateNotifierSnackComponent implements OnInit {\r\n maxDescriptionLength: any = 70;\r\n descriptionText: any = '';\r\n techlifyUpdate: any;\r\n rootNavUrl: any;\r\n\r\n constructor(\r\n @Inject(MAT_SNACK_BAR_DATA) public data: any,\r\n private snackBarRef: MatSnackBarRef<EmbeddedViewRef<any>>,\r\n private dialog: MatDialog,\r\n private router: Router,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.techlifyUpdate = this.data.techlifyUpdate;\r\n this.rootNavUrl = this.data.rootNavUrl;\r\n this.determineDescription(this.techlifyUpdate?.description)\r\n }\r\n\r\n close(): void {\r\n this.createUpdateViewRecord();\r\n this.snackBarRef.dismiss();\r\n }\r\n\r\n determineDescription(description: any) {\r\n if (!description || description.length <= this.maxDescriptionLength) {\r\n this.descriptionText = description;\r\n return;\r\n }\r\n this.descriptionText = description.substring(0, this.maxDescriptionLength) + \"...\";\r\n }\r\n\r\n openUpdateView(): void {\r\n this.close();\r\n const dialogRef = this.dialog.open(UpdateViewComponent, {\r\n width: \"800px\",\r\n autoFocus: false,\r\n data: {\r\n techlifyUpdate: this.techlifyUpdate,\r\n rootNavUrl: this.data.rootNavUrl\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n openUpdateHistory(): void {\r\n this.close();\r\n this.router.navigate([this.rootNavUrl + \"/update-history\"]);\r\n }\r\n\r\n async createUpdateViewRecord() {\r\n try {\r\n var techlifyUpdateView = {\r\n update_id: this.techlifyUpdate?.id\r\n };\r\n let result: any = await this.techlifyUpdateService.createUpdateViewRecord(techlifyUpdateView);\r\n }\r\n catch (error) {\r\n this.alertService.addAlert(\"Unable to process, try later\", \"warn\");\r\n }\r\n }\r\n}\r\n","import { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\r\nimport { TechlifyUpdateService } from './../techlify-update.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { AlertService } from '../../core/alert.service';\r\n\r\n@Component({\r\n selector: 'app-update-notifier',\r\n templateUrl: './update-notifier.component.html',\r\n styleUrls: ['./update-notifier.component.scss']\r\n})\r\nexport class UpdateNotifierComponent implements OnInit {\r\n techlifyUpdate: any;\r\n @Input() rootNavUrl: string = '/techlify-updates';\r\n\r\n constructor(\r\n private snackBar: MatSnackBar,\r\n private techlifyUpdateService: TechlifyUpdateService,\r\n private alertService: AlertService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(x => {\r\n this.getNewUpdate();\r\n }, 5000);\r\n }\r\n\r\n async getNewUpdate() {\r\n try {\r\n let result: any = await this.techlifyUpdateService.getNewUpdateForCurrentUser();\r\n this.techlifyUpdate = result.item;\r\n if (this.techlifyUpdate) {\r\n this.showUpdate();\r\n }\r\n }\r\n catch (error) {\r\n console.log(\"Current user updates failed\");\r\n }\r\n }\r\n\r\n showUpdate() {\r\n this.snackBar.openFromComponent(UpdateNotifierSnackComponent, {\r\n data: {\r\n techlifyUpdate: this.techlifyUpdate,\r\n rootNavUrl: this.rootNavUrl\r\n },\r\n horizontalPosition: 'right',\r\n verticalPosition: 'top',\r\n panelClass: ['white-bg']\r\n });\r\n }\r\n\r\n}\r\n","import { ActionPopupModule } from './../../action-popup/action-popup.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from './../../material.module';\r\nimport { UpdateViewModule } from './../update-view/update-view.module';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UpdateNotifierComponent } from './update-notifier.component';\r\nimport { UpdateNotifierSnackComponent } from './update-notifier-snack/update-notifier-snack.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [UpdateNotifierComponent, UpdateNotifierSnackComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n UpdateViewModule,\r\n FlexLayoutModule,\r\n ActionPopupModule\r\n ],\r\n exports: [\r\n UpdateNotifierComponent,\r\n ],\r\n entryComponents: [\r\n UpdateNotifierSnackComponent\r\n ]\r\n})\r\nexport class UpdateNotifierModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport * as XLSX from 'xlsx';\r\n\r\n@Component({\r\n selector: 'app-export-excel-button',\r\n templateUrl: './export-excel-button.component.html',\r\n styleUrls: ['./export-excel-button.component.scss']\r\n})\r\nexport class ExportExcelButtonComponent implements OnInit {\r\n\r\n @Input() name: string = 'Export_Data';\r\n @Input() data: any[] = [];\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n exportExcel() {\r\n const fileName = `${this.name}_${new Date().getTime()}.xlsx`;\r\n const ws = XLSX.utils.json_to_sheet(this.data);\r\n /* generate workbook and add the worksheet */\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');\r\n\r\n /* save to file */\r\n XLSX.writeFile(wb, fileName);\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExportExcelButtonComponent } from './export-excel-button/export-excel-button.component';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ExportExcelButtonComponent],\r\n imports: [\r\n CommonModule,\r\n MaterialModule\r\n ],\r\n exports: [ExportExcelButtonComponent]\r\n})\r\nexport class ExportExcelModule { }\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { HttpService } from '../../core/http.service';\r\n\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-view',\r\n templateUrl: './audit-log-view-model.component.html',\r\n styleUrls: ['./audit-log-view-model.component.scss']\r\n})\r\nexport class AuditLogViewModelComponent implements OnInit {\r\n\r\n logInfo: any;\r\n showDeltaChanges: boolean = false;\r\n changeList: any[] = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private http: HttpService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.data) {\r\n this.http.get(`api/recent-log-for-model`, {\r\n params: {\r\n model_type: this.data?.modelType,\r\n model_id: this.data?.modelId\r\n }\r\n }).pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.logInfo = result?.item;\r\n this.getTransformedChanges();\r\n });\r\n }\r\n }\r\n\r\n getTransformedChanges() {\r\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\r\n });\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { filter } from 'rxjs/operators';\r\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-logs-view-model',\r\n templateUrl: './audit-logs-view-model.component.html',\r\n styleUrls: ['./audit-logs-view-model.component.scss']\r\n})\r\nexport class AuditLogsViewModelComponent implements OnInit {\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<AuditLogViewModelComponent>,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd), untilDestroyed(this))\r\n .subscribe(_ => this.dialogRef.close());\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AuditLogViewModelComponent } from '../audit-log-view-model/audit-log-view-model.component';\r\nimport { AuditLogsViewModelComponent } from '../audit-logs-view-model/audit-logs-view-model.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-audit-log-for-model',\r\n templateUrl: './audit-log-for-model.component.html',\r\n styleUrls: ['./audit-log-for-model.component.scss']\r\n})\r\nexport class AuditLogForModelComponent implements OnInit {\r\n\r\n @Input() modelType: string;\r\n @Input() modelId: any;\r\n @Input() logView: 'recent' | 'all' = 'recent';\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n getLogView() {\r\n const dialogRef = this.dialog.open(AuditLogViewModelComponent, {\r\n width: '800px',\r\n autoFocus: false,\r\n data: {\r\n modelType: this.modelType,\r\n modelId: this.modelId\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n getLogsView() {\r\n const dialogRef = this.dialog.open(AuditLogsViewModelComponent, {\r\n width: '95%',\r\n maxWidth: 'unset',\r\n autoFocus: false,\r\n data: {\r\n modelType: this.modelType,\r\n modelId: this.modelId\r\n } // Any data passed here will be injected into the model\r\n });\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogForModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogViewModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogViewModelRoutingModule } from './audit-log-view-model-routing.module';\r\nimport { AuditLogViewModelComponent } from './audit-log-view-model.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogViewModelComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogViewModelRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n exports: [AuditLogViewModelComponent]\r\n})\r\nexport class AuditLogViewModelModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogsViewModelRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogListRoutingModule { }\r\n","import { Component, OnInit, OnDestroy, Input, ViewChild } from '@angular/core';\r\n\r\n\r\nimport { Router } from '@angular/router';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { PageEvent } from '../../data-table/data-table.model';\r\nimport { DataManager } from '../../core/dataManager.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-list',\r\n templateUrl: './audit-log-list.component.html',\r\n styleUrls: ['./audit-log-list.component.scss'],\r\n})\r\nexport class AuditLogListComponent implements OnInit, OnDestroy {\r\n\r\n auditLogList: any[] = [];\r\n @Input() objectId: any;\r\n @Input() objectType: any;\r\n @Input() showFilter: boolean = true;\r\n @Input() showExportButtons: boolean = true;\r\n @Input() userId: any;\r\n\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = { sort_by: 'created_at|desc' };\r\n displayedColumns: any[] = ['index', 'id', 'object_type', 'object_id', 'action', 'changes', 'created_at', 'user.email'];\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private router: Router,\r\n public sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this.initializeData();\r\n\r\n if (this.sort) {\r\n this.sort.sortChange.pipe(untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n this.changeSort(value);\r\n })\r\n }\r\n\r\n }\r\n\r\n get excelData(): any[] {\r\n if (this.auditLogList.length > 0) {\r\n return this.auditLogList.map(item => {\r\n return {\r\n 'Type': item?.object_type,\r\n 'Action': item?.action,\r\n 'Data': JSON.stringify(item?.data || {}),\r\n 'Object': JSON.stringify(item?.object || {}),\r\n 'Pre-Object': JSON.stringify(item?.pre_object || {}),\r\n 'Created At': new Date(item?.created_at).toDateString(),\r\n 'Created By': item?.user?.email\r\n };\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n changeSort(event: any) {\r\n if (event.direction) {\r\n this.filters.sort_by = `${event.active}|${event.direction}`;\r\n this.reload();\r\n }\r\n }\r\n\r\n logClicked(log: any) {\r\n this.router.navigate(['/system/audit-logs/log-view', log.id]);\r\n }\r\n\r\n\r\n async initializeData() {\r\n if (this.objectType) {\r\n this.filters = { ...this.filters, object_type: this.objectType }\r\n }\r\n if (this.objectId) {\r\n this.filters = { ...this.filters, object_id: this.objectId }\r\n }\r\n if (this.userId) {\r\n this.filters = { ...this.filters, user_id: this.userId }\r\n }\r\n const result = await this.dataManager.GET(`api/audit-logs`, { ...this.filters, ...this.pageEvent });\r\n this.auditLogList = this.auditLogList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n }\r\n\r\n filterChange(event: any) {\r\n if (this.showFilter) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event,\r\n object_type: this.objectType || event?.object_type || '',\r\n object_id: this.objectId || '',\r\n };\r\n this.reload();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n reload() {\r\n this.auditLogList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n getTransformedChanges(log: any) {\r\n if (log?.data?.changes) {\r\n const changes = Object.keys(log?.data?.changes) || [];\r\n let value = '<div>';\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n value = `${value} <div><b>${displayAttribute}:</b> <span id=\"old-value\">${log?.pre_object[key] ?? ''}</span><span id=\"new-value\">${log?.object[key] ?? ''}</span></div>`;\r\n });\r\n value = `${value} </div>`;\r\n return value;\r\n }\r\n return '';\r\n }\r\n\r\n ngOnDestroy() {\r\n // Needed for automatic unsubscribe with untilDestroyed\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogListFilterRoutingModule { }\r\n","import { FormControl } from \"@angular/forms\";\r\n\r\nexport function DateValidator(): any {\r\n return (control: FormControl): { [key: string]: any } => {\r\n\r\n const val: any = new Date(control.value);\r\n if (!!control.value && val == 'Invalid Date') {\r\n return { invalidDate: true };\r\n }\r\n return null;\r\n };\r\n}","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { FormValidatorService } from '../../core/form-validator.service';\r\nimport { DateValidator } from '../../date-validator';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-audit-log-list-filter',\r\n templateUrl: './audit-log-list-filter.component.html',\r\n styleUrls: ['./audit-log-list-filter.component.scss']\r\n})\r\nexport class AuditLogListFilterComponent implements OnInit {\r\n\r\n auditLogFilterForm: FormGroup;\r\n\r\n @Input() objectId: any;\r\n @Input() objectType: any;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n\r\n constructor(private fb: FormBuilder, private formValidatorService: FormValidatorService) {\r\n this.createForm();\r\n }\r\n\r\n get showObjectFilter() {\r\n return !(this.objectId || this.objectType);\r\n }\r\n\r\n private createForm() {\r\n\r\n //TODO: Finialize and add more validations.\r\n this.auditLogFilterForm = this.fb.group({\r\n object_type: [''],\r\n action: [''],\r\n data: [''],\r\n date_to: ['', DateValidator()],\r\n date_from: ['', DateValidator()]\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.auditLogFilterForm.valueChanges.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n untilDestroyed(this)\r\n ).subscribe((value: any) => {\r\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\r\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\r\n this.valueChange.emit(value);\r\n })\r\n }\r\n\r\n\r\n resetFieldValue(field: string) {\r\n this.auditLogFilterForm.get(field).setValue('');\r\n }\r\n\r\n getFieldValue(field: string) {\r\n return this.auditLogFilterForm.get(field).value;\r\n }\r\n\r\n isFieldValid(field: string) {\r\n return this.formValidatorService.isFieldValid(field, this.auditLogFilterForm, true);\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogListFilterRoutingModule } from './audit-log-list-filter-routing.module';\r\nimport { AuditLogListFilterComponent } from './audit-log-list-filter.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { SearchableSelectorModule } from '../../searchable-selector/searchable-selector.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogListFilterComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogListFilterRoutingModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n SearchableSelectorModule,\r\n ],\r\n exports: [AuditLogListFilterComponent]\r\n})\r\nexport class AuditLogListFilterModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogListRoutingModule } from './audit-log-list-routing.module';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { AuditLogListComponent } from './audit-log-list.component';\r\nimport { AuditLogListFilterModule } from '../audit-log-list-filter/audit-log-list-filter.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { ExportExcelModule } from '../../export-excel/export-excel.module';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogListComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogListRoutingModule,\r\n ExportExcelModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n MaterialModule,\r\n InfiniteScrollModule,\r\n AuditLogListFilterModule\r\n ],\r\n exports: [AuditLogListComponent]\r\n})\r\nexport class AuditLogListModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogsViewModelRoutingModule } from './audit-logs-view-model-routing.module';\r\nimport { AuditLogsViewModelComponent } from './audit-logs-view-model.component';\r\nimport { AuditLogListModule } from '../audit-log-list/audit-log-list.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogsViewModelComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogsViewModelRoutingModule,\r\n FlexLayoutModule,\r\n AuditLogListModule\r\n ],\r\n exports: [AuditLogsViewModelComponent]\r\n})\r\nexport class AuditLogsViewModelModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogForModelRoutingModule } from './audit-log-for-model-routing.module';\r\nimport { AuditLogForModelComponent } from './audit-log-for-model.component';\r\nimport { AuditLogViewModelModule } from '../audit-log-view-model/audit-log-view-model.module';\r\nimport { AuditLogsViewModelModule } from '../audit-logs-view-model/audit-logs-view-model.module';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogForModelComponent],\r\n imports: [\r\n AuditLogViewModelModule,\r\n AuditLogsViewModelModule,\r\n CommonModule,\r\n AuditLogForModelRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule,\r\n ],\r\n exports: [AuditLogForModelComponent]\r\n})\r\nexport class AuditLogForModelModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Location } from '@angular/common';\r\nimport * as jsondiffpatch from \"jsondiffpatch\"\r\nimport { DataManager } from '../../core/dataManager.service';\r\n\r\n@Component({\r\n selector: 'app-audit-log-view',\r\n templateUrl: './audit-log-view.component.html',\r\n styleUrls: ['./audit-log-view.component.scss']\r\n})\r\nexport class AuditLogViewComponent implements OnInit {\r\n\r\n logInfo: any;\r\n showDeltaChanges: boolean = false;\r\n changeList: any[] = [];\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private route: ActivatedRoute,\r\n private location: Location\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.route.paramMap.subscribe(params => {\r\n if (params.get('id')) {\r\n this.fetchLogDetail(params.get('id'));\r\n } else {\r\n this.location.back();\r\n }\r\n });\r\n }\r\n\r\n getTransformedChanges() {\r\n const changes = ((this.logInfo?.action === 'deleted') ? Object.keys(this.logInfo?.object) : Object.keys(this.logInfo?.data?.changes)) || [];\r\n changes.forEach((key: any) => {\r\n const displayAttribute = (key as string).split('_').map(x => x.charAt(0).toUpperCase() + x.slice(1)).join(' ');\r\n this.changeList.push({ displayAttribute: displayAttribute, attribute: key, newValue: (this.logInfo?.action === 'deleted') ? '' : (this.logInfo?.object[key] ?? ''), oldValue: this.logInfo?.pre_object[key] ?? '' });\r\n });\r\n }\r\n\r\n async fetchLogDetail(logId: any) {\r\n const result = await this.dataManager.GET(`api/audit-logs/${logId}`);\r\n this.logInfo = result.item;\r\n this.getTransformedChanges();\r\n this.patchDelta();\r\n }\r\n\r\n patchDelta() {\r\n const delta = jsondiffpatch.diff(this.logInfo?.pre_object, this.logInfo?.object);\r\n document.getElementById('jsondiff').innerHTML = jsondiffpatch.formatters.html.format(delta, this.logInfo?.pre_object);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogViewRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogViewRoutingModule } from './audit-log-view-routing.module';\r\nimport { AuditLogViewComponent } from './audit-log-view.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AuditLogViewComponent],\r\n imports: [\r\n CommonModule,\r\n AuditLogViewRoutingModule,\r\n FlexLayoutModule,\r\n MaterialModule\r\n ],\r\n exports: [AuditLogViewComponent]\r\n})\r\nexport class AuditLogViewModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../core/authentication.guard';\r\nimport { AuditLogListComponent } from './audit-log-list/audit-log-list.component';\r\nimport { AuditLogViewComponent } from './audit-log-view/audit-log-view.component';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: 'log-list', component: AuditLogListComponent, canActivate: [AuthenticationGuard] },\r\n { path: 'log-view/:id', component: AuditLogViewComponent, canActivate: [AuthenticationGuard] },\r\n { path: '**', redirectTo: 'log-list', pathMatch: 'full' }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuditLogRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AuditLogRoutingModule } from './audit-log-routing.module';\r\nimport { AuditLogListModule } from './audit-log-list/audit-log-list.module';\r\nimport { AuditLogViewModule } from './audit-log-view/audit-log-view.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n AuditLogRoutingModule,\r\n AuditLogListModule,\r\n AuditLogViewModule\r\n ],\r\n exports: []\r\n})\r\nexport class AuditLogModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\n\r\n@Component({\r\n selector: 'app-import-success',\r\n templateUrl: './import-success.component.html',\r\n styleUrls: ['./import-success.component.scss']\r\n})\r\nexport class ImportSuccessComponent implements OnInit {\r\n @Input() data: any;\r\n @Input() config: ImportCsvConfig;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { ErrorHandlerService } from './../../core/error-handler.service';\r\nimport { PageEvent } from './../../data-table/data-table.model';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\nimport { HttpService } from '../../core/http.service';\r\n\r\n@Component({\r\n selector: 'app-import-history-list',\r\n templateUrl: './import-history-list.component.html',\r\n styleUrls: ['./import-history-list.component.scss']\r\n})\r\nexport class ImportHistoryListComponent implements OnInit {\r\n\r\n @Input() config: ImportCsvConfig;\r\n histories: any[] = [];\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'imported_by',\r\n 'date',\r\n 'no_of_records'\r\n ];\r\n isWorking: boolean = false;\r\n filter: any;\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n\r\n constructor(\r\n private errorHandler: ErrorHandlerService,\r\n private http: HttpService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.config.importHistory.isEnabled) {\r\n this.filter = {\r\n model_type: this.config.importHistory.type,\r\n };\r\n }\r\n this.loadData();\r\n }\r\n\r\n loadData() {\r\n try {\r\n this.isWorking = true;\r\n this.http.get(this.config.importHistory.apiUrl, { params: { ...this.filter, ...this.pageEvent } }).subscribe((result: any) => {\r\n this.histories = this.histories.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n }\r\n finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n reload() {\r\n this.histories = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.loadData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { FormValidatorService } from '../../core/form-validator.service';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Location } from '@angular/common';\r\nimport { ImportCsvConfig } from '../import-csv-config';\r\n\r\nconst errorMessages: any = {\r\n property: {\r\n required: \"Property is required\",\r\n unavailable: \"Duplicate entry\"\r\n },\r\n};\r\n\r\n@Component({\r\n selector: 'app-field-mapping',\r\n templateUrl: './field-mapping.component.html',\r\n styleUrls: ['./field-mapping.component.scss']\r\n})\r\nexport class FieldMappingComponent implements OnInit {\r\n\r\n importMappingForm: FormGroup;\r\n @Input() data: any[];\r\n @Input() config: ImportCsvConfig;\r\n firstDataArray: any[] = [];\r\n properties: any[] = [];\r\n @Output() onSave = new EventEmitter();\r\n @Output() onReUpload= new EventEmitter();\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private formValidatorService: FormValidatorService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n public location: Location\r\n ) {\r\n this.createImportMappingForm();\r\n }\r\n\r\n ngOnInit() {\r\n this.properties = this.config.properties;;\r\n this.reFectorAttributes(this.data[0]);\r\n }\r\n\r\n createImportMappingForm() {\r\n this.importMappingForm = this.fb.group({\r\n fields: this.fb.array([]),\r\n });\r\n }\r\n\r\n get fieldsArray(): FormArray {\r\n return this.importMappingForm.get('fields') as FormArray;\r\n }\r\n\r\n createField(field: any): FormGroup {\r\n var fieldForm: FormGroup = this.fb.group({\r\n id: new FormControl(field.id),\r\n label: new FormControl(field.label),\r\n value: new FormControl(field.value),\r\n property: new FormControl(field.property,\r\n Validators.compose(\r\n [\r\n Validators.required\r\n ]\r\n )\r\n ),\r\n propertyType: new FormControl(field.propertyType)\r\n });\r\n return fieldForm;\r\n }\r\n\r\n reFectorAttributes(data) {\r\n for (var k in data) {\r\n if (data.hasOwnProperty(k)) {\r\n var dataValue = {\r\n id: '',\r\n label: k,\r\n value: data[k],\r\n property: '',\r\n propertyType: ''\r\n };\r\n this.firstDataArray.push(dataValue);\r\n }\r\n }\r\n this.firstDataArray.forEach((element: any, mainIndex: any) => {\r\n element.id = mainIndex;\r\n this.properties.find((property: any, index: any) => {\r\n if (property.label.toLowerCase().includes(element.label.toLowerCase())) {\r\n element.property = property.value;\r\n element.propertyType = property.type;\r\n return element;\r\n }\r\n });\r\n });\r\n }\r\n\r\n next() {\r\n this.importMappingForm.markAllAsTouched();\r\n if (!this.importMappingForm.valid) {\r\n return;\r\n }\r\n this.onSave.emit(this.importMappingForm.value);\r\n }\r\n\r\n /** Method to evaluate form fields*/\r\n isFieldValid(field: string, form: any) {\r\n return this.formValidatorService.isFieldValid(field, form);\r\n }\r\n\r\n /** Method to find error in form fields*/\r\n getErrorMessage(field: string, form: any) {\r\n return this.formValidatorService.getErrorMessage(field, form, errorMessages);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n setTimeout(x => {\r\n this.firstDataArray.forEach((element: any) => {\r\n this.fieldsArray.push(this.createField(element));\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n }, 500);\r\n }\r\n\r\n updatePropertyType(event: any, index: any): void {\r\n var field = this.properties.find((field: any) => field.value == event.value);\r\n if (field) {\r\n this.fieldsArray.controls[index].get('propertyType').setValue(field.type);\r\n this.uniqueValidator();\r\n }\r\n }\r\n\r\n uniqueValidator() {\r\n this.fieldsArray.value.forEach((field: any, index: any) => {\r\n var control = this.fieldsArray.controls[index].get('property');\r\n const isNameUnique = this.fieldsArray.value.find(propertyData =>\r\n propertyData.property === control.value\r\n && propertyData.id != this.fieldsArray.controls[index].get('id').value\r\n )\r\n ? false\r\n : true;\r\n if (!isNameUnique) {\r\n control.setErrors({ unavailable: true });\r\n }\r\n else {\r\n control.setErrors(null);\r\n }\r\n });\r\n }\r\n\r\n removeField(index: number) {\r\n if (index == -1) {\r\n return;\r\n }\r\n this.fieldsArray.removeAt(index);\r\n }\r\n\r\n reUpload() {\r\n this.onReUpload.emit(true);\r\n }\r\n\r\n}\r\n","import { Location } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-failed-items-list',\r\n templateUrl: './failed-items-list.component.html',\r\n styleUrls: ['./failed-items-list.component.scss']\r\n})\r\nexport class FailedItemsListComponent implements OnInit {\r\n @Input() failedItems: any[];\r\n @Input() selectedFields: any[];\r\n @Output() onReUpload = new EventEmitter();\r\n\r\n constructor(\r\n public location: Location\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n isValidDate(d: any): boolean {\r\n var date = new Date(d);\r\n return date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n reUpload() {\r\n this.onReUpload.emit(true);\r\n }\r\n\r\n}\r\n","import { ViewerConfig } from '../document-viewer/viewer-config.model';\r\nimport { FileDropperConfig } from '../file-dropper/file-dropper.model';\r\nimport { HttpService } from '../core/http.service';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport * as XLSX from 'xlsx';\r\nimport { ImportCsvConfig } from './import-csv-config';\r\n@UntilDestroy()\r\n\r\n@Component({\r\n selector: 'app-import-csv',\r\n templateUrl: './import-csv.component.html',\r\n styleUrls: ['./import-csv.component.scss']\r\n})\r\nexport class ImportCsvComponent implements OnInit {\r\n result: any;\r\n @Input() config: ImportCsvConfig;\r\n filesConfig: FileDropperConfig;\r\n filesList: any[] = [];\r\n data: any[] = [];\r\n isUploaded: boolean = false;\r\n isImportTypeSelected: boolean = false;\r\n viewerConfig: ViewerConfig;\r\n fileData: any[] = [];\r\n failedItems: any[] = [];\r\n selectedFields: any[] = [];\r\n importSteps: any = [\r\n {\r\n id: 1,\r\n step: 1,\r\n title: 'Upload',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 2,\r\n step: 2,\r\n title: 'Field Mappings',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 3,\r\n step: 3,\r\n title: 'Data Validation',\r\n progressTitle: 'Data Being Validated',\r\n progressDescription: 'The data is currently being validated and checked for errors, please do not navigate away from this page. '\r\n },\r\n {\r\n id: 4,\r\n step: 3,\r\n title: 'Data Validation & Errors',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n {\r\n id: 5,\r\n step: 4,\r\n title: 'Data Importing',\r\n progressTitle: 'Data Being Imported',\r\n progressDescription: 'The data is currently being imported and saved, please do not navigate away from this page. After the import is completed, you will be redirected to a page with the imported records.'\r\n },\r\n {\r\n id: 6,\r\n step: 5,\r\n title: 'Success Page & Data Preview',\r\n progressTitle: '',\r\n progressDescription: ''\r\n },\r\n ];\r\n currentStep: any = 1;\r\n\r\n constructor(\r\n private alertService: AlertService,\r\n private errorHandler: ErrorHandlerService,\r\n private http: HttpService,\r\n ) {\r\n this.filesConfig = {\r\n fileId: \"file\",\r\n containerId: \"fileContainer\",\r\n styles: {\r\n height: \"200px\"\r\n },\r\n acceptFile: '.csv',\r\n multiple: false,\r\n maxSize: 10,\r\n acceptFileText: \".csv\"\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n get step() {\r\n return this.importSteps.find(step => step.id == this.currentStep);\r\n }\r\n\r\n async fileChanged(event: any) {\r\n this.currentStep = 2;\r\n this.filesList = event;\r\n\r\n let selectedFile = null;\r\n let jsonData = null;\r\n const reader = new FileReader();\r\n const file = this.filesList[0];\r\n reader.onload = (event) => {\r\n const data = reader.result;\r\n selectedFile = XLSX.read(data, {\r\n type: 'binary',\r\n cellDates: true,\r\n });\r\n jsonData = selectedFile.SheetNames.reduce((initial, name) => {\r\n const sheet = selectedFile.Sheets[name];\r\n initial = XLSX.utils.sheet_to_json(sheet, {\r\n header: 0,\r\n defval: \"\",\r\n });\r\n return initial;\r\n }, {});\r\n this.fileData = jsonData;\r\n }\r\n reader.readAsBinaryString(file);\r\n return;\r\n }\r\n\r\n mappingProcessed(event: any) {\r\n this.currentStep = 3;\r\n setTimeout(x => {\r\n this.selectedFields = event.fields;\r\n const tempFileData = JSON.parse(JSON.stringify(this.fileData));\r\n tempFileData.forEach(data => {\r\n for (var key in data) {\r\n var field = event.fields.find((field: any) => field.label == key);\r\n if (field) {\r\n if ((field.propertyType == 'date' || field.propertyType == 'dateTime') && this.isValidDate(new Date(data[field.label]))) {\r\n data[field.property] = (new Date(data[field.label]) as Date).toISOString();\r\n }\r\n else {\r\n data[field.property] = data[field.label];\r\n }\r\n delete data[key];\r\n }\r\n else {\r\n delete data[key];\r\n }\r\n }\r\n });\r\n this.save(tempFileData);\r\n }, 2000);\r\n }\r\n\r\n async save(tempFileData: any) {\r\n try {\r\n this.http.post(this.config.apiUrl, { data: tempFileData })\r\n .pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n\r\n this.failedItems = result.failed_items;\r\n if (this.failedItems.length) {\r\n this.alertService.addAlert(result.msg, 'warn');\r\n }\r\n if (!(this.failedItems.length > 0)) {\r\n this.currentStep = 5;\r\n setTimeout(x => {\r\n this.currentStep = 6;\r\n this.result = result;\r\n }, 2000);\r\n }\r\n else {\r\n this.currentStep = 4;\r\n }\r\n });\r\n } catch (error) {\r\n if ((error.status === 422 || error.status === 400) && error.msg) {\r\n this.alertService.addAlert(error.msg, \"warning\");\r\n }\r\n this.errorHandler.handleError(error);\r\n this.reUpload();\r\n }\r\n }\r\n\r\n isValidDate(d: any) {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n\r\n reUpload() {\r\n this.data = [];\r\n this.fileData = [];\r\n this.filesList = [];\r\n this.failedItems = [];\r\n this.selectedFields = [];\r\n this.currentStep = 1;\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-data-import',\r\n templateUrl: './data-import.component.html',\r\n styleUrls: ['./data-import.component.scss']\r\n})\r\nexport class DataImportComponent implements OnInit {\r\n @Input() step: any;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DocumentViewerModule } from './../document-viewer/document-viewer.module';\r\nimport { FileDropperModule } from './../file-dropper/file-dropper.module';\r\nimport { MaterialModule } from './../material.module';\r\nimport { ImportSuccessComponent } from './import-success/import-success.component';\r\nimport { ImportHistoryListComponent } from './import-history-list/import-history-list.component';\r\nimport { FieldMappingComponent } from './field-mapping/field-mapping.component';\r\nimport { FailedItemsListComponent } from './failed-items-list/failed-items-list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ImportCsvComponent } from './import-csv.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { DataImportComponent } from './data-import/data-import.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n FlexLayoutModule,\r\n RouterModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n FileDropperModule,\r\n DocumentViewerModule,\r\n InfiniteScrollModule\r\n ],\r\n declarations: [\r\n ImportCsvComponent,\r\n FieldMappingComponent,\r\n FailedItemsListComponent,\r\n ImportHistoryListComponent,\r\n ImportSuccessComponent,\r\n DataImportComponent\r\n ],\r\n providers: [],\r\n exports: [\r\n ImportCsvComponent\r\n ],\r\n})\r\nexport class ImportCsvModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { PageEvent } from '../data-table/data-table.model';\r\nimport { HttpService } from '../core/http.service';\r\nimport { TimelineValue } from '../timeline-filter';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-login-history-for-user',\r\n templateUrl: './login-history-for-user.component.html',\r\n styleUrls: ['./login-history-for-user.component.scss']\r\n})\r\nexport class LoginHistoryForUserComponent implements OnInit {\r\n\r\n loginHistoryList: any[] = [];\r\n pageEvent: PageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n filters: any = {\r\n sort_by: 'created_at|desc',\r\n };\r\n historyFilterForm: FormGroup;\r\n displayedColumns: any[] = ['index', 'created_at'];\r\n @Input() userId: any;\r\n\r\n constructor(\r\n private http: HttpService,\r\n private fb: FormBuilder,\r\n ) {\r\n this.historyFilterForm = this.fb.group({\r\n 'duration': [''],\r\n 'date_from': [''],\r\n 'date_to': ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.filters.user_id = this.userId;\r\n this.historyFilterForm.valueChanges\r\n .pipe(debounceTime(500), distinctUntilChanged(), untilDestroyed(this))\r\n .subscribe((value: any) => {\r\n value.date_from = value.date_from ? (value.date_from as Date).toISOString() : '';\r\n value.date_to = value.date_to ? (value.date_to as Date).toISOString() : '';\r\n this.filterChange(value);\r\n });\r\n this.initializeData();\r\n }\r\n\r\n onTimelineChange(range: TimelineValue) {\r\n let date_from = range?.date_from ? new Date(range.date_from) : '';\r\n let date_to = range?.date_to ? new Date(range.date_to) : '';\r\n this.historyFilterForm.patchValue({\r\n date_from,\r\n date_to\r\n });\r\n }\r\n\r\n initializeData() {\r\n this.http.get(`api/user-login-history`, { params: { ...this.filters, ...this.pageEvent } })\r\n .pipe(untilDestroyed(this))\r\n .subscribe((result: any) => {\r\n this.loginHistoryList = this.loginHistoryList.concat(result.data);\r\n this.pageEvent.page = result.current_page;\r\n this.pageEvent.lastPage = result.last_page;\r\n });\r\n }\r\n\r\n filterChange(event: any) {\r\n this.filters = {\r\n ...this.filters,\r\n ...event\r\n };\r\n this.reload();\r\n }\r\n\r\n onScroll() {\r\n if (this.pageEvent.lastPage > this.pageEvent.page) {\r\n this.pageEvent.page += 1;\r\n this.initializeData();\r\n }\r\n }\r\n\r\n\r\n reload() {\r\n this.loginHistoryList = [];\r\n this.pageEvent = { page: 1, perPage: 25, lastPage: 1 };\r\n this.initializeData();\r\n }\r\n\r\n ngOnDestroy() {\r\n //Until destroyed uses it\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AuthenticationGuard } from '../core/authentication.guard';\r\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LoginHistoryForUserComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LoginHistoryForUserRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { LoginHistoryForUserRoutingModule } from './login-history-for-user-routing.module';\r\nimport { LoginHistoryForUserComponent } from './login-history-for-user.component';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\nimport { TimelineFilterModule } from '../timeline-filter/timeline-filter.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [LoginHistoryForUserComponent],\r\n imports: [\r\n CommonModule,\r\n LoginHistoryForUserRoutingModule,\r\n InfiniteScrollModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n ReactiveFormsModule,\r\n TimelineFilterModule\r\n ],\r\n exports: [LoginHistoryForUserComponent]\r\n})\r\nexport class LoginHistoryForUserModule { }\r\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\n\r\nexport class TechlifyTaggerTagFormConfigModel {\r\n selectable: boolean;\r\n removable: boolean;\r\n separatorKeysCodes: number[];\r\n placeholder: string;\r\n apiUrl: string;\r\n isCreateable: boolean;\r\n createApiUrl: string;\r\n isCacheTags: boolean;\r\n isSingle: boolean;\r\n\r\n constructor() {\r\n this.selectable = true;\r\n this.removable = true;\r\n this.separatorKeysCodes = [ENTER, COMMA];\r\n this.placeholder = 'New Tag..';\r\n this.apiUrl = 'api/techlify-tagger-tags';\r\n this.createApiUrl = 'api/techlify-tagger-tags';\r\n this.isCreateable = true;\r\n this.isCacheTags = false;\r\n this.isSingle = false;\r\n }\r\n}","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, ViewChild, OnInit, Input, OnDestroy, Inject, Optional, Self, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { HttpService } from '../core/http.service';\r\nimport { TechlifyTaggerTagFormConfigModel } from './techlify-tagger-tag-form-config.model';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-tagger-tag-form-field',\r\n templateUrl: './techlify-tagger-tag-form-field.component.html',\r\n styleUrls: ['./techlify-tagger-tag-form-field.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagFormFieldComponent }],\r\n})\r\nexport class TechlifyTaggerTagFormFieldComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy, OnChanges {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'techlify-tagger-form-field';\r\n id = `techlify-tagger-form-field-${TechlifyTaggerTagFormFieldComponent.nextId++}`;\r\n\r\n onChange = (_: any) => { };\r\n onTouched = () => { };\r\n\r\n tagInputCtrl = new FormControl();\r\n filterString: any;\r\n @ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;\r\n\r\n /**Pass the configuration for Techlify Tagger */\r\n @Input() config: TechlifyTaggerTagFormConfigModel = new TechlifyTaggerTagFormConfigModel();\r\n /**Pass the Model Type for Techlify Tagger, Required */\r\n @Input() modelType!: string;\r\n /**Pass the Model ID for Techlify Tagger */\r\n @Input() modelId: string;\r\n\r\n /**Pass the default list of tags */\r\n private _allTags: any[] = [];\r\n @Input()\r\n get allTags() {\r\n return this._allTags;\r\n }\r\n set allTags(value) {\r\n this._allTags = value;\r\n }\r\n\r\n /**Pass the Categories to filter for a model */\r\n @Input() categories: string[] = [];\r\n /**Pass default category to be used for assigning the tags, when we filter by more than one category */\r\n @Input() defaultCreateCategory: string;\r\n\r\n get tags() {\r\n return this.allTags.filter(x => this.value.some(y => y == x.id));\r\n }\r\n\r\n //Default Getter and Setters for a Form Field Implementation\r\n get empty() {\r\n return this.value.length == 0;\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty || this.tagInputCtrl.value;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.tagInputCtrl.disable() : this.tagInputCtrl.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n\r\n private _value: any[] = [];\r\n @Input()\r\n get value(): any[] {\r\n return this._value;\r\n }\r\n set value(tagIds: any[]) {\r\n this._value = tagIds || [];\r\n this.stateChanges.next();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.tagInputCtrl.dirty && this.required && (this.value.length == 0);\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string;\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n\r\n //API to load all tags for the model type\r\n if (this.allTags.length == 0) {\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n perPage: '1000'\r\n }\r\n }).pipe(\r\n debounceTime(500),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.allTags = result.data;\r\n });\r\n }\r\n\r\n //API to load only the selected tags for the model\r\n if (this.modelId && this.value.length == 0) {\r\n //Model Id is passed and no tags are present, so we query db for the avilable tags for the model ID.\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n model_type: this.modelType,\r\n model_id: this.modelId,\r\n perPage: '1000'\r\n }\r\n }).pipe(\r\n debounceTime(500),\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.value = (result?.data || []).map((x: any) => x.id);\r\n this._handleInput();\r\n });\r\n }\r\n }\r\n\r\n init() {\r\n if (this.modelId && this.allTags.length == 0) {\r\n //Model Id is passed and no tags are passed, so we query db for the avilable tags for the model ID.\r\n this.httpService\r\n .cache(!this.config.isCacheTags)\r\n .get(this.config.apiUrl, {\r\n params: {\r\n categories: this.categories.join(','),\r\n model_type: this.modelType,\r\n model_id: this.modelId\r\n }\r\n }).pipe(\r\n untilDestroyed(this)\r\n ).subscribe((result: any) => {\r\n this.allTags = result.data;\r\n });\r\n }\r\n }\r\n\r\n get filteredTags(): any[] {\r\n return this._filter();\r\n }\r\n\r\n constructor(\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private httpService: HttpService,\r\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n this.tagInputCtrl.valueChanges\r\n .subscribe(filterValue => {\r\n this.filterString = filterValue;\r\n });\r\n\r\n //Set Focus Monitor\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n onContainerClick() {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n\r\n async add(event: MatChipInputEvent) {\r\n const value = (event.value || '').trim();\r\n // Add our tag\r\n // Validate for single mode\r\n if (!this.config.isSingle || (this.value.length === 0)) {\r\n if (value && this.config.isCreateable) {\r\n const tags = this.allTags;\r\n let tag = tags.find((item: any) => item.title.toLowerCase() == value.toLowerCase());\r\n if (!tag) {\r\n //No tag present in the list\r\n try {\r\n const result: any = await this.httpService.post(this.config.createApiUrl, {\r\n title: value,\r\n description: value,\r\n category_title: (this.categories.length > 0) ? (this.defaultCreateCategory ? this.defaultCreateCategory : this.categories[0]) : ''\r\n }).toPromise();\r\n tag = result.item;\r\n } catch (error) {\r\n return;\r\n }\r\n this.allTags.push(tag);\r\n } else {\r\n //Optionally clean the existing value, to avoid duplicate\r\n this.remove(tag);\r\n }\r\n this.value.push(tag.id);\r\n this._handleInput();\r\n }\r\n }\r\n\r\n // Clear the input value\r\n event.input.value = '';\r\n\r\n this.tagInputCtrl.setValue(null);\r\n }\r\n\r\n remove(tag: any): void {\r\n this.value = this.value.filter(x => x !== tag.id);\r\n this._handleInput();\r\n }\r\n\r\n selected(event: MatAutocompleteSelectedEvent): void {\r\n // Validate for single mode\r\n if (!this.config.isSingle || (this.value.length === 0)) {\r\n //Clean the existing value, to avoid duplicate\r\n this.remove({ id: event.option.value });\r\n this.value.push(event.option.value);\r\n this._handleInput();\r\n }\r\n this.tagInput.nativeElement.value = '';\r\n this.tagInputCtrl.setValue(null);\r\n }\r\n\r\n private _filter(): any[] {\r\n const filterValue = this.filterString ? this.filterString.toString().toLowerCase() : null;\r\n const availableTags = this.allTags.filter((tag: any) => !this.value.some((item: any) => item == tag.id));\r\n return filterValue ? availableTags.filter((tag: any) => tag.title.toLowerCase().includes(filterValue)) : availableTags;\r\n }\r\n\r\n writeValue(tagIds: any[]): void {\r\n this.value = tagIds || [];\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n }\r\n\r\n static ngAcceptInputType_disabled: BooleanInput;\r\n static ngAcceptInputType_required: BooleanInput;\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyTaggerTagFormFieldComponent } from './techlify-tagger-tag-form-field.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TechlifyTaggerTagFormFieldComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n MatAutocompleteModule,\r\n ReactiveFormsModule\r\n ],\r\n exports: [TechlifyTaggerTagFormFieldComponent]\r\n})\r\nexport class TechlifyTaggerTagFormFieldModule { }\r\n","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, OnInit, Input, OnDestroy, Inject, Optional, Self } from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\r\nimport { MatFormField, MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { HttpService } from '../core/http.service';\r\n\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-tagger-tag-selector',\r\n templateUrl: './techlify-tagger-tag-selector.component.html',\r\n styleUrls: ['./techlify-tagger-tag-selector.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagSelectorComponent }],\r\n})\r\nexport class TechlifyTaggerTagSelectorComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy {\r\n\r\n /**Pass the Categories to filter for a model */\r\n @Input() categories: string[] = [];\r\n @Input() multiple: boolean = false;\r\n @Input() enableSearch: boolean = true;\r\n tagSelectorCtrl = new FormControl();\r\n @Input() showAllTags: boolean = false;\r\n @Input() useSelectButtonStyle: boolean = false;\r\n\r\n tags: any[] = [];\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n controlType = 'techlify-tagger-selector';\r\n id = `techlify-tagger-selector-${TechlifyTaggerTagSelectorComponent.nextId++}`;\r\n\r\n onChange = (_: any) => { };\r\n onTouched = () => { };\r\n\r\n get apiUrl() {\r\n if (this.showAllTags) {\r\n return 'api/techlify-tagger-tags'\r\n }\r\n else if (this.categories?.length > 0) {\r\n return 'api/techlify-tagger-tags?categories=' + this.categories.join(',');\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n\r\n //Default Getter and Setters for a Form Field Implementation\r\n get empty() {\r\n return this.value.length == 0;\r\n }\r\n\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n private _required = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n this._disabled ? this.tagSelectorCtrl.disable() : this.tagSelectorCtrl.enable();\r\n this.stateChanges.next();\r\n }\r\n private _disabled = false;\r\n\r\n\r\n private _value: any;\r\n @Input()\r\n get value(): any {\r\n return this._value;\r\n }\r\n set value(val: any) {\r\n this._value = val;\r\n this.tagSelectorCtrl.setValue(val);\r\n this.stateChanges.next();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.tagSelectorCtrl.dirty && this.required && (this.value.length == 0);\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string;\r\n\r\n\r\n ngOnInit(): void {\r\n if (this.useSelectButtonStyle) {\r\n this.httpService.get(this.apiUrl)\r\n .pipe(untilDestroyed(this))\r\n .subscribe((res: any) => {\r\n this.tags = res.data;\r\n })\r\n }\r\n }\r\n\r\n selectionChange(value: any) {\r\n this.value = value;\r\n this._handleInput();\r\n }\r\n\r\n constructor(\r\n private _focusMonitor: FocusMonitor,\r\n private _elementRef: ElementRef<HTMLElement>,\r\n private httpService: HttpService,\r\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\r\n @Optional() @Self() public ngControl: NgControl) {\r\n\r\n //Set Focus Monitor\r\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\r\n if (this.focused && !origin) {\r\n this.onTouched();\r\n }\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n onContainerClick() {\r\n // Just a empty implementation for Mat Form Field Interface\r\n }\r\n\r\n writeValue(val: any): void {\r\n this.value = val;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n _handleInput(): void {\r\n this.onChange(this.value);\r\n }\r\n\r\n static ngAcceptInputType_disabled: BooleanInput;\r\n static ngAcceptInputType_required: BooleanInput;\r\n\r\n ngOnDestroy() {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyTaggerTagSelectorComponent } from './techlify-tagger-tag-selector.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MaterialModule } from '../material.module';\r\nimport { SearchableSelectorModule } from '../searchable-selector/searchable-selector.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TechlifyTaggerTagSelectorComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n MatAutocompleteModule,\r\n ReactiveFormsModule,\r\n SearchableSelectorModule,\r\n MatButtonToggleModule\r\n ],\r\n exports: [TechlifyTaggerTagSelectorComponent]\r\n})\r\nexport class TechlifyTaggerTagSelectorModule { }\r\n","import { DataManager } from './../core/dataManager.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TechlifyFeatureService {\r\n\r\n constructor(private dataManager: DataManager) { }\r\n\r\n getFeatures() {\r\n return this.dataManager.GET(`api/features`);\r\n }\r\n\r\n disableFeature(id: any) {\r\n return this.dataManager.GET(`api/feature/${id}/disable`);\r\n }\r\n\r\n enableFeature(id: any) {\r\n return this.dataManager.GET(`api/feature/${id}/enable`);\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { TechlifyFeatureService } from './techlify-feature.service';\r\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { ActionPopup, ActionPopupComponent } from '../action-popup';\r\nimport { DataManager } from '../core/dataManager.service';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport { AlertService } from '../core/alert.service';\r\nimport { StorageService } from '../core/storage.service';\r\n@UntilDestroy()\r\n@Component({\r\n selector: 'app-techlify-listing-feature',\r\n templateUrl: './techlify-feature-listing.component.html',\r\n styleUrls: ['./techlify-feature-listing.component.scss']\r\n})\r\nexport class TechlifyFeatureListingComponent implements OnInit {\r\n\r\n features: any[] = []\r\n displayedColumns: string[] = [\r\n 'index',\r\n 'feature',\r\n 'description',\r\n 'actions',\r\n ]\r\n\r\n dataSource = new MatTableDataSource()\r\n\r\n page: number = 1;\r\n lastPage: number;\r\n perPage: number = 25;\r\n\r\n isWorking: boolean = false\r\n filterFormGroup: FormGroup;\r\n featureToggleForm: FormGroup;\r\n\r\n constructor(\r\n private dataManager: DataManager,\r\n private errorHandler: ErrorHandlerService,\r\n private fb: FormBuilder,\r\n private alertService: AlertService,\r\n private dialog: MatDialog,\r\n private storage: StorageService,\r\n private featureService: TechlifyFeatureService\r\n ) {\r\n this.filterFormGroup = this.fb.group({\r\n num_items: [\"\"]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.loadData()\r\n this.listenForChanges()\r\n }\r\n\r\n listenForChanges() {\r\n this.filterFormGroup.valueChanges\r\n .pipe(debounceTime(500), untilDestroyed(this))\r\n .subscribe((changes) => {\r\n this.reload()\r\n })\r\n }\r\n\r\n async loadData() {\r\n let result;\r\n try {\r\n this.isWorking = true\r\n var filter = this.filterFormGroup.value\r\n filter.page = this.page;\r\n filter.perPage = this.perPage;\r\n result = await this.dataManager.GET(`api/features`, filter);\r\n this.features = this.features.concat(result.data);\r\n this.dataSource = new MatTableDataSource(this.features);\r\n\r\n if (!this.storage.getItem('features')) {\r\n this.setStorage(this.features);\r\n }\r\n\r\n this.isWorking = false\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.isWorking = false;\r\n }\r\n }\r\n\r\n async toggeleFeature(element, feature) {\r\n let status = element ? 'Off' : \"On\";\r\n let data;\r\n const dialogRef = this.dialog.open(ActionPopupComponent, {\r\n width: \"400px\",\r\n data: <ActionPopup>{\r\n title: `Turn this feature ${status}?`,\r\n message: `Would you like to turn ${feature.title} feature ${status}`\r\n }\r\n })\r\n\r\n dialogRef.afterClosed().subscribe(async result => {\r\n if (result) {\r\n try {\r\n data = element\r\n ? await this.featureService.disableFeature(feature.id)\r\n : await this.featureService.enableFeature(feature.id);\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.alertService.addAlert(`You have just turned ${status} the feature ${feature.title}`, 'success');\r\n this.reload();\r\n this.storage.removeItem('features');\r\n this.setStorage(this.features);\r\n this.isWorking = false;\r\n }\r\n } else {\r\n this.reload();\r\n }\r\n })\r\n }\r\n\r\n setStorage(features) {\r\n let localFeatures = [];\r\n for (let feature of features) {\r\n if (!feature.client_feature) {\r\n if (feature.is_enabled_default) {\r\n localFeatures.push(feature.code);\r\n }\r\n } else {\r\n if (feature.client_feature.is_enabled) {\r\n localFeatures.push(feature.code);\r\n }\r\n }\r\n\r\n }\r\n this.storage.setItem(\"features\", localFeatures);\r\n }\r\n\r\n reload() {\r\n this.features = [];\r\n this.page = 1;\r\n if (!this.isWorking) {\r\n this.loadData();\r\n }\r\n }\r\n\r\n onScroll() {\r\n if (!this.isWorking && this.page < this.lastPage) {\r\n this.page += 1;\r\n this.loadData();\r\n }\r\n }\r\n\r\n sortColumn(event) {\r\n var direction = event.direction.toString().toUpperCase()\r\n this.assignFilter(event.active, direction)\r\n this.reload()\r\n }\r\n\r\n assignFilter(column, direction) {\r\n switch (column) {\r\n case 'name': {\r\n return this.filterFormGroup\r\n .get('sort_by')\r\n .setValue('first_name|' + direction)\r\n }\r\n case 'added_on': {\r\n return this.filterFormGroup\r\n .get('sort_by')\r\n .setValue('created_at|' + direction)\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { AuthenticationGuard } from './../core/authentication.guard';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: TechlifyFeatureListingComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n];\r\n\r\nexport const TechlifyFeatureRoutes = RouterModule.forChild(routes);\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-on-off-switch',\r\n templateUrl: './on-off-switch.component.html',\r\n styleUrls: ['./on-off-switch.component.scss']\r\n})\r\n\r\nexport class OnOffSwitchComponent implements OnInit {\r\n\r\n @Input() value: boolean;\r\n slideToggle: FormGroup;\r\n\r\n constructor(private fb: FormBuilder) {\r\n this.slideToggle = this.fb.group({\r\n toggle: [\"\"]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.slideToggle.get('toggle').setValue(this.value);\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { ErrorHandlerService } from '../core/error-handler.service';\r\nimport { StorageService } from '../core/storage.service';\r\nimport { TechlifyFeatureService } from './techlify-feature.service';\r\n\r\n@Directive({\r\n selector: '[techlifyFeatureEnabled]'\r\n})\r\nexport class TechlifyFeatureEnabledDirective {\r\n\r\n features: any;\r\n localFeatures: any[] = [];\r\n @Input('techlifyFeatureEnabled') enabledFeature: any;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private featureService: TechlifyFeatureService,\r\n private errorHandler: ErrorHandlerService,\r\n private storage: StorageService) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.storage.getItem('features')) {\r\n this.getFeatures();\r\n } else {\r\n this.checkForFeatureEnabled();\r\n }\r\n }\r\n\r\n async getFeatures() {\r\n try {\r\n let features = await this.featureService.getFeatures();\r\n\r\n for (let feature of features.data) {\r\n if (!feature.client_feature) {\r\n if (feature.is_enabled_default) {\r\n this.localFeatures.push(feature.code);\r\n }\r\n } else {\r\n if (feature.client_feature.is_enabled) {\r\n this.localFeatures.push(feature.code);\r\n }\r\n }\r\n\r\n }\r\n this.storage.setItem(\"features\", this.localFeatures);\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n } finally {\r\n this.checkForFeatureEnabled()\r\n }\r\n }\r\n\r\n checkForFeatureEnabled() {\r\n try {\r\n let features = this.storage.getItem('features');\r\n let features_split = features.split(',');\r\n\r\n if (features_split.includes(this.enabledFeature)) {\r\n this.el.nativeElement.style.display = \"show\";\r\n } else {\r\n this.el.nativeElement.remove();\r\n }\r\n\r\n } catch (error) {\r\n this.errorHandler.handleError(error);\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TechlifyFeatureListingComponent } from './techlify-feature-listing.component';\r\n\r\nimport { TechlifyFeatureRoutes } from './techlify-feature.routing';\r\nimport { OnOffSwitchComponent } from './on-off-switch/on-off-switch.component';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { TechlifyFeatureEnabledDirective } from './techlify-feature-enabled.directive';\r\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../material.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MaterialModule,\r\n FlexLayoutModule,\r\n TechlifyFeatureRoutes,\r\n MatSlideToggleModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n InfiniteScrollModule\r\n ],\r\n declarations: [TechlifyFeatureListingComponent, OnOffSwitchComponent, TechlifyFeatureEnabledDirective],\r\n exports: [TechlifyFeatureListingComponent, TechlifyFeatureEnabledDirective]\r\n})\r\nexport class TechlifyFeatureModule { }\r\n","/*\r\n * Public API Surface of ngx-techlify-core\r\n */\r\n\r\nimport { from } from 'rxjs';\r\n\r\nexport * from './lib/action-popup';\r\nexport * from './lib/base-model';\r\nexport * from './lib/data-table';\r\nexport * from './lib/document-viewer';\r\nexport * from './lib/entity-files';\r\nexport * from './lib/file-dropper';\r\nexport * from './lib/note';\r\nexport * from './lib/searchable-selector';\r\nexport * from './lib/utility';\r\nexport * from './lib/timeline-filter';\r\nexport * from './lib/loader';\r\nexport * from './lib/core';\r\n\r\nexport * from './lib/material.module';\r\nexport * from './lib/core/core.module';\r\nexport * from './lib/action-popup/action-popup.module';\r\nexport * from './lib/data-table/data-table.module';\r\nexport * from './lib/document-viewer/document-viewer.module';\r\nexport * from './lib/entity-files/entity-files-view-all.module';\r\nexport * from './lib/file-dropper/file-dropper.module';\r\nexport * from './lib/note/note.module';\r\nexport * from './lib/searchable-selector/searchable-selector.module';\r\nexport * from './lib/utility/utility.module';\r\nexport * from './lib/timeline-filter/timeline-filter.module';\r\nexport * from './lib/loader/loader.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription.module';\r\nexport * from './lib/email-subscription/email-subscription-routing.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module';\r\nexport * from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module';\r\n\r\nexport * from './lib/email-subscription/email-subscription-for-user';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-form';\r\nexport * from './lib/email-subscription/email-subscription-type/email-subscription-type-list';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-form';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list';\r\nexport * from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter';\r\n\r\nexport * from './lib/techlify-update/techlify-update.module';\r\nexport * from './lib/techlify-update/techlify-update-history/techlify-update-history.module';\r\nexport * from './lib/techlify-update/update-notifier/update-notifier.module';\r\nexport * from './lib/techlify-update/update-notifier/update-notifier.component';\r\n\r\nexport * from './lib/export-excel/export-excel-button/export-excel-button.component';\r\nexport * from './lib/export-excel/export-excel.module';\r\n\r\n\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.component';\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model.module';\r\nexport * from './lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list.component';\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list.module';\r\nexport * from './lib/audit-log/audit-log-list/audit-log-list-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.component';\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter.module';\r\nexport * from './lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view.component';\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view.module';\r\nexport * from './lib/audit-log/audit-log-view/audit-log-view-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.component';\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model.module';\r\nexport * from './lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.component';\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model.module';\r\nexport * from './lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module';\r\n\r\nexport * from './lib/audit-log/audit-log.module';\r\nexport * from './lib/audit-log/audit-log-routing.module';\r\n\r\nexport * from './lib/date-validator';\r\n\r\nexport * from './lib/import-csv/import-csv.module';\r\nexport * from './lib/import-csv/import-csv.component';\r\nexport * from './lib/import-csv/import-csv-config';\r\n\r\nexport * from './lib/login-history-for-user/login-history-for-user.module';\r\nexport * from './lib/login-history-for-user/login-history-for-user-routing.module';\r\nexport * from './lib/login-history-for-user/login-history-for-user.component';\r\n\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model';\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component';\r\nexport * from './lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module';\r\n\r\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module';\r\nexport * from './lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component';\r\n\r\nexport * from './lib/read-more/read-more.module';\r\nexport * from './lib/read-more/read-more.component';\r\n\r\nexport * from './lib/techlify-feature/techlify-feature.module';\r\nexport * from './lib/techlify-feature/techlify-feature.routing';\r\nexport * from './lib/techlify-feature/techlify-feature-listing.component';\r\nexport * from './lib/techlify-feature/techlify-feature-enabled.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ActionPopupComponent as ɵg} from './lib/action-popup/action-popup.component';\nexport {ActionPopup as ɵh} from './lib/action-popup/action-popup.model';\nexport {AlertService as ɵn} from './lib/core/alert.service';\nexport {AuthenticationGuard as ɵbg} from './lib/core/authentication.guard';\nexport {ConfigService as ɵv} from './lib/core/config.service';\nexport {CredentialsService as ɵu} from './lib/core/credentials.service';\nexport {DataManager as ɵbv} from './lib/core/dataManager.service';\nexport {ErrorHandlerService as ɵbw} from './lib/core/error-handler.service';\nexport {FormValidatorService as ɵl} from './lib/core/form-validator.service';\nexport {HTTP_DYNAMIC_INTERCEPTORS as ɵd,HttpService as ɵe} from './lib/core/http.service';\nexport {RouteReusableStrategy as ɵf} from './lib/core/route-reusable-strategy';\nexport {ErrorSnackComponent as ɵc,SuccessSnackComponent as ɵb} from './lib/core/snack/snack.component';\nexport {SnackModule as ɵa} from './lib/core/snack/snack.module';\nexport {StorageService as ɵcc} from './lib/core/storage.service';\nexport {TechlifyConfig as ɵw} from './lib/core/techlify-config.model';\nexport {DataTableComponent as ɵi} from './lib/data-table/data-table.component';\nexport {DocumentViewerComponent as ɵj} from './lib/document-viewer/document-viewer.component';\nexport {EmailSubscriptionForUserComponent as ɵbk} from './lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component';\nexport {EmailSubscriptionTypeFormComponent as ɵbi} from './lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component';\nexport {EmailSubscriptionTypeListComponent as ɵbj} from './lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component';\nexport {EmailSubscriptionUserFormComponent as ɵbe} from './lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component';\nexport {EmailSubscriptionUserListFilterComponent as ɵbh} from './lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component';\nexport {EmailSubscriptionUserListComponent as ɵbf} from './lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component';\nexport {EntityFileFormComponent as ɵk} from './lib/entity-files/entity-file-form/entity-file-form.component';\nexport {EntityFileService as ɵm} from './lib/entity-files/entity-file.service';\nexport {EntityFilesViewAllComponent as ɵo} from './lib/entity-files/entity-files-view-all.component';\nexport {FileDropperComponent as ɵp} from './lib/file-dropper/file-dropper.component';\nexport {DataImportComponent as ɵcb} from './lib/import-csv/data-import/data-import.component';\nexport {FailedItemsListComponent as ɵby} from './lib/import-csv/failed-items-list/failed-items-list.component';\nexport {FieldMappingComponent as ɵbx} from './lib/import-csv/field-mapping/field-mapping.component';\nexport {ImportHistoryListComponent as ɵbz} from './lib/import-csv/import-history-list/import-history-list.component';\nexport {ImportSuccessComponent as ɵca} from './lib/import-csv/import-success/import-success.component';\nexport {LoaderComponent as ɵbd} from './lib/loader/loader.component';\nexport {CommentFormComponent as ɵt} from './lib/note/comment-form/comment-form.component';\nexport {NoteFormComponent as ɵs} from './lib/note/note-form/note-form.component';\nexport {NoteListComponent as ɵq} from './lib/note/note-list/note-list.component';\nexport {NoteService as ɵr} from './lib/note/note.service';\nexport {MatSelectInfiniteScrollDirective as ɵy} from './lib/searchable-selector/mat-select-infinite-scroll.directive';\nexport {SearchableSelectorComponent as ɵx} from './lib/searchable-selector/searchable-selector.component';\nexport {OnOffSwitchComponent as ɵce} from './lib/techlify-feature/on-off-switch/on-off-switch.component';\nexport {TechlifyFeatureService as ɵcd} from './lib/techlify-feature/techlify-feature.service';\nexport {TechlifyUpdateFormComponent as ɵbp} from './lib/techlify-update/techlify-update-form/techlify-update-form.component';\nexport {TechlifyUpdateFormModule as ɵbo} from './lib/techlify-update/techlify-update-form/techlify-update-form.module';\nexport {TechlifyUpdateHistoryRoutingModule as ɵbq} from './lib/techlify-update/techlify-update-history/techlify-update-history-routing.module';\nexport {TechlifyUpdateHistoryComponent as ɵbr} from './lib/techlify-update/techlify-update-history/techlify-update-history.component';\nexport {TechlifyUpdateRoutingModule as ɵbn} from './lib/techlify-update/techlify-update-routing.module';\nexport {TechlifyUpdateService as ɵbm} from './lib/techlify-update/techlify-update.service';\nexport {TechlifyUpdatesListComponent as ɵbl} from './lib/techlify-update/techlify-updates-list/techlify-updates-list.component';\nexport {UpdateNotifierSnackComponent as ɵbs} from './lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component';\nexport {UpdateViewComponent as ɵbu} from './lib/techlify-update/update-view/update-view.component';\nexport {UpdateViewModule as ɵbt} from './lib/techlify-update/update-view/update-view.module';\nexport {TimelineFilterRoutingModule as ɵbc} from './lib/timeline-filter/timeline-filter-routing.module';\nexport {TimelineFilterComponent as ɵbb} from './lib/timeline-filter/timeline-filter.component';\nexport {NumItemsSelector as ɵz} from './lib/utility/num-items-selector.component';\nexport {NumberSelector as ɵba} from './lib/utility/number-selector.component';"],"names":["log","errorMessages","routes","XLSX.utils","XLSX.writeFile","jsondiffpatch.diff","jsondiffpatch.formatters","XLSX.read"],"mappings":"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"}
|