tin-spa 2.3.10 → 2.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"tin-spa.mjs","sources":["../../../projects/tin-spa/src/lib/services/tin-spa.service.ts","../../../projects/tin-spa/src/lib/services/storage.service.ts","../../../projects/tin-spa/src/lib/components/message/messageDialog.component.ts","../../../projects/tin-spa/src/lib/components/message/messageDialog.component.html","../../../projects/tin-spa/src/lib/services/message.service.ts","../../../projects/tin-spa/src/lib/services/export.service.ts","../../../projects/tin-spa/src/lib/classes/TinCore.ts","../../../projects/tin-spa/src/lib/classes/Classes.ts","../../../projects/tin-spa/src/lib/services/http.service.ts","../../../projects/tin-spa/src/lib/services/log.service.ts","../../../projects/tin-spa/src/lib/services/auth.service.ts","../../../projects/tin-spa/src/lib/services/datalib.service.ts","../../../projects/tin-spa/src/lib/services/loader.service.ts","../../../projects/tin-spa/src/lib/services/dialog.service.ts","../../../projects/tin-spa/src/lib/components/tin-spa.component.ts","../../../projects/tin-spa/src/lib/modules/spa-mat.module.ts","../../../projects/tin-spa/src/lib/components/text/text.component.ts","../../../projects/tin-spa/src/lib/components/text/text.component.html","../../../projects/tin-spa/src/lib/components/check/check.component.ts","../../../projects/tin-spa/src/lib/components/check/check.component.html","../../../projects/tin-spa/src/lib/components/date/date.component.ts","../../../projects/tin-spa/src/lib/components/date/date.component.html","../../../projects/tin-spa/src/lib/components/datetime/datetime.component.ts","../../../projects/tin-spa/src/lib/components/datetime/datetime.component.html","../../../projects/tin-spa/src/lib/components/label/label.component.ts","../../../projects/tin-spa/src/lib/components/label/label.component.html","../../../projects/tin-spa/src/lib/components/select/select.component.ts","../../../projects/tin-spa/src/lib/components/select/select.component.html","../../../projects/tin-spa/src/lib/components/activity/activity.component.ts","../../../projects/tin-spa/src/lib/components/activity/activity.component.html","../../../projects/tin-spa/src/lib/components/filter/filter.component.ts","../../../projects/tin-spa/src/lib/components/filter/filter.component.html","../../../projects/tin-spa/src/lib/components/money/currency-input-mask.directive.ts","../../../projects/tin-spa/src/lib/components/money/money.component.ts","../../../projects/tin-spa/src/lib/components/money/money.component.html","../../../projects/tin-spa/src/lib/components/option/option.component.ts","../../../projects/tin-spa/src/lib/components/option/option.component.html","../../../projects/tin-spa/src/lib/pipes/camelToWords.pipe.ts","../../../projects/tin-spa/src/lib/components/tiles/tiles.component.ts","../../../projects/tin-spa/src/lib/components/tiles/tiles.component.html","../../../projects/tin-spa/src/lib/components/steps/steps.component.ts","../../../projects/tin-spa/src/lib/components/steps/steps.component.html","../../../projects/tin-spa/src/lib/components/attach/attach.component.ts","../../../projects/tin-spa/src/lib/components/attach/attach.component.html","../../../projects/tin-spa/src/lib/components/chips/chips.component.ts","../../../projects/tin-spa/src/lib/components/chips/chips.component.html","../../../projects/tin-spa/src/lib/components/loader/loader.component.ts","../../../projects/tin-spa/src/lib/components/loader/loader.component.html","../../../projects/tin-spa/src/lib/components/nav-menu/nav-menu.component.ts","../../../projects/tin-spa/src/lib/components/nav-menu/nav-menu.component.html","../../../projects/tin-spa/src/lib/services/loader-interceptor.service.ts","../../../projects/tin-spa/src/lib/components/money/currency-input-mask.module.ts","../../../projects/tin-spa/src/lib/services/button.service.ts","../../../projects/tin-spa/src/lib/components/number/number.component.ts","../../../projects/tin-spa/src/lib/components/number/number.component.html","../../../projects/tin-spa/src/lib/components/viewer/viewerDialog.component.ts","../../../projects/tin-spa/src/lib/components/viewer/viewerDialog.component.html","../../../projects/tin-spa/src/lib/components/viewer/viewer.component.ts","../../../projects/tin-spa/src/lib/components/viewer/viewer.component.html","../../../projects/tin-spa/src/lib/components/form/form.component.ts","../../../projects/tin-spa/src/lib/components/form/form.component.html","../../../projects/tin-spa/src/lib/components/alert/alert.component.ts","../../../projects/tin-spa/src/lib/components/alert/alert.component.html","../../../projects/tin-spa/src/lib/components/table-internal/detailsDialog-internal.component.ts","../../../projects/tin-spa/src/lib/components/table-internal/detailsDialog-internal.component.html","../../../projects/tin-spa/src/lib/services/table-config.service.ts","../../../projects/tin-spa/src/lib/services/condition.service.ts","../../../projects/tin-spa/src/lib/components/search/search.component.ts","../../../projects/tin-spa/src/lib/components/search/search.component.html","../../../projects/tin-spa/src/lib/components/table-header/table-header.component.ts","../../../projects/tin-spa/src/lib/components/table-header/table-header.component.html","../../../projects/tin-spa/src/lib/components/table-row/table-row.component.ts","../../../projects/tin-spa/src/lib/components/table-row/table-row.component.html","../../../projects/tin-spa/src/lib/components/table-action/table-action.component.ts","../../../projects/tin-spa/src/lib/components/table-action/table-action.component.html","../../../projects/tin-spa/src/lib/components/table-internal/table-internal.component.ts","../../../projects/tin-spa/src/lib/components/table-internal/table-internal.component.html","../../../projects/tin-spa/src/lib/components/table/detailsDialog.component.ts","../../../projects/tin-spa/src/lib/components/table/detailsDialog.component.html","../../../projects/tin-spa/src/lib/components/table/table.component.ts","../../../projects/tin-spa/src/lib/components/table/table.component.html","../../../projects/tin-spa/src/lib/components/tenant-settings/inviteDialog.component.ts","../../../projects/tin-spa/src/lib/components/tenant-settings/inviteDialog.component.html","../../../projects/tin-spa/src/lib/components/invitations-table/invitations-table.component.ts","../../../projects/tin-spa/src/lib/components/invitations-table/invitations-table.component.html","../../../projects/tin-spa/src/lib/components/tenant-settings/tenant-settings.component.ts","../../../projects/tin-spa/src/lib/components/tenant-settings/tenant-settings.component.html","../../../projects/tin-spa/src/lib/components/tenants/tenants.component.ts","../../../projects/tin-spa/src/lib/components/tenants/tenants.component.html","../../../projects/tin-spa/src/lib/components/bug/bug.component.ts","../../../projects/tin-spa/src/lib/components/bug/bug.component.html","../../../projects/tin-spa/src/lib/components/membership/membership.component.ts","../../../projects/tin-spa/src/lib/components/membership/membership.component.html","../../../projects/tin-spa/src/lib/components/plans/plans.component.ts","../../../projects/tin-spa/src/lib/components/plans/plans.component.html","../../../projects/tin-spa/src/lib/components/customers/customers.component.ts","../../../projects/tin-spa/src/lib/components/customers/customers.component.html","../../../projects/tin-spa/src/lib/components/inventory/quantityDialog.component.ts","../../../projects/tin-spa/src/lib/components/inventory/quantityDialog.component.html","../../../projects/tin-spa/src/lib/components/list-dialog/list-dialog.component.ts","../../../projects/tin-spa/src/lib/components/list-dialog/list-dialog.component.html","../../../projects/tin-spa/src/lib/components/inventory/inventory.component.ts","../../../projects/tin-spa/src/lib/components/inventory/inventory.component.html","../../../projects/tin-spa/src/lib/components/accounts/accountDialog.component.ts","../../../projects/tin-spa/src/lib/components/accounts/accountDialog.component.html","../../../projects/tin-spa/src/lib/components/accounts/accounts.component.ts","../../../projects/tin-spa/src/lib/components/accounts/accounts.component.html","../../../projects/tin-spa/src/lib/components/suppliers/suppliers.component.ts","../../../projects/tin-spa/src/lib/components/suppliers/suppliers.component.html","../../../projects/tin-spa/src/lib/components/transactions/transactDialog.component.ts","../../../projects/tin-spa/src/lib/components/transactions/transactDialog.component.html","../../../projects/tin-spa/src/lib/components/transactions/transactions.component.ts","../../../projects/tin-spa/src/lib/components/transactions/transactions.component.html","../../../projects/tin-spa/src/lib/components/tasks/tasks.component.ts","../../../projects/tin-spa/src/lib/components/tasks/tasks.component.html","../../../projects/tin-spa/src/lib/components/departments/departments.component.ts","../../../projects/tin-spa/src/lib/components/departments/departments.component.html","../../../projects/tin-spa/src/lib/components/employees/employees.component.ts","../../../projects/tin-spa/src/lib/components/employees/employees.component.html","../../../projects/tin-spa/src/lib/components/positions/positions.component.ts","../../../projects/tin-spa/src/lib/components/positions/positions.component.html","../../../projects/tin-spa/src/lib/components/grades/grades.component.ts","../../../projects/tin-spa/src/lib/components/grades/grades.component.html","../../../projects/tin-spa/src/lib/components/welcome/welcome.component.ts","../../../projects/tin-spa/src/lib/components/welcome/welcome.component.html","../../../projects/tin-spa/src/lib/components/invitations/invitations.component.ts","../../../projects/tin-spa/src/lib/components/invitations/invitations.component.html","../../../projects/tin-spa/src/lib/components/notifications/notifications.component.ts","../../../projects/tin-spa/src/lib/components/notifications/notifications.component.html","../../../projects/tin-spa/src/lib/tin-spa.module.ts","../../../projects/tin-spa/src/lib/components/login/login.component.ts","../../../projects/tin-spa/src/lib/components/login/login.component.html","../../../projects/tin-spa/src/lib/components/signup/signup.component.ts","../../../projects/tin-spa/src/lib/components/signup/signup.component.html","../../../projects/tin-spa/src/lib/components/recover-account/recover-account.component.ts","../../../projects/tin-spa/src/lib/components/recover-account/recover-account.component.html","../../../projects/tin-spa/src/lib/modules/spa-index.module.ts","../../../projects/tin-spa/src/lib/components/change-password/change-password.component.ts","../../../projects/tin-spa/src/lib/components/change-password/change-password.component.html","../../../projects/tin-spa/src/lib/components/profile/profile.component.ts","../../../projects/tin-spa/src/lib/components/profile/profile.component.html","../../../projects/tin-spa/src/lib/modules/spa-user.module.ts","../../../projects/tin-spa/src/lib/components/settings/settings.component.ts","../../../projects/tin-spa/src/lib/components/settings/settings.component.html","../../../projects/tin-spa/src/lib/components/logs/logs.component.ts","../../../projects/tin-spa/src/lib/components/logs/logs.component.html","../../../projects/tin-spa/src/lib/components/users/users.component.ts","../../../projects/tin-spa/src/lib/components/users/users.component.html","../../../projects/tin-spa/src/lib/components/roles/addRoleDialog.component.ts","../../../projects/tin-spa/src/lib/components/roles/addRoleDialog.component.html","../../../projects/tin-spa/src/lib/components/roles/roles.component.ts","../../../projects/tin-spa/src/lib/components/roles/roles.component.html","../../../projects/tin-spa/src/lib/components/create-account/create-account.component.ts","../../../projects/tin-spa/src/lib/components/create-account/create-account.component.html","../../../projects/tin-spa/src/lib/modules/spa-admin.module.ts","../../../projects/tin-spa/src/lib/modules/index/index-routing.module.ts","../../../projects/tin-spa/src/lib/modules/index/index.module.ts","../../../projects/tin-spa/src/lib/modules/admin/admin-routing.module.ts","../../../projects/tin-spa/src/lib/modules/admin/admin.module.ts","../../../projects/tin-spa/src/lib/modules/user/user-routing.module.ts","../../../projects/tin-spa/src/lib/modules/user/user.module.ts","../../../projects/tin-spa/src/public-api.ts","../../../projects/tin-spa/src/tin-spa.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TinSpaService {\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor() { }\r\n\r\n // Store the value\r\n async store(storageKey: string, value: any) {\r\n const encryptedValue = btoa(escape(JSON.stringify(value)));\r\n // const encryptedValue = JSON.stringify(value);\r\n await localStorage.setItem(storageKey, encryptedValue);\r\n }\r\n\r\n // Get the value\r\n async get(storageKey: string) {\r\n const ret = await localStorage.getItem(storageKey);\r\n return JSON.parse(unescape(atob(ret)));\r\n // return JSON.parse(ret);\r\n }\r\n\r\n // Remove\r\n async removeStorageItem(storageKey: string) {\r\n await localStorage.removeItem(storageKey);\r\n }\r\n\r\n // Clear storage\r\n async clear() {\r\n await localStorage.clear();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n\r\n@Component({\r\n selector: 'lib-app-message',\r\n templateUrl: './messageDialog.component.html'\r\n})\r\n\r\nexport class messageDialog implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef<messageDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n\r\n ngOnInit() {\r\n\r\n this.messageType = this.data.type\r\n this._messageSubject = this.data.subject;\r\n this._messageDetails = this.data.details;\r\n\r\n }\r\n\r\n messageType;\r\n _messageSubject;\r\n _messageDetails;\r\n\r\n response(resp: string) {\r\n\r\n this.dialogRef.close(resp);\r\n\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n"," <h2 mat-dialog-title>\r\n\r\n <div class=\"tin-between\">\r\n <mat-label *ngIf=\"messageType=='confirm'\">Confirm</mat-label>\r\n <mat-label *ngIf=\"messageType=='info'\">Information</mat-label>\r\n <mat-label *ngIf=\"messageType=='error'\">Error</mat-label>\r\n\r\n <mat-icon *ngIf=\"messageType=='confirm'\" >question_mark</mat-icon>\r\n <mat-icon *ngIf=\"messageType=='info'\" style=\"color: steelblue;\">info</mat-icon>\r\n </div>\r\n\r\n\r\n </h2>\r\n\r\n <mat-dialog-content >\r\n\r\n <!-- Confirm -->\r\n <div *ngIf=\"messageType=='confirm'\" class=\"alert alert-secondary\" role=\"alert\">\r\n {{_messageDetails}}\r\n </div>\r\n\r\n <!-- Information -->\r\n <div *ngIf=\"messageType=='info'\" class=\"alert alert-secondary\" role=\"alert\">\r\n\r\n <h3 *ngIf=\"_messageSubject && _messageSubject != ''\">{{_messageSubject}}</h3>\r\n {{_messageDetails}}\r\n\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"messageType=='error'\">\r\n\r\n {{_messageDetails}}\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n\r\n <button id=\"btnYes\" mat-stroked-button style=\"color: green;\" *ngIf=\"messageType=='confirm'\" (click)=\"response('yes')\" cdkFocusInitial>Yes</button>\r\n\r\n <button id=\"btnNo\" mat-stroked-button style=\"color: red;\" *ngIf=\"messageType=='confirm'\" (click)=\"response('no')\" >No</button>\r\n\r\n <button id=\"btnOK\" mat-stroked-button *ngIf=\"messageType=='info' || messageType=='error'\" color=\"primary\" (click)=\"response('ok')\" cdkFocusInitial>OK</button>\r\n\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { messageDialog } from \"../components/message/messageDialog.component\";\r\nimport { Observable, of } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MessageService {\r\n constructor(private snackBar: MatSnackBar, public dialog: MatDialog) { }\r\n\r\n public toast(msg: string) {\r\n this.snackBar.open(msg, \"OK\", { duration: 5000 });\r\n }\r\n\r\n public info(details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, details },\r\n });\r\n\r\n }\r\n\r\n public infoWithSubject(subject: string, details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public error(details: string) {\r\n\r\n let type = \"error\";\r\n let subject: \"\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public confirm(msg: string): Observable<any> {\r\n\r\n let type = \"confirm\";\r\n let subject = \"\";\r\n let details = msg\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"400px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n return dialogRef.afterClosed().pipe(mergeMap((result) => {\r\n\r\n return of(result);\r\n\r\n }\r\n\r\n ));\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n// import * as FileSaver from 'file-saver';\r\n// import * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n constructor() { }\r\n\r\n // fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n // fileExtension = '.xlsx';\r\n\r\n // public exportExcel(jsonData: any[], fileName: string): void {\r\n\r\n // const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);\r\n // const wb: XLSX.WorkBook = { Sheets: { 'data': ws }, SheetNames: ['data'] };\r\n // const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n // this.saveExcelFile(excelBuffer, fileName);\r\n // }\r\n\r\n // private saveExcelFile(buffer: any, fileName: string): void {\r\n // const data: Blob = new Blob([buffer], { type: this.fileType });\r\n // FileSaver.saveAs(data, fileName + this.fileExtension);\r\n // }\r\n}\r\n","import { DetailsDialogConfig, DetailsSource, Field, FormConfig } from \"./Classes\";\r\n\r\nexport class Core {\r\n\r\n\r\n public static deepClone(obj) {\r\n if (obj === null || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const arrCopy = [];\r\n obj.forEach((item, index) => {\r\n arrCopy[index] = this.deepClone(item);\r\n });\r\n return arrCopy;\r\n }\r\n\r\n const objCopy = {};\r\n Object.keys(obj).forEach(key => {\r\n objCopy[key] = this.deepClone(obj[key]);\r\n });\r\n return objCopy;\r\n }\r\n\r\n\r\n\r\n public static camelToWords(value: string): string {\r\n if (!value) return value;\r\n\r\n if (typeof value !== 'string') return value;\r\n\r\n if (value.length == 0) return value;\r\n\r\n let v = value.charAt(0).toUpperCase() + value.substring(1)\r\n return v.replace(/([A-Z]+)*([A-Z][a-z])/g, \"$1 $2\");\r\n }\r\n\r\n public static generateObject(fields: Field[]) {\r\n\r\n let data = {};\r\n fields.forEach(field => {\r\n\r\n if (field.type != 'section' && field.type != 'blank' ){\r\n data[field.name] = this.getInitialValue(field);\r\n }\r\n\r\n });\r\n\r\n // console.log(data)\r\n\r\n return data;\r\n }\r\n\r\n public static resetObject(fields: Field[], data) {\r\n\r\n fields.forEach(field => {\r\n if (field.type != 'section' && field.type != 'blank') {\r\n data[field.name] = this.getInitialValue(field);\r\n }\r\n });\r\n\r\n }\r\n\r\n public static testVisible(config : FormConfig, data, f: Field): boolean {\r\n\r\n if (f.hidden) return false;\r\n\r\n if (config.mode == 'create' && f.hideOnCreate) {\r\n return false;\r\n }\r\n\r\n\r\n if (config.mode != 'create' && f.hideOnExists) {\r\n return false;\r\n }\r\n\r\n if (f.hiddenCondition) {\r\n return !f.hiddenCondition(data);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public static validateObject(fields: Field[], data): string {\r\n\r\n console.log(\"Validations\")\r\n\r\n for (let field of fields) {\r\n\r\n if (field.type == 'file' || field.type == 'file-view' || field.type == 'blank' || field.type == 'section' ) continue\r\n\r\n\r\n\r\n let name = field.alias ?? this.camelToWords(field.name);\r\n let d = data[field.name];\r\n\r\n\r\n console.log(name + ' ' + d)\r\n\r\n if (field.required){\r\n\r\n if (d == undefined || d == null) return `${name} is required`;\r\n\r\n if (field.type == 'text'){\r\n\r\n if (d == '') return `Please enter ${name}`;\r\n\r\n if (field.min && d.length < field.min) return `Minimum ${name} length is ${field.min}`\r\n\r\n if (field.max && d.length > field.max) return `Maximum ${name} length is ${field.max}`\r\n\r\n }\r\n else if (field.type == 'number' || field.type == 'money' || field.type == 'date'){\r\n\r\n if (field.min && d < field.min) return `Minimum ${name} is ${field.min}`\r\n\r\n if (field.max && d > field.max) return `Maximum ${name} is ${field.max}`\r\n\r\n }\r\n else if (field.type == 'select') {\r\n\r\n if (typeof(d) == 'string' && d == '') return `Please select ${name}`;\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n return '';\r\n }\r\n\r\n private static getInitialValue(field: Field) {\r\n\r\n if (field.defaultValue){\r\n\r\n if (field.type == 'date' || field.type == 'datetime' && field.defaultValue == 'now') return this.nowDate(true);\r\n\r\n return field.defaultValue;\r\n }\r\n\r\n if (field.type == 'select' && (field.hidden || field.hideOnCreate)) return 0;\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return '';\r\n case 'money':\r\n return 0;\r\n case 'number':\r\n return 0;\r\n case 'date':\r\n return this.nowDate(true);\r\n case 'checkbox':\r\n return false;\r\n case 'select':\r\n return null;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n public static getClone(x) {\r\n return this.deepClone(x);\r\n }\r\n\r\n public static getNumber(value: string) {\r\n\r\n if (value == null || value == \"\") {\r\n return 0;\r\n }\r\n\r\n const onlyNumbers = value.replace(/[^\\d.-]/g, '');\r\n return onlyNumbers\r\n }\r\n\r\n public static getFirstDayOfMonth() {\r\n const date = new Date();\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n }\r\n\r\n public static emailIsValid(email) {\r\n // return /\\S+@\\S+\\.\\S+/.test(email)\r\n return false;\r\n }\r\n\r\n public static isValidUNCPath(path: string) {\r\n // return /\\\\\\\\([a-zA-Z0-9_.$●-]+)\\\\([a-zA-Z0-9_.$●-]+).*/.test(path)\r\n return false;\r\n }\r\n\r\n public static isValidDate(date) {\r\n\r\n var parsedDate = Date.parse(date);\r\n\r\n\r\n if (isNaN(date) && !isNaN(parsedDate)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n public static isValidEmailList(list: string) {\r\n\r\n if (list.includes(\";\")) {\r\n\r\n let emails = list.split(\";\")\r\n\r\n for (var email of emails) {\r\n if (this.emailIsValid(email) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n } else {\r\n\r\n if (this.emailIsValid(list) == false) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n public static nullDate = \"01 Jan 1969\"\r\n\r\n public static isNumber(value: string | number): boolean {\r\n return ((value != null) &&\r\n (value !== '') &&\r\n !isNaN(Number(value.toString())));\r\n }\r\n\r\n public static getDiff(startDate, endDate = Date()) {\r\n\r\n var eventStartTime = new Date(startDate);\r\n var eventEndTime = new Date(endDate);\r\n var milliseconds = eventEndTime.valueOf() - eventStartTime.valueOf();\r\n\r\n function numberEnding(number: number) {\r\n\r\n if (number.toFixed() == '1') {\r\n return ''\r\n } else {\r\n return 's';\r\n }\r\n\r\n }\r\n\r\n var minutes = (milliseconds / (1000 * 60));\r\n\r\n var hours: number = (milliseconds / (1000 * 60 * 60));\r\n\r\n var days = (milliseconds / (1000 * 60 * 60 * 24));\r\n\r\n var weeks: number = (milliseconds / (1000 * 60 * 60 * 24 * 7));\r\n\r\n var months = (milliseconds / (1000 * 60 * 60 * 24 * 7 * 4));\r\n\r\n var years = (milliseconds / (1000 * 60 * 60 * 24 * 365));\r\n\r\n\r\n if (years >= 1) {\r\n\r\n return years.toFixed() + ' year' + numberEnding(years);\r\n\r\n } else if (months >= 1) {\r\n\r\n return months.toFixed() + ' month' + numberEnding(months);\r\n\r\n } else if (weeks >= 1) {\r\n\r\n return weeks.toFixed() + ' week' + numberEnding(weeks);\r\n\r\n } else if (days >= 1) {\r\n\r\n return days.toFixed() + ' day' + numberEnding(days);\r\n\r\n } else if (hours >= 1) {\r\n\r\n return hours.toFixed() + ' hour' + numberEnding(hours);\r\n\r\n } else if (minutes >= 1) {\r\n\r\n return minutes.toFixed() + ' minute' + numberEnding(minutes);\r\n\r\n } else if (milliseconds >= (-1000 * 60)) {\r\n\r\n return 'a minute';\r\n\r\n } else {\r\n\r\n return 'N/A';\r\n }\r\n\r\n }\r\n\r\n\r\n public static nowDate(NoTime: boolean = false) {\r\n\r\n if (NoTime) {\r\n return this.getFormatedDate(Date(), true);\r\n } else {\r\n return this.getFormatedDate(Date());\r\n }\r\n }\r\n\r\n public static getFormatedDate(dateString: string, NoTime: boolean = false) {\r\n\r\n let d: Date = new Date(dateString);\r\n d.setHours(d.getHours() + 2);\r\n\r\n if (NoTime == true) {\r\n return d.toISOString().split('T')[0];\r\n } else {\r\n return d.toISOString().split('.')[0];\r\n }\r\n\r\n }\r\n\r\n public static getFormatedDate2(d : Date, NoTime: boolean = false) {\r\n\r\n\r\n d.setHours(d.getHours() + 2);\r\n\r\n if (NoTime == true) {\r\n return d.toISOString().split('T')[0];\r\n } else {\r\n return d.toISOString().split('.')[0];\r\n }\r\n\r\n }\r\n\r\n public static getBusinessDatesCount(startDate: string, endDate: string) {\r\n var count = 0;\r\n var _startDate = new Date(startDate);\r\n var _endDate = new Date(endDate);\r\n\r\n var curDate = _startDate;\r\n\r\n while (curDate < _endDate) {\r\n var dayOfWeek = curDate.getDay();\r\n if (!(dayOfWeek == 6 || dayOfWeek == 0)) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n\r\n return count;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class DetailsDialogProcessor {\r\n\r\n public static processDetailsConfig(detailsConfig: DetailsDialogConfig, row: any): DetailsDialogConfig {\r\n\r\n const updatedDetailsConfig : DetailsDialogConfig = Core.getClone(detailsConfig);\r\n updatedDetailsConfig.details = row;\r\n\r\n updatedDetailsConfig.formConfig.mode = updatedDetailsConfig.mode ?? \"view\";\r\n\r\n if (updatedDetailsConfig.heroField && row) {\r\n updatedDetailsConfig.heroValue = row[updatedDetailsConfig.heroField];\r\n }\r\n\r\n\r\n function updateTableConfig(tableConfig) {\r\n tableConfig.heroField = updatedDetailsConfig?.heroField;\r\n tableConfig.heroValue = updatedDetailsConfig?.heroValue;\r\n // tableConfig.setHero = updatedDetailsConfig.setHero;\r\n tableConfig.searchConfig = null;\r\n tableConfig.tileConfig = null;\r\n tableConfig.parentData = updatedDetailsConfig.details;\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfig) {\r\n updateTableConfig(updatedDetailsConfig.tableConfig);\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfigs) {\r\n updatedDetailsConfig.tableConfigs.forEach(updateTableConfig);\r\n }\r\n\r\n function transformLoadUrl(tableConfig) {\r\n if (tableConfig.loadAction && tableConfig.loadCriteria && tableConfig.loadIDField) {\r\n tableConfig.loadAction.url = `${tableConfig.loadAction.url.split('/')[0]}/${tableConfig.loadCriteria}/${updatedDetailsConfig.details[tableConfig.loadIDField]}`;\r\n console.log(\"Transformed\");\r\n } else {\r\n console.log(\"NOT Transformed\");\r\n }\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfig) {\r\n transformLoadUrl(updatedDetailsConfig.tableConfig);\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfigs) {\r\n updatedDetailsConfig.tableConfigs.forEach(transformLoadUrl);\r\n }\r\n\r\n return updatedDetailsConfig;\r\n }\r\n\r\n\r\n static initializeConfigs(detailsConfig: DetailsDialogConfig) {\r\n const tableConfig = detailsConfig.tableConfig;\r\n const tableConfigs = detailsConfig.tableConfigs;\r\n const formConfig = detailsConfig.formConfig;\r\n const buttons = detailsConfig.buttons;\r\n formConfig.mode = formConfig.mode ?? \"view\";\r\n return { tableConfig, tableConfigs, formConfig, buttons };\r\n }\r\n\r\n static setHeroValue(detailsConfig: DetailsDialogConfig, details: any) {\r\n\r\n // console.log(detailsConfig)\r\n\r\n if ((detailsConfig.formConfig.mode == \"create\" ) && detailsConfig.heroField && detailsConfig.heroValue) {\r\n details[detailsConfig.heroField] = detailsConfig.heroValue;\r\n return;\r\n }\r\n\r\n // if (detailsConfig.config.mode != \"create\" && detailsConfig.heroField) {\r\n // detailsConfig.heroValue = details[detailsConfig.heroField];\r\n // }\r\n\r\n\r\n // console.log(detailsConfig)\r\n }\r\n\r\n static handleFormMode(detailsConfig: DetailsDialogConfig, formConfig: FormConfig,) {\r\n let details;\r\n let action;\r\n let loadByAction = false;\r\n\r\n if (formConfig.mode === \"create\") {\r\n\r\n details = Core.generateObject(formConfig.fields);\r\n\r\n // this.setHeroValue(detailsConfig, details);\r\n\r\n } else {\r\n let resp = this.loadDetailsData(detailsConfig, formConfig);\r\n details = resp.details;\r\n\r\n action = resp.action;\r\n loadByAction = resp.loadByAction;\r\n }\r\n\r\n return { details, loadByAction, action };\r\n }\r\n\r\n private static loadDetailsData(detailsConfig: DetailsDialogConfig, formConfig: FormConfig) {\r\n\r\n let details;\r\n let action;\r\n let loadByAction = false;\r\n\r\n console.log(\"Loading Details Data\" )\r\n console.log(detailsConfig)\r\n console.log(formConfig)\r\n\r\n\r\n\r\n //Choose source\r\n if (detailsConfig.detailsSource == DetailsSource.Row) {\r\n\r\n console.log(\"Details Data Row config\")\r\n details = detailsConfig.details;\r\n\r\n } else if (detailsConfig.detailsSource == DetailsSource.Url) {\r\n console.log(\"Details Data Url config\")\r\n action = this.loadDetailsFromUrl(detailsConfig, formConfig);\r\n loadByAction = true;\r\n\r\n } else {\r\n\r\n console.log(\"Details Data Else\")\r\n if (detailsConfig.details && !detailsConfig.heroField && !detailsConfig.heroValue) {\r\n\r\n console.log(\"using form data from details\");\r\n console.log(detailsConfig);\r\n details = detailsConfig.details;\r\n\r\n } else if (formConfig.loadAction) {\r\n\r\n action = this.loadDetailsFromUrl(detailsConfig, formConfig);\r\n loadByAction = true;\r\n\r\n } else {\r\n console.log(\"auto data source failed to pick, trying source config\");\r\n\r\n }\r\n }\r\n\r\n return { details, loadByAction, action };\r\n }\r\n\r\n private static loadDetailsFromUrl(detailsConfig: DetailsDialogConfig, formConfig: FormConfig) {\r\n let action;\r\n\r\n if (formConfig.loadAction) {\r\n\r\n if (detailsConfig.heroField && detailsConfig.details) {\r\n\r\n console.log(\"using form data from url + ID Field \" + detailsConfig.heroField);\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.details[detailsConfig.heroField]}` };\r\n\r\n } else if (detailsConfig.heroValue) {\r\n\r\n console.log(\"using form data from url + Solid ID\");\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.heroValue}` };\r\n\r\n }\r\n else{\r\n console.log(\"url source failed : setup hero field or hero value\");\r\n }\r\n\r\n }else{\r\n console.log(\"No load action set\");\r\n }\r\n\r\n\r\n\r\n return action;\r\n }\r\n\r\n static setFileField(formConfig: FormConfig) {\r\n return formConfig.fields.find(x => x.type === 'file');\r\n }\r\n\r\n\r\n static setupButtons(formConfig: FormConfig, buttons: any) {\r\n let extraButtons, createButton, editButton, deleteButton;\r\n\r\n if (buttons) {\r\n if (formConfig.mode !== \"create\") {\r\n extraButtons = buttons.filter(x => x.name !== \"create\" && x.name !== \"edit\" && x.name !== \"delete\" && x.name !== \"view\" && x.inDialog);\r\n }\r\n createButton = buttons.find(x => x.name === \"create\");\r\n editButton = buttons.find(x => x.name === \"edit\");\r\n deleteButton = buttons.find(x => x.name === \"delete\");\r\n }\r\n return { extraButtons, createButton, editButton, deleteButton };\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","import { Core } from \"./TinCore\";\r\n\r\nexport class ApiResponse {\r\n success: boolean;\r\n message: string;\r\n data;\r\n}\r\n\r\nexport class Constants {\r\n public static readonly AUTH_USER = 'a';\r\n public static readonly AUTH_NAME = 'b';\r\n public static readonly AUTH_ROLES = 'c';\r\n public static readonly AUTH_TOKEN = 'd';\r\n public static readonly AUTH_TOKEN_EXPIRE = 'e';\r\n public static readonly AUTH_TENANT_NAME = 'f';\r\n}\r\n\r\nexport class ListDialogConfig{\r\n name: string;\r\n title: string;\r\n listName: string;\r\n}\r\n\r\nexport enum DetailsSource {Row, Url}\r\n\r\nexport class DetailsDialogConfig {\r\n\r\n formConfig: FormConfig;\r\n tableConfig?: TableConfig;\r\n tableConfigs?: TableConfig[];\r\n buttons?: Button[];\r\n details? : any\r\n heroField? : any\r\n heroValue?: any\r\n mode?: 'create' | 'edit' | 'view'\r\n width?: string\r\n // setHero ?: boolean\r\n detailsSource?: DetailsSource\r\n // sourceMethod : 'row' | 'id' | 'idField'\r\n // row?: any\r\n options?: dialogOptions\r\n}\r\n\r\nexport class dialogOptions {\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport class Action{\r\n method?: 'get' | 'post'\r\n url: string;\r\n params? : any[]\r\n successMessage?: string\r\n isFormData?: boolean\r\n}\r\n\r\n\r\n\r\nexport class SearchConfig {\r\n fields: SearchField[]\r\n searchAction?: Action\r\n}\r\n\r\nexport interface SearchField extends Field{\r\n\r\n show?: boolean\r\n\r\n}\r\n\r\nexport class AlertMessages {\r\n\r\n subject? : string\r\n messages: AlertMessage[]\r\n\r\n}\r\n\r\nexport class AlertMessage {\r\n type?: 'success' |'info' | 'warn' | 'critical'\r\n content: string\r\n hiddenCondition?: (value: any) => boolean;\r\n}\r\n\r\n\r\n\r\nexport class FormConfig {\r\n title?: string\r\n fixedTitle?: boolean\r\n alertMessages?: AlertMessages\r\n fields: Field[]\r\n mode?: 'create' | 'edit' | 'view'\r\n button? : Button\r\n multiColumn?: boolean\r\n reset?: boolean\r\n fileAction?: Action\r\n loadAction?: Action\r\n heroField?: any\r\n heroValue?: any\r\n\r\n}\r\n\r\nexport interface Button{\r\n name: string\r\n visible?: (value: any) => boolean;\r\n display?: string;\r\n icon?: Icon;\r\n disabled?: (value: any) => boolean;\r\n color?: string;\r\n tip?: string\r\n dialog?: boolean\r\n action?: Action\r\n confirm?: Confirm\r\n inDialog?: boolean\r\n inHeader?: boolean\r\n detailsConfig?: DetailsDialogConfig\r\n setHeroField?: boolean;\r\n}\r\n\r\nexport interface Confirm {\r\n message: string\r\n}\r\n\r\nexport interface Condition{\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Field {\r\n name: string;\r\n type: 'text' | 'date' | 'datetime' | 'checkbox' | 'select' | 'multi-select' | 'money' | 'number' | 'section' | 'blank' | 'chip' | 'file' | 'file-view' | 'icon' | 'spinner' | 'button' | 'label';\r\n alias?: string;\r\n options?: any[];\r\n optionDisplay?: string\r\n optionValue?: string\r\n defaultValue?: any\r\n defaultFirstValue?: boolean\r\n required?: boolean\r\n min?: any\r\n max?: any\r\n rows?: number\r\n span?: boolean\r\n readonly?: boolean\r\n hidden?: boolean\r\n path?: string\r\n keyFiledName?: string\r\n hint?: string\r\n masterField?: string\r\n child?: ChildField\r\n children?: ChildField[]\r\n masterOptions?: any[]\r\n nullable ?: boolean\r\n\r\n hideOnCreate ?: boolean\r\n hideOnExists ?: boolean\r\n hiddenCondition?: (value: any) => boolean;\r\n readonlyCondition?: (value: any) => boolean;\r\n\r\n peekConfig ?: PeekDialogConfig;\r\n\r\n infoMessage?: string;\r\n suffix?: string;\r\n\r\n}\r\n\r\nexport interface PeekDialogConfig{\r\n detailsConfig: DetailsDialogConfig\r\n create? : boolean\r\n view? : boolean\r\n}\r\n\r\nexport interface ChildField {\r\n childField?: string\r\n childValueField?: string\r\n}\r\n\r\nexport class TableConfig{\r\n title?: string\r\n columns? : Column[]\r\n minColumns?: string[]\r\n showFilter?: boolean\r\n holdFilterSpace?: boolean\r\n holdHeaderButtonSpace?: boolean\r\n elevation?: 'none' | 'low' | 'medium' | 'high'\r\n formConfig?: FormConfig\r\n searchConfig?: SearchConfig\r\n tileConfig?: TileConfig\r\n buttons?: Button[]\r\n minButtons?: string[]\r\n loadAction?: Action\r\n loadIDField ?: string\r\n loadCriteria?: string\r\n logResponse?: boolean\r\n flatButtons?: boolean\r\n greyOut?: (value: any) => boolean;\r\n heroField?: any\r\n heroValue?: any\r\n collapseButtons?: boolean\r\n parentData ? : any\r\n hideTabCondition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Column {\r\n name: string;\r\n type?: 'text' | 'date' | 'datetime' | 'checkbox' | 'select' | 'money' | 'number' | 'chip' | 'icon' | 'spinner' | 'button' ;\r\n alias?: string;\r\n icon?: Icon;\r\n color?: Color;\r\n icons?: Icon[];\r\n options?: any[];\r\n optionDisplay?: string\r\n optionValue?: string\r\n detailsConfig?: DetailsDialogConfig\r\n hiddenCondition?: (parentData: any) => boolean;\r\n}\r\n\r\nexport interface Icon{\r\n name: string\r\n color?: string\r\n tip?: string\r\n tipField?: string\r\n bannerField?: string\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Color {\r\n name: string\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\n\r\nexport class TileConfig{\r\n tiles : Tile[]\r\n loadAction?: Action\r\n loadInit?: boolean\r\n clickable?: boolean\r\n // reload?: boolean\r\n}\r\nexport interface Tile {\r\n\r\n name: string;\r\n alias?: string;\r\n value?: string;\r\n color?: string;\r\n selectedTile?: string;\r\n hidden?: boolean;\r\n info?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n}\r\n\r\nexport class Step {\r\n name: string\r\n icon: string;\r\n}\r\n\r\n\r\n\r\nexport class ActionResponse {\r\n name: string;\r\n value;\r\n}\r\n\r\n\r\nexport class loginConfig {\r\n\r\n constructor() {\r\n this.appName = \"\";\r\n this.selfService = false;\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n }\r\n\r\n appName: string;\r\n selfService: boolean;\r\n logo: string;\r\n logoSize: string;\r\n}\r\n\r\n\r\nexport class AppConfig {\r\n constructor() {\r\n this.appName = \"App Name\";\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n this.ADAuth = true;\r\n this.localAuth = true;\r\n this.googleAuth = false;\r\n this.selfService = false;\r\n this.multitenant = false;\r\n this.navigation = 'top';\r\n this.progressLine = false;\r\n }\r\n appName: string;\r\n logo: string;\r\n logoSize: string;\r\n ADAuth: boolean;\r\n localAuth: boolean;\r\n googleAuth: boolean;\r\n selfService: boolean;\r\n capItems: CapItem[];\r\n multitenant : boolean;\r\n navigation : 'top' | 'side'\r\n progressLine: boolean;\r\n\r\n}\r\n\r\nexport class CapItem {\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.display = \"New Cap Item\";\r\n this.enabled = false;\r\n this.type = \"\";\r\n this.newLine = false;\r\n this.showMenu = true;\r\n this.ignoreSubsDisplay = false;\r\n this.link = \"\";\r\n this.icon = \"navigate_next\";\r\n\r\n }\r\n\r\n name: string;\r\n display: string;\r\n enabled: boolean;\r\n showMenu: boolean;\r\n\r\n ignoreSubsDisplay: boolean;\r\n type: string;\r\n newLine: boolean;\r\n link: string;\r\n icon: string;\r\n capSubItems: CapItem[];\r\n\r\n}\r\n\r\n\r\nexport class Account {\r\n user: User;\r\n profile: Profile;\r\n}\r\n\r\nexport class User {\r\n\r\n constructor() {\r\n\r\n\r\n this.userName = \"\";\r\n this.password = \"\";\r\n this.tries = \"0\";\r\n this.locked = \"0\";\r\n this.logged = \"0\";\r\n this.disabled = \"0\";\r\n this.changepassword = \"0\";\r\n this.dateCreated = Core.nowDate();\r\n this.dateUpdated = Core.nowDate();\r\n this.token = \"\";\r\n this.dateExpire = Core.nowDate();\r\n this.tokenExpire = Core.nowDate();\r\n this.authType = \"\";\r\n }\r\n\r\n userName:string;\r\n password: string;\r\n tries: string;\r\n locked: string;\r\n logged: string;\r\n disabled: string;\r\n changepassword: string;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n dateExpire: string;\r\n token: string;\r\n tokenExpire: string;\r\n\r\n authType: string;\r\n}\r\n\r\nexport class ChangeUserPassword {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.currentPassword = \"\";\r\n this.newPassword = \"\";\r\n this.confirmPassword = \"\";\r\n }\r\n userName: string;\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmPassword: string;\r\n}\r\n\r\nexport class Transaction {\r\n\r\n constructor() {\r\n this.transactionID = 0;\r\n this.narration = \"\";\r\n this.amount = '0';\r\n this.type = 0;\r\n this.date = \"\";\r\n this.accountID = 0;\r\n this.destinationID = 0;\r\n this.categoryID = 0;\r\n }\r\n\r\n transactionID : number;\r\n narration : string;\r\n amount : string;\r\n type: number;\r\n date : string;\r\n accountID : number;\r\n destinationID : number;\r\n categoryID : number;\r\n\r\n}\r\n\r\nexport class FinAccount {\r\n\r\n constructor(){\r\n this.accountID = 0;\r\n this.name = \"\";\r\n this.description = \"\";\r\n this.currency = \"\";\r\n\r\n }\r\n\r\n\r\n accountID: number\r\n name: string;\r\n description: string;\r\n currency: string;\r\n\r\n}\r\n\r\nexport class Register {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.authType = \"local\";\r\n this.password = \"\";\r\n }\r\n\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n authType: string;\r\n password: string;\r\n}\r\n\r\nexport class Profile {\r\n\r\n constructor() {\r\n this.profileID = \"\";\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.empID = \"\";\r\n this.arID = \"0\";\r\n this.authType = \"\";\r\n this.password = \"\";\r\n this.role = new Role();\r\n }\r\n\r\n profileID: string;\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n empID: string;\r\n arID: string;\r\n authType: string;\r\n password: string;\r\n role: Role\r\n}\r\n\r\n\r\nexport class Role {\r\n\r\n constructor() {\r\n this.roleID = 0;\r\n this.roleName = \"New Role\";\r\n this.cap1 = false;\r\n this.cap2 = false;\r\n this.cap3 = false;\r\n this.cap4 = false;\r\n this.cap5 = false;\r\n this.cap6 = false;\r\n this.cap7 = false;\r\n this.cap8 = false;\r\n this.cap9 = false;\r\n this.cap10 = false;\r\n this.cap11 = false;\r\n this.cap12 = false;\r\n this.cap13 = false;\r\n this.cap14 = false;\r\n this.cap15 = false;\r\n this.cap16 = false;\r\n this.cap17 = false;\r\n this.cap18 = false;\r\n this.cap19 = false;\r\n this.cap20 = false;\r\n this.cap21 = false;\r\n this.cap22 = false;\r\n this.cap23 = false;\r\n this.cap24 = false;\r\n this.cap25 = false;\r\n this.cap26 = false;\r\n this.cap27 = false;\r\n this.cap28 = false;\r\n this.cap29 = false;\r\n this.cap30 = false;\r\n this.cap31 = false;\r\n this.cap32 = false;\r\n this.cap33 = false;\r\n this.cap34 = false;\r\n this.cap35 = false;\r\n this.cap36 = false;\r\n this.cap37 = false;\r\n this.cap38 = false;\r\n this.cap39 = false;\r\n this.cap40 = false;\r\n this.cap41 = false;\r\n this.cap42 = false;\r\n this.cap43 = false;\r\n this.cap44 = false;\r\n this.cap45 = false;\r\n this.cap46 = false;\r\n this.cap47 = false;\r\n this.cap48 = false;\r\n this.cap49 = false;\r\n this.cap50 = false;\r\n this.cap51 = false;\r\n this.cap52 = false;\r\n this.cap53 = false;\r\n this.cap54 = false;\r\n this.cap55 = false;\r\n this.cap56 = false;\r\n this.cap57 = false;\r\n this.cap58 = false;\r\n this.cap59 = false;\r\n this.cap60 = false;\r\n this.cap61 = false;\r\n this.cap62 = false;\r\n this.cap63 = false;\r\n this.cap64 = false;\r\n this.cap65 = false;\r\n this.cap66 = false;\r\n this.cap67 = false;\r\n this.cap68 = false;\r\n this.cap69 = false;\r\n this.cap70 = false;\r\n this.cap71 = false;\r\n this.cap72 = false;\r\n this.cap73 = false;\r\n this.cap74 = false;\r\n this.cap75 = false;\r\n this.cap76 = false;\r\n this.cap77 = false;\r\n this.cap78 = false;\r\n this.cap79 = false;\r\n this.cap80 = false;\r\n this.cap81 = false;\r\n this.cap82 = false;\r\n this.cap83 = false;\r\n this.cap84 = false;\r\n this.cap85 = false;\r\n this.cap86 = false;\r\n this.cap87 = false;\r\n this.cap88 = false;\r\n this.cap89 = false;\r\n this.cap90 = false;\r\n this.cap91 = false;\r\n this.cap92 = false;\r\n this.cap93 = false;\r\n this.cap94 = false;\r\n this.cap95 = false;\r\n this.cap96 = false;\r\n this.cap97 = false;\r\n this.cap98 = false;\r\n this.cap99 = false;\r\n this.cap100 = false;\r\n }\r\n\r\n roleID: number;\r\n roleName: string;\r\n cap1: boolean;\r\n cap2: boolean;\r\n cap3: boolean;\r\n cap4: boolean;\r\n cap5: boolean;\r\n cap6: boolean;\r\n cap7: boolean;\r\n cap8: boolean;\r\n cap9: boolean;\r\n cap10: boolean;\r\n cap11: boolean;\r\n cap12: boolean;\r\n cap13: boolean;\r\n cap14: boolean;\r\n cap15: boolean;\r\n cap16: boolean;\r\n cap17: boolean;\r\n cap18: boolean;\r\n cap19: boolean;\r\n cap20: boolean;\r\n cap21: boolean;\r\n cap22: boolean;\r\n cap23: boolean;\r\n cap24: boolean;\r\n cap25: boolean;\r\n cap26: boolean;\r\n cap27: boolean;\r\n cap28: boolean;\r\n cap29: boolean;\r\n cap30: boolean;\r\n cap31: boolean;\r\n cap32: boolean;\r\n cap33: boolean;\r\n cap34: boolean;\r\n cap35: boolean;\r\n cap36: boolean;\r\n cap37: boolean;\r\n cap38: boolean;\r\n cap39: boolean;\r\n cap40: boolean;\r\n cap41: boolean;\r\n cap42: boolean;\r\n cap43: boolean;\r\n cap44: boolean;\r\n cap45: boolean;\r\n cap46: boolean;\r\n cap47: boolean;\r\n cap48: boolean;\r\n cap49: boolean;\r\n cap50: boolean;\r\n cap51: boolean;\r\n cap52: boolean;\r\n cap53: boolean;\r\n cap54: boolean;\r\n cap55: boolean;\r\n cap56: boolean;\r\n cap57: boolean;\r\n cap58: boolean;\r\n cap59: boolean;\r\n cap60: boolean;\r\n cap61: boolean;\r\n cap62: boolean;\r\n cap63: boolean;\r\n cap64: boolean;\r\n cap65: boolean;\r\n cap66: boolean;\r\n cap67: boolean;\r\n cap68: boolean;\r\n cap69: boolean;\r\n cap70: boolean;\r\n cap71: boolean;\r\n cap72: boolean;\r\n cap73: boolean;\r\n cap74: boolean;\r\n cap75: boolean;\r\n cap76: boolean;\r\n cap77: boolean;\r\n cap78: boolean;\r\n cap79: boolean;\r\n cap80: boolean;\r\n cap81: boolean;\r\n cap82: boolean;\r\n cap83: boolean;\r\n cap84: boolean;\r\n cap85: boolean;\r\n cap86: boolean;\r\n cap87: boolean;\r\n cap88: boolean;\r\n cap89: boolean;\r\n cap90: boolean;\r\n cap91: boolean;\r\n cap92: boolean;\r\n cap93: boolean;\r\n cap94: boolean;\r\n cap95: boolean;\r\n cap96: boolean;\r\n cap97: boolean;\r\n cap98: boolean;\r\n cap99: boolean;\r\n cap100: boolean;\r\n}\r\n\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6,\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class HttpService {\r\n\r\n constructor(private httpClient: HttpClient, private router: Router) { }\r\n\r\n\r\n //----Set apiUrl from the data service of the project---//\r\n public apiUrl = \"https://api.solinc.co.zw/\"; //default\r\n\r\n\r\n\r\n //POST\r\n public Post(service: string, data: any): Observable<any> {\r\n return this.httpClient.post(this.apiUrl + service, data, this.httpOptions_Legacy);\r\n }\r\n\r\n //PUT\r\n public Put(service: string, data: any): Observable<any> {\r\n return this.httpClient.put(this.apiUrl + service, data, this.httpOptions_Legacy);\r\n }\r\n\r\n\r\n //POST RAW\r\n public Post_Raw(url: string, data: any): Observable<any> {\r\n\r\n return this.httpClient.post(url, data, this.httpOptions_Legacy);\r\n }\r\n\r\n //POST with file\r\n public Post_WithFile(service: string, data: any, file: File) {\r\n\r\n let formData: FormData = new FormData();\r\n\r\n if (file) {\r\n formData.append(\"uploadFile\", file, file.name);\r\n }\r\n\r\n formData.append(\"data\", JSON.stringify(data));\r\n\r\n return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);\r\n }\r\n\r\n // //POST with files\r\n public Post_FormData(service: string, formData: FormData) {\r\n\r\n return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);\r\n }\r\n\r\n //GET\r\n public Get(service: string): Observable<any> {\r\n return this.httpClient.get(this.apiUrl + service, this.httpOptions_Legacy);\r\n }\r\n\r\n //Get RAW\r\n public Get_Raw(url: string): Observable<any> {\r\n return this.httpClient.get(url, this.httpOptions_Legacy);\r\n }\r\n\r\n //ERROR\r\n public Error(error: HttpErrorResponse) {\r\n if (error.statusText == \"Unauthorized\") {\r\n this.router.navigate([\"login\"]);\r\n return \"Unauthorized\";\r\n } else {\r\n return \"Connection failed\";\r\n }\r\n }\r\n\r\n private httpOptions_Legacy = {\r\n headers: new HttpHeaders({\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Basic \" + btoa(\"emptyUser:emptyToken\"),\r\n }),\r\n resposeType: \"json\",\r\n };\r\n\r\n private httpOptions_Files = {\r\n headers: new HttpHeaders({\r\n Authorization: \"Basic \" + btoa(\"tnyagato:j5Toszfr@ys\"),\r\n }),\r\n resposeType: \"json\",\r\n };\r\n}\r\n","// import { Core } from 'tin-core';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { LogLevel } from '../classes/Classes';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LogService {\r\n constructor() { }\r\n\r\n level: LogLevel = LogLevel.All;\r\n\r\n logToConsole: boolean = true;\r\n\r\n logToApi: boolean = false;\r\n\r\n debug(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Debug, optionalParams);\r\n }\r\n\r\n info(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Info, optionalParams);\r\n }\r\n\r\n warn(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Warn, optionalParams);\r\n }\r\n\r\n error(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Error, optionalParams);\r\n }\r\n\r\n fatal(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Fatal, optionalParams);\r\n }\r\n\r\n log(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.All, optionalParams);\r\n\r\n }\r\n\r\n private writeToLog(msg: string, level: LogLevel, params: any[]) {\r\n\r\n if (this.shouldLog(level)) {\r\n\r\n // Build log string\r\n let value: string = Core.getFormatedDate(Date(), false).replace(\"T\", \" \");\r\n // value += \" - Type: \" + LogLevel[this.level];\r\n value += \" - Message: \" + msg;\r\n\r\n\r\n if (params.length) {\r\n value += \" - Extra Info: \" + this.formatParams(params);\r\n }\r\n\r\n // Log the value\r\n if (this.logToConsole) {\r\n console.log(value);\r\n }\r\n\r\n if (this.logToApi) {\r\n //Call API post\r\n }\r\n\r\n }\r\n }\r\n\r\n private formatParams(params: any[]): string {\r\n\r\n let ret: string = params.join(\",\");\r\n // Is there at least one object in the array?\r\n if (params.some((p) => typeof p == \"object\")) {\r\n ret = \"\";\r\n // Build comma-delimited string\r\n for (let item of params) {\r\n ret += JSON.stringify(item) + \",\";\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n\r\n let ret: boolean = false;\r\n\r\n if (\r\n (level >= this.level && level !== LogLevel.Off) ||\r\n this.level === LogLevel.All\r\n ) {\r\n ret = true;\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRoute } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { StorageService } from './storage.service';\r\nimport { LogService } from './log.service';\r\nimport { Role, Constants } from '../classes/Classes';\r\nimport { HttpService } from './http.service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService implements CanActivate {\r\n\r\n constructor(private _route: ActivatedRoute, private socialService: SocialAuthService, private storage: StorageService, public router: Router, private httpService: HttpService, private messageService: MessageService, private logService: LogService) { }\r\n\r\n clearSession(){\r\n\r\n this.Updateloggedin(false);\r\n this.UpdateAutoLogin(false);\r\n this.UpdateRole(new Role());\r\n this.storage.clear();\r\n this.socialService.signOut();\r\n\r\n }\r\n\r\n sessionExpired(){\r\n\r\n this.clearSession()\r\n\r\n let url = new URL(window.location.href);\r\n let path = url.hash.replace(\"#/\", \"\");\r\n\r\n this.router.navigate([\"login\"], {\r\n relativeTo: this._route,\r\n queryParams: { redirectTo: path },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n\r\n }\r\n\r\n logoff() {\r\n this.clearSession()\r\n\r\n this.router.navigate([\"login\"]);\r\n }\r\n\r\n //Logged in\r\n private loggedin: boolean = false;\r\n private loggedinSource = new BehaviorSubject(this.loggedin);\r\n public loggedinObserv = this.loggedinSource.asObservable();\r\n Updateloggedin(loggedin: boolean) {\r\n this.loggedinSource.next(loggedin);\r\n this.loggedin = loggedin;\r\n }\r\n\r\n //autoLogin\r\n private autoLogin: boolean = false;\r\n private autoLoginSource = new BehaviorSubject(this.autoLogin);\r\n public autoLoginObserv = this.autoLoginSource.asObservable();\r\n UpdateAutoLogin(autoLogin: boolean) {\r\n this.autoLoginSource.next(autoLogin);\r\n this.autoLogin = autoLogin;\r\n }\r\n\r\n\r\n //Token\r\n private token: string = \"\";\r\n public tokenSource = new BehaviorSubject(this.token);\r\n public tokenObserv = this.tokenSource.asObservable();\r\n UpdateToken(newToken: string) {\r\n this.tokenSource.next(newToken);\r\n\r\n }\r\n\r\n //TokenExpire\r\n private tokenExpire: string = \"\";\r\n public tokenExpireSource = new BehaviorSubject(this.tokenExpire);\r\n public tokenExpireObserv = this.tokenExpireSource.asObservable();\r\n UpdateTokenExpire(newTokenExpire: string) {\r\n this.tokenExpireSource.next(newTokenExpire);\r\n\r\n }\r\n\r\n //Current User\r\n public currentUser: string = \"tnyagato\";\r\n private currentUserSource = new BehaviorSubject(this.currentUser);\r\n public currentUserObserv = this.currentUserSource.asObservable();\r\n UpdateCurrentUser(newUser: string) {\r\n this.currentUserSource.next(newUser.toLocaleLowerCase());\r\n this.currentUser = newUser.toLocaleLowerCase();\r\n }\r\n\r\n //Line Manager\r\n private islineManager: boolean = false;\r\n private isLineManagerSource = new BehaviorSubject(this.islineManager);\r\n public isLineManagerObserv = this.isLineManagerSource.asObservable();\r\n UpdateIsLineManager(manager: boolean) {\r\n this.isLineManagerSource.next(manager);\r\n }\r\n\r\n //Roles\r\n private currentRole = new Role;\r\n public currentRoleSource = new BehaviorSubject(this.currentRole);\r\n public myRoleObserv = this.currentRoleSource.asObservable();\r\n UpdateRole(role) {\r\n this.currentRoleSource.next(role);\r\n }\r\n\r\n //Logged in FirstName\r\n private loggedUserSource = new BehaviorSubject(\"tnyagato\");\r\n public loggedUserFullName = this.loggedUserSource.asObservable();\r\n updateLoggedUserFullName(userName: string) {\r\n this.loggedUserSource.next(userName);\r\n }\r\n\r\n //TenantName\r\n private tenantNameSource = new BehaviorSubject(\"Tenant Name\");\r\n public tenantNameObserv = this.tenantNameSource.asObservable();\r\n updateTenantName(tenantName: string) {\r\n this.tenantNameSource.next(tenantName);\r\n }\r\n\r\n\r\n //Authorisation\r\n isAuthorised(capName: string): boolean {\r\n\r\n if (!this.currentRoleSource.value[capName]) {\r\n // this.logService.info(`authorise: ${this.currentRoleSource.value.roleName} not authorised for ${capName}`);\r\n this.router.navigate([\"home\"]);\r\n this.messageService.toast(`Unauthorised: ${capName}`);\r\n\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n isValidToken() {\r\n\r\n let tokenExpire: Date = new Date(this.tokenExpireSource.value);\r\n let nowDate: Date = new Date();\r\n\r\n let valid: boolean = tokenExpire > nowDate;\r\n\r\n if (!valid) {\r\n\r\n this.sessionExpired()\r\n this.messageService.toast(`Expired Session`);\r\n\r\n }\r\n\r\n return valid\r\n }\r\n\r\n canActivate() {\r\n\r\n if (this.loggedin && this.isValidToken()) {\r\n // this.logService.info(\"authentication: logged in\");\r\n return true;\r\n }\r\n\r\n if (localStorage.getItem(Constants.AUTH_USER) === null) {\r\n // this.logService.info(\"authentication: not logged and no cache\");\r\n\r\n this.sessionExpired();\r\n\r\n return false;\r\n\r\n } else {\r\n // this.logService.info(\"authentication: not logged but allowed login\");\r\n\r\n this.Updateloggedin(true);\r\n\r\n this.storage.get(Constants.AUTH_USER).then((resp: any) => {\r\n this.UpdateCurrentUser(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_NAME).then((resp: any) => {\r\n this.updateLoggedUserFullName(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_ROLES).then((resp) => {\r\n let ret = JSON.parse(resp);\r\n\r\n this.UpdateRole(ret);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN).then((resp: any) => {\r\n this.UpdateToken(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN_EXPIRE).then((resp: any) => {\r\n this.UpdateTokenExpire(resp);\r\n this.isValidToken();\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TENANT_NAME).then((resp: any) => {\r\n this.updateTenantName(resp);\r\n });\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Action, ApiResponse, AppConfig, Button, CapItem, FormConfig, TableConfig, User } from '../classes/Classes';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataServiceLib {\r\n\r\n constructor(private httpService: HttpService, public router: Router, private route: ActivatedRoute) {\r\n\r\n this.appConfig.appName = \"App-Name\";\r\n this.appConfig.logo = \"./assets/logo.png\"\r\n this.appConfig.ADAuth = true;\r\n this.appConfig.capItems = [this.capMultitenant, this.capAdmin, this.capHome];\r\n\r\n\r\n this.capHome.name = \"cap1\";\r\n this.capHome.display = \"Home\";\r\n this.capHome.link = \"home\";\r\n this.capHome.icon =\"home\";\r\n\r\n\r\n this.capAdmin.name = \"cap2\";\r\n this.capAdmin.display = \"Admin\";\r\n this.capAdmin.icon = \"security\"\r\n this.capAdmin.capSubItems = [this.capUsers, this.capRoles, this.capLogs, this.capSettings];\r\n\r\n this.capUsers.name = \"cap3\";\r\n this.capUsers.display = \"Users\";\r\n this.capUsers.link = \"home/admin/users\";\r\n this.capUsers.icon = \"group\";\r\n\r\n this.capRoles.name = \"cap4\"\r\n this.capRoles.display = \"Roles\";\r\n this.capRoles.link = \"home/admin/roles\";\r\n this.capRoles.icon = \"work\";\r\n\r\n this.capLogs.name = \"cap5\"\r\n this.capLogs.display = \"Logs\";\r\n this.capLogs.link = \"home/admin/logs\";\r\n this.capLogs.icon = \"text_snippet\";\r\n\r\n this.capSettings.name = \"cap6\"\r\n this.capSettings.display = \"Settings\";\r\n this.capSettings.link = \"home/admin/settings\";\r\n this.capSettings.icon =\"settings\";\r\n\r\n\r\n this.capMultitenant.name = \"cap7\"\r\n this.capMultitenant.display = \"Multitenant\";\r\n this.capMultitenant.icon = \"apartment\"\r\n this.capMultitenant.capSubItems = [this.capTenants, this.capMembership, this.capPlans ];\r\n\r\n this.capTenants.name = \"cap8\"\r\n this.capTenants.display = \"Tenants\";\r\n this.capTenants.link = \"home/admin/tenants\";\r\n\r\n this.capMembership.name = \"cap9\"\r\n this.capMembership.display = \"Membership\";\r\n this.capMembership.link = \"home/admin/membership\";\r\n\r\n this.capPlans.name = \"cap10\"\r\n this.capPlans.display = \"Plans\";\r\n this.capPlans.link = \"home/admin/plans\";\r\n\r\n\r\n this.capGeneral.name = \"cap11\"\r\n this.capGeneral.display = \"General\";\r\n this.capGeneral.capSubItems = [this.capCustomers, this.capInventory, this.capAccounts, this.capSuppliers, this.capTasks];\r\n\r\n this.capCustomers.name = \"cap12\"\r\n this.capCustomers.display = \"Customers\";\r\n this.capCustomers.link = \"home/admin/customers\";\r\n this.capCustomers.icon = \"group\"\r\n\r\n this.capInventory.name = \"cap13\"\r\n this.capInventory.display = \"Inventory\";\r\n this.capInventory.link = \"home/admin/inventory\";\r\n this.capInventory.icon = \"storefront\"\r\n\r\n this.capAccounts.name = \"cap14\"\r\n this.capAccounts.display = \"Accounts\";\r\n this.capAccounts.link = \"home/admin/accounts\";\r\n this.capAccounts.icon = \"account_balance_wallet\"\r\n\r\n this.capSuppliers.name = \"cap15\"\r\n this.capSuppliers.display = \"Suppliers\";\r\n this.capSuppliers.link = \"home/admin/suppliers\";\r\n this.capSuppliers.icon = \"groups\"\r\n\r\n this.capTasks.name = \"cap16\"\r\n this.capTasks.display = \"Tasks\";\r\n this.capTasks.link = \"home/admin/tasks\";\r\n this.capTasks.icon = \"task_alt\"\r\n\r\n\r\n this.capHR.name = \"cap17\"\r\n this.capHR.display = \"HR\";\r\n this.capHR.link = \"home/admin/hr\";\r\n this.capHR.icon = \"diversity_3\"\r\n this.capHR.capSubItems = [this.capEmployees,this.capDepartments,this.capPositions]\r\n\r\n this.capEmployees.name = \"cap17\"\r\n this.capEmployees.display = \"Employees\";\r\n this.capEmployees.link = \"home/admin/employees\";\r\n this.capEmployees.icon = \"group\"\r\n\r\n this.capDepartments.name = \"cap17\"\r\n this.capDepartments.display = \"Departments\";\r\n this.capDepartments.link = \"home/admin/departments\";\r\n this.capDepartments.icon = \"business_center\"\r\n\r\n this.capPositions.name = \"cap17\"\r\n this.capPositions.display = \"Positions\";\r\n this.capPositions.link = \"home/admin/positions\";\r\n this.capPositions.icon = \"picture_in_picture_medium\"\r\n\r\n\r\n\r\n }\r\n\r\n\r\n appConfig = new AppConfig();\r\n private appConfigSource = new BehaviorSubject(this.appConfig);\r\n public appConfigObserv = this.appConfigSource.asObservable();\r\n UpdateAppConfig(config: AppConfig) {\r\n this.appConfigSource.next(config);\r\n this.appConfig = config;\r\n }\r\n\r\n capHome = new CapItem;\r\n capAdmin = new CapItem;\r\n capUsers = new CapItem;\r\n capRoles = new CapItem;\r\n capLogs = new CapItem;\r\n capSettings = new CapItem;\r\n\r\n capMultitenant = new CapItem;\r\n capTenants = new CapItem;\r\n capMembership = new CapItem;\r\n capPlans = new CapItem;\r\n\r\n capGeneral = new CapItem;\r\n capCustomers = new CapItem;\r\n capInventory = new CapItem;\r\n capAccounts = new CapItem;\r\n capSuppliers = new CapItem;\r\n capTasks = new CapItem;\r\n\r\n capHR = new CapItem;\r\n capEmployees = new CapItem;\r\n capDepartments = new CapItem;\r\n capPositions = new CapItem;\r\n capGrades = new CapItem;\r\n\r\n public tmpProfileuserName = \"\";\r\n\r\n\r\n isProcessing = false;\r\n\r\n\r\n\r\n //--------------------------Employees-------------------------\r\n loadEmployeesMeta() {\r\n this.CallApi({ url: 'general/employeesmeta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.employeeFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;\r\n this.employeeFormConfig.fields.find(x => x.name == 'positionID').masterOptions = apiResponse.data.positions;\r\n this.employeeFormConfig.fields.find(x => x.name == 'employmentStatus').options = apiResponse.data.employmentStatuses;\r\n this.employeeFormConfig.fields.find(x => x.name == 'activeStatus').options = apiResponse.data.activeStatuses;\r\n });\r\n }\r\n\r\n genders = [\r\n { name: 'Male', value: 1 },\r\n { name: 'Female', value: 2 }\r\n ]\r\n\r\n employeeFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'nationalID', type: 'text', alias: 'National ID', required: true },\r\n { name: 'gender', alias: 'Gender', type: 'select', options: this.genders, required: true },\r\n { name: 'firstName', type: 'text', required: true },\r\n { name: 'lastName', type: 'text', required: true },\r\n { name: 'dateOfBirth', type: 'date', alias: 'Date of Birth', required: true },\r\n { name: 'employmentDate', type: 'date', alias: 'Employment Date', required: true },\r\n { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },\r\n { name: 'positionID', alias: 'Position', type: 'select', options: [], optionDisplay: 'name', optionValue: 'positionID', masterField: 'departmentID', },\r\n { name: 'employmentStatus', alias: 'Employment Status', type: 'select', options: [], optionDisplay: 'name', optionValue: 'value' },\r\n { name: 'activeStatus', alias: 'Active Status', type: 'select', options: [], optionDisplay: 'name', optionValue: 'value' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n { name: 'phone', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'note', type: 'text', rows: 2, span: true },\r\n ],\r\n }\r\n\r\n employeeTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'departmentName', 'positionName'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'genderName', type: 'text', alias: 'Gender' },\r\n { name: 'departmentName', type: 'text', alias: 'Department' },\r\n { name: 'positionName', type: 'text', alias: 'Position' },\r\n { name: 'employmentStatusName', type: 'text', alias: 'Employment Status' },\r\n { name: 'activeStatusName', type: 'text', alias: 'Active Status' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/employees?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/employees?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/employees?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'general/employees/x' },\r\n formConfig: this.employeeFormConfig\r\n }\r\n\r\n\r\n //--------------------------Positions-------------------------\r\n\r\n loadPositionMeta() {\r\n // this.CallApi({ url: 'positions/meta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n // this.positionFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;\r\n // });\r\n }\r\n\r\n positionFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n // { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },\r\n { name: 'description', type: 'text', span: true },\r\n\r\n ],\r\n loadAction: { url: 'positions/id' },\r\n }\r\n\r\n editPositionButton: Button = { name: 'edit', dialog: true, action: { url: 'positions?action=edit', method: 'post', successMessage: 'Edited Successfully' } }\r\n\r\n positionTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'departmentName', 'salary'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'positionID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n // { name: 'departmentName', type: 'text', alias: 'Department' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'positions?action=create', method: 'post' } },\r\n {\r\n name: 'view',\r\n dialog: true,\r\n detailsConfig: {\r\n formConfig: { ...this.positionFormConfig, fields: this.positionFormConfig.fields.filter(x => x.name != 'departmentID') },\r\n heroField: 'positionID',\r\n buttons: [this.editPositionButton],\r\n tableConfigs: [\r\n {\r\n ...this.employeeTableConfig,\r\n loadAction: { url: 'positions/employees/x' },\r\n loadCriteria: 'employees',\r\n loadIDField: 'positionID',\r\n title: 'Employees',\r\n elevation: 'none',\r\n }\r\n ],\r\n }\r\n },\r\n this.editPositionButton,\r\n { name: 'delete', dialog: true, action: { url: 'positions?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'positions/all/x' },\r\n formConfig: this.positionFormConfig\r\n }\r\n\r\n\r\n //--------------------------Departments-------------------------\r\n departmentFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n ],\r\n loadAction: { url: 'departments/id' },\r\n }\r\n\r\n editDepartmentButton: Button = { name: 'edit', dialog: true, action: { url: 'departments?action=edit', method: 'post', successMessage: 'Edited Successfully' } }\r\n\r\n departmentTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'departmentID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'departments?action=create', method: 'post' } },\r\n {\r\n name: 'view',\r\n dialog: true,\r\n detailsConfig: {\r\n formConfig: this.departmentFormConfig,\r\n heroField: 'departmentID',\r\n buttons: [this.editDepartmentButton],\r\n tableConfigs: [\r\n {\r\n ...this.employeeTableConfig,\r\n loadAction: { url: 'departments/employees/x' },\r\n loadCriteria: 'employees',\r\n loadIDField: 'departmentID',\r\n title: 'Employees',\r\n elevation: 'none',\r\n },\r\n {\r\n ...this.positionTableConfig,\r\n loadAction: { url: 'departments/positions/x' },\r\n loadCriteria: 'positions',\r\n loadIDField: 'departmentID',\r\n title: 'Positions',\r\n elevation: 'none',\r\n\r\n }\r\n ],\r\n }\r\n },\r\n this.editDepartmentButton,\r\n { name: 'delete', dialog: true, action: { url: 'departments?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'departments/all/x' },\r\n formConfig: this.departmentFormConfig\r\n }\r\n\r\n\r\n\r\n\r\n\r\n //---------------------------Other code\r\n\r\n public CallApi(action: Action, data: any = '' ) {\r\n\r\n if (!action.method){\r\n return this.httpService.Get(action.url);\r\n }\r\n\r\n if(action.method =='get'){\r\n return this.httpService.Get(action.url);\r\n } else if (action.method == 'post'){\r\n\r\n if (action.isFormData){\r\n return this.httpService.Post_FormData(action.url, data);\r\n }else{\r\n return this.httpService.Post(action.url, data);\r\n }\r\n\r\n }\r\n else{\r\n return this.httpService.Post(action.url, data);\r\n }\r\n\r\n }\r\n\r\n public CheckWelcomed(path: string = 'home/admin/welcome') {\r\n this.CallApi({ url: 'tenant/welcome/x' }).subscribe((x) => {\r\n if (!x.data) {\r\n this.Navigate(path)\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n public Navigate(path: string) {\r\n this.router.navigate([path]);\r\n }\r\n\r\n public NavigateWithValue(path: string, value : string){\r\n this.router.navigate([path], {\r\n queryParams: { v: value },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n }\r\n\r\n public GetNavigationValue(){\r\n if (this.route.snapshot.queryParams[\"v\"] != undefined) {\r\n return this.route.snapshot.queryParams[\"v\"]\r\n }else{\r\n return \"\";\r\n }\r\n }\r\n\r\n public tmpAccountID;\r\n\r\n\r\n\r\n //Users\r\n public GetUser() {\r\n return this.httpService.Get(\"User/all/x\");\r\n }\r\n\r\n public RegisterAccount(u) {\r\n return this.httpService.Post(\"User/register\", u);\r\n }\r\n\r\n public GetUserByID(val: string) {\r\n return this.httpService.Get(`User/id/${val}`);\r\n }\r\n\r\n public UpdateUser(profile) {\r\n return this.httpService.Post(\"User/edit\", profile);\r\n }\r\n\r\n public UnlockUser(user) {\r\n return this.httpService.Post(\"User/unlock\", user);\r\n }\r\n\r\n public LockUser(user) {\r\n return this.httpService.Post(\"User/lock\", user);\r\n }\r\n\r\n public DeleteUser(user) {\r\n return this.httpService.Post(\"User/delete\", user);\r\n }\r\n\r\n public Login(u: User) {\r\n return this.httpService.Post(\"User/login\", u);\r\n }\r\n\r\n public ChangePassword(u) {\r\n return this.httpService.Post(\"User/changepassword-self\", u);\r\n }\r\n\r\n public ChangePasswordAdmin(u) {\r\n return this.httpService.Post(\"User/changepassword-admin\", u);\r\n }\r\n\r\n public SelfReset(u: User): Observable<any> {\r\n return this.httpService.Post(\"Basic/SelfReset\", u);\r\n }\r\n\r\n\r\n //Roles\r\n\r\n public PostRole(role, action: string) {\r\n return this.httpService.Post(`Role?action=${action}`, role);\r\n }\r\n\r\n public PutRole(role) {\r\n return this.httpService.Put(\"Role\", role);\r\n }\r\n\r\n public GetRole(by: string, val: string) {\r\n return this.httpService.Get(\"Role/all/x\");\r\n }\r\n\r\n\r\n\r\n //Logs\r\n public GetLog(by: string, val: string) {\r\n return this.httpService.Get(\"Log/all/x\");\r\n }\r\n\r\n\r\n //Settings\r\n public GetSetting(by: string, val: string) {\r\n return this.httpService.Get(\"Setting/all/x\");\r\n }\r\n\r\n public UpdateSetting(setting, action: string) {\r\n return this.httpService.Post(`Setting?action=${action}`, setting);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n public isLoading = new BehaviorSubject(false);\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { Column, DetailsDialogConfig, TableConfig } from '../classes/Classes';\r\n// import { DetailsDialog } from '../components/table/detailsDialog.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DetailsDialogProcessor } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n private smallScreen = false;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private breakpointObserver: BreakpointObserver\r\n ) {\r\n // Detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n });\r\n }\r\n\r\n openDetailsDialog<T>( config: DetailsDialogConfig, dialogComponent: new (...args: any[]) => T ): {\r\n afterClosed: Observable<any>,\r\n inputChange: Observable<any>,\r\n dialogRef: MatDialogRef<T>\r\n } {\r\n const hasTables = config.tableConfigs?.length > 0;\r\n\r\n const dialogOptions = {\r\n width: config.options?.width ? config.options?.width : (this.smallScreen ? '900px' : (hasTables ? '90%' : '900px')),\r\n height: config.options?.height ? config.options?.height : (hasTables ? '90%' : 'auto'),\r\n data: config\r\n };\r\n\r\n const dialogRef = this.dialog.open(dialogComponent, dialogOptions);\r\n\r\n return {\r\n afterClosed: dialogRef.afterClosed(),\r\n inputChange: (dialogRef.componentInstance as any).inputChange,\r\n dialogRef: dialogRef\r\n };\r\n }\r\n\r\n openConfiguredDetailsDialog<T>( buttonName: string, row: any, config: TableConfig | DetailsDialogConfig, dialogComponent: new (...args: any[]) => T, column?: Column ): Observable<any> {\r\n\r\n const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : config.buttons?.find(b => b.name === buttonName);\r\n\r\n if (!button || !button.dialog) {\r\n return new Observable(observer => {\r\n observer.next({ action: 'doAction', name: buttonName, row: row });\r\n observer.complete();\r\n });\r\n }\r\n\r\n\r\n let dialogConfig: DetailsDialogConfig = {\r\n formConfig: config.formConfig,\r\n buttons: config.buttons,\r\n details: row,\r\n // heroField : config.heroField,\r\n\r\n };\r\n\r\n\r\n if (button.detailsConfig) {\r\n dialogConfig = buttonName === 'create' ? button.detailsConfig : DetailsDialogProcessor.processDetailsConfig(button.detailsConfig, row);\r\n }else{\r\n dialogConfig = DetailsDialogProcessor.processDetailsConfig({...dialogConfig}, row);\r\n }\r\n\r\n\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n dialogConfig.formConfig.mode = button.detailsConfig.mode;\r\n } else {\r\n dialogConfig.formConfig.mode = buttonName === 'create' ? 'create' : (buttonName === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n if (buttonName === 'create') {\r\n dialogConfig.heroField = config.heroField;\r\n dialogConfig.heroValue = config.heroValue;\r\n }\r\n\r\n const dialogResult = this.openDetailsDialog(dialogConfig, dialogComponent);\r\n\r\n return new Observable(observer => {\r\n dialogResult.afterClosed.subscribe(result => {\r\n observer.next(result);\r\n observer.complete();\r\n });\r\n\r\n dialogResult.inputChange.subscribe(change => {\r\n observer.next({ action: 'inputChange', change: change });\r\n });\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-tin-spa',\r\n template: `\r\n <p>\r\n tin-spa works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class TinSpaComponent {\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } 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 { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n\r\n\r\n ],\r\n exports: [\r\n CommonModule,FormsModule, ReactiveFormsModule,\r\n MatMenuModule, MatSliderModule, MatTableModule, MatPaginatorModule,\r\n MatCheckboxModule, MatBadgeModule, MatButtonModule, MatIconModule, MatDialogModule, MatSnackBarModule,\r\n MatTabsModule, MatFormFieldModule, MatInputModule, MatCardModule, MatChipsModule, MatSelectModule,\r\n MatNativeDateModule, MatProgressSpinnerModule, MatListModule, MatAutocompleteModule, MatTooltipModule, MatSortModule,\r\n MatDatepickerModule, MatStepperModule, MatRadioModule, MatProgressBarModule,\r\n\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n RouterModule,\r\n MatExpansionModule,\r\n ],\r\n providers:[\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { disableClose: true, hasBackdrop: true } },\r\n { provide: MAT_DATE_LOCALE, useValue: \"en-GB\" },\r\n ]\r\n})\r\nexport class SpaMatModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { Core } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: ['./text.component.css']\r\n})\r\nexport class TextComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (!this.options){\r\n this.options = []\r\n }\r\n\r\n if(this.options.length > 0){\r\n this.initFilter();\r\n }\r\n\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.initControl(this.control)\r\n\r\n this.initControl(this.myControl)\r\n\r\n }\r\n\r\n\r\n filteredOptions: Observable<string[]>;\r\n multiDimension = false;\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n hide = true; //for password only\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() format = \"text\";\r\n @Input() type = \"\";\r\n\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n @Input() rows = 1;\r\n @Input() width = \"100%\"\r\n\r\n\r\n //Autocomplete items\r\n @Input() options: any = [];\r\n @Input() optionValue = \"\";\r\n\r\n //validation input\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max\r\n @Input() regex = \"\" //\"[a-zA-Z ]*\" //\"/\\S+@\\S+\\.\\S+/\";\r\n\r\n @Input() suffix: string;\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n private initFilter() {\r\n\r\n const objKeyList = Object.keys(this.options[0]);\r\n const firstKey = objKeyList[0];\r\n this.multiDimension = !Core.isNumber(firstKey);\r\n\r\n this.filteredOptions = this.myControl.valueChanges.pipe(\r\n startWith(\"\"),\r\n map((value) => this._filter(value))\r\n );\r\n }\r\n\r\n private _filter(value): string[] {\r\n\r\n if (this.multiDimension){\r\n\r\n let filterValue = \"\";\r\n if (value != \"\" && value){\r\n filterValue = value.toLowerCase();\r\n }\r\n\r\n return this.options.filter((option) => option[`${this.optionValue}`].toLowerCase().includes(filterValue));\r\n\r\n }else{\r\n const filterValue = value.toLowerCase();\r\n return this.options.filter(option => option.toLowerCase().includes(filterValue));\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n initControl(control: FormControl){\r\n if (this.readonly) {\r\n control.setValidators(null);\r\n control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly) {\r\n\r\n control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n\r\n //Events\r\n changed(){\r\n\r\n if (this.options.length > 0) {\r\n this.valueChange.emit(this.myControl.value);\r\n }else{\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n }\r\n\r\n leaved(){\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n\r\n //validation\r\n myControl = new FormControl('', [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n control = new FormControl( this.value, [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex) ]);\r\n\r\n validate(control: FormControl) : string{\r\n\r\n\r\n if ((this.required || this.min > 0) && control.hasError('required') ){\r\n return `Required`;\r\n }\r\n\r\n if (control.hasError('minlength') ){\r\n return `Minimun length is ${this.min}`;\r\n }\r\n\r\n if (control.hasError('maxlength')) {\r\n return `Maximum length is ${this.max}`;\r\n }\r\n\r\n if (control.hasError('pattern')) {\r\n return `Invalid Input`;\r\n }\r\n\r\n\r\n // if (this.regex != \"\"){\r\n\r\n // let r = new RegExp(this.regex, \"g\");\r\n\r\n // if (!r.test(this.value)){\r\n // this.valid = false;\r\n // this.errorMessage = \"Invalid input\";\r\n // return this.errorMessage;\r\n // }\r\n // }\r\n\r\n return \"\";\r\n }\r\n\r\n}\r\n","\r\n<!-- General Text -->\r\n<mat-form-field *ngIf=\"(!rows || rows == 1) && (format=='text' || format =='date') && options.length==0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\" >\r\n<mat-label *ngIf=\"format=='text'\">{{display}}</mat-label>\r\n<mat-label *ngIf=\"format=='date'\">{{display | date:'dd/MM/yyyy'}}</mat-label>\r\n<input matInput autocomplete=\"off\" [(ngModel)]=\"value\" (change)=\"changed()\" (blur)=\"leaved()\" (keyup.enter)=\"enterPressed()\" [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\"/>\r\n<mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <label *ngIf=\"suffix\">{{suffix}}</label>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n\r\n </div>\r\n</mat-form-field>\r\n\r\n\r\n<!-- password -->\r\n<mat-form-field class=\"spa-text\" *ngIf=\"format=='password'\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"enterPressed()\" (change)=\"changed()\" (blur)=\"leaved()\" [(ngModel)]=\"value\" autocomplete=\"off\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\">\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n</mat-form-field>\r\n\r\n\r\n<!-- TextArea copy - Only change input to textarea and change ngif to not -->\r\n\r\n<mat-form-field *ngIf=\"rows > 1 && options.length==0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\">\r\n<mat-label>{{display}}</mat-label>\r\n<textarea matInput autocomplete=\"off\" [rows]=\"rows\" [(ngModel)]=\"value\" (change)=\"changed()\" (keyup.enter)=\"enterPressed()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\"></textarea>\r\n<mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n\r\n\r\n<!-- Auto Complete-->\r\n\r\n <mat-form-field *ngIf=\"(!rows || rows == 1) && format=='text' && options.length>0 \" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input [type]=\"type\" [placeholder]=\"placeholder\" [(ngModel)]=\"value\" (change)=\"changed()\" matInput [formControl]=\"myControl\" [matAutocomplete]=\"auto\" [required]=\"required\" [readonly]=\"readonly\">\r\n <mat-error *ngIf=\"control.invalid\">{{validate(myControl)}}</mat-error>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"changed()\">\r\n\r\n <ng-container *ngIf=\"!multiDimension\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n {{option}}\r\n </mat-option>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiDimension\">\r\n <mat-option *ngFor=\"let row of filteredOptions | async\" [value]=\"row[optionValue]\">\r\n {{row[optionValue]}}\r\n </mat-option>\r\n </ng-container>\r\n\r\n\r\n </mat-autocomplete>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n </mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n\r\n@Component({\r\n selector: 'spa-check',\r\n templateUrl: './check.component.html',\r\n styleUrls: ['./check.component.css']\r\n})\r\nexport class CheckComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService,) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = false;\r\n @Output() valueChange = new EventEmitter();\r\n @Output() click = new EventEmitter();\r\n @Output() check = new EventEmitter();\r\n @Output() uncheck = new EventEmitter();\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n clicked(){\r\n this.click.emit();\r\n\r\n if(!this.value){\r\n this.checked();\r\n }else{\r\n this.unchecked();\r\n }\r\n }\r\n\r\n checked(){\r\n this.check.emit();\r\n }\r\n unchecked(){\r\n this.uncheck.emit();\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n\r\n }\r\n\r\n}\r\n","\r\n\r\n<mat-checkbox color=\"primary\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n\r\n<!-- <div class=\"suffix-icons\">\r\n\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n\r\n <mat-icon *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" style=\"color: steelblue;font-size: 15px;margin-left: 5px;margin-top: 8px;\">info</mat-icon>\r\n\r\n</div> -->\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Core } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['./date.component.css']\r\n})\r\nexport class DateComponent implements OnInit, OnChanges {\r\n @Input() required = true;\r\n @Input() min = \"1900-01-01\";\r\n @Input() max = \"9999-01-01\";\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() value = Core.nowDate(true);\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() width = \"100%\";\r\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n minDate: FormControl;\r\n maxDate: FormControl;\r\n control: FormControl;\r\n\r\n ngOnInit(): void {\r\n this.initializeDateControls();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['readonly']) {\r\n this.updateControlState();\r\n }\r\n if (changes['value']) {\r\n this.control.setValue(new Date(this.value));\r\n }\r\n }\r\n\r\n private initializeDateControls(): void {\r\n this.minDate = new FormControl(new Date(this.min));\r\n this.maxDate = new FormControl(new Date(this.max));\r\n this.control = new FormControl({ value: new Date(this.value), disabled: this.readonly });\r\n\r\n this.updateControlState();\r\n setTimeout(() => this.onChangeEvent(), 5);\r\n }\r\n\r\n private updateControlState(): void {\r\n if (this.readonly) {\r\n this.control.disable();\r\n } else {\r\n this.control.enable();\r\n }\r\n }\r\n\r\n onChangeEvent(): void {\r\n const formattedDate = Core.getFormatedDate2(this.control.value, true);\r\n this.valueChange.emit(formattedDate);\r\n }\r\n\r\n validate(control: FormControl): string {\r\n if (control.hasError('matDatepickerMin')) {\r\n return `Minimum date is ${this.min}`;\r\n }\r\n if (control.hasError('matDatepickerMax')) {\r\n return `Maximum date is ${this.max}`;\r\n }\r\n return \"\";\r\n }\r\n}\r\n","\r\n<mat-form-field [ngStyle]=\"{'width':width}\">\r\n <input [formControl]=\"control\" [min]=\"minDate.value\" [max]=\"maxDate.value\" matInput [matDatepicker]=\"picker_date\" (dateInput)=\"onChangeEvent()\" [placeholder]=\"display\" [readonly]=\"true\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker_date\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker_date></mat-datepicker>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.css']\r\n})\r\nexport class DatetimeComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n @Input() min = \"01 jan 1900\";\r\n\r\n @Input() max = \"31 dec 9999\";\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n}\r\n","<mat-form-field >\r\n<mat-label>{{display}}</mat-label>\r\n<input matInput autocomplete=\"off\" type=\"datetime-local\" [(ngModel)]=\"value\" [min]=\"min\" [max]=\"max\" (change)=\"changed()\" [placeholder]=\"display\" [readonly]=\"readonly\" />\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-label',\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.css']\r\n})\r\nexport class LabelComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() format = \"text\";\r\n\r\n}\r\n","<div *ngIf=\"format=='text'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label style=\"font-size: 20px; font-weight: 300\">{{value}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='date'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label>{{value | date:'dd/MM/yyyy'}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='datetime'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label>{{value | date:'dd/MM/yyyy HH:mm'}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='money'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label>{{value | currency:'USD':''}} </label> &nbsp;\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PeekDialogConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\n\r\n@Component({\r\n selector: 'spa-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.css']\r\n})\r\nexport class SelectComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dialogService: DialogService) { }\r\n\r\n ngOnInit(): void {\r\n // this.displayValue = this.options.filter((m) => m.optionValue == this.value)\r\n // this.displayValue = this.value\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Select \" + this.display;\r\n }\r\n\r\n if (this.defaultFirstValue && this.options && this.options.length > 0 && (this.value == null || this.value == undefined || (typeof (this.value) == 'string' && this.value == '') || (typeof (this.value) == 'number' && this.value == 0))){\r\n this.value = this.options[0][this.optionValue]\r\n this.changed();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (this.readonlyMode != \"\" && this.options.length > 0){\r\n this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`]\r\n }\r\n\r\n //add a null option\r\n if (this.nullable && this.options && this.options.length > 0 && this.options[0][this.optionValue] != null){\r\n this.options.unshift({ [this.optionValue]: null, [this.optionDisplay]: \"None\" })\r\n }\r\n\r\n }\r\n\r\n displayValue;\r\n isHovered = false;\r\n\r\n @Input() width = \"100%\"\r\n @Input() readonly = false;\r\n @Input() required = true;\r\n @Input() defaultFirstValue = false;\r\n @Input() readonlyMode = \"\";\r\n @Input() hint = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() display = \"\";\r\n @Input() value ;\r\n @Input() options: any;\r\n @Input() masterOptions: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() optionDisplayExtra = \"\";\r\n @Input() nullable = false;\r\n\r\n @Input() peekConfig: PeekDialogConfig;\r\n @Input() infoMessage: string;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n }\r\n\r\n onAddClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n // if (this.peekConfig && this.peekConfig.create && this.value) {\r\n\r\n // const dynamicData = { [this.peekConfig.detailsConfig.heroField]: this.value };\r\n\r\n // this.dialogService.openConfiguredDetailsDialog( \"create\", dynamicData, this.peekConfig.detailsConfig, DetailsDialog ).subscribe(result => {\r\n // console.log(result);\r\n // });\r\n // } else {\r\n // this.messageService.toast(\"Configuration Error\");\r\n // }\r\n }\r\n\r\n onViewClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n // if (this.peekConfig && this.peekConfig.view && this.value) {\r\n\r\n // const dynamicData = { [this.peekConfig.detailsConfig.heroField]: this.value };\r\n\r\n // this.dialogService.openConfiguredDetailsDialog( \"view\", dynamicData, this.peekConfig.detailsConfig, DetailsDialogInternal ).subscribe(result => {\r\n // console.log(result);\r\n // });\r\n // } else {\r\n // this.messageService.toast(\"Configuration Error\");\r\n // }\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n\r\n if (this.infoMessage) {\r\n this.messageService.info(this.infoMessage);\r\n }\r\n }\r\n\r\n}\r\n\r\n","\r\n<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" [hideRequiredMarker]=\"!required\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.create && isHovered && value\" (click)=\"onAddClick($event)\" matTooltip=\"Add\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: green;\">add</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.view && isHovered && value\" (click)=\"onViewClick($event)\" matTooltip=\"View\" matTooltipPosition=\"above\" >\r\n <mat-icon color=\"primary\">launch</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-form-field>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() notes = new Array();\r\n notesMessage: string = \"Empty\";\r\n @Input() title = \"Notes\"\r\n\r\n}\r\n","\r\n <div class=\"tin-input-row mt-3\" *ngIf=\"title != ''\">\r\n <mat-label style=\"font-size: 20px; font-weight: 300\" > {{title}}</mat-label >\r\n </div>\r\n\r\n <ul *ngIf=\"notes && notes.length>0\" class=\"list-group list-group-flush\" style=\"max-height:350px; margin-left:5px\">\r\n\r\n <li *ngFor=\"let note of notes\" class=\"list-group-item list-group-item-action flex-column align-items-start\">\r\n <div class=\"d-flex w-100 justify-content-between\">\r\n <div class=\"mb-0\">{{note.createdByName}}</div>\r\n <!-- <small class=\"text-muted\">{{note.expr1}} ago</small> -->\r\n </div>\r\n\r\n <small>{{note.details}} (<em>{{note.createdDate | date: 'dd MMM yyyy HH:mm'}}</em>) </small>\r\n </li>\r\n\r\n\r\n </ul>\r\n\r\n <div *ngIf=\"notes && notes.length==0\" class=\"d-flex justify-content-center row align-items-center\" style=\"max-height:200px\">\r\n\r\n No {{title.toLowerCase()}}\r\n\r\n </div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\n@Component({\r\n selector: 'spa-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.css']\r\n})\r\nexport class FilterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges() {\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n @Input() flatButtons = false;\r\n @Input() showText = true;\r\n @Input() showButton = true;\r\n @Input() data = new MatTableDataSource();\r\n @Output() refreshClick = new EventEmitter();\r\n\r\n _filterText = \"\";\r\n\r\n\r\n keyUp(event: KeyboardEvent) {\r\n let text = event.target['value'];\r\n this.applyFilter(text);\r\n }\r\n\r\n\r\n applyFilter(filterValue: string) {\r\n\r\n if (this.data){\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n }\r\n\r\n refreshClicked(){\r\n this.refreshClick.emit();\r\n }\r\n\r\n}\r\n","<mat-form-field *ngIf=\"showText\" >\r\n <mat-label>Filter</mat-label>\r\n <input id=\"txtFilter\" matInput [(ngModel)]=\"_filterText\" (keyup)=\"keyUp($event)\" placeholder=\"Enter Filter text\" autocomplete=\"off\">\r\n</mat-form-field>\r\n\r\n<button *ngIf=\"showButton && !flatButtons\" id=\"btnFilter\" mat-mini-fab color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\">\r\n <mat-icon class=\"refreshIcon\">cached</mat-icon>\r\n</button>\r\n\r\n<button *ngIf=\"showButton && flatButtons\" id=\"btnFilter\" mat-icon-button color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\">\r\n <mat-icon class=\"refreshIcon\">cached</mat-icon>\r\n</button>\r\n","import {\r\n OnInit,\r\n Directive,\r\n HostListener,\r\n ElementRef, forwardRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\nexport const CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CurrencyInputMaskDirective),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: '[appCurrencyInputMask]',\r\n providers: [\r\n CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR,\r\n DecimalPipe\r\n ]\r\n})\r\nexport class CurrencyInputMaskDirective implements ControlValueAccessor, OnInit {\r\n private el: HTMLInputElement;\r\n private onModelChange: Function;\r\n private onModelTouched: Function;\r\n private lastNumVal: number;\r\n private DECIMAL_MARK = '.';\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private decimalPipe: DecimalPipe\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n\r\n @HostListener('focus', ['$event'])\r\n handleFocus(event: any) {\r\n const strVal: string = this.getInputValue();\r\n const unmaskedStr: string = this.getUnmaskedValue(strVal);\r\n this.updateInputValue(unmaskedStr);\r\n }\r\n\r\n @HostListener('cut', ['$event'])\r\n handleCut(event: any) {\r\n setTimeout(() => {\r\n this.inputUpdated();\r\n }, 0);\r\n }\r\n\r\n @HostListener('keypress', ['$event'])\r\n handleKeypress(event: any) {\r\n // Restrict characters\r\n const newChar: string = String.fromCharCode(event.which);\r\n const allowedChars: RegExp = /^[\\d.]+$/;\r\n if (!allowedChars.test(newChar)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // Handle decimal mark input\r\n const currentValue: string = event.target.value;\r\n const separatorIdx: number = currentValue.indexOf(this.DECIMAL_MARK);\r\n const hasFractionalPart: boolean = (separatorIdx >= 0);\r\n if (!hasFractionalPart || newChar !== this.DECIMAL_MARK) {\r\n return;\r\n }\r\n const isOutsideSelection = !this.isIdxBetweenSelection(separatorIdx);\r\n if (isOutsideSelection) {\r\n const positionAfterMark = separatorIdx + 1;\r\n this.setCursorPosition(positionAfterMark);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: any) {\r\n this.inputUpdated();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n handlePaste(event: any) {\r\n setTimeout(() => {\r\n this.inputUpdated();\r\n }, 1);\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n handleBlur(event: any) {\r\n const strVal: string = this.getInputValue();\r\n const numVal: number = this.convertStrToDecimal(strVal);\r\n this.maskInput(numVal);\r\n this.onModelTouched.apply(event);\r\n }\r\n\r\n registerOnChange(callbackFunction: Function): void {\r\n this.onModelChange = callbackFunction;\r\n }\r\n\r\n registerOnTouched(callbackFunction: Function): void {\r\n this.onModelTouched = callbackFunction;\r\n }\r\n\r\n setDisabledState(value: boolean): void {\r\n this.el.disabled = value;\r\n }\r\n\r\n writeValue(numValue: number): void {\r\n this.maskInput(numValue);\r\n }\r\n\r\n private maskInput(numVal: number): void {\r\n if (!this.isNumeric(numVal)) {\r\n this.updateInputValue('');\r\n return;\r\n }\r\n const strVal: string = this.convertDecimalToStr(numVal);\r\n const newVal: string = this.transformWithPipe(strVal);\r\n this.updateInputValue(newVal);\r\n }\r\n\r\n private inputUpdated() {\r\n this.restrictDecimalValue();\r\n const strVal: string = this.getInputValue();\r\n const unmaskedVal: string = this.getUnmaskedValue(strVal);\r\n const numVal: number = this.convertStrToDecimal(unmaskedVal);\r\n if (numVal !== this.lastNumVal) {\r\n this.lastNumVal = numVal;\r\n this.onModelChange(numVal);\r\n }\r\n }\r\n\r\n private restrictDecimalValue(): void {\r\n const strVal: string = this.getInputValue();\r\n const dotIdx: number = strVal.indexOf(this.DECIMAL_MARK);\r\n const hasFractionalPart: boolean = (dotIdx >= 0);\r\n if (hasFractionalPart) {\r\n const fractionalPart: string = strVal.substring(dotIdx + 1);\r\n if (fractionalPart.length > 2) {\r\n const choppedVal: string = strVal.substring(0, dotIdx + 3);\r\n this.updateInputValue(choppedVal, true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n private transformWithPipe(str: string): string {\r\n return this.decimalPipe.transform(str, '1.2-2');\r\n }\r\n\r\n private getUnmaskedValue(value: string): string {\r\n return value.replace(/[^-\\d\\\\.]/g, '');\r\n }\r\n\r\n private updateInputValue(value: string, savePosition = false) {\r\n if (savePosition) {\r\n this.saveCursorPosition();\r\n }\r\n this.el.value = value;\r\n }\r\n\r\n private getInputValue(): string {\r\n return this.el.value;\r\n }\r\n\r\n private convertStrToDecimal(str: string): number {\r\n return (this.isNumeric(str)) ? parseFloat(str) : null;\r\n }\r\n\r\n private convertDecimalToStr(n: number): string {\r\n return (this.isNumeric(n)) ? n + '' : '';\r\n }\r\n\r\n private isNumeric(n: any): boolean {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n private saveCursorPosition() {\r\n const position: number = this.el.selectionStart;\r\n setTimeout(() => {\r\n this.setCursorPosition(position);\r\n }, 1);\r\n }\r\n\r\n private setCursorPosition(position: number) {\r\n this.el.selectionStart = position;\r\n this.el.selectionEnd = position;\r\n }\r\n\r\n private isIdxBetweenSelection(idx: number) {\r\n if (this.el.selectionStart === this.el.selectionEnd) {\r\n return false;\r\n }\r\n return (idx >= this.el.selectionStart && idx < this.el.selectionEnd);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spa-money',\r\n templateUrl: './money.component.html',\r\n styleUrls: ['./money.component.css']\r\n})\r\nexport class MoneyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initControl(this.control)\r\n }\r\n\r\n initControl(control: FormControl) {\r\n if (this.readonly) {\r\n control.setValidators(null);\r\n control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly) {\r\n\r\n control.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Input() width = \"100%\"\r\n @Input() currency = \"\";\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n\r\n\r\n //validation input\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max 9000000000000000\r\n\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n changed(x){\r\n this.valueChange.emit(x);\r\n }\r\n\r\n leaved() {\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n //validation\r\n control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);\r\n\r\n validate(control: FormControl): string {\r\n\r\n if (this.required && control.hasError('required')) {\r\n return `Required`;\r\n }\r\n\r\n if (parseFloat(this.value) < this.min){\r\n return `Minimun value is ${this.min}`;\r\n }\r\n\r\n if (parseFloat(this.value) > this.max) {\r\n return `Maximum value is ${this.max}`;\r\n }\r\n\r\n if (control.hasError('min')) {\r\n return `Minimun value is ${this.min}`;\r\n }\r\n\r\n if (control.hasError('max')) {\r\n return `Maximum value is ${this.max}`;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.css']\r\n})\r\nexport class OptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.OGValue = this.value;\r\n }\r\n\r\n OGValue\r\n\r\n\r\n\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() readonly = false;\r\n\r\n @Input() type = \"text\";\r\n @Input() value = \"\";\r\n @Input() display = \"\";\r\n @Input() show: boolean = false;\r\n\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n dateChanged(x){\r\n this.value = x\r\n this.changed()\r\n }\r\n\r\n enterPressed(){\r\n this.enterPress.emit();\r\n }\r\n\r\n resetValue(){\r\n this.value = this.OGValue;\r\n this.changed();\r\n }\r\n\r\n\r\n}\r\n","\r\n<div class=\"tin-row gap-0\">\r\n\r\n<mat-checkbox color=\"primary\" style=\"margin-right:5px\" [(ngModel)]=\"show\" (change)=\"resetValue()\" labelPosition=\"after\">{{display}}</mat-checkbox>\r\n\r\n<mat-form-field style=\"margin-right:5px;width: 0px;\" >\r\n<input matInput />\r\n</mat-form-field>\r\n\r\n\r\n<ng-container *ngIf=\"show\" [ngSwitch]=\"type\">\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"display\" [(value)]=\"value\" (valueChange)=\"dateChanged($event)\"></spa-date>\r\n\r\n <spa-select *ngSwitchCase=\"'select'\" [display]=\"display\" [options]=\"options\" [optionDisplay]=\"optionDisplay\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\">\r\n </spa-select>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"display\" (keyup.enter)=\"enterPressed()\" [options]=\"options\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\"></spa-text>\r\n\r\n</ng-container>\r\n\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Pipe({\r\n name: 'camelToWords'\r\n})\r\nexport class CamelToWordsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n return Core.camelToWords(value);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Action, Tile, TileConfig, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'spa-tiles',\r\n templateUrl: './tiles.component.html',\r\n styleUrls: ['./tiles.component.css']\r\n})\r\nexport class TilesComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService,) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.config){\r\n this.tiles = this.config.tiles;\r\n\r\n if (this.config?.loadAction && this.config.loadInit) {\r\n this.loadData(this.config?.loadAction, \"\");\r\n }\r\n }\r\n\r\n this.reload.subscribe(v => {\r\n\r\n if (v == true){\r\n if (this.config?.loadAction) {\r\n this.loadData(this.config?.loadAction, \"\");\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n tiles: Tile[];\r\n @Input() config: TileConfig;\r\n\r\n\r\n @Input() data;\r\n // @Input() clickable: boolean = false;\r\n @Input() reload: Subject<boolean>;\r\n\r\n @Output() tileClick = new EventEmitter();\r\n\r\n selectedTile: string = \"\";\r\n\r\n new = true\r\n\r\n clicked(v: Tile){\r\n\r\n\r\n\r\n if(!this.config.clickable) return;\r\n\r\n\r\n if(this.selectedTile == v.name){\r\n this.tileClick.emit(\"\");\r\n this.selectedTile = \"\";\r\n }else{\r\n this.tileClick.emit(v.name);\r\n this.selectedTile = v.name;\r\n }\r\n\r\n\r\n }\r\n\r\n pop(x){\r\n\r\n if (x){\r\n this.messageService.info(x);\r\n }\r\n\r\n }\r\n\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.data = apiResponse.data\r\n }\r\n else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n}\r\n"," <div class=\"tin-row align-items-center tiles\" *ngIf=\"!new\">\r\n\r\n <ng-container *ngFor=\"let tile of tiles\">\r\n\r\n <mat-card class=\"card tin-col\" *ngIf=\"!tile.hidden\" (click)=\"clicked(tile)\">\r\n\r\n <mat-label style=\"font-weight:bold; text-align: center; padding: 0px; margin: 0px;\" [ngStyle]=\"{'color':tile.color,'font-size':tile.name == selectedTile ? '45px' : '35px' }\">{{data ? data[tile.name] : 0}}</mat-label>\r\n\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n\r\n <!-- <button mat-icon-button (click)=\"pop(tile.info)\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '14px' : '14px' }\" style=\"padding-left:5px;padding-right:5px; margin-right: 10px;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':tile.name == selectedTile ? '24x' : '24px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n </button> -->\r\n\r\n <button mat-icon-button (click)=\"pop(tile.info)\" style=\"margin: 0px; padding: 0px;\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '14px' : '14px' }\" style=\"padding-left:5px;padding-right:5px; margin-right: 10px;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':tile.name == selectedTile ? '24x' : '18px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n </button>\r\n\r\n <!-- <div class=\"row d-flex justify-content-center row align-items-center\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '18px' : '12px' }\" style=\"padding-left:5px;padding-right:5px\">{{tile.name}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':tile.name == selectedTile ? '20px' : '17px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n </div> -->\r\n\r\n </div>\r\n\r\n </mat-card>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"d-flex row align-items-center justify-content-between\" *ngIf=\"new\">\r\n\r\n <ng-container *ngFor=\"let tile of tiles\">\r\n\r\n <mat-card class=\"col\" style=\"margin-left: 5px;margin-right: 5px; padding: 10px 16px ; min-width: 150px; margin-top: 5px;\" (click)=\"clicked(tile)\">\r\n\r\n <div class=\"row d-flex justify-content-center align-items-center\">\r\n\r\n <div style=\"text-align: center;\">\r\n <mat-label style=\"font-weight:bold;\" *ngIf=\"tile.prefix\" >{{tile.prefix}}</mat-label> &nbsp;\r\n <mat-label style=\"font-weight:bold; text-align: center;\" [ngStyle]=\"{'color':tile.color,'font-size':tile.name == selectedTile ? '35px' : '30px' }\">{{data ? data[tile.name] : 0}}</mat-label>&nbsp;\r\n <mat-label style=\"font-weight:bold;\" *ngIf=\"tile.suffix\">{{tile.suffix}}</mat-label>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row d-flex justify-content-center align-items-center\">\r\n\r\n <div class=\"d-flex justify-content-center align-items-center\" style=\"text-align: center;\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '18px' : '14px' }\" style=\"padding-left:5px;padding-right:5px; text-align: center;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" style=\"font-size: 20px; color:steelblue;\">info</mat-icon>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card>\r\n\r\n\r\n </ng-container>\r\n\r\n </div>\r\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { Step } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }]\r\n})\r\nexport class StepsComponent implements OnInit, AfterViewInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n this.pushSteps();\r\n }\r\n\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @Input() value = \"\";\r\n @Input() steps: Step[];\r\n\r\n setStepper() {\r\n\r\n if (this.value == \"\") return;\r\n\r\n\r\n this.stepper.selectedIndex = 0;\r\n\r\n switch (this.value) {\r\n\r\n\r\n\r\n case \"Draft\":\r\n this.stepper.selectedIndex = 0;\r\n break;\r\n\r\n case \"Head Approval\":\r\n this.pushStepper(1)\r\n break;\r\n\r\n case \"CE Approval\":\r\n this.pushStepper(2)\r\n break;\r\n\r\n case \"Booking\":\r\n this.pushStepper(3)\r\n break;\r\n\r\n case \"BTA Approval\":\r\n this.pushStepper(4)\r\n break;\r\n\r\n case \"Travel\":\r\n this.pushStepper(5)\r\n break;\r\n\r\n case \"BTR Approval\":\r\n this.pushStepper(6)\r\n break;\r\n\r\n case \"Travel Closure\":\r\n this.pushStepper(7)\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n pushStepper(count: number) {\r\n\r\n for (let index = 0; index < count + 1; index++) {\r\n // const element = array[index];\r\n this.stepper.selectedIndex = index;\r\n }\r\n\r\n }\r\n\r\n pushSteps(){\r\n\r\n if(this.steps.length == 0) return;\r\n if (this.value == \"\") return;\r\n this.stepper.selectedIndex = 0;\r\n\r\n\r\n let i = 0;\r\n\r\n for (let step of this.steps) {\r\n\r\n if (step.name != this.value) {\r\n\r\n this.stepper.selectedIndex = i;\r\n i++;\r\n\r\n } else {\r\n\r\n this.stepper.selectedIndex = i;\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-attach',\r\n templateUrl: './attach.component.html',\r\n styleUrls: ['./attach.component.scss']\r\n})\r\nexport class AttachComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() message = \"Drag and drop files here\"\r\n @Input() files: any[] = [];\r\n @Output() filesChange = new EventEmitter();\r\n @Output() upload = new EventEmitter();\r\n\r\n\r\n @Input() enableUpload = false;\r\n\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n\r\n fileBrowseHandler(event) {\r\n let files = event.target.files;\r\n this.prepareFilesList(files);\r\n }\r\n\r\n\r\n deleteFile(index: number) {\r\n this.files.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Simulate the upload process\r\n */\r\n // uploadFilesSimulator(index: number) {\r\n // setTimeout(() => {\r\n // if (index === this.files.length) {\r\n // return;\r\n // } else {\r\n // const progressInterval = setInterval(() => {\r\n // if (this.files[index].progress === 100) {\r\n // clearInterval(progressInterval);\r\n // this.uploadFilesSimulator(index + 1);\r\n // } else {\r\n // this.files[index].progress += 5;\r\n // }\r\n // }, 200);\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n prepareFilesList(files: Array<any>) {\r\n for (const item of files) {\r\n item.progress = 0;\r\n this.files.push(item);\r\n }\r\n // this.uploadFilesSimulator(0);\r\n }\r\n\r\n formatBytes(bytes, decimals) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n uploaded(){\r\n this.upload.emit();\r\n }\r\n\r\n filesChanged(){\r\n this.filesChange.emit(this.files);\r\n }\r\n}\r\n","<div class=\"tin-input-row\" style=\"width: 100%;\">\r\n\r\n <div class=\"col\">\r\n <div class=\"container\" appDnd (fileDropped)=\"onFileDropped($event)\">\r\n <input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event)\" />\r\n <h4>{{message}}</h4>\r\n\r\n <label for=\"fileDropRef\">Click to Browse</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <div class=\"files-list \">\r\n <div class=\"single-file \" style=\"width: 100%;\" *ngFor=\"let file of files; let i = index\">\r\n\r\n <div class=\"tin-input-row info\" >\r\n <h4 class=\"name\">\r\n {{ file?.name }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size, 2) }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"delete\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\r\n <path fill=\"#B1B1B1\" fill-rule=\"nonzero\"\r\n d=\"M1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v10zm3.17-7.83a.996.996 0 0 1 1.41 0L7 9.59l1.42-1.42a.996.996 0 1 1 1.41 1.41L8.41 11l1.42 1.42a.996.996 0 1 1-1.41 1.41L7 12.41l-1.42 1.42a.996.996 0 1 1-1.41-1.41L5.59 11 4.17 9.58a.996.996 0 0 1 0-1.41zM10.5 1L9.79.29C9.61.11 9.35 0 9.09 0H4.91c-.26 0-.52.11-.7.29L3.5 1H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length > 0 && enableUpload\" class=\"tin-input-row d-flex justify-content-center\" style=\"width: 100%;\" >\r\n <button mat-button color=\"primary\" (click)=\"uploaded()\" matTooltip=\"Upload New Documents\" matTooltipPosition=\"above\" ><mat-icon>file_upload</mat-icon> Upload</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n@Component({\r\n selector: 'spa-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.css']\r\n})\r\nexport class ChipsComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() icon = \"\";\r\n @Input() removable = false;\r\n @Input() addable = false;\r\n\r\n\r\n\r\n @Input() chips: string[];\r\n // @Output() chipClick = new EventEmitter();\r\n\r\n @Output() click = new EventEmitter();\r\n\r\n @Output() remove = new EventEmitter();\r\n\r\n clicked(chip: string) {\r\n\r\n if (typeof chip != 'string') {\r\n return;\r\n }\r\n\r\n if (chip) {\r\n this.click.emit(chip);\r\n }\r\n }\r\n\r\n\r\n removed(chip) {\r\n\r\n // const index = this.chips.indexOf(chip);\r\n\r\n // if (index >= 0) {\r\n // this.chips.splice(index, 1);\r\n // }\r\n\r\n this.messageService.confirm(`Remove ${chip} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.remove.emit(chip);\r\n\r\n };\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n","\r\n\r\n\r\n<div class=\"row mt-1\" style=\"margin-left: 1em;\">\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let chip of chips let i = index\" selectable [removable]=\"removable\" style=\"font-size: 12px;\" [ngStyle]=\"{'padding-right': removable ? '5px':'12px'}\" (click)=\"clicked(chip)\">\r\n <mat-icon *ngIf=\"icon != ''\" color=\"primary\" style=\"font-size: 22px;\">{{icon}}</mat-icon>\r\n\r\n {{chip}}\r\n\r\n <mat-icon *ngIf=\"removable\" style=\"font-size: 20px; margin-left: 5px;margin-top: 3px;margin-right: 0px; color: grey;\" (click)=\"removed(chip)\">cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-list>\r\n</div>\r\n\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'spa-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.css']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService) {\r\n\r\n this.loaderService.isLoading.subscribe((v) => {\r\n this.loading = v;\r\n });\r\n\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n @Input() logo = \"\";\r\n loading: boolean = false;\r\n\r\n}\r\n","<div class=\"progress-loader\" [hidden]=\"!loading\">\r\n <div class=\"loading-spinner\">\r\n\r\n <img *ngIf=\"logo==''\" style=\"width: 100px;\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==\"\r\n\r\n >\r\n\r\n <img *ngIf=\"logo!=''\" [src]=\"logo\" style=\"width: 100px;\" />\r\n\r\n\r\n <span id=\"loadingMessage\" class=\"loading-message\">Please wait...</span>\r\n </div>\r\n</div>\r\n","import { AppConfig, Role, Constants } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { StorageService } from '../../services/storage.service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\n\r\n\r\n@Component({\r\n selector: 'spa-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent {\r\n\r\n constructor(public router: Router, public authService: AuthService, private storageService: StorageService, private socialService: SocialAuthService, private breakpointObserver: BreakpointObserver, public dataService: DataServiceLib,) {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n } else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.authService.loggedUserFullName.subscribe(user => this.loggedUserFullName = user)\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.authService.loggedinObserv.subscribe(obj => this.loggedin = obj)\r\n this.authService.tenantNameObserv.subscribe(obj => this.tenantName = obj)\r\n\r\n }\r\n\r\n smallScreen\r\n myRole;\r\n loggedUserFullName: string;\r\n tenantName : string;\r\n loggedin: boolean;\r\n isExpanded = false;\r\n\r\n nowDate = new Date()\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n @Input() footer: string = 'alsquaretech.net | Privacy Policy';\r\n\r\n\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n closeSide() {\r\n this.isExpanded = false;\r\n }\r\n\r\n logoff() {\r\n // this.socialService.signOut();\r\n // this.authService.Updateloggedin(false);\r\n // this.authService.UpdateAutoLogin(false);\r\n // this.authService.UpdateRole(new Role());\r\n // this.storageService.clear();\r\n // this.router.navigate([\"login\"]);\r\n this.authService.logoff();\r\n }\r\n\r\n redirectTo(link: string){\r\n\r\n this.collapse();\r\n\r\n if (link!=\"\"){\r\n this.router.navigate([link]);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","<header *ngIf=\"loggedin && dataService.appConfig.navigation == 'top'\">\r\n\r\n <nav class=\"toolbar navbar navbar-expand-sm navbar-toggleable-sm navbar-light border-bottom box-shadow mb-3 \" style=\"padding-right: 10px;\">\r\n\r\n\r\n <div class=\"container-fluid\" style=\"padding-right: 0px;\">\r\n\r\n <img *ngIf=\"appConfig.logo!=''\" [src]=\"appConfig.logo\" style=\"height: 50px; margin-right: 2em\" />\r\n\r\n <div>\r\n <!-- <div style=\"font-size: 20px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px;\">\r\n {{tenantName}}\r\n </div> -->\r\n\r\n <div *ngIf=\"!dataService.appConfig.multitenant\" style=\"font-size: 22px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\" style=\"font-size: 20px; ; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\".navbar-collapse\" aria-label=\"Toggle navigation\" [attr.aria-expanded]=\"isExpanded\" (click)=\"toggle()\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div *ngIf=\"myRole\" class=\" navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse stack-top\" style=\"margin-right: 0px;\" [ngClass]=\"{ show: isExpanded, navitems: isExpanded }\" >\r\n\r\n <button mat-icon-button (click)=\"logoff()\" > <mat-icon>logout</mat-icon> </button>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >support_agent</mat-icon> </button>\r\n\r\n <!-- <button mat-icon-button (click)=\"redirectTo('home/admin/tenants')\"> <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button> -->\r\n </div>\r\n\r\n\r\n <button id=\"btnUser\" mat-button [matMenuTriggerFor]=\"profileMenu\" ><mat-icon style=\"font-size: 24px;\">account_circle</mat-icon> &nbsp;{{loggedUserFullName}}</button>\r\n\r\n <mat-menu #profileMenu=\"matMenu\">\r\n <button id=\"btnProfile\" mat-menu-item (click)=\"redirectTo('home/user/profile')\" >Profile</button>\r\n <button id=\"btnLogOff\" mat-menu-item (click)=\"logoff()\">Log Off</button>\r\n </mat-menu>\r\n\r\n <div *ngFor=\"let item of appConfig.capItems\">\r\n\r\n <!-- Menu Item -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && !item.capSubItems && item.showMenu\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items ignored -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && item.ignoreSubsDisplay\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items to display-->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && !item.ignoreSubsDisplay\" mat-button [matMenuTriggerFor]=\"adminMenu\">{{item.display}}</button>\r\n\r\n\r\n <!-- Sub Menu Items -->\r\n <mat-menu #adminMenu=\"matMenu\">\r\n\r\n <div *ngFor=\"let subItem of item.capSubItems\">\r\n\r\n <button *ngIf=\"myRole[subItem.name] && subItem.showMenu\" mat-menu-item (click)=\"redirectTo(subItem.link)\">{{subItem.display}}</button>\r\n\r\n </div>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </nav>\r\n\r\n</header>\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"dataService.appConfig.navigation == 'top'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- SIDE -->\r\n<mat-toolbar class=\"tin-bg-image-toolbar\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\" style=\"padding: 0px 8px;\">\r\n\r\n <button mat-icon-button (click)=\"toggle()\" matTooltip=\"Menu\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n\r\n <img [src]=\"dataService.appConfig.logo\" style=\"height: 50px;\" />\r\n\r\n <div style=\"padding-left: 10px; \">\r\n\r\n <div style=\"font-size: 20px; height: 25px; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <span class=\"toolbar-item-spacer\"></span>\r\n\r\n <!-- buttons -->\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >help</mat-icon> </button>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button matTooltip=\"Notifications\"><mat-icon>notifications</mat-icon></button>\r\n\r\n <button mat-icon-button matTooltip=\"My Account\" [matMenuTriggerFor]=\"userAccountMenu\"><mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"logoff()\"> <mat-icon>logout</mat-icon></button>\r\n\r\n\r\n <!-- my account menu -->\r\n <mat-menu #userAccountMenu [overlapTrigger]=\"false\" yPosition=\"below\">\r\n\r\n <button mat-menu-item routerLink=\"home/user/profile\">\r\n <mat-icon>person</mat-icon><span>Profile</span>\r\n </button>\r\n\r\n <button mat-menu-item routerLink=\"home/admin/bug\" *ngIf=\"dataService.appConfig.multitenant && smallScreen\">\r\n <mat-icon>help</mat-icon> <span>Help</span>\r\n </button>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <button mat-menu-item (click)=\"logoff()\">\r\n <mat-icon>logout</mat-icon>Logout\r\n </button>\r\n\r\n </mat-menu>\r\n\r\n</mat-toolbar>\r\n\r\n\r\n\r\n\r\n<mat-sidenav-container class=\"app-container\" [hasBackdrop]=\"smallScreen\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n\r\n <mat-sidenav #sidenav [mode]=\"smallScreen ? 'over' : 'over'\" [class.mat-elevation-z4]=\"true\" [opened]=\"isExpanded\" class=\"app-sidenav side-color\" style=\"height: 100%;\">\r\n <mat-nav-list >\r\n\r\n <ng-container *ngFor=\"let cap of dataService.appConfig.capItems\" >\r\n\r\n <!-- Menu item -->\r\n <mat-list-item [routerLink]=\"cap.link\" *ngIf=\"myRole[cap.name] && cap.showMenu && (!cap.capSubItems || cap.capSubItems && cap.ignoreSubsDisplay)\" style=\"height: 40px;font-size: 15px;\" (click)=\"toggle()\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon}}</mat-icon>{{cap.display}}\r\n </mat-list-item>\r\n\r\n <!-- Menu With Sub items -->\r\n <mat-expansion-panel class=\"side-color\" [class.mat-elevation-z0]=\"true\" *ngIf=\"myRole[cap.name] && cap.showMenu && cap.capSubItems && !cap.ignoreSubsDisplay\">\r\n\r\n <mat-expansion-panel-header style=\"height: 40px;padding-left: 15px;\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon != 'navigate_next' ? cap.icon : 'fiber_manual_record' }}</mat-icon>{{cap.display}}\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Sub items -->\r\n <mat-nav-list *ngFor=\"let capSub of cap.capSubItems\">\r\n\r\n <mat-list-item [routerLink]=\"capSub.link\" style=\"height: 30px; font-size: 15px;\" (click)=\"toggle()\" *ngIf=\"myRole[cap.name] && cap.showMenu\">\r\n <mat-icon style=\"margin-right: 5px;\">{{capSub.icon}}</mat-icon>{{capSub.display}}\r\n </mat-list-item>\r\n\r\n </mat-nav-list>\r\n\r\n </mat-expansion-panel>\r\n\r\n </ng-container>\r\n\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n\r\n\r\n\r\n <mat-sidenav-content class=\"container-fluid tin-bg-image\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <hr style=\"margin-top: 0px;\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n </mat-sidenav-content>\r\n\r\n</mat-sidenav-container>\r\n\r\n\r\n<!-- footer -->\r\n<div class=\"tin-center\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <label style=\"text-align: center; font-size: 12px;\">&copy; {{nowDate | date : 'yyyy'}} {{footer}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"!loggedin && dataService.appConfig.navigation == 'side'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n","import { Router } from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponse, HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from './loader.service';\r\nimport { LogService } from './log.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private authService: AuthService, private router: Router, private logService: LogService) { }\r\n\r\n\r\n removeRequest(req: HttpRequest<any>) {\r\n\r\n const i = this.requests.indexOf(req);\r\n\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n showError(userMessage : string, error : HttpErrorResponse){\r\n\r\n console.log(error)\r\n\r\n let url = new URL(window.location.href);\r\n\r\n if (url.host.includes('localhost')) {\r\n this.messageService.error(error.error.Message)\r\n } else {\r\n this.messageService.toast(userMessage)\r\n }\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\r\n let requestClone = request.clone({\r\n setHeaders: {\r\n Authorization: \"Bearer \" + this.authService.tokenSource.value,\r\n }\r\n });\r\n\r\n\r\n this.requests.push(requestClone);\r\n\r\n if (this.requests.length > 1) {\r\n this.logService.info(\"Multiple connections detected >= \" + this.requests.length)\r\n }\r\n\r\n this.loaderService.isLoading.next(true);\r\n\r\n return Observable.create(observer => {\r\n\r\n const subscription = next.handle(requestClone).subscribe(event => {\r\n\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(requestClone);\r\n observer.next(event);\r\n }\r\n\r\n\r\n\r\n },\r\n (error: HttpErrorResponse) => {\r\n\r\n this.removeRequest(requestClone);\r\n observer.error(error);\r\n\r\n if (error.status === 401) {\r\n this.authService.sessionExpired()\r\n this.messageService.toast('Unauthorised: Please login again')\r\n }\r\n else if (error.status ===500){\r\n this.showError(\"System Error\", error)\r\n }\r\n else if (error.statusText == 'Unknown Error'){\r\n this.showError(\"Connection Error\", error)\r\n }\r\n else{\r\n this.showError(\"Error\", error)\r\n }\r\n\r\n },\r\n () => {\r\n this.removeRequest(requestClone);\r\n observer.complete();\r\n });\r\n\r\n\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(requestClone);\r\n subscription.unsubscribe();\r\n };\r\n\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CurrencyInputMaskDirective } from './currency-input-mask.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n CurrencyInputMaskDirective\r\n ],\r\n exports: [\r\n CurrencyInputMaskDirective\r\n ]\r\n})\r\nexport class CurrencyInputModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Button, TableConfig } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ButtonService {\r\n getButton(buttons: Button[], name: string): Button | null {\r\n return buttons?.find(x => x.name === name) || null;\r\n }\r\n\r\n getButtonProperties(button: Button, row: any, config: TableConfig): {\r\n color: string,\r\n icon: string,\r\n disabled: boolean,\r\n visible: boolean,\r\n tip: string\r\n } {\r\n return {\r\n color: this.getButtonColor(button, row),\r\n icon: this.getIcon(button, config),\r\n disabled: this.testDisabled(button, row),\r\n visible: this.testVisible(button, row),\r\n tip: button.tip || button.name\r\n };\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n if (this.isButtonDisabled(button, row)) return 'lightgray';\r\n\r\n if (button?.color) return button.color;\r\n if (button.icon?.color) return button.icon.color;\r\n\r\n const colorMap = {\r\n 'delete': '#F44336',\r\n 'create': 'green'\r\n };\r\n\r\n return colorMap[button.name] || '#4050B5';\r\n }\r\n\r\n isButtonDisabled(button: Button, row: any): boolean {\r\n return button?.disabled ? button.disabled(row) : false;\r\n }\r\n\r\n isButtonVisible(button: Button, row: any, isLoadComplete: boolean): boolean {\r\n if (!isLoadComplete) return false;\r\n return button?.visible ? button.visible(row) : true;\r\n }\r\n\r\n getTitleAction(mode: string, buttons: Button[]): string {\r\n const modeMap = {\r\n 'view': 'View',\r\n 'edit': buttons.find(b => b.name === 'edit')?.display || 'Edit',\r\n 'create': buttons.find(b => b.name === 'create')?.display || 'Create'\r\n };\r\n return modeMap[mode] || '';\r\n }\r\n\r\n isTabVisible(tableConfig: TableConfig): boolean {\r\n return tableConfig.hideTabCondition ? !tableConfig.hideTabCondition(tableConfig.parentData) : true;\r\n }\r\n\r\n getIcon(button: Button, config: TableConfig): string {\r\n if (button.icon) {\r\n return button.icon.name;\r\n }\r\n return this.getDefaultIcon(button.name, config.flatButtons);\r\n }\r\n\r\n testDisabled(button: Button, row: any): boolean {\r\n return button.disabled ? button.disabled(row) : false;\r\n }\r\n\r\n testVisible(button: Button, row: any): boolean {\r\n return button.visible ? button.visible(row) : true;\r\n }\r\n\r\n private getDefaultColor(buttonName: string): string {\r\n switch (buttonName) {\r\n case 'delete': return '#F44336';\r\n case 'create': return 'green';\r\n default: return '#4050B5';\r\n }\r\n }\r\n\r\n private getDefaultIcon(buttonName: string, flatButtons: boolean): string {\r\n switch (buttonName) {\r\n case 'view':\r\n return flatButtons ? 'open_in_new' : 'pageview';\r\n case 'edit': return 'edit';\r\n case 'delete': return 'delete';\r\n case 'create': return 'add';\r\n default: return 'more_horiz';\r\n }\r\n }\r\n\r\n getCreateButton(buttons: Button[]): Button | undefined {\r\n return buttons?.find(button => button?.name === 'create');\r\n }\r\n\r\n getDisplayedButtons(buttons: Button[], isSmallScreen: boolean, minButtons?: string[]): Button[] {\r\n const nonCreateButtons = buttons?.filter(x => x.name !== 'create' && !x.inHeader);\r\n\r\n if (isSmallScreen) {\r\n if (minButtons) {\r\n return nonCreateButtons.filter(x => minButtons.includes(x.name));\r\n }\r\n return nonCreateButtons.slice(0, 1);\r\n }\r\n\r\n return nonCreateButtons;\r\n }\r\n\r\n getActionsWidth(buttons: Button[]): string {\r\n return `${buttons.length * 40 + 20}px`;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\n\n@Component({\n selector: 'spa-number',\n templateUrl: './number.component.html',\n styleUrls: ['./number.component.css']\n})\nexport class NumberComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.placeholder == \"\") {\n this.placeholder = \"Enter \" + this.display;\n }\n }\n\n ngAfterViewInit() {\n this.initControl(this.control)\n }\n\n initControl(control: FormControl) {\n if (this.readonly) {\n control.setValidators(null);\n control.updateValueAndValidity();\n }\n if (!this.required && !this.readonly) {\n\n control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max)]);\n this.control.updateValueAndValidity();\n }\n }\n\n // options: FormGroup;\n hideRequiredControl = new FormControl(true);\n hide = true; //for password only\n\n @Input() readonly = false;\n @Input() hint = \"\";\n @Input() display = \"\";\n @Input() placeholder = \"\";\n @Input() value = 0;\n @Input() width = \"100%\"\n\n @Output() valueChange = new EventEmitter();\n @Output() leave = new EventEmitter();\n @Output() enterPress = new EventEmitter();\n\n\n\n\n\n\n //validation input\n @Input() required = true;\n @Input() min = 0;\n @Input() max = 9000000000000000; //Math.max\n @Input() step = 1;\n\n @Input() suffix: string;\n @Input() infoMessage: string;\n @Output() infoClick = new EventEmitter<void>();\n\n onInfoClick(event: MouseEvent): void {\n event.stopPropagation();\n this.infoClick.emit();\n }\n\n\n changed() {\n this.valueChange.emit(this.value);\n }\n\n leaved() {\n this.leave.emit();\n }\n\n enterPressed() {\n this.enterPress.emit();\n }\n\n //validation\n control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);\n\n validate(control: FormControl): string {\n\n if (this.required && control.hasError('required')) {\n return `Required`;\n }\n\n if (control.hasError('min')) {\n return `Minimun value is ${this.min}`;\n }\n\n if (control.hasError('max')) {\n return `Maximum value is ${this.max}`;\n }\n\n return \"\";\n }\n\n}\n","\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\">\n <mat-label>{{display}}</mat-label>\n <input matInput autocomplete=\"off\" type=\"number\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [(ngModel)]=\"value\" (change)=\"changed()\" (blur)=\"leaved()\" (keyup.enter)=\"enterPressed()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\" />\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\n <div matSuffix class=\"suffix-icons\">\n <label *ngIf=\"suffix\">{{suffix}}</label>\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\n </button>\n </div>\n</mat-form-field>\n","//-------------------------------------------EDIT\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { HttpService } from '../../services/http.service';\r\n// import { HttpService } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'app-editRequest',\r\n templateUrl: './viewerDialog.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class viewerDialog implements OnInit {\r\n\r\n constructor(private httpService: HttpService, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.fileNames = this.data.fileNames;\r\n this.fullPath = this.data.path;\r\n this.fileName = this.data.fileName;\r\n this.currIndex = this.data.fileNames.indexOf(this.fileName);\r\n this.setURL();\r\n\r\n }\r\n\r\n isProcessing: boolean = false;\r\n\r\n fullPath: string;\r\n fileNames = new Array();\r\n fileName: string;\r\n currIndex = 0;\r\n\r\n currentFileUrl = \"\";\r\n\r\n\r\n previous() {\r\n\r\n if (this.fileNames.length == 0) {\r\n return;\r\n }\r\n\r\n if (this.currIndex -1 >= 0)\r\n {\r\n this.currIndex = this.currIndex - 1;\r\n }\r\n else if (this.currIndex == 0)\r\n {\r\n this.currIndex = this.fileNames.length -1;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n next() {\r\n\r\n if (this.fileNames.length == 0){\r\n return;\r\n }\r\n\r\n if (this.currIndex +1 < this.fileNames.length)\r\n {\r\n this.currIndex = this.currIndex + 1;\r\n }\r\n else if (this.currIndex +1 > this.fileNames.length -1)\r\n {\r\n this.currIndex = 0;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n imageDoc = false;\r\n\r\n setURL() {\r\n\r\n if (this.httpService.apiUrl.includes('localhost')){\r\n this.currentFileUrl = `./assets/${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n else{\r\n this.currentFileUrl = `${this.httpService.apiUrl.replace(\"/api\", \"\").replace(\"/api\", \"\") }${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n\r\n // this.currentFileUrl = this.currentFileUrl.replace(\"//\",\"/\");\r\n\r\n console.log(this.currentFileUrl)\r\n // this.currentFileUrl = \"./assets/TinasheOxygen.pdf\"\r\n\r\n if (this.currentFileUrl.toLocaleLowerCase().endsWith(\".pdf\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpg\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpeg\")){\r\n this.imageDoc = true;\r\n }else{\r\n this.imageDoc = false\r\n window.open(this.currentFileUrl, '_blank');\r\n\r\n }\r\n\r\n }\r\n\r\n change(fileName){\r\n\r\n\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n this.currIndex = this.fileNames.indexOf(fileName);\r\n\r\n\r\n this.setURL();\r\n }\r\n\r\n}\r\n","\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col\">\r\n <ngx-doc-viewer *ngIf=\"imageDoc\"\r\n [url]=\"currentFileUrl\"\r\n viewer=\"url\"\r\n style=\"width:100%;height:60vh;\">\r\n </ngx-doc-viewer>\r\n\r\n <div *ngIf=\"!imageDoc\" class=\"d-flex justify-content-center row align-items-center\" style=\"height:60vh;\">\r\n\r\n This file type will be downloaded\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"col-3\">\r\n <spa-chips [chips]=\"fileNames\" display=\"Documents\" icon=\"description\" (click)=\"change($event)\"></spa-chips>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"currIndex == 0\" (click)=\"previous()\" cdkFocusInitial>Previous</button>\r\n<button mat-button [disabled]=\"currIndex+1 == fileNames.length\" (click)=\"next()\" cdkFocusInitial>Next</button>\r\n<button mat-button mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { viewerDialog } from './viewerDialog.component';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Action, ApiResponse } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-viewer',\r\n templateUrl: './viewer.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class ViewerComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib,public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.fileAction){\r\n this.loadData();\r\n }else{\r\n this.convert();\r\n }\r\n }\r\n\r\n\r\n\r\n @Input() fileAction : Action;\r\n @Input() path = \"\";\r\n @Input() folderName=\"\";\r\n @Input() fileNames;// new Array()\r\n @Input() removable = false;\r\n @Output() remove = new EventEmitter();\r\n @Input() display = \"Documents\";\r\n @Input() title = \"Documents\";\r\n\r\n // fileList: string[];\r\n\r\n loadData() {\r\n\r\n console.log(\"Calling files\")\r\n let url = this.fileAction.url.replace(\"/x\", '/'+this.folderName)\r\n this.dataService.CallApi({url: url}, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.fileNames = apiResponse.data;\r\n // console.log(this.fileNames)\r\n this.convert();\r\n });\r\n }\r\n\r\n convert(){\r\n if (typeof this.fileNames == 'string') {\r\n this.fileNames = this.fileNames.split(\"|\")\r\n }\r\n }\r\n\r\n viewDocs(fileName: string) {\r\n\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n\r\n\r\n const dialogRef = this.dialog.open(viewerDialog, {\r\n minWidth: '95%',\r\n maxWidth: '80vw',\r\n\r\n data: { fileNames: this.fileNames, fileName: fileName, path: `${this.path ?? ''}/${this.folderName ?? ''}` }\r\n });\r\n\r\n }\r\n\r\n removed(i){\r\n this.remove.emit(i);\r\n }\r\n\r\n}\r\n","<div class=\"tin-input-row mt-3\" *ngIf=\"title != ''\">\r\n <mat-label style=\"font-size: 20px; font-weight: 300\" > {{title}}</mat-label >\r\n</div>\r\n\r\n<spa-chips [chips]=\"fileNames\" [title]=\"title\" [removable]=\"removable\" icon=\"description\" (click)=\"viewDocs($event)\" (remove)=\"removed($event)\"></spa-chips>\r\n\r\n\r\n\r\n<div *ngIf=\"!fileNames\" class=\"d-flex justify-content-center row align-items-center\" style=\"max-height:200px\">\r\n\r\n No {{title.toLowerCase()}}\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormConfig, Field, Button } from '../../classes/Classes';\r\nimport { Core } from '../../classes/TinCore';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n// import { DialogService } from '../../services/dialog.service';\r\n// import { DetailsDialog } from '../table/detailsDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.css']\r\n})\r\nexport class FormComponent implements OnInit {\r\n\r\n constructor( private messageService: MessageService, private dataService: DataServiceLib) { }\r\n\r\n ngOnInit() {\r\n\r\n if (!this.config.fields){\r\n this.messageService.toast(\"Please Configure Form Fields\")\r\n return;\r\n }\r\n\r\n if (!this.data) {\r\n this.messageService.toast(\"Please Configure Form Data\")\r\n return;\r\n }\r\n\r\n this.fields = this.config.fields;\r\n\r\n\r\n if (this.config.multiColumn){\r\n this.multiColumn = this.config.multiColumn\r\n }else{\r\n this.multiColumn = this.fields.length > 2\r\n }\r\n\r\n if (this.config?.button?.display){\r\n this.buttonDisplay = this.config.button.display;\r\n }\r\n\r\n this.fileField = this.fields.find(x => x.type == 'file')\r\n\r\n if (this.config?.button?.action && this.fileField) {\r\n this.config.button.action.isFormData = true;\r\n\r\n }\r\n\r\n this.childFields = this.fields.filter(x => x.masterField)\r\n\r\n this.childFields.forEach(child => {\r\n let master = this.fields.find(x => x.name == child.masterField)\r\n this.updateChildOptions(master);\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n getVisibleFields(){\r\n return this.fields?.filter(x => Core.testVisible(this.config, this.data, x))\r\n }\r\n\r\n\r\n\r\n testReadOnly(f: Field): boolean {\r\n\r\n\r\n if (this.config.mode == 'create') {\r\n return false;\r\n }\r\n\r\n if (f.readonly) return true;\r\n\r\n if (this.config.mode == 'view') {\r\n return true;\r\n }\r\n\r\n\r\n if (f.readonlyCondition) {\r\n return f.readonlyCondition(this.data);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n fileNames\r\n fileField: Field;\r\n fileViewField: Field;\r\n @Input() files: any[] = [];\r\n fields: Field[];\r\n buttonDisplay = \"Submit\";\r\n isProcessing : boolean = false;\r\n multiColumn : boolean = false;\r\n\r\n childFields : Field[];\r\n\r\n @Input() data: any;\r\n @Input() config: FormConfig;\r\n @Output() buttonClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n inputChanged(field : Field, value){\r\n\r\n\r\n this.inputChange.emit({ field: field, value: value})\r\n\r\n this.updateChildOptions(field)\r\n\r\n if (this.config.mode == 'create' && field.child){\r\n\r\n let child = this.fields.find(x => x.name == field.child.childField)\r\n this.data[child.name] = field.options.find(x => x[field.optionValue] == value)[field.child.childValueField]\r\n\r\n }\r\n\r\n\r\n if (this.config.mode == 'create' && field.children){\r\n console.log(\"Children found\")\r\n\r\n field.children.forEach(childConfig => {\r\n\r\n let child = this.fields.find(x => x.name == childConfig.childField)\r\n console.log(\"Child found\")\r\n\r\n this.data[child.name] = field.options.find(x => x[field.optionValue] == value)[childConfig.childValueField]\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n updateChildOptions(masterField: Field){\r\n\r\n let child = this.childFields.find(x => x.masterField == masterField.name)\r\n if (child != null) {\r\n\r\n //current is master\r\n\r\n //filter child options based on master value\r\n child.options = child.masterOptions.filter(x => x[masterField.optionValue] == this.data[masterField.name])\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n handleInfoClick(field: Field) {\r\n if (field.infoMessage) {\r\n this.messageService.info(field.infoMessage);\r\n }\r\n }\r\n\r\n buttonClicked(){\r\n\r\n this.buttonClick.emit(this.data);\r\n\r\n let button = this.config.button;\r\n\r\n if (!button) {\r\n return;\r\n }\r\n\r\n //validation\r\n let resp = Core.validateObject(this.getVisibleFields(),this.data);\r\n if (resp != ''){\r\n this.messageService.toast(resp)\r\n return;\r\n }\r\n\r\n\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.config.mode =='create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return;\r\n }\r\n\r\n\r\n if (button.confirm){\r\n\r\n this.messageService.confirm(`${button.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.processCall(button)\r\n }\r\n });\r\n\r\n }else{\r\n this.processCall(button)\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n processCall(button: Button){\r\n\r\n if (!button.action) return\r\n\r\n let dataOut;\r\n\r\n if (button.action.isFormData){\r\n\r\n let formData: FormData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n\r\n formData.append(\"data\", JSON.stringify(this.data));\r\n\r\n\r\n dataOut = formData\r\n }else{\r\n\r\n dataOut = this.data\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.isProcessing = true\r\n this.dataService.CallApi(button.action, dataOut).subscribe((apiResponse) => {\r\n this.isProcessing = false\r\n\r\n if (apiResponse.success) {\r\n\r\n if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Submitted\");\r\n }\r\n\r\n if (this.config.reset) {\r\n Core.resetObject(this.fields, this.data)\r\n this.files = [];\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n processForm(){\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\">\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach message=\"Drag and Drop files here\" [(files)]=\"files\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"config.fileAction\" [path]=\"field.path\" [folderName]=\"data[field.keyFiledName]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" ></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-date>\r\n\r\n <spa-select *ngSwitchCase=\"'select'\"\r\n [display]=\"field.alias ?? field.name | camelToWords\" [nullable]=\"field.nullable\"\r\n [options]=\"field.options\" [masterOptions]=\"field.masterOptions\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\" [defaultFirstValue]=\"field.defaultFirstValue\" (valueChange)=\"inputChanged(field, data[field.name])\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [peekConfig]=\"field.peekConfig\"\r\n [infoMessage]=\"field.infoMessage\"\r\n >\r\n </spa-select>\r\n\r\n <spa-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [multiple]=\"true\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\">\r\n </spa-select>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AlertMessage, AlertMessages } from '../../classes/Classes';\n\n@Component({\n selector: 'spa-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css']\n})\nexport class AlertComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n\n @Input() alertMessages: AlertMessages;\n @Input() data;\n\n\n getAlertMessages(type = undefined) : AlertMessage[] {\n return this.alertMessages?.messages.filter(x => x.type === type)\n }\n\n hasAlertMessages(type = undefined) : boolean {\n let has = this.alertMessages?.messages.filter(x => x.type === type).length > 0;\n\n return has;\n }\n\n testVisible(msg: AlertMessage): boolean {\n\n return msg.hiddenCondition ? !msg.hiddenCondition(this.data) : true;\n\n }\n\n}\n","<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages()\" >\n <label *ngIf=\"testVisible(msg)\" >{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('success')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('info')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('warn')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('critical')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n","\r\nimport { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { Subject } from 'rxjs';\r\n@Component({\r\n selector: 'app-viewModel-internal', //uniq to internal\r\n templateUrl: './detailsDialog-internal.component.html',\r\n styleUrls: ['./table-internal.component.css']\r\n})\r\nexport class DetailsDialogInternal implements OnInit {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialogInternal>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction) {\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n } else {\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.formConfig, this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction()\r\n\r\n }\r\n\r\n\r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs\r\n details: any\r\n formConfig: FormConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n\r\n loadData(action: Action, reload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if (reload) this.tableReload.next(true);\r\n }\r\n else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode) {\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction() {\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonDisabled(button, row) : false;\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonVisible(button, row, this.isLoadComplete) : false;\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n return this.buttonService.isTabVisible(tblConfig);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n this.handleButtonAction('delete');\r\n }\r\n\r\n\r\n custom(button: Button) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog(button.name, this.details, this.detailsConfig, DetailsDialogInternal).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n\r\n handleButtonAction(buttonName: string) {\r\n\r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.action) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n return;\r\n }\r\n\r\n if (this.validateForm()) {\r\n this.executeAction(button, this.details, button.action?.successMessage || \"Updated\");\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n const validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (button.action?.isFormData) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any, defaultSuccessMessage: string) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n this.messageService.confirm(button.confirm.message).subscribe((result) => {\r\n if (result === \"yes\") {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n });\r\n } else {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n }\r\n\r\n private performApiCall(button: Button, data: any, defaultSuccessMessage: string) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(button.action?.successMessage || defaultSuccessMessage);\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n\r\n};\r\n\r\n\r\n\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n <div class=\"row d-flex align-items-center mt-0\">\r\n\r\n <div class=\"col\">\r\n <h2 mat-dialog-title>{{titleAction | titlecase}} {{formConfig?.title}}</h2>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\">\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\" class=\"col d-flex justify-content-end\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, true)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n <spa-alert [alertMessages]=\"formConfig.alertMessages\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\"></spa-form>\r\n\r\n<!-- Unique to iternal no tables -->\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions>\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='create' && createButton\" (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='edit' && editButton\" (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"!smallScreen && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>{{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button color=\"primary\" mat-dialog-close>Cancel</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"testVisible(details,btn.name)\" mat-icon-button matTooltipPosition=\"above\" [matTooltip]=\"btn.tip ?? btn.name | titlecase\" [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon>{{btn.icon.name}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\r\n","// table-config.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { Button, Column, TableConfig } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TableConfigService {\r\n\r\n setColumns(config: TableConfig, smallScreen: boolean): string[] {\r\n\r\n if (!config?.columns) {\r\n return [];\r\n }\r\n\r\n let visibleColumns = this.getVisibleColumns(config);\r\n\r\n\r\n if (smallScreen && config.minColumns) {\r\n return config.minColumns.filter(col =>\r\n visibleColumns.some(x => x.name === col)\r\n );\r\n }\r\n\r\n return visibleColumns.map(({ name }) => name);\r\n }\r\n\r\n getVisibleColumns(config: TableConfig): Column[] {\r\n return config.columns.filter(column =>\r\n !column.hiddenCondition || !column.hiddenCondition(config.parentData)\r\n );\r\n }\r\n\r\n getActionsWidth(buttons: Button[]): string {\r\n return `${buttons?.length * 40 + 20}px`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Icon, Color } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConditionService {\r\n\r\n\r\n testIconCondition(icon: Icon, row: any): boolean {\r\n if (!icon) return false;\r\n return icon.condition ? icon.condition(row) : true;\r\n }\r\n\r\n\r\n testColorCondition(color: Color, row: any): boolean {\r\n if (!color) return false;\r\n return color.condition ? color.condition(row) : true;\r\n }\r\n\r\n\r\n getColor(value: any, options: any[]): string {\r\n if (!options) return 'lightgrey';\r\n const option = options.find(opt => opt.value === value);\r\n return option ? option.color : 'lightgrey';\r\n }\r\n\r\n\r\n testCondition(condition: (value: any) => boolean, value: any): boolean {\r\n return condition ? condition(value) : true;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Field, SearchConfig } from '../../classes/Classes';\nimport { Core } from '../../classes/TinCore';\n\n@Component({\n selector: 'spa-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.css']\n})\nexport class SearchComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n\n this.data = Core.generateObject(this.config.fields)\n\n }\n\n data;\n @Input() config: SearchConfig;\n @Output() searchClick = new EventEmitter();\n\n search(){\n this.searchClick.emit(this.data);\n }\n}\n","\n<div class=\"tin-between\">\n\n<div class=\"col tin-row\">\n\n <div *ngFor=\"let field of config.fields\">\n\n <spa-option [type]=\"field.type\" [show]=\"field.show\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay\" [optionValue]=\"field.optionValue\" [(value)]=\"data[field.name]\" (enterPress)=\"search()\"></spa-option>\n\n </div>\n\n</div>\n\n<div class=\"col-1 tin-end\">\n <button mat-fab color=\"primary\" (click)=\"search()\" matTooltip=\"Search\" matTooltipPosition=\"right\">\n <mat-icon>search</mat-icon>\n </button>\n</div>\n\n\n\n</div>\n\n\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { TableConfig, Button, TileConfig } from '../../classes/Classes';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-header',\r\n templateUrl: './table-header.component.html',\r\n styleUrls: ['./table-header.component.css']\r\n})\r\nexport class TableHeaderComponent {\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n ngOnInit() {\r\n this.createButton = this.buttonService.getCreateButton(this.config?.buttons);\r\n }\r\n\r\n createButton: Button;\r\n\r\n @Input() config: TableConfig;\r\n @Input() hideTitle: boolean;\r\n @Input() tableDataSource: any;\r\n @Input() tileConfig: TileConfig;\r\n @Input() smallScreen: boolean;\r\n @Input() tileReload: Subject<boolean>;\r\n @Input() showFilterButton: boolean;\r\n // @Input() displayedButtons: Button[];\r\n\r\n @Output() createClick = new EventEmitter<void>();\r\n @Output() customClick = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter<void>();\r\n @Output() tileClick = new EventEmitter<string>();\r\n\r\n\r\n\r\n onButtonClick(button: Button) {\r\n if (button.name === 'create') {\r\n this.createClick.emit();\r\n } else {\r\n this.customClick.emit(button.name);\r\n }\r\n }\r\n\r\n onRefreshClick() {\r\n this.refreshClick.emit();\r\n }\r\n\r\n onTileClick(tileName: string) {\r\n this.tileClick.emit(tileName);\r\n }\r\n\r\n getHeaderButtons(): Button[] {\r\n return this.config.buttons.filter(b => b.name == 'create' || b.inHeader);\r\n }\r\n\r\n testVisible(button: Button): boolean {\r\n return this.buttonService.testVisible(button, this.config.parentData);\r\n }\r\n\r\n testDisabled(button: Button): boolean {\r\n return this.buttonService.testDisabled(button, this.config.parentData);\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n\r\n}\r\n","<div class=\"top\">\r\n\r\n <!-- buttons -->\r\n <div class=\"tin-row\" style=\"margin-right: 10px;\" *ngIf=\"getHeaderButtons().length > 0\" >\r\n\r\n <ng-container *ngFor=\"let button of getHeaderButtons()\">\r\n <ng-container *ngIf=\"testVisible(button)\" >\r\n <button *ngIf=\"!config.flatButtons\" mat-raised-button color=\"primary\" [disabled]=\"testDisabled(button)\" (click)=\"onButtonClick(button)\" >\r\n {{button.display}}\r\n </button>\r\n <button *ngIf=\"config.flatButtons\" mat-stroked-button [disabled]=\"testDisabled(button)\" (click)=\"onButtonClick(button)\" [ngStyle]=\"{'color': getButtonColor(button, config.parentData)}\">\r\n {{button.display}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"getHeaderButtons().length == 0 && config.holdHeaderButtonSpace\"></div>\r\n\r\n <!-- tiles -->\r\n <div *ngIf=\"config.tileConfig && !smallScreen\" style=\"min-width: 75%;\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" (tileClick)=\"onTileClick($event)\"></spa-tiles>\r\n </div>\r\n\r\n <!-- filter -->\r\n <div *ngIf=\"config.showFilter\" class=\"d-flex justify-content-end\">\r\n <spa-filter [showText]=\"!smallScreen || (smallScreen && tableDataSource?.length > 10)\" [showButton]=\"showFilterButton\" [data]=\"tableDataSource\" [flatButtons]=\"config.flatButtons\" (refreshClick)=\"onRefreshClick()\"></spa-filter>\r\n </div>\r\n <div *ngIf=\"!config.showFilter && config.holdFilterSpace\"></div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"config.tileConfig && smallScreen\" style=\"width: 100%;\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" (tileClick)=\"onTileClick($event)\"></spa-tiles>\r\n</div>\r\n\r\n<div *ngIf=\"config.title && !hideTitle\" class=\"title\">\r\n {{config.title | camelToWords}}\r\n</div>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Column, Button, TableConfig, Icon } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-row',\r\n templateUrl: './table-row.component.html',\r\n styleUrls: ['./table-row.component.css']\r\n})\r\nexport class TableRowComponent {\r\n @Input() column: Column;\r\n @Input() row: any;\r\n @Input() config: TableConfig;\r\n\r\n @Output() actionClick = new EventEmitter<{ name: string, row: any }>();\r\n @Output() columnClick = new EventEmitter<{ column: Column, row: any }>();\r\n @Output() showBannerEvent = new EventEmitter<string>();\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return icon.condition ? icon.condition(row) : true;\r\n }\r\n\r\n testColorCondition(row: any, color: any): boolean {\r\n return color && color.condition ? color.condition(row) : false;\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n if (!options) return 'lightgrey';\r\n const option = options.find(opt => opt.value === value);\r\n return option ? option.color : 'lightgrey';\r\n }\r\n\r\n onActionClick(name: string, row: any) {\r\n this.actionClick.emit({ name, row });\r\n }\r\n\r\n onColumnClick(column: Column, row: any) {\r\n this.columnClick.emit({ column, row });\r\n }\r\n\r\n showBanner(message: string) {\r\n this.showBannerEvent.emit(message);\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <spa-check [value]=\"row[column.name]\" [readonly]=\"true\"></spa-check>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <spa-select [options]=\"column.options\" [optionDisplay]=\"column.optionDisplay\" [optionValue]=\"column.optionValue\" [(value)]=\"row[column.name]\" width=\"90%\"></spa-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <mat-chip-list>\r\n <mat-chip (click)=\"onColumnClick(column, row)\" [ngStyle]=\"{'background-color': testColorCondition(row, column.color) ? column.color.name : getColor(row[column.name], column?.options)}\" style=\"font-size: 12px;\"> {{row[column.name]}} </mat-chip>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </mat-chip-list>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy HH:mm'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'money'\">\r\n <label [ngStyle]=\"{'color': testColorCondition(row, column.color) ? column.color.name : ''}\">{{row[column.name] | currency:'':''}}</label>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button mat-button [ngStyle]=\"{'color': testColorCondition(row, column.color) ? column.color.name : ''}\" (click)=\"onActionClick(column.name, row)\">{{row[column.name]}}</button>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <label [ngStyle]=\"{'color': testColorCondition(row, column.color) ? column.color.name : ''}\">{{row[column.name]}}</label>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Button, TableConfig } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-action',\r\n templateUrl: './table-action.component.html',\r\n styleUrls: ['./table-action.component.css']\r\n})\r\nexport class TableActionComponent {\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n @Input() displayedButtons: Button[];\r\n @Input() config: TableConfig;\r\n @Input() row: any;\r\n\r\n @Output() actionClick = new EventEmitter<{ name: string, row: any }>();\r\n\r\n\r\n\r\n testVisible(row: any, buttonName: string): boolean {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.testVisible(button, row) : false;\r\n }\r\n\r\n testDisabled(row: any, buttonName: string): boolean {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.testDisabled(button, row) : true;\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getIcon(buttonName: string): string {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.getIcon(button, this.config) : '';\r\n }\r\n\r\n onActionClick(buttonName: string, row: any) {\r\n this.actionClick.emit({ name: buttonName, row });\r\n }\r\n}\r\n","<ng-container *ngFor=\"let button of displayedButtons\">\r\n <ng-container *ngIf=\"button.name != 'create' && testVisible(row, button.name)\">\r\n <button *ngIf=\"!config.flatButtons\" mat-mini-fab [matTooltip]=\"button.tip ?? button.name | titlecase\" matTooltipPosition=\"above\" style=\"margin-right:5px\" [ngStyle]=\"{'background-color': getButtonColor(button, row)}\" [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon>{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"config.flatButtons\" mat-icon-button [matTooltip]=\"button.tip ?? button.name | titlecase\" matTooltipPosition=\"above\" style=\"margin-right:5px\" [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon [ngStyle]=\"{'color': getButtonColor(button, row)}\">{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"button.name != 'create' && !testVisible(row, button.name) && !config.collapseButtons\">\r\n <label style=\"margin-right: 35px;\"></label>\r\n </ng-container>\r\n</ng-container>\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DetailsDialogInternal } from './detailsDialog-internal.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\n\r\n@Component({\r\n selector: 'spa-table-internal',\r\n templateUrl: './table-internal.component.html',\r\n styleUrls: ['./table-internal.component.css']\r\n})\r\nexport class TableInternalComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService) {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeComponent();\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (!this.config.loadAction) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n\r\n smallScreen = false\r\n // createButton: Button;\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() hideTitle = false;\r\n @Input() data: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config?.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n this.showFilterButton = !this.config?.searchConfig;\r\n\r\n if (this.displayedButtons?.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n private setupDataLoading() {\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n this.dataSource = apiResponse.data\r\n\r\n this.tableDataSource = new MatTableDataSource<any>(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n if (apiResponse.success) {\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setColumns() {\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config.buttons, this.smallScreen, this.config.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n\r\n if (this.displayedButtons.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n setButtons() {\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen) {\r\n this.displayedButtons = this.config.buttons;\r\n } else {\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column) {\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testVisible(button, row);\r\n }\r\n\r\n\r\n\r\n //Events\r\n searchClicked(x) {\r\n this.searchClick.emit(x);\r\n\r\n if (this.config.searchConfig.searchAction) {\r\n this.config.searchConfig.searchAction.method == 'post'\r\n this.loadData(this.config.searchConfig.searchAction, x);\r\n }\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n } else {\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column: Column, row) {\r\n if (column.detailsConfig) {\r\n this.open(column.name, row, column);\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n this.open(name, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({ name: name, data: row });\r\n }\r\n\r\n viewModel(row) {\r\n this.open('view', row);\r\n }\r\n\r\n newModel() {\r\n this.open('create', null);\r\n }\r\n\r\n editModel(row) {\r\n this.open('edit', row);\r\n }\r\n\r\n private open(buttonName: string, row: any | null, column?: Column): void {\r\n this.dialogService.openConfiguredDetailsDialog( buttonName, row, this.config, DetailsDialogInternal, column ).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n private openDetailsDialog(buttonName: string, row: any | null, column?: Column): void {\r\n const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.dialog) {\r\n this.doAction(button.name, row)\r\n this.actionClickedEmit(button.name, row);\r\n return;\r\n }\r\n\r\n if (!this.config.formConfig && !button.detailsConfig) {\r\n this.messageService.toast(\"Please configure form\");\r\n return;\r\n }\r\n\r\n let conf: DetailsDialogConfig = {\r\n formConfig: this.config.formConfig,\r\n buttons: this.config.buttons,\r\n details: row,\r\n };\r\n\r\n if (button.detailsConfig) {\r\n conf = buttonName === 'create'\r\n ? button.detailsConfig\r\n : DetailsDialogProcessor.processDetailsConfig(button.detailsConfig, row);\r\n }\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n conf.formConfig.mode = button.detailsConfig.mode;\r\n } else {\r\n conf.formConfig.mode = buttonName === 'create' ? 'create' : (buttonName === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n if (buttonName === 'create') {\r\n conf.heroField = this.config?.heroField;\r\n conf.heroValue = this.config?.heroValue;\r\n }\r\n\r\n\r\n\r\n const dialogResult = this.dialogService.openDetailsDialog(conf, DetailsDialogInternal); // Unique to internal\r\n\r\n if (buttonName === 'edit') {\r\n dialogResult.inputChange.subscribe((x) => {\r\n this.inputChanged(x);\r\n });\r\n }\r\n\r\n dialogResult.afterClosed.subscribe((result) => {\r\n if (result.message === 'success') {\r\n this.actionClickedEmit(button.name, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(button.name, result.data);\r\n }\r\n });\r\n\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n this.messageService.confirm(`DELETE ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name, row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue){\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n\r\n if (b.confirm) {\r\n this.messageService.confirm(`${b.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b, row)\r\n }\r\n });\r\n } else {\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(b: Button, row) {\r\n this.dataService.CallApi(b.action, row).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n if (b.action.successMessage) {\r\n this.messageService.toast(b.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\") {\r\n return \"\"\r\n }\r\n else if (elevation == \"low\") {\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\") {\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\") {\r\n return \"mat-elevation-z9\"\r\n }\r\n else {\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n","\r\n<!-- Search -->\r\n<spa-search *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\"></spa-search>\r\n\r\n\r\n<!-- Header -->\r\n<app-table-header\r\n [config]=\"config\" [hideTitle]=\"false\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [smallScreen]=\"smallScreen\"\r\n [tileReload]=\"tileReload\" [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (refreshClick)=\"refreshClicked()\">\r\n</app-table-header>\r\n\r\n\r\n<!-- <div class=\"top\">\r\n\r\n <div class=\"tin-row\">\r\n <button *ngIf=\"createButton && !config.flatButtons && testVisible(config.parentData,createButton.name)\"\r\n [disabled]=\"testDisabled(config.parentData,createButton.name)\" id=\"btnNew\" mat-raised-button color=\"primary\" style=\"margin-right: 10px;\" (click)=\"newModel()\">{{createButton.display}}\r\n </button>\r\n <button *ngIf=\"createButton && config.flatButtons && testVisible(config.parentData,createButton.name)\"\r\n [ngStyle]=\"{'color': getButtonColor(createButton, config.parentData)}\"\r\n [disabled]=\"testDisabled(config.parentData,createButton.name)\" id=\"btnNew\" mat-stroked-button style=\"margin-right: 10px; color: green;\" (click)=\"newModel()\">{{createButton.display}}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"config.tileConfig && !smallScreen\" style=\"min-width: 75%;\">\r\n <spa-tiles [reload]=\"tileReload\" [config]=\"config.tileConfig\"></spa-tiles>\r\n </div>\r\n\r\n <div *ngIf=\"config.showFilter\" class=\"d-flex justify-content-end\">\r\n <spa-filter [showText]=\"!smallScreen || (smallScreen && dataSource?.length > 10)\" [showButton]=\"showFilterButton\" [data]=\"tableDataSource\" [flatButtons]=\"config.flatButtons\" (refreshClick)=\"refreshClicked()\"></spa-filter>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"config.tileConfig && smallScreen\" style=\"width: 100%;\">\r\n <spa-tiles [reload]=\"tileReload\" [config]=\"config.tileConfig\"></spa-tiles>\r\n</div>\r\n\r\n<div *ngIf=\"config.title && !hideTitle\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{config.title | camelToWords}}</label>\r\n</div> -->\r\n\r\n<!-- Table -->\r\n<div>\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\">\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\" (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action [displayedButtons]=\"displayedButtons\" [config]=\"config\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': config.greyOut && config.greyOut(row)}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n</div>\r\n\r\n<div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>No Data</em></p>\r\n</div>\r\n\r\n\r\n","\r\nimport { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Subject, config } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\n@Component({\r\n selector: 'app-viewModel',\r\n templateUrl: './detailsDialog.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class DetailsDialog implements OnInit {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialog>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction){\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n }else{\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.formConfig, this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction();\r\n\r\n }\r\n\r\n\r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs\r\n details: any\r\n formConfig: FormConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n\r\n loadData(action: Action, reload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if(reload) this.tableReload.next(true);\r\n }\r\n else{\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode){\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction(){\r\n if (this.formConfig.fixedTitle) {\r\n this.titleAction = \"\";\r\n return;\r\n }\r\n\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonDisabled(button, row) : false;\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonVisible(button, row, this.isLoadComplete) : false;\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n return this.buttonService.isTabVisible(tblConfig);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n this.handleButtonAction('delete');\r\n }\r\n\r\n\r\n custom(button: Button ) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog( button.name, this.details, this.detailsConfig, DetailsDialog ).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n handleButtonAction(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.action) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n return;\r\n }\r\n\r\n if (this.validateForm()) {\r\n this.executeAction(button, this.details, button.action?.successMessage || \"Updated\");\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n const validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (button.action?.isFormData) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any, defaultSuccessMessage: string) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n this.messageService.confirm(button.confirm.message).subscribe((result) => {\r\n if (result === \"yes\") {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n });\r\n } else {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n }\r\n\r\n private performApiCall(button: Button, data: any, defaultSuccessMessage: string) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(button.action?.successMessage || defaultSuccessMessage);\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n <div class=\"row d-flex align-items-center mt-0\">\r\n\r\n <div class=\"col\">\r\n <h2 mat-dialog-title>{{titleAction | titlecase}} {{formConfig?.title}}</h2>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\">\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\" class=\"col d-flex justify-content-end\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, true)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n\r\n <spa-alert [alertMessages]=\"formConfig.alertMessages\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\"></spa-form>\r\n\r\n\r\n <mat-tab-group *ngIf=\"tableConfigs\">\r\n\r\n <ng-container *ngFor=\"let tbl of tableConfigs\">\r\n\r\n <mat-tab *ngIf=\"testVisibleTab(tbl)\">\r\n <ng-template matTabLabel>\r\n <span>{{tbl.title ?? 'Untitled'}}</span>\r\n </ng-template>\r\n\r\n <spa-table-internal [config]=\"tbl\" [hideTitle]=\"true\" [reload]=\"tableReload\" (dataLoad)=\"loadData(formConfig.loadAction, false)\"></spa-table-internal>\r\n\r\n </mat-tab>\r\n </ng-container>\r\n\r\n\r\n </mat-tab-group>\r\n\r\n\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions >\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='create' && createButton\" (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='edit' && editButton\" (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"!smallScreen && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>{{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button color=\"primary\" mat-dialog-close>Cancel</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"testVisible(details,btn.name)\" mat-icon-button matTooltipPosition=\"above\" [matTooltip]=\"btn.tip ?? btn.name | titlecase\" [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon>{{btn.icon.name}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DetailsDialog } from './detailsDialog.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\n\r\n@Component({\r\n selector: 'spa-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService )\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeComponent();\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (!this.config.loadAction) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n\r\n smallScreen = false\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() hideTitle = false;\r\n @Input() data: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config?.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n this.showFilterButton = !this.config?.searchConfig;\r\n\r\n if (this.displayedButtons?.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n private setupDataLoading() {\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n this.dataSource = apiResponse.data\r\n\r\n this.tableDataSource = new MatTableDataSource<any>(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n if (apiResponse.success) {\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setColumns() {\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config.buttons, this.smallScreen, this.config.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n\r\n if (this.displayedButtons.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n setButtons(){\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen){\r\n this.displayedButtons = this.config.buttons;\r\n }else{\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column){\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testVisible(button, row);\r\n }\r\n\r\n\r\n\r\n //Events\r\n searchClicked(x){\r\n this.searchClick.emit(x);\r\n\r\n if (this.config.searchConfig.searchAction){\r\n this.config.searchConfig.searchAction.method == 'post'\r\n this.loadData(this.config.searchConfig.searchAction, x);\r\n }\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction,\"\");\r\n }else{\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column : Column, row){\r\n if (column.detailsConfig) {\r\n this.open(column.name, row, column);\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n this.open(name, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({name:name,data : row});\r\n }\r\n\r\n viewModel(row) {\r\n this.open('view', row);\r\n }\r\n\r\n newModel() {\r\n this.open('create', null);\r\n }\r\n\r\n editModel(row) {\r\n this.open('edit', row);\r\n }\r\n\r\n private open(buttonName: string, row: any | null, column?: Column): void {\r\n this.dialogService.openConfiguredDetailsDialog( buttonName, row, this.config, DetailsDialog, column ).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n private openDetailsDialog(buttonName: string, row: any | null, column?: Column): void {\r\n const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.dialog) {\r\n this.doAction(button.name, row)\r\n this.actionClickedEmit(button.name, row);\r\n return;\r\n }\r\n\r\n if (!this.config.formConfig && !button.detailsConfig) {\r\n this.messageService.toast(\"Please configure form\");\r\n return;\r\n }\r\n\r\n let conf: DetailsDialogConfig = {\r\n formConfig: this.config.formConfig,\r\n buttons: this.config.buttons,\r\n details: row,\r\n };\r\n\r\n if (button.detailsConfig) {\r\n conf = buttonName === 'create'\r\n ? button.detailsConfig\r\n : DetailsDialogProcessor.processDetailsConfig(button.detailsConfig, row);\r\n }\r\n\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n conf.formConfig.mode = button.detailsConfig.mode;\r\n }else{\r\n conf.formConfig.mode = buttonName === 'create' ? 'create' : (buttonName === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n\r\n if (conf.formConfig.mode === 'create') {\r\n conf.heroField = this.config?.heroField;\r\n conf.heroValue = this.config?.heroValue;\r\n }\r\n\r\n const dialogResult = this.dialogService.openDetailsDialog(conf, DetailsDialog);\r\n\r\n if (buttonName === 'edit') {\r\n dialogResult.inputChange.subscribe((x) => {\r\n this.inputChanged(x);\r\n });\r\n }\r\n\r\n dialogResult.afterClosed.subscribe((result) => {\r\n if (result.message === 'success') {\r\n this.actionClickedEmit(button.name, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(button.name, result.data);\r\n }\r\n });\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n this.messageService.confirm(`DELETE ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name,row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue) {\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n if (b.confirm){\r\n this.messageService.confirm(`${b.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b,row)\r\n }\r\n });\r\n }else{\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(b: Button, row){\r\n this.dataService.CallApi(b.action, row).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n if (b.action.successMessage) {\r\n this.messageService.toast(b.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\"){\r\n return \"\"\r\n }\r\n else if (elevation == \"low\"){\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\"){\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\"){\r\n return \"mat-elevation-z9\"\r\n }\r\n else{\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n<!-- Search -->\r\n<spa-search\r\n *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\">\r\n</spa-search>\r\n\r\n<!-- Header -->\r\n<app-table-header\r\n [config]=\"config\" [hideTitle]=\"false\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [smallScreen]=\"smallScreen\"\r\n [tileReload]=\"tileReload\" [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (customClick)=\"customModel($event,null)\" (refreshClick)=\"refreshClicked()\">\r\n</app-table-header>\r\n\r\n\r\n<!-- Table -->\r\n<div>\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef >{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\" >\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\"\r\n (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action\r\n [displayedButtons]=\"displayedButtons\" [config]=\"config\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': config.greyOut && config.greyOut(row)}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n</div>\r\n\r\n<div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>No Data</em></p>\r\n</div>\r\n\r\n\r\n\r\n","\r\nimport { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { LoaderService } from \"../../services/loader.service\";\r\nimport { ApiResponse } from \"../../classes/Classes\";\r\n\r\n\r\n@Component({\r\n selector: \"app-addModel\",\r\n templateUrl: \"./inviteDialog.component.html\",\r\n styleUrls: [\"./tenant-settings.component.css\"],\r\n})\r\nexport class inviteDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService ,private messageService: MessageService, public dataService: DataServiceLib, private dialogRef: MatDialogRef<inviteDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n }\r\n\r\n isProcessing = false;\r\n invited = false;\r\n email = ''\r\n roleID = 0\r\n link = \"\";\r\n\r\n roles = [\r\n {roleName :'Default', roleID : 1},\r\n ]\r\n\r\n loadMeta() {\r\n this.dataService.CallApi({ url: 'tenant/member_roles/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.roles = apiResponse.data\r\n });\r\n }\r\n\r\n submit(){\r\n\r\n let invite = {email : this.email , roleID: this.roleID}\r\n\r\n this.dataService.CallApi({ url: 'tenant/members?action=invite', method: 'post' }, invite).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success){\r\n this.messageService.toast(\"Updated\");\r\n this.dialogRef.close(\"success\");\r\n\r\n // this.invited = true;\r\n // let url = new URL(window.location.href);\r\n // this.link = `${url.protocol}//${url.host}/login?code=` + apiResponse.message;\r\n\r\n }else{\r\n this.messageService.toast(apiResponse.message)\r\n }\r\n });\r\n }\r\n}\r\n","\r\n<div >\r\n <label style=\"font-size: 28px;\">Invite</label>\r\n</div>\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"mt-3\" style=\"font-size:14px\">\r\n\r\n <div>\r\n <spa-text display=\"Email\" [(value)]=\"email\" ></spa-text>\r\n <spa-select display=\"Role\" [(value)]=\"roleID\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [defaultFirstValue]=\"true\"></spa-select>\r\n </div>\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button [disabled]=\"isProcessing\" mat-stroked-button color=\"primary\" (click)=\"submit()\">Submit</button>\r\n <button mat-button mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ApiResponse, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-invitations-table',\r\n templateUrl: './invitations-table.component.html',\r\n styleUrls: ['./invitations-table.component.css']\r\n})\r\nexport class InvitationsTableComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n invActionClicked(x) {\r\n\r\n let message = \"Accept\"\r\n let action = \"accept\"\r\n if (x.name == \"decline\") {\r\n action = \"remove\";\r\n message = \"Decline\"\r\n }\r\n\r\n\r\n\r\n //accept / decline\r\n this.messageService.confirm(`${message} ${x.data.tenantName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n this.dataService.CallApi({ url: 'tenant/members?action=' + action, method: 'post', }, x.data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.tableReload.next(true)\r\n\r\n // switch\r\n this.messageService.confirm(`Switch to ${x.data.tenantName} now ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n let tenant = {tenantID : x.data.tenantID}\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=switch', method: 'post' }, tenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Switched Successfully, please login again\");\r\n this.authService.logoff();\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n invTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['tenantName'],\r\n minButtons: ['accept', 'decline'],\r\n flatButtons : true,\r\n\r\n columns: [\r\n { name: 'tenantName', alias: 'Organisation', type: 'text' },\r\n { name: 'owner', type: 'text', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'accept', icon: { 'name': 'done', }, color: 'green', confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },\r\n { name: 'decline', icon: { 'name': 'close', }, color: 'red', confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },\r\n ],\r\n\r\n loadAction: { url: 'tenant/invitations/x' },\r\n\r\n }\r\n}\r\n","<spa-table [config]=\"invTableConfig\" (actionClick)=\"invActionClicked($event)\" [reload]=\"tableReload\"></spa-table>\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { inviteDialog } from './inviteDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-tenant-settings',\r\n templateUrl: './tenant-settings.component.html',\r\n styleUrls: ['./tenant-settings.component.css']\r\n})\r\nexport class TenantSettingsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog ) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.loadData();\r\n this.loadTenants()\r\n }\r\n\r\n newName;\r\n\r\n myRole\r\n tenants;\r\n currTenant;\r\n currentTenantID;\r\n plan;\r\n ownTenant;\r\n roles = [\r\n { name: 'Default', value: 1 },\r\n // { name: 'Admin', value: 2 },\r\n // { name: 'Owner', value: 3 },\r\n ]\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url: 'tenant/meta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.currTenant = apiResponse.data.tenant;\r\n this.currentTenantID = apiResponse.data.currentTenantID;\r\n this.plan = apiResponse.data.plan;\r\n this.ownTenant = apiResponse.data.ownTenant\r\n });\r\n }\r\n\r\n loadTenants() {\r\n this.dataService.CallApi({ url: 'tenant/meta_tenants/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n // this.tenant = apiResponse.data.tenant;\r\n this.tenants = apiResponse.data.tenants;\r\n });\r\n }\r\n\r\n renameTenant() {\r\n\r\n this.messageService.confirm(`Rename ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=rename', method: 'post' }, this.currTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.authService.updateTenantName(this.currTenant.name)\r\n this.messageService.toast(\"Renamed Successfully\");\r\n this.refreshOrgsLists();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n refreshOrgsLists(){\r\n this.loadTenants();\r\n this.orgsReload.next(true)\r\n }\r\n\r\n switchTenant() {\r\n\r\n this.messageService.confirm(`Switch ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.currTenant.tenantID = this.currentTenantID;\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=switch', method: 'post' }, this.currTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Switched Successfully, please login again\");\r\n this.authService.logoff();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n newTenant() {\r\n\r\n this.messageService.confirm(`Create ${this.newName} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n let tenant = {tenantID : 0, name : this.newName}\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=create', method: 'post' }, tenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Created Successfully\");\r\n this.refreshOrgsLists();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n membersFormConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'email', type: 'text', required: true, min: 2 },\r\n { name: 'roleID', type: 'select', required: true, options: this.roles, optionDisplay : 'name', optionValue : 'value', defaultValue: 1 },\r\n ],\r\n\r\n }\r\n\r\n inviteActionClicked(x){\r\n\r\n\r\n if (x.name ==\"create\"){\r\n this.inviteDiag();\r\n }\r\n\r\n }\r\n\r\n\r\n inviteDiag() {\r\n const dialogRef = this.dialog.open(inviteDialog, {\r\n width: \"900px\",\r\n data: '',\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.tableReload.next(true);\r\n }\r\n });\r\n }\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n membersTableConfig: TableConfig = {\r\n\r\n greyOut : (value) => value.accepted == false,\r\n elevation: 'low',\r\n logResponse : true,\r\n minColumns: ['name'],\r\n minButtons: ['delete'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'roleName', alias : 'Role', type: 'text'},\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Invite', },\r\n { name: 'edit', dialog : true, action: { url: 'tenant/members?action=role', method: 'post' }, disabled: x => x.roleID != 1 },\r\n { name: 'delete', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'tenant/members?action=remove', method: 'post' }, disabled : x => x.roleID != 1 },\r\n ],\r\n\r\n loadAction: { url: 'tenant/members/x' },\r\n\r\n formConfig: this.membersFormConfig,\r\n }\r\n\r\n\r\n\r\n\r\n orgsReload: Subject<boolean> = new Subject();\r\n orgsTableConfig: TableConfig = {\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'createdByName', type: 'text', alias: 'Owner' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'delete', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'tenant/members?action=remove', method: 'post' } , disabled : x => x.own}, //action: { url: 'tenant/members?action=delete', method: 'post' }\r\n ],\r\n\r\n loadAction: { url: 'tenant/my_tenants/x' },\r\n\r\n }\r\n}\r\n","<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"currTenant.name\" hint=\"This name will be displayed to all members of your organisation.\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"renameTenant()\">Save</button>\r\n </div>\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n <div *ngIf=\"ownTenant\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <!-- Members -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" (actionClick)=\"inviteActionClicked($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- Member Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Member Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- New Organisation -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">New Organisation</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Create another organisation</label>\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"newName\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"newTenant()\">Create</button>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-tenants',\r\n templateUrl: './tenants.component.html',\r\n styleUrls: ['./tenants.component.css']\r\n})\r\nexport class TenantsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2 },\r\n { name: 'planID', alias :'Plan', type: 'number', required: true },\r\n ],\r\n\r\n reset: true,\r\n\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'tenantID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n { name: 'planName', alias : 'Plan', type: 'text' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/tenants?action=create', method: 'post' }},\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenant/tenants?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenant/tenants?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenant/all_tenants/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n}\r\n","<h4>Tenants</h4>\n<hr>\n\n\n<div class=\" mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" ></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-bug',\n templateUrl: './bug.component.html',\n styleUrls: ['./bug.component.css']\n})\nexport class BugComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>Report a fault</p>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-membership',\r\n templateUrl: './membership.component.html',\r\n styleUrls: ['./membership.component.css']\r\n})\r\nexport class MembershipComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'memberName', type: 'text', required: true, min: 2 },\r\n { name: 'tenantName', type: 'text', required: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['memberName','tenantName', 'roleName'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'tenantName', type: 'text' },\r\n { name: 'memberName', type: 'text' },\r\n { name: 'roleName', type: 'text' },\r\n { name: 'status', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/members?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenant/members?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenant/members?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenant/all_members/x' },\r\n\r\n formConfig: this.formConfig\r\n }\r\n}\r\n","<h4>Membership</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-plans',\r\n templateUrl: './plans.component.html',\r\n styleUrls: ['./plans.component.css']\r\n})\r\nexport class PlansComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2 },\r\n { name: 'description', type: 'text', required: true, min: 2 },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'planID', type: 'text' },\r\n { name: 'name', type: 'text' },\r\n { name: 'price', type: 'money' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/plans?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenant/plans?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenant/plans?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenant/all_plans/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Plans</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { ApiResponse, FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-customers',\r\n templateUrl: './customers.component.html',\r\n styleUrls: ['./customers.component.css']\r\n})\r\nexport class CustomersComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadTenants();\r\n }\r\n\r\n loadTenants() {\r\n this.dataService.CallApi({ url: 'tenant/available_tenants/x' }).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.formConfig.fields.find(x => x.name == 'customerTenantID').options = apiResponse.data;\r\n }\r\n });\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'address', type: 'text', rows : 2, span : true },\r\n { name: 'customerTenantID', alias: 'Customer Tenant', type: 'select', optionDisplay: 'name', optionValue: 'tenantID', options: [], nullable : true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'isLinked', type: 'checkbox', alias: 'Linked' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/customers?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/customers?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/customers?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/customers/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Customers</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\n\r\n// import { ApiResponse, DataServiceLib, MessageService } from 'projects/tin-spa/src/public-api';\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './quantityDialog.component.html',\r\n styleUrls: ['./inventory.component.css']\r\n})\r\nexport class quantityDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService : DataServiceLib, private dialogRef: MatDialogRef<quantityDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.action = this.data.name;\r\n this.inv = this.data.data\r\n this.isLoadComplete = true;\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n }\r\n\r\n quantity = 0\r\n action;\r\n inv\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n submit() {\r\n this.inv.quantity = this.quantity\r\n this.dataService.CallApi({ url: `general/inventory?action=${this.action}`, method: 'post' }, this.inv).subscribe((x : ApiResponse) => {\r\n\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{data.name | titlecase}} {{inv.name}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-grid\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [value]=\"inv.name\" [readonly]=\"true\"></spa-text>\r\n <spa-text display=\"Description\" [value]=\"inv.description\" [readonly]=\"true\"></spa-text>\r\n <spa-number display=\"Quantity\" [(value)]=\"quantity\" [hint]=\"'Quantity to ' + data.name\" ></spa-number>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormConfig, ListDialogConfig, TableConfig } from '../../classes/Classes';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-list-dialog',\r\n templateUrl: './list-dialog.component.html',\r\n styleUrls: ['./list-dialog.component.css']\r\n})\r\nexport class ListDialogComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private dialogRef: MatDialogRef<ListDialogComponent>, @Inject(MAT_DIALOG_DATA) public data : ListDialogConfig) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.listConfig = this.data;\r\n this.formConfig.fields.find(x => x.name == 'listName').defaultValue = this.listConfig.listName;\r\n this.config.loadAction = { url: 'general/lists/' + this.listConfig.listName }\r\n // this.config.buttons.find(x => x.name == 'create').display = \"New \" + this.listConfig.name\r\n\r\n\r\n }\r\n\r\n clicked = false;\r\n\r\n actionClicked(){\r\n this.clicked = true;\r\n }\r\n\r\n close(){\r\n if (this.clicked){\r\n this.dialogRef.close(\"success\")\r\n }else{\r\n this.dialogRef.close(\"\")\r\n }\r\n }\r\n\r\n item: string = \"\";\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n\r\n listConfig: ListDialogConfig\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'listName', type: 'text', hidden : true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n\r\n config: TableConfig = {\r\n\r\n showFilter : true,\r\n minColumns: ['name',],\r\n minButtons: ['edit'],\r\n elevation: 'none',\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create' , display : 'New', dialog: true, action: { url: 'general/lists?action=create', method: 'post' } },\r\n { name: 'edit', dialog: true, action: { url: 'general/lists?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/lists?action=delete', method: 'post' } },\r\n ],\r\n\r\n formConfig : this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<div>\n\n <label style=\"font-size: 24px;\">{{listConfig?.title ?? 'List'}}</label>\n\n</div>\n\n<mat-dialog-content class=\"mat-typography\">\n\n <div style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [reload]=\"tableReload\" (actionClick)=\"actionClicked()\"></spa-table>\n </div>\n\n\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-button (click)=\"close()\" >Ok</button>\n</mat-dialog-actions>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { quantityDialog } from './quantityDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component';\r\n\r\n\r\n@Component({\r\n selector: 'spa-inventory',\r\n templateUrl: './inventory.component.html',\r\n styleUrls: ['./inventory.component.css']\r\n})\r\nexport class InventoryComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({url :'general/lists/InventoryCategories'}).subscribe((apiResponse : ApiResponse) => {\r\n this.formConfig.fields.find(x => x.name == 'categoryID').options = apiResponse.data;\r\n })\r\n }\r\n\r\n reload: Subject<boolean> = new Subject();\r\n\r\n clicked(x){\r\n\r\n if (x.name == \"increase\" || x.name == \"decrease\"){\r\n this.comment(x)\r\n }\r\n }\r\n\r\n comment(x) {\r\n\r\n const dialogRef = this.dialog.open(quantityDialog, {\r\n width: \"900px\",\r\n data: x,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.reload.next(true);\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Inventory Categories\", name : 'Category', listName : 'InventoryCategories'}\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf ,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'serial', type: 'text', hidden : true },\r\n { name: 'price', type: 'money', },\r\n { name: 'minQuantity', alias : 'Minimum Quantity', type: 'number' },\r\n { name: 'categoryID', alias : 'Category', type: 'select', optionDisplay : 'name', optionValue : 'listItemID', defaultFirstValue : true },\r\n\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'quantity'],\r\n minButtons: ['increase', 'decrease', 'edit'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'categoryName', alias : 'Category', type: 'text' },\r\n { name: 'quantity', type: 'number', icon :{name : 'warning', color : 'red', tip : 'Stock up', condition : x => x.quantity <= x.minQuantity} },\r\n { name: 'price', alias : 'Unit Price', type: 'money', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'increase', icon: { name: 'add' }, color: 'green', },\r\n { name: 'decrease', icon: { name: 'remove' }, color: 'red', },\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/inventory?action=create', method: 'post' } },\r\n\r\n { name: 'edit', dialog: true, action: { url: 'general/inventory?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/inventory?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/inventory/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Inventory</label>\n\n <div >\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon >category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" (actionClick)=\"clicked($event)\" [reload]=\"reload\"></spa-table>\n</div>\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { FinAccount, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './accountDialog.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\nexport class accountDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private dataService: DataServiceLib, private dialogRef: MatDialogRef<accountDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.action = this.data == null ? 'create' : 'edit'\r\n\r\n this.account = this.data ?? new FinAccount();\r\n this.isLoadComplete = true;\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x );\r\n\r\n }\r\n\r\n action;\r\n account : FinAccount\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n currencies = [\r\n { name: 'USD', value: 'USD' },\r\n { name: 'ZAR', value: 'ZAR' },\r\n { name: 'ZWL', value: 'ZWL' },\r\n ]\r\n\r\n submit() {\r\n\r\n this.dataService.CallApi({ url: `general/accounts?action=${this.action}`, method: 'post' }, this.account).subscribe((x : ApiResponse) => {\r\n\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-col\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [(value)]=\"account.name\" ></spa-text>\r\n <spa-text display=\"Description\" [(value)]=\"account.description\" ></spa-text>\r\n <spa-select display=\"Currency\" [(value)]=\"account.currency\" [options]=\"currencies\" optionDisplay=\"name\" optionValue=\"value\"></spa-select>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-stroked-button color=\"primary\" [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n// import { quantityDialog } from './quantityDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { accountDialog } from './accountDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-accounts',\r\n templateUrl: './accounts.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\nexport class AccountsComponent implements OnInit {\r\n\r\n constructor(public router: Router,private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n reload: Subject<boolean> = new Subject();\r\n accounts;\r\n\r\n loadData(){\r\n\r\n this.dataService.CallApi({ url: 'general/accounts/x' },'').subscribe((apiResponse : ApiResponse) => {\r\n this.accounts = apiResponse.data;\r\n })\r\n\r\n }\r\n\r\n\r\n\r\n view(x){\r\n this.dataService.NavigateWithValue(\"home/admin/transactions\", x.accountID)\r\n }\r\n\r\n open(x) {\r\n\r\n const dialogRef = this.dialog.open(accountDialog, {\r\n width: \"900px\",\r\n data: x,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n\r\n delete(row){\r\n this.messageService.confirm(`DELETE ${row.name} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n\r\n this.dataService.CallApi({ url: `general/accounts?action=delete`, method: 'post' }, row).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Deleted\");\r\n this.loadData();\r\n } else {\r\n this.messageService.toast(apiResponse.message);\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n","<h4>Accounts</h4>\r\n<hr>\r\n\r\n<div class=\"tin-row d-flex justify-content-between\" style=\"font-size: 14px;margin-left: 5px;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"open(null)\">Create</button>\r\n <spa-filter [showText]=\"false\" (refreshClick)=\"loadData()\"></spa-filter>\r\n</div>\r\n\r\n<div class=\"row \" style=\"margin-left: 0px;\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" *ngFor=\"let account of accounts\" style=\"max-width: 350px;margin: 5px;\">\r\n\r\n <div class=\"tin-row d-flex justify-content-between\">\r\n <label style=\"font-size: 24px; font-weight: 300;\">{{account.name}}</label>\r\n <button mat-mini-fab color=\"primary\" (click)=\"open(account)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 5px;margin-bottom: 10px;\"/>\r\n\r\n <label *ngIf=\"account.description != ''\" style=\"font-size: small;margin-bottom: 5px;\">{{account.description}}</label>\r\n\r\n <div *ngIf=\"account\" class=\"tin-row\">\r\n <label style=\"margin-right: 5px;font-size: 14px;\">{{account?.currency}}</label>\r\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\r\n </div>\r\n\r\n <mat-card-actions class=\"d-flex justify-content-between\" >\r\n <button mat-stroked-button color=\"primary\" style=\"margin-right:10px;\" (click)=\"view(account)\">View</button>\r\n <button mat-mini-fab *ngIf=\"account.count == 0\" color=\"warn\" style=\"margin-right:10px\" (click)=\"delete(account)\"><mat-icon>delete</mat-icon></button>\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-suppliers',\r\n templateUrl: './suppliers.component.html',\r\n styleUrls: ['./suppliers.component.css']\r\n})\r\nexport class SuppliersComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/suppliers?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/suppliers?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/suppliers?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/suppliers/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Suppliers</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { FormConfig, Transaction, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './transactDialog.component.html',\r\n styleUrls: ['./transactions.component.css']\r\n})\r\nexport class transactDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService: DataServiceLib, private dialogRef: MatDialogRef<transactDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.action = this.data.action;\r\n this.account = this.data.account;\r\n this.accounts = this.data.accounts;\r\n this.categories = this.data.categories;\r\n this.isLoadComplete = true;\r\n\r\n if(this.action == \"edit\"){\r\n this.txn = this.data.data\r\n }\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n }\r\n\r\n\r\n txn = new Transaction;\r\n action\r\n account\r\n accounts\r\n categories\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n\r\n submit() {\r\n\r\n if (parseFloat(this.txn.amount) == 0){\r\n this.messageService.toast(\"Enter Amount\")\r\n return\r\n }\r\n\r\n if (this.action == \"income\"){\r\n this.txn.type = 1\r\n }else{\r\n this.txn.type = 0\r\n }\r\n\r\n\r\n this.txn.accountID = this.account.accountID\r\n\r\n let act;\r\n if (this.action == \"edit\"){\r\n act = 'edit'\r\n }\r\n else if(this.action == \"transfer\") {\r\n act = 'transfer'\r\n }\r\n else{\r\n act = 'create'\r\n }\r\n\r\n this.dataService.CallApi({ url: `general/transactions?action=${act}`, method: 'post' }, this.txn).subscribe((x : ApiResponse) => {\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Subject } from 'rxjs';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { transactDialog } from './transactDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component';\r\n\r\n@Component({\r\n selector: 'spa-transactions',\r\n templateUrl: './transactions.component.html',\r\n styleUrls: ['./transactions.component.css']\r\n})\r\nexport class TransactionsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog) {\r\n\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n } else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.accountID = this.dataService.GetNavigationValue()\r\n this.loadData();\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Transaction Categories\", name: 'Category', listName: 'TransactionCategories' }\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n }\r\n });\r\n\r\n }\r\n\r\n actionClicked(x){\r\n\r\n if (x.name == \"edit\"){\r\n this.transact('edit', x.data)\r\n }\r\n\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url: 'general/transactions/' + this.accountID },'').subscribe((apiResponse : ApiResponse) => {\r\n\r\n this.account = apiResponse.data.account;\r\n this.accounts = apiResponse.data.accounts;\r\n this.transactions = apiResponse.data.transactions;\r\n this.categories = apiResponse.data.categories;\r\n })\r\n }\r\n\r\n\r\n\r\n transact(x, data) {\r\n\r\n const dialogRef = this.dialog.open(transactDialog, {\r\n width: \"500px\",\r\n data: { action: x, account: this.account, data: data, accounts: this.accounts, categories: this.categories },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n transfer() {\r\n\r\n }\r\n\r\n smallScreen\r\n account;\r\n accounts = [];\r\n transactions = [];\r\n accountID;\r\n categories = [];\r\n reload: Subject<boolean> = new Subject();\r\n\r\n\r\n config: TableConfig = {\r\n\r\n minColumns: ['date','narration','amount'],\r\n minButtons: ['edit', 'delete'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'date', type: 'date' },\r\n { name: 'narration', type: 'text'},\r\n { name: 'amount', type: 'money', color: { name: 'red', condition: x => x.type == 0 }, icons: [{ name: 'arrow_right_alt', condition: x => x.link != '' && x.type == 0 }, { name: 'keyboard_backspace', condition: x => x.link != '' && x.type == 1 }] },\r\n { name: 'categoryName',alias : 'Category', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n\r\n { name: 'edit', disabled: x => x.link != '' && x.type == 1 },\r\n { name: 'delete', dialog: true, action: { url: 'general/transactions?action=delete', method: 'post' }, disabled : x => x.link != '' && x.type == 1},\r\n ],\r\n\r\n }\r\n\r\n}\r\n","<!-- <h4>Transactions ({{account?.name}})</h4>\n<hr> -->\n\n<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Transactions ({{account?.name}})</label>\n\n <div>\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;padding-left: 0;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n<div class=\"d-flex justify-content-between\" style=\" font-size: 14px;\" >\n\n <div *ngIf=\"account\" class=\"tin-row actionbuttons\">\n <label style=\"margin-right: 5px;\">{{account?.currency}}</label>\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\n <div *ngIf=\"!smallScreen; then buttons\" ></div>\n </div>\n\n <div *ngIf=\"!smallScreen\">\n <spa-filter (refreshClick)=\"loadData()\"></spa-filter>\n </div>\n\n</div>\n\n<div *ngIf=\"smallScreen\" style=\"margin-bottom: 10px;\"></div>\n\n<div *ngIf=\"smallScreen; then buttons\" ></div>\n\n<ng-template #buttons >\n <div class=\"tin-row actionbuttons\">\n <button mat-stroked-button style=\"color: green;\" (click)=\"transact('income','')\"><mat-icon class=\"sign\">add</mat-icon>Income</button> <mat-icon class=\"info\">info</mat-icon>\n <button mat-stroked-button style=\"color: red;\" (click)=\"transact('expense','')\"><mat-icon class=\"sign\">remove</mat-icon>Expense</button> <mat-icon class=\"info\">info</mat-icon>\n <button mat-stroked-button style=\"color: orange;\" (click)=\"transact('transfer','')\" ><mat-icon class=\"sign\">sync_alt</mat-icon>Transfer</button> <mat-icon class=\"info\">info</mat-icon>\n </div>\n</ng-template>\n\n\n\n<div style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [data]=\"transactions\" [reload]=\"reload\" (dataLoad)=\"loadData()\" (actionClick)=\"actionClicked($event)\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-tasks',\r\n templateUrl: './tasks.component.html',\r\n styleUrls: ['./tasks.component.css']\r\n})\r\nexport class TasksComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url:'general/tasks_meta/x'}).subscribe((api : ApiResponse) => {\r\n this.formConfig.fields.find(x => x.name == 'assignee').options = api.data.members;\r\n this.formConfig.fields.find(x => x.name == 'assignee').defaultValue = this.authService.currentUser;\r\n this.formConfig.fields.find(x => x.name == 'categoryID').options = api.data.categories;\r\n })\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Task Categories\", name: 'Category', listName: 'TaskCategories' }\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.reload.next(true);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n reload: Subject<boolean> = new Subject();\r\n\r\n statuses = [\r\n { name: 'Not Started', value: 0 },\r\n { name: 'In-Progress', value: 1 },\r\n { name: 'Completed', value: 2 },\r\n ]\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', span : true, required : true },\r\n { name: 'status', type: 'select', options : this.statuses, defaultFirstValue : true, required : true },\r\n { name: 'dueDate', type: 'date' },\r\n { name: 'assignee', type: 'select', optionDisplay : 'name', optionValue : 'userName' },\r\n { name: 'categoryID', alias: 'Category', type: 'select', optionDisplay: 'name', optionValue: 'listItemID', defaultFirstValue: true, required: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'assigneeName'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text'},\r\n { name: 'statusName', type: 'text' },\r\n { name: 'dueDate', type: 'date' },\r\n { name: 'assigneeName', alias:'assignee', type: 'text'},\r\n { name: 'categoryName', alias: 'Category', type: 'text' },\r\n { name: 'createdDate', alias : 'Created', type: 'date' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/tasks?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/tasks?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/tasks?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/tasks/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Tasks</label>\n\n <div>\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [reload]=\"reload\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-departments',\r\n templateUrl: './departments.component.html',\r\n styleUrls: ['./departments.component.css']\r\n})\r\nexport class DepartmentsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.dataService.loadPositionMeta();\r\n this.dataService.loadEmployeesMeta();\r\n }\r\n\r\n\r\n}\r\n","<h4>Departments</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.departmentTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-employees',\r\n templateUrl: './employees.component.html',\r\n styleUrls: ['./employees.component.css']\r\n})\r\nexport class EmployeesComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.dataService.loadEmployeesMeta();\r\n }\r\n\r\n}\r\n","<h4>Employees</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.employeeTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-positions',\r\n templateUrl: './positions.component.html',\r\n styleUrls: ['./positions.component.css']\r\n})\r\nexport class PositionsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.dataService.loadPositionMeta();\r\n }\r\n\r\n}\r\n","<h4>Positions</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.positionTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-grades',\n templateUrl: './grades.component.html',\n styleUrls: ['./grades.component.css']\n})\nexport class GradesComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<h4>Grades</h4>\n<hr>\n","import { Component, OnInit } from '@angular/core';\r\nimport { TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-welcome',\r\n templateUrl: './welcome.component.html',\r\n styleUrls: ['./welcome.component.css']\r\n})\r\nexport class WelcomeComponent implements OnInit {\r\n\r\n constructor(public dataService : DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadMeta();\r\n\r\n this.authService.loggedUserFullName.subscribe(x => this.username = x)\r\n }\r\n\r\n username;\r\n\r\n step = \"terms\"\r\n agree = false\r\n own = true;\r\n invitations = false;\r\n\r\n myTenant\r\n\r\n loadMeta(){\r\n this.dataService.CallApi({ url:'tenant/welcome_meta/x'}).subscribe((api) => {\r\n this.invitations = api.data.invitations;\r\n this.own = api.data.own;\r\n this.myTenant = api.data.tenant;\r\n })\r\n }\r\n\r\n renameTenant() {\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=rename', method: 'post' }, this.myTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.authService.updateTenantName(this.myTenant.name)\r\n }\r\n });\r\n }\r\n\r\n next(){\r\n\r\n if (this.step == 'terms' && this.own){\r\n this.step = \"name\"\r\n return;\r\n }\r\n else if (this.step == \"terms\" && !this.own) {\r\n this.step = \"hi\"\r\n return;\r\n }\r\n else if (this.step == \"name\" && this.own){\r\n\r\n this.renameTenant();\r\n if (this.invitations == true){\r\n this.step = \"invitations\"\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n this.setWelcome();\r\n }\r\n\r\n setWelcome() {\r\n this.dataService.CallApi({ url: 'tenant/set_welcome/x' }).subscribe((api) => {\r\n this.home();\r\n })\r\n }\r\n\r\n home(){\r\n this.dataService.Navigate('home');\r\n }\r\n\r\n\r\n invTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['tenantName'],\r\n minButtons: ['accept', 'decline'],\r\n\r\n columns: [\r\n { name: 'tenantName', alias: 'Organisation', type: 'text' },\r\n { name: 'owner', type: 'text', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'accept', icon: { 'name': 'done', }, color: 'green', action: { url: 'tenant/members?action=accept', method: 'post', }, confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },\r\n { name: 'decline', icon: { 'name': 'close', }, color: 'red', action: { url: 'tenant/members?action=remove', method: 'post', }, confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },\r\n ],\r\n\r\n loadAction: { url: 'tenant/invitations/x' },\r\n\r\n }\r\n\r\n}\r\n","<label class=\"title\">Welcome, {{username}}</label>\n\n\n\n<!-- terms -->\n<div class=\"mt-3\" *ngIf=\"step=='terms'\">\n\n <label class=\"subtitle text-muted mb-2\" >We care about our users and are dedicated to protecting your data and privacy -\n thats why we want to be clear about what data we collect and how we use it to improve your experience.</label>\n\n <br>\n <spa-check display=\"I agree to the Terms and Privacy Policy\" [(value)]=\"agree\"></spa-check>\n</div>\n\n<!-- owner -->\n<div class=\"mt-3\" *ngIf=\"step=='name' && own\">\n\n <label class=\"subtitle text-muted\" style=\" margin-bottom: 20px;\">The follow steps will guide you to customise your application.</label>\n\n <div style=\"max-width: 400px;\">\n <spa-text display=\"Organisation Name\" [(value)]=\"myTenant.name\" ></spa-text>\n </div>\n\n <label class=\"text-muted\" style=\" font-size: 12px;\">You can change the Organisation's name to your team or company name.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">The name can be changed later.</label>\n\n</div>\n\n<!-- guest -->\n<div *ngIf=\"step=='hi' && !own\">\n <label class=\"subtitle text-muted\">You are now signed in to {{myTenant.name}}.</label>\n</div>\n\n\n<!-- invitations -->\n<div class=\"mt-3\" *ngIf=\"step=='invitations' && own\">\n\n <label class=\"subtitle text-muted\">You have been requested to join the following organisations. If you accept, you have the option to switch to that org now or stay in you org.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">You will be able to switch later.</label>\n <spa-invitations-table></spa-invitations-table>\n\n</div>\n\n\n<!-- Actions -->\n<div class=\"mt-3\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"!agree\" (click)=\"next()\">Next <mat-icon>arrow_right_alt</mat-icon></button>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-invitations',\n templateUrl: './invitations.component.html',\n styleUrls: ['./invitations.component.css']\n})\nexport class InvitationsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>invitations works!</p>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-notifications',\n templateUrl: './notifications.component.html',\n styleUrls: ['./notifications.component.css']\n})\nexport class NotificationsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>notifications works!</p>\n","import { NgModule } from '@angular/core';\r\nimport { TinSpaComponent } from './components/tin-spa.component';\r\nimport { SpaMatModule } from \"./modules/spa-mat.module\";\r\nimport { TextComponent } from './components/text/text.component';\r\nimport { CheckComponent } from './components/check/check.component';\r\nimport { DateComponent } from './components/date/date.component';\r\nimport { DatetimeComponent } from './components/datetime/datetime.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { FilterComponent } from './components/filter/filter.component';\r\nimport { messageDialog } from './components/message/messageDialog.component';\r\nimport { MoneyComponent } from './components/money/money.component';\r\nimport { OptionComponent } from './components/option/option.component';\r\nimport { TilesComponent } from './components/tiles/tiles.component';\r\nimport { StepsComponent } from './components/steps/steps.component';\r\nimport { AttachComponent } from './components/attach/attach.component';\r\nimport { ChipsComponent } from './components/chips/chips.component';\r\nimport { LoaderComponent } from './components/loader/loader.component';\r\nimport { NavMenuComponent } from './components/nav-menu/nav-menu.component';\r\nimport { LoaderInterceptor } from './services/loader-interceptor.service';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { CurrencyPipe, DatePipe, HashLocationStrategy, LocationStrategy } from '@angular/common';\r\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\r\nimport { CurrencyInputModule } from './components/money/currency-input-mask.module';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { DetailsDialog as DetailsDialog } from './components/table/detailsDialog.component';\r\nimport { FormComponent } from './components/form/form.component';\r\nimport { CamelToWordsPipe } from './pipes/camelToWords.pipe';\r\nimport { NumberComponent } from './components/number/number.component';\r\nimport { SearchComponent } from './components/search/search.component';\r\nimport { ViewerComponent } from './components/viewer/viewer.component';\r\nimport { viewerDialog } from './components/viewer/viewerDialog.component';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\nimport { GoogleLoginProvider, SocialAuthServiceConfig } from '@abacritt/angularx-social-login';\r\nimport { TenantSettingsComponent } from './components/tenant-settings/tenant-settings.component';\r\nimport { TenantsComponent } from './components/tenants/tenants.component';\r\nimport { BugComponent } from './components/bug/bug.component';\r\nimport { MembershipComponent } from './components/membership/membership.component';\r\nimport { PlansComponent } from './components/plans/plans.component';\r\nimport { CustomersComponent } from './components/customers/customers.component';\r\nimport { InventoryComponent } from './components/inventory/inventory.component';\r\nimport { AccountsComponent } from './components/accounts/accounts.component';\r\nimport { SuppliersComponent } from './components/suppliers/suppliers.component';\r\nimport { quantityDialog } from './components/inventory/quantityDialog.component';\r\nimport { TransactionsComponent } from './components/transactions/transactions.component';\r\nimport { transactDialog } from './components/transactions/transactDialog.component';\r\nimport { accountDialog } from './components/accounts/accountDialog.component';\r\nimport { ListDialogComponent } from './components/list-dialog/list-dialog.component';\r\nimport { TasksComponent } from './components/tasks/tasks.component';\r\nimport { DepartmentsComponent } from './components/departments/departments.component';\r\nimport { EmployeesComponent } from './components/employees/employees.component';\r\nimport { PositionsComponent } from './components/positions/positions.component';\r\nimport { GradesComponent } from './components/grades/grades.component';\r\nimport { inviteDialog } from './components/tenant-settings/inviteDialog.component';\r\nimport { WelcomeComponent } from './components/welcome/welcome.component';\r\nimport { InvitationsComponent } from './components/invitations/invitations.component';\r\nimport { NotificationsComponent } from './components/notifications/notifications.component';\r\nimport { InvitationsTableComponent } from './components/invitations-table/invitations-table.component';\r\nimport { TableInternalComponent } from './components/table-internal/table-internal.component';\r\nimport { DetailsDialogInternal } from './components/table-internal/detailsDialog-internal.component';\r\nimport { TableHeaderComponent } from './components/table-header/table-header.component';\r\nimport { TableRowComponent } from './components/table-row/table-row.component';\r\nimport { TableActionComponent } from './components/table-action/table-action.component';\r\nimport { AlertComponent } from './components/alert/alert.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TinSpaComponent, TextComponent, CheckComponent,DateComponent,DatetimeComponent,LabelComponent,SelectComponent,\r\n ActivityComponent, FilterComponent, messageDialog, MoneyComponent, OptionComponent, TilesComponent, StepsComponent,\r\n AttachComponent, ChipsComponent, LoaderComponent, NavMenuComponent, TableComponent, TableInternalComponent, DetailsDialog, DetailsDialogInternal, FormComponent, CamelToWordsPipe, NumberComponent, SearchComponent, ViewerComponent, viewerDialog,\r\n TenantSettingsComponent, inviteDialog, TenantsComponent, BugComponent, MembershipComponent, PlansComponent, CustomersComponent, InventoryComponent, quantityDialog, AccountsComponent, accountDialog,\r\n SuppliersComponent,\r\n TransactionsComponent, transactDialog, ListDialogComponent, TasksComponent,\r\n DepartmentsComponent, EmployeesComponent, PositionsComponent, GradesComponent, WelcomeComponent, InvitationsComponent, NotificationsComponent, InvitationsTableComponent, TableHeaderComponent, TableRowComponent, TableActionComponent, AlertComponent,\r\n\r\n ],\r\n imports: [\r\n SpaMatModule,\r\n HttpClientModule,\r\n CurrencyInputModule,\r\n NgxDocViewerModule,\r\n\r\n\r\n ],\r\n exports: [\r\n TinSpaComponent,\r\n SpaMatModule,\r\n AlertComponent,\r\n TextComponent,\r\n messageDialog,\r\n NavMenuComponent,\r\n LoaderComponent,\r\n TilesComponent,\r\n DateComponent,\r\n SelectComponent,\r\n DatetimeComponent,\r\n CheckComponent,\r\n AttachComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent,\r\n OptionComponent,\r\n LabelComponent,\r\n StepsComponent,\r\n FilterComponent,\r\n TableComponent, DetailsDialog,\r\n FormComponent,\r\n NumberComponent,\r\n SearchComponent,\r\n ViewerComponent,\r\n viewerDialog,\r\n ListDialogComponent,\r\n\r\n CustomersComponent,\r\n AccountsComponent,\r\n InventoryComponent,\r\n SuppliersComponent,\r\n TransactionsComponent, ListDialogComponent, TasksComponent,\r\n DepartmentsComponent, EmployeesComponent, PositionsComponent, GradesComponent,\r\n WelcomeComponent\r\n\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy},\r\n {provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: {appearance: 'legacy'}},\r\n CurrencyPipe, DatePipe,\r\n\r\n ],\r\n})\r\nexport class TinSpaModule { }\r\n","import { MessageService } from \"../../services/message.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { LogService } from \"./../../services/log.service\";\r\nimport { User, AppConfig, ApiResponse, Constants } from \"../../classes/Classes\";\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { SocialAuthService, SocialUser } from '@abacritt/angularx-social-login';\r\n\r\n@Component({\r\n selector: \"spa-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.css\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private storageService: StorageService, public router: Router, private messageService: MessageService, public dataService: DataServiceLib,\r\n public authService: AuthService, private logService: LogService, private route: ActivatedRoute, private socialService: SocialAuthService ) { }\r\n\r\n ngOnInit() {\r\n\r\n\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n\r\n if (this.route.snapshot.queryParams[\"redirectTo\"] != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams[\"redirectTo\"]\r\n }else{\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n\r\n\r\n this.authService.autoLoginObserv.subscribe(x => {\r\n this.autoLogin = x\r\n console.log(\"AUTO LOGIN :\" + this.autoLogin)\r\n })\r\n\r\n this.socialUser = null;\r\n\r\n this.socialService.authState.subscribe((socialUser: SocialUser) => {\r\n\r\n this.socialUser = socialUser;\r\n\r\n this.user.userName = socialUser.id;\r\n this.user.password = socialUser.id; //dummy data\r\n this.user.token = socialUser.idToken;\r\n this.user.authType = socialUser.provider;\r\n\r\n this.login();\r\n\r\n });\r\n\r\n // this.authService.logoff();\r\n\r\n }\r\n\r\n autoLogin: boolean;\r\n socialUser: SocialUser | null;\r\n\r\n style: string = \"default\";\r\n\r\n email: string = \"\";\r\n password: string = \"\";\r\n\r\n redirectPath\r\n\r\n public user = new User();\r\n hide = true;\r\n isProcessing: boolean = false;\r\n\r\n appConfig = new AppConfig();\r\n\r\n public signup() {\r\n this.router.navigate([\"signup\"]);\r\n }\r\n\r\n public recoverAccount() {\r\n this.router.navigate([\"recover-account\"]);\r\n }\r\n\r\n public login() {\r\n\r\n\r\n if (this.user.userName == \"\" || this.user.password == \"\") {\r\n this.messageService.toast(\"Please enter your credentials\");\r\n return;\r\n }\r\n\r\n\r\n this.logService.info(\"logging in\");\r\n\r\n this.isProcessing = true;\r\n\r\n\r\n this.user.userName = this.user.userName\r\n\r\n this.dataService.Login(this.user).subscribe((apiResponse: ApiResponse) => {\r\n\r\n this.isProcessing = false;\r\n\r\n\r\n if (apiResponse.success) {\r\n\r\n // if (apiResponse.data.authType == 'local' && !this.appConfig.localAuth) {\r\n // this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n // return;\r\n // }\r\n\r\n // if (apiResponse.data.authType == 'AD' && !this.appConfig.ADAuth) {\r\n // this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n // return;\r\n // }\r\n\r\n\r\n this.authService.Updateloggedin(true);\r\n\r\n this.authService.UpdateToken(apiResponse.data.token);\r\n this.storageService.store(Constants.AUTH_TOKEN, apiResponse.data.token);\r\n\r\n this.authService.UpdateTokenExpire(apiResponse.data.expiration);\r\n this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.data.expiration);\r\n\r\n this.authService.UpdateCurrentUser(this.user.userName);\r\n this.storageService.store(Constants.AUTH_USER, this.user.userName);\r\n\r\n this.authService.updateLoggedUserFullName(apiResponse.data.firstName);\r\n this.storageService.store(Constants.AUTH_NAME, apiResponse.data.firstName);\r\n\r\n this.authService.UpdateRole(apiResponse.data.role);\r\n this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.data.role));\r\n\r\n this.authService.updateTenantName(apiResponse.data.tenantName);\r\n this.storageService.store(Constants.AUTH_TENANT_NAME, apiResponse.data.tenantName);\r\n\r\n\r\n this.logService.info(\"logged in\");\r\n\r\n\r\n if (apiResponse.data.changePassword == true && apiResponse.data.authType == 'local') {\r\n\r\n this.router.navigate([\"home/user/change-password\"], {\r\n queryParams: { redirectTo: this.redirectPath },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n return\r\n }\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n this.user.password = \"\";\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n\r\n}\r\n","\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017–2023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n// import { HttpService, ApiResponse } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User, Profile, Account, ApiResponse } from '../../classes/Classes';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n@Component({\r\n selector: 'spa-signup',\r\n templateUrl: './signup.component.html',\r\n styleUrls: ['./signup.component.css']\r\n})\r\nexport class SignupComponent implements OnInit {\r\n\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService,) { }\r\n\r\n ngOnInit() {\r\n\r\n this.account.user = this.user;\r\n this.account.profile = this.profile;\r\n }\r\n\r\n isProcessing: boolean = false;\r\n user = new User();\r\n profile = new Profile();\r\n\r\n account = new Account();\r\n\r\n confirmPassword: string;\r\n\r\n\r\ncreate(){\r\n\r\n this.profile.userName = this.user.userName;\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.account).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n this.user = new User();\r\n this.profile = new Profile();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n}\r\n\r\n\r\n\r\n}\r\n","\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { User, ApiResponse } from '../../classes/Classes';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'spa-recover-account',\r\n templateUrl: './recover-account.component.html',\r\n styleUrls: ['./recover-account.component.css']\r\n})\r\nexport class RecoverAccountComponent implements OnInit {\r\n\r\n constructor(private location: Location, private dataService: DataServiceLib, public authService: AuthService, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n userName: string = \"\";\r\n\r\n recover(){\r\n\r\n\r\n if (this.userName == \"\") {\r\n\r\n this.messageService.toast(\"Please enter your userName\");\r\n return;\r\n } else {\r\n let u = new User();\r\n u.userName = this.userName;\r\n\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent to your email\");\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","\r\n<div class=\"container\" style=\"padding-top: 30px;\">\r\n<h4>Recover Account</h4>\r\n\r\n<hr />\r\n\r\nSubmit your Username and we will send you details to your registered email address.\r\n\r\n<div style=\"font-size: 14px;\">\r\n <spa-text class=\"mt-3\" display=\"Username\" [(value)]=\"userName\"></spa-text>\r\n\r\n <div class=\"tin-center\">\r\n <button class=\"mt-3 w-50\" mat-raised-button color=\"primary\" (click)=\"recover()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n</div>\r\n\r\n</div>\r\n\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { LoginComponent } from \"../components/login/login.component\";\r\nimport { SignupComponent } from \"../components/signup/signup.component\";\r\nimport { RecoverAccountComponent } from \"../components/recover-account/recover-account.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\nimport { SocialLoginModule } from \"@abacritt/angularx-social-login\";\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, SignupComponent, RecoverAccountComponent],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule,\r\n SocialLoginModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n LoginComponent,\r\n SignupComponent,\r\n RecoverAccountComponent,\r\n ],\r\n})\r\nexport class SpaIndexModule {}\r\n","\r\nimport { ChangeUserPassword, ApiResponse } from './../../classes/Classes';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Location } from '@angular/common';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'spa-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n\r\n constructor(public router: Router, private location: Location, private httpService: HttpService, private messageService: MessageService, public dataService: DataServiceLib, private authService: AuthService, private route: ActivatedRoute) { }\r\n\r\n ngOnInit() {\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.changePassword.userName = this.authService.currentUser;\r\n\r\n }else{\r\n this.changePassword.userName = this.dataService.tmpProfileuserName;\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n if (this.route.snapshot.queryParams[\"redirectTo\"] != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams[\"redirectTo\"]\r\n } else {\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n }\r\n\r\n myRole;\r\n redirectPath\r\n isProcessing: boolean = false;\r\n changePassword = new ChangeUserPassword();\r\n\r\n public change() {\r\n\r\n if (!this.myRole[this.dataService.capUsers.name]){\r\n if (this.changePassword.currentPassword == \"\") {\r\n this.messageService.toast(\"Please enter current Password\");\r\n return;\r\n }\r\n }\r\n\r\n if (this.changePassword.newPassword == \"\") {\r\n this.messageService.toast(\"Please enter new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword == \"\") {\r\n this.messageService.toast(\"Please confirm new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword != this.changePassword.newPassword ) {\r\n this.messageService.toast(\"Passwords do not match\");\r\n return;\r\n }\r\n\r\n this.isProcessing = true;\r\n\r\n if (this.myRole[this.dataService.capUsers.name]){\r\n\r\n\r\n this.dataService.ChangePasswordAdmin(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }else{\r\n\r\n this.dataService.ChangePassword(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n","<h4>Change Password</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <div class=\"fill\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" type=\"password\"></spa-text>\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n\r\n </div>\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! …)<br>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n<!-- <div class=\"container\">\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" >\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"tin-input \" style=\"font-size:14px;\">\r\n\r\n <div class=\"col\" *ngIf=\"changePassword.userName!=''\">\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" width=\"300px\" [readonly]=\"true\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\" *ngIf=\"!myRole[dataService.capUsers.name]\">\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col mt-3\">\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! …)<br>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div> -->\r\n\r\n","import { AuthService } from './../../services/auth.service';\r\nimport { MessageService } from './../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ApiResponse, AppConfig, Profile } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n@Component({\r\n selector: 'spa-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, private httpService: HttpService, private router: Router, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.loadProfile(this.authService.currentUser);\r\n\r\n }else{\r\n this.loadProfile(this.dataService.tmpProfileuserName);\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n isProcessing: boolean;\r\n myRole;\r\n initials = \"\";\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n selfProfile : boolean = false;\r\n\r\n profile = new Profile ;\r\n roles;\r\n approvalRoles;\r\n employees;\r\n\r\n\r\n loadProfile(userName: string){\r\n\r\n let action = \"all\";\r\n\r\n this.dataService.GetUserByID(userName).subscribe( (apiResponse: ApiResponse) => {\r\n\r\n this.profile = apiResponse.data;\r\n\r\n if (this.profile.userName.toLocaleLowerCase() == this.authService.currentUser.toLocaleLowerCase()){\r\n this.selfProfile = true\r\n }\r\n this.loadRoles()\r\n this.initials = `${this.profile.firstName?.toUpperCase().charAt(0)}${this.profile.lastName?.toUpperCase().charAt(0)}`\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n loadRoles(){\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse;\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n }\r\n\r\n changePassword(){\r\n this.dataService.tmpProfileuserName = this.profile.userName;\r\n this.router.navigate([\"home/user/change-password\"]);\r\n }\r\n\r\n gotoUsers(){\r\n this.router.navigate([\"home/admin/users\"]);\r\n }\r\n\r\n update(){\r\n\r\n }\r\n\r\n updateProfile(){\r\n this.isProcessing = true;\r\n\r\n // return\r\n this.dataService.UpdateUser(this.profile).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Profile Updated\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n}\r\n","\r\n<h4>Profile</h4>\r\n<hr>\r\n\r\n<div class=\"container tin-grid-auto\" style=\"font-size:14px;\">\r\n\r\n <div class=\"tin-center centa\">\r\n <div class=\"profileImage\">{{initials}}</div>\r\n <mat-label id=\"lbluserName\" >{{profile?.userName}}</mat-label>\r\n </div>\r\n\r\n <div>\r\n\r\n <spa-text id=\"txtFirstName\" display=\"First Name\" [(value)]=\"profile.firstName\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-text id=\"txtLastName\" display=\"Last Name\" [(value)]=\"profile.lastName\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-text id=\"txtAuth\" display=\"Authentication\" [(value)]=\"profile.authType\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"profile.email\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"profile.roleID\" [readonly]=\"selfProfile\"></spa-select>\r\n\r\n <button id=\"btnUpdate\" class=\"w-100\" mat-raised-button color=\"primary\" *ngIf=\"!selfProfile\" [disabled]=\"isProcessing\" (click)=\"updateProfile()\">Update Profile</button>\r\n </div>\r\n\r\n\r\n <div class=\"tin-center centa\">\r\n <a mat-button id=\"lnkUserManager\" style=\"margin-left: 1em\" *ngIf=\"!selfProfile\" (click)=\"gotoUsers()\">User Manager</a>\r\n <a mat-button id=\"lnkChangePassword\" style=\"margin-left: 1em\" *ngIf=\"(selfProfile || myRole[dataService.capUsers.name]) && profile.authType=='local'\" (click)=\"changePassword()\">Change Password</a>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ChangePasswordComponent } from \"../components/change-password/change-password.component\";\r\nimport { ProfileComponent } from \"../components/profile/profile.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [ChangePasswordComponent, ProfileComponent],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n ChangePasswordComponent,\r\n ProfileComponent,\r\n ],\r\n})\r\nexport class SpaUserModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.css']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadSettings();\r\n }\r\n\r\n _filterText = \"\";\r\n settings;\r\n isProcessing = false;\r\n\r\n applyFilter(filterValue: string) {\r\n this.settings.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n loadSettings(){\r\n this.dataService.GetSetting(\"all\", \"\").subscribe((apiResponse) => {\r\n this.settings = apiResponse;\r\n }\r\n );\r\n\r\n }\r\n\r\n updateSetting(setting) {\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateSetting(setting, \"edit\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(`Setting ${setting.sName} Updated`);\r\n this.loadSettings();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n addSetting() {\r\n\r\n // const dialogRef = this.dialog.open(addRoleDialog, {\r\n // width: \"1100px\",\r\n // data: \"\",\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe((result) => {\r\n // if (result == \"success\") {\r\n // this.loadRoles();\r\n // }\r\n // });\r\n this.messageService.toast(\"Feature not Available\");\r\n\r\n }\r\n\r\n}\r\n","<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-logs',\r\n templateUrl: './logs.component.html',\r\n styleUrls: ['./logs.component.css']\r\n})\r\nexport class LogsComponent implements OnInit {\r\n constructor(private authService: AuthService, private dataService: DataServiceLib,) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capLogs.name);\r\n this.loadLogs();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"logsPaginator\") logsPaginator: MatPaginator;\r\n\r\n\r\n logs;\r\n\r\n displayedColumns: string[] = [\"dateLogged\", \"userName\", \"fullName\", \"source\", \"details\"];\r\n\r\n public loadLogs() {\r\n this.dataService.GetLog(\"all\", \"\").subscribe((apiResponse) => {\r\n\r\n this.logs = new MatTableDataSource(apiResponse);\r\n this.logs.paginator = this.logsPaginator;\r\n\r\n }\r\n );\r\n }\r\n\r\n}\r\n","<h4>Logs</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n\r\n <div class=\"col-2\">\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"logs\" (refreshClick)=\"loadLogs()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <p *ngIf=\"!logs\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"logs\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"logs\">\r\n\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> User </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.userName}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"dateLogged\">\r\n <th mat-header-cell *matHeaderCellDef class=\"datetime\"> Date Logged </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.dateLogged | date: 'dd MMM yy HH:mm:ss'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef> Source </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.source}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"details\">\r\n <th mat-header-cell *matHeaderCellDef> Details </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.details}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let log\">{{log.user?.firstName}} {{log.user?.lastName}}</td>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #logsPaginator [pageSizeOptions]=\"[50, 100, 200]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { TableConfig, User, ApiResponse } from '../../classes/Classes';\r\nimport { HttpService } from \"../../services/http.service\";\r\n\r\n@Component({\r\n selector: \"spa-users\",\r\n templateUrl: \"./users.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n constructor(private httpService: HttpService, public router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capUsers.name);\r\n this.UpdateData();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"usersPaginator\") usersPaginator: MatPaginator;\r\n\r\n _filterText = \"\";\r\n\r\n users;\r\n usersRaw;\r\n displayedColumns: string[] = [\"userName\", \"fullName\", \"roleName\", \"locked\", \"dateCreated\", \"Action\"];\r\n\r\n public UpdateData() {\r\n this.dataService.GetUser().subscribe(\r\n (apiResponse) => {\r\n\r\n this.usersRaw = apiResponse.data;\r\n this.users = new MatTableDataSource(apiResponse.data);\r\n this.users.paginator = this.usersPaginator;\r\n this.applyFilter(this._filterText);\r\n\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n applyFilter(filterValue: string) {\r\n this.users.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n createAccount() {\r\n this.router.navigate([\"home/admin/create-account\"]);\r\n }\r\n\r\n viewProfile(user: User) {\r\n\r\n this.dataService.tmpProfileuserName = user.userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n lock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.LockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Locked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n unlock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.UnlockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Unlocked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n recover(u: User) {\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent on email\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n deleteUser(user: User) {\r\n\r\n\r\n\r\n this.messageService.confirm(`Delete ${user.userName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.isProcessing = true;\r\n this.dataService.DeleteUser(user).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Deleted\");\r\n\r\n this.UpdateData();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n //----------------------------------------\r\n\r\n // config: TableConfig = {\r\n // showFilter: true,\r\n // newText: \"Create Account\",\r\n // minColumns: ['firstName', 'lastName', 'roleID'],\r\n\r\n // columns: [\r\n // { name: 'userName', type: 'text', icon: { name: 'person', color: 'green', tip: 'name desc' } },\r\n // { name: 'firstName', type: 'text',},\r\n // { name: 'lastName', type: 'text' },\r\n // { name: 'roleID', type: 'text' },\r\n // { name: 'locked', type: 'checkbox' },\r\n // { name: 'createdDate', type: 'date' },\r\n // ],\r\n\r\n // buttons: [\r\n // { name:'create', display:'Create Account', dialog: true },\r\n // { name: 'view', dialog: true, icon: { name: 'account_circle'} },\r\n // { name: 'custom1', action: { method: 'post', url: 'User/lock', successMessage: \"User locked\" }, color:'red', tip:'lock', icon: { name: 'lock'}, visible: (value) => value.locked == 0},\r\n // { name: 'custom2', action: { method: 'post', url: 'User/unlock', successMessage: \"User Unlocked\" }, color: 'green', tip: 'unlock', icon: { name: 'lock_open' }, visible: (value) => value.locked == 1 },\r\n // { name: 'delete' },\r\n // ],\r\n\r\n // loadAction: { url: 'User/all/x' }\r\n\r\n // }\r\n\r\n}\r\n\r\n\r\n\r\n","\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\" style=\"font-size: 14px;\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n <div class=\"col-2\">\r\n <button id=\"btnCreateAccount\" mat-raised-button color=\"primary\" (click)=\"createAccount()\">Create User</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"users\" (refreshClick)=\"UpdateData()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n <p *ngIf=\"!users\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"users\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"users\">\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> UserName </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.userName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"locked\">\r\n <th mat-header-cell *matHeaderCellDef> Locked </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.locked}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.firstName}} {{user.lastName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"roleName\">\r\n <th mat-header-cell *matHeaderCellDef> Role </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.role.roleName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"disabled\">\r\n <th mat-header-cell *matHeaderCellDef> Disabled </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.disabled}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateCreated\">\r\n <th mat-header-cell *matHeaderCellDef> Created </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.createdDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateUpdated\">\r\n <th mat-header-cell *matHeaderCellDef> Updated </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.updatedDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"Action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let user\" style=\"width: 250px;\">\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"viewProfile(user)\" style=\"margin-right:30px\" matTooltip=\"View Profile\" matTooltipPosition=\"above\"> <mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"user.locked=='0'\" mat-mini-fab color=\"warn\" (click)=\"lock(user)\" style=\"margin-right:10px\" matTooltip=\"Lock\" matTooltipPosition=\"above\"> <mat-icon>lock</mat-icon></button>\r\n <button *ngIf=\"user.locked=='1'\" mat-mini-fab (click)=\"unlock(user)\" style=\"margin-right:10px; background-color: green;\" matTooltip=\"Unlock\" matTooltipPosition=\"above\"> <mat-icon >lock_open</mat-icon></button>\r\n\r\n <!-- <button *ngIf=\"user.disabled=='0'\" mat-mini-fab color=\"warn\" (click)=\"disable(user)\" style=\"margin-right:10px\" matTooltip=\"Disable\" matTooltipPosition=\"above\"> <mat-icon>block</mat-icon></button>\r\n <button *ngIf=\"user.disabled=='1'\" mat-mini-fab (click)=\"enable(user)\" style=\"margin-right:10px; background-color: green\" matTooltip=\"Enable\" matTooltipPosition=\"above\"> <mat-icon>done</mat-icon></button> -->\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteUser(user)\" style=\"margin-right:10px\" matTooltip=\"Delete\" matTooltipPosition=\"above\"> <mat-icon>delete</mat-icon></button>\r\n <!-- <button mat-mini-fab color=\"primary\" (click)=\"recover(user)\" style=\"margin-right:10px\" matTooltip=\"Reset Password\" matTooltipPosition=\"above\"> <mat-icon>vpn_key</mat-icon></button> -->\r\n\r\n\r\n\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': row.disabled =='1'}\"></tr>\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #usersPaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n<!-- ------------------ -->\r\n\r\n<!-- <div class=\"container mt-5\" style=\" font-size: 14px;\">\r\n<spa-table [data]=\"usersRaw\" [config]=\"config\" (refreshClick)=\"UpdateData()\" (viewClick)=\"viewProfile($event)\" (createClick)=\"createAccount()\" (deleteClick)=\"deleteUser($event)\"></spa-table>\r\n</div> -->\r\n\r\n","import { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Role, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'app-addRole',\r\n templateUrl: './addRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class addRoleDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, private dialogRef: MatDialogRef<addRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.capItems = this.data;\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n }\r\n\r\n capItems;\r\n\r\n isProcessing: boolean;\r\n role = new Role();\r\n\r\n submit() {\r\n\r\n if (this.role.roleName == \"New Role\" || this.role.roleName == \"\"){\r\n this.messageService.toast(\"Please enter Role Name\");\r\n return;\r\n }\r\n\r\n\r\n this.dataService.PostRole(this.role,\"add\").subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Added\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n\r\n }, error => {\r\n this.messageService.toast(\"Connection failed\");\r\n this.isProcessing = false;\r\n });\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","<mat-form-field>\r\n <mat-label>Role Name</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"role.roleName\" placeholder=\"Enter Role Name\" />\r\n</mat-form-field>\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"row\" >\r\n\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n <button mat-button mat-dialog-close=\"success\">Cancel</button>\r\n</mat-dialog-actions>\r\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { Role, CapItem } from \"../../classes/Classes\";\r\nimport { addRoleDialog } from \"./addRoleDialog.component\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n\r\n@Component({\r\n selector: \"spa-roles\",\r\n templateUrl: \"./roles.component.html\",\r\n styleUrls: [\"./roles.component.css\"],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n constructor(private httpService: HttpService, private router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capRoles.name);\r\n this.loadRoles();\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n }\r\n\r\n isProcessing = false;\r\n roles: Role[];\r\n\r\n appConfig = new AppConfig();\r\n\r\n loadRoles() {\r\n this.dataService.GetRole(\"all\", \"\").subscribe((apiResponse) => {\r\n this.roles = apiResponse;\r\n });\r\n }\r\n\r\n refresh() {\r\n this.loadRoles();\r\n }\r\n\r\n addRole() {\r\n const dialogRef = this.dialog.open(addRoleDialog, {\r\n width: \"1100px\",\r\n data: this.appConfig.capItems,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n updateRole(role: Role) {\r\n\r\n this.messageService.confirm(`UPDATE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"edit\").subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Updated\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n\r\n deleteRole(role: Role) {\r\n\r\n this.messageService.confirm(`DELETE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"delete\").subscribe((apiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Deleted\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n }\r\n}\r\n","<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n","import { DataServiceLib } from '../../services/datalib.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Profile, AppConfig, Register, ApiResponse } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n@Component({\r\n selector: 'spa-create-account',\r\n templateUrl: './create-account.component.html',\r\n styleUrls: ['./create-account.component.css']\r\n})\r\nexport class CreateAccountComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, public router: Router) { }\r\n\r\n ngOnInit() {\r\n this.appConfig = this.dataService.appConfig;\r\n this.loadRoles();\r\n }\r\n\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n isProcessing: boolean = false;\r\n register = new Register();\r\n confirmPassword: string;\r\n openProfile: boolean = true;\r\n\r\n authTypes = [\r\n { name: \"Local Authentication\", value: \"local\" },\r\n { name: \"AD Authentication\", value: \"AD\" }\r\n ]\r\n\r\n roles;\r\n\r\n check(){\r\n\r\n if ( this.register.authType != \"AD\") {\r\n\r\n return;\r\n }\r\n\r\n if (this.register.userName == \"\"){\r\n this.messageService.toast(\"Please enter UserName\")\r\n return;\r\n }\r\n\r\n this.dataService.CallApi({url: 'User/ad/' + this.register.userName}, '').subscribe((apiResponse : ApiResponse) => {\r\n\r\n if (apiResponse.success){\r\n this.register.firstName = apiResponse.data.firstName;\r\n this.register.lastName = apiResponse.data.surname;\r\n this.register.email = apiResponse.data.emailAddress;\r\n }\r\n else{\r\n this.messageService.toast(apiResponse.message)\r\n }\r\n\r\n })\r\n }\r\n\r\n loadRoles() {\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse;\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n }\r\n\r\n create() {\r\n\r\n if (this.register.authType == \"\") {\r\n this.messageService.toast(\"Choose Authentication Type\");\r\n return;\r\n }\r\n\r\n if (this.register.firstName == \"\") {\r\n this.messageService.toast(\"Enter First Name\");\r\n return;\r\n }\r\n\r\n if (this.register.lastName == \"\") {\r\n this.messageService.toast(\"Enter Last Name\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.register).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n if (this.openProfile) {\r\n this.viewProfile(this.register.userName);\r\n } else {\r\n // this.user = new User();\r\n this.register = new Register();\r\n this.confirmPassword = \"\";\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n viewProfile(userName: string) {\r\n\r\n this.dataService.tmpProfileuserName = userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n}\r\n","<h4>Create User</h4>\r\n\r\n<hr/>\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px; max-width: 70%;\">\r\n\r\n <spa-text id=\"txtUserName\" display=\"Username\" [(value)]=\"register.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-select id=\"cboAuth\" display=\"Authentication Type\" [options]=\"authTypes\" optionDisplay=\"name\" optionValue=\"value\" [(value)]=\"register.authType\" (valueChange)=\"check()\" ></spa-select>\r\n\r\n &nbsp;\r\n\r\n <spa-text id=\"txtFirstName\" display=\"FirstName\" [(value)]=\"register.firstName\" [readonly]=\"register.authType =='AD'\"></spa-text>\r\n\r\n <spa-text id=\"txtLastName\" display=\"LastName\" [(value)]=\"register.lastName\" [readonly]=\"register.authType =='AD'\"></spa-text>\r\n\r\n\r\n <spa-text *ngIf=\"register.authType == 'local'\" id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"register.password\" ></spa-text>\r\n\r\n <spa-text *ngIf=\"register.authType == 'local'\" id=\"txtConfirmPassword\" display=\"Confirm Password\" format=\"password\" [(value)]=\"confirmPassword\" ></spa-text>\r\n\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"register.email\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"register.roleID\"></spa-select>\r\n\r\n &nbsp;\r\n\r\n <spa-check display=\"Open profile after creation\" [(value)]=\"openProfile\"></spa-check>\r\n\r\n <div class=\"span-col-center\">\r\n <button id=\"btnCreate\" [disabled]=\"register.authType ==''\" mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Create</button>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { SettingsComponent } from '../components/settings/settings.component';\r\nimport { LogsComponent } from '../components/logs/logs.component';\r\nimport { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { UsersComponent } from \"../components/users/users.component\";\r\nimport { RolesComponent } from \"../components/roles/roles.component\";\r\nimport { addRoleDialog } from \"../components/roles/addRoleDialog.component\";\r\nimport { CreateAccountComponent } from \"../components/create-account/create-account.component\";\r\nimport { TinSpaModule } from '../tin-spa.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent,\r\n\r\n\r\n ],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent,\r\n\r\n\r\n ],\r\n})\r\nexport class SpaAdminModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { SignupComponent } from '../../components/signup/signup.component';\r\nimport { RecoverAccountComponent } from '../../components/recover-account/recover-account.component';\r\nimport { LoginComponent } from '../../components/login/login.component';\r\n\r\nconst routes: Routes = [\r\n\r\n { path: \"signup\", component: SignupComponent },\r\n { path: 'recover-account', component: RecoverAccountComponent },\r\n { path: 'login', component: LoginComponent },\r\n { path: '', redirectTo: 'login', pathMatch: 'full' },\r\n { path: '**', redirectTo: '' },\r\n\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class IndexRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IndexRoutingModule } from './index-routing.module';\r\nimport { SpaIndexModule } from '../spa-index.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n IndexRoutingModule,\r\n SpaIndexModule\r\n ]\r\n})\r\nexport class IndexModule { }\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { UsersComponent } from '../../components/users/users.component';\r\nimport { RolesComponent } from '../../components/roles/roles.component';\r\nimport { CreateAccountComponent } from '../../components/create-account/create-account.component';\r\nimport { LogsComponent } from '../../components/logs/logs.component';\r\nimport { SettingsComponent } from '../../components/settings/settings.component';\r\nimport { TenantSettingsComponent } from '../../components/tenant-settings/tenant-settings.component';\r\nimport { TenantsComponent } from '../../components/tenants/tenants.component';\r\nimport { BugComponent } from '../../components/bug/bug.component';\r\nimport { MembershipComponent } from '../../components/membership/membership.component';\r\nimport { PlansComponent } from '../../components/plans/plans.component';\r\nimport { CustomersComponent } from '../../components/customers/customers.component';\r\nimport { InventoryComponent } from '../../components/inventory/inventory.component';\r\nimport { SuppliersComponent } from '../../components/suppliers/suppliers.component';\r\nimport { AccountsComponent } from '../../components/accounts/accounts.component';\r\nimport { TransactionsComponent } from '../../components/transactions/transactions.component';\r\nimport { TasksComponent } from '../../components/tasks/tasks.component';\r\nimport { EmployeesComponent } from '../../components/employees/employees.component';\r\nimport { DepartmentsComponent } from '../../components/departments/departments.component';\r\nimport { PositionsComponent } from '../../components/positions/positions.component';\r\nimport { GradesComponent } from '../../components/grades/grades.component';\r\nimport { WelcomeComponent } from '../../components/welcome/welcome.component';\r\n\r\nconst routes: Routes = [\r\n { path: \"users\", component: UsersComponent},\r\n { path: \"roles\", component: RolesComponent},\r\n { path: \"create-account\", component: CreateAccountComponent },\r\n { path: \"logs\", component: LogsComponent},\r\n { path: \"settings\", component: SettingsComponent},\r\n\r\n { path: \"tenant-settings\", component: TenantSettingsComponent },\r\n { path: \"tenants\", component: TenantsComponent },\r\n { path: \"bug\", component: BugComponent },\r\n { path: \"membership\", component: MembershipComponent },\r\n { path: \"plans\", component: PlansComponent },\r\n\r\n { path: \"customers\", component: CustomersComponent },\r\n { path: \"inventory\", component: InventoryComponent },\r\n { path: \"suppliers\", component: SuppliersComponent },\r\n { path: \"accounts\", component: AccountsComponent },\r\n { path: \"transactions\", component: TransactionsComponent },\r\n { path: \"tasks\", component: TasksComponent },\r\n\r\n { path: \"employees\", component: EmployeesComponent },\r\n { path: \"departments\", component: DepartmentsComponent },\r\n { path: \"positions\", component: PositionsComponent },\r\n { path: \"grades\", component: GradesComponent },\r\n { path: \"welcome\", component: WelcomeComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AdminRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AdminRoutingModule } from './admin-routing.module';\r\nimport { SpaAdminModule } from '../spa-admin.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n AdminRoutingModule,\r\n SpaAdminModule\r\n ]\r\n})\r\nexport class AdminModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ChangePasswordComponent } from '../../components/change-password/change-password.component';\r\nimport { ProfileComponent } from '../../components/profile/profile.component';\r\n\r\nconst routes: Routes = [\r\n {path: \"change-password\", component: ChangePasswordComponent },\r\n {path: \"profile\", component: ProfileComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class UserRoutingModule { }\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UserRoutingModule } from './user-routing.module';\r\nimport { SpaUserModule } from '../spa-user.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n UserRoutingModule,\r\n SpaUserModule\r\n ]\r\n})\r\nexport class UserModule { }\r\n","/*\r\n * Public API Surface of tin-spa\r\n */\r\n\r\n\r\n\r\n//Services\r\nexport * from './lib/services/tin-spa.service';\r\nexport * from './lib/services/storage.service';\r\nexport * from './lib/services/message.service';\r\nexport * from './lib/services/export.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/datalib.service';\r\nexport * from './lib/services/log.service';\r\nexport * from './lib/services/http.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/dialog.service';\r\n\r\n\r\n//classes\r\nexport * from './lib/classes/Classes';\r\nexport * from './lib/classes/TinCore';\r\n\r\n\r\n//modules\r\nexport * from './lib/tin-spa.module';\r\nexport * from './lib/modules/spa-mat.module'\r\nexport * from './lib/modules/spa-index.module'\r\nexport * from './lib/modules/spa-user.module'\r\nexport * from './lib/modules/spa-admin.module'\r\nexport * from './lib/modules/index/index.module'\r\nexport * from './lib/modules/admin/admin.module'\r\nexport * from './lib/modules/user/user.module'\r\n\r\n//components\r\nexport * from './lib/components/tin-spa.component';\r\nexport * from './lib/components/tiles/tiles.component';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/components/date/date.component';\r\nexport * from './lib/components/text/text.component';\r\nexport * from './lib/components/label/label.component';\r\nexport * from './lib/components/datetime/datetime.component';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/attach/attach.component';\r\nexport * from './lib/components/check/check.component';\r\n// export * from './lib/components/viewer/viewer.component';\r\nexport * from './lib/components/money/money.component';\r\nexport * from './lib/components/chips/chips.component';\r\nexport * from './lib/components/activity/activity.component';\r\n// export * from './lib/components/html/html.component';\r\nexport * from './lib/components/option/option.component';\r\nexport * from './lib/components/steps/steps.component';\r\nexport * from './lib/components/filter/filter.component';\r\nexport * from './lib/components/message/messageDialog.component';\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/users/users.component';\r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/nav-menu/nav-menu.component';\r\nexport * from './lib/components/roles/roles.component';\r\nexport * from './lib/components/roles/addRoleDialog.component';\r\nexport * from './lib/components/signup/signup.component';\r\nexport * from './lib/components/change-password/change-password.component';\r\nexport * from './lib/components/profile/profile.component';\r\nexport * from './lib/components/recover-account/recover-account.component';\r\nexport * from './lib/components/create-account/create-account.component';\r\n// export * from './lib/components/timeout/timeout.component'\r\n\r\nexport * from './lib/components/logs/logs.component';\r\nexport * from './lib/components/settings/settings.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/table/detailsDialog.component';\r\nexport * from './lib/components/form/form.component';\r\nexport * from './lib/components/number/number.component';\r\nexport * from './lib/components/search/search.component';\r\nexport * from './lib/components/viewer/viewer.component';\r\nexport * from './lib/components/viewer/viewerDialog.component';\r\n\r\nexport * from './lib/components/customers/customers.component';\r\nexport * from './lib/components/inventory/inventory.component';\r\nexport * from './lib/components/accounts/accounts.component';\r\nexport * from './lib/components/suppliers/suppliers.component';\r\n\r\nexport * from './lib/components/list-dialog/list-dialog.component';\r\nexport * from './lib/components/transactions/transactions.component';\r\nexport * from './lib/components/tasks/tasks.component';\r\n\r\nexport * from './lib/components/departments/departments.component';\r\nexport * from './lib/components/employees/employees.component';\r\nexport * from './lib/components/positions/positions.component';\r\nexport * from './lib/components/grades/grades.component';\r\nexport * from './lib/components/welcome/welcome.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i1","i3.StorageService","i4.HttpService","i5.MessageService","i6.LogService","i1.HttpService","i8","i9","i1.MessageService","i3","i7","i2.DialogService","i5","i6","i8.CurrencyInputMaskDirective","i6.TextComponent","i7.DateComponent","i8.SelectComponent","i1.DataServiceLib","i2.MessageService","i9.CamelToWordsPipe","i1.LoaderService","i2.AuthService","i6.DataServiceLib","i10","i13","i15","i17.LoaderComponent","i3.AuthService","i5.LogService","i6.ChipsComponent","i5.ChipsComponent","i2.DataServiceLib","i5.TextComponent","i6.CheckComponent","i8.LabelComponent","i9.SelectComponent","i10.MoneyComponent","i11.AttachComponent","i12.NumberComponent","i13.ViewerComponent","i14.CamelToWordsPipe","i6.ButtonService","i7.DialogService","i11","i12","i13.FormComponent","i14.AlertComponent","i5.OptionComponent","i6.CamelToWordsPipe","i1.ButtonService","i4.FilterComponent","i5.TilesComponent","i7.CheckComponent","i5.ButtonService","i6.DialogService","i7.TableConfigService","i8.ConditionService","i12.SearchComponent","i13.TableHeaderComponent","i14.TableRowComponent","i15.TableActionComponent","i16.CamelToWordsPipe","i14.TableInternalComponent","i15.FormComponent","i16.AlertComponent","i7.SelectComponent","i4.TableComponent","i7.TextComponent","i10.TableComponent","i11.InvitationsTableComponent","i7.NumberComponent","i8.TableComponent","i3.MessageService","i4.AuthService","i10.FilterComponent","i8.DateComponent","i9.FilterComponent","i3.TableComponent","i8.InvitationsTableComponent","i2.StorageService","i4.MessageService","i5.DataServiceLib","i6.AuthService","i7.LogService","i14","i16.TextComponent","i3.DataServiceLib","i3.HttpService","i8.TextComponent","i5.AuthService","i9.TextComponent","i10.SelectComponent","i1.AuthService","i6.FilterComponent","i4.DataServiceLib","i6.MessageService","i13.FilterComponent","i10.CheckComponent","routes"],"mappings":"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GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,Q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"}
1
+ {"version":3,"file":"tin-spa.mjs","sources":["../../../projects/tin-spa/src/lib/services/tin-spa.service.ts","../../../projects/tin-spa/src/lib/services/storage.service.ts","../../../projects/tin-spa/src/lib/components/message/messageDialog.component.ts","../../../projects/tin-spa/src/lib/components/message/messageDialog.component.html","../../../projects/tin-spa/src/lib/services/message.service.ts","../../../projects/tin-spa/src/lib/services/export.service.ts","../../../projects/tin-spa/src/lib/classes/TinCore.ts","../../../projects/tin-spa/src/lib/classes/Classes.ts","../../../projects/tin-spa/src/lib/services/http.service.ts","../../../projects/tin-spa/src/lib/services/log.service.ts","../../../projects/tin-spa/src/lib/services/auth.service.ts","../../../projects/tin-spa/src/lib/services/datalib.service.ts","../../../projects/tin-spa/src/lib/services/loader.service.ts","../../../projects/tin-spa/src/lib/services/dialog.service.ts","../../../projects/tin-spa/src/lib/components/tin-spa.component.ts","../../../projects/tin-spa/src/lib/modules/spa-mat.module.ts","../../../projects/tin-spa/src/lib/components/text/text.component.ts","../../../projects/tin-spa/src/lib/components/text/text.component.html","../../../projects/tin-spa/src/lib/components/check/check.component.ts","../../../projects/tin-spa/src/lib/components/check/check.component.html","../../../projects/tin-spa/src/lib/components/date/date.component.ts","../../../projects/tin-spa/src/lib/components/date/date.component.html","../../../projects/tin-spa/src/lib/components/datetime/datetime.component.ts","../../../projects/tin-spa/src/lib/components/datetime/datetime.component.html","../../../projects/tin-spa/src/lib/components/label/label.component.ts","../../../projects/tin-spa/src/lib/components/label/label.component.html","../../../projects/tin-spa/src/lib/components/select/select.component.ts","../../../projects/tin-spa/src/lib/components/select/select.component.html","../../../projects/tin-spa/src/lib/components/activity/activity.component.ts","../../../projects/tin-spa/src/lib/components/activity/activity.component.html","../../../projects/tin-spa/src/lib/components/filter/filter.component.ts","../../../projects/tin-spa/src/lib/components/filter/filter.component.html","../../../projects/tin-spa/src/lib/components/money/currency-input-mask.directive.ts","../../../projects/tin-spa/src/lib/components/money/money.component.ts","../../../projects/tin-spa/src/lib/components/money/money.component.html","../../../projects/tin-spa/src/lib/components/option/option.component.ts","../../../projects/tin-spa/src/lib/components/option/option.component.html","../../../projects/tin-spa/src/lib/pipes/camelToWords.pipe.ts","../../../projects/tin-spa/src/lib/components/tiles/tiles.component.ts","../../../projects/tin-spa/src/lib/components/tiles/tiles.component.html","../../../projects/tin-spa/src/lib/components/steps/steps.component.ts","../../../projects/tin-spa/src/lib/components/steps/steps.component.html","../../../projects/tin-spa/src/lib/components/attach/attach.component.ts","../../../projects/tin-spa/src/lib/components/attach/attach.component.html","../../../projects/tin-spa/src/lib/components/chips/chips.component.ts","../../../projects/tin-spa/src/lib/components/chips/chips.component.html","../../../projects/tin-spa/src/lib/components/loader/loader.component.ts","../../../projects/tin-spa/src/lib/components/loader/loader.component.html","../../../projects/tin-spa/src/lib/components/nav-menu/nav-menu.component.ts","../../../projects/tin-spa/src/lib/components/nav-menu/nav-menu.component.html","../../../projects/tin-spa/src/lib/services/loader-interceptor.service.ts","../../../projects/tin-spa/src/lib/components/money/currency-input-mask.module.ts","../../../projects/tin-spa/src/lib/services/button.service.ts","../../../projects/tin-spa/src/lib/components/number/number.component.ts","../../../projects/tin-spa/src/lib/components/number/number.component.html","../../../projects/tin-spa/src/lib/components/viewer/viewerDialog.component.ts","../../../projects/tin-spa/src/lib/components/viewer/viewerDialog.component.html","../../../projects/tin-spa/src/lib/components/viewer/viewer.component.ts","../../../projects/tin-spa/src/lib/components/viewer/viewer.component.html","../../../projects/tin-spa/src/lib/components/form/form.component.ts","../../../projects/tin-spa/src/lib/components/form/form.component.html","../../../projects/tin-spa/src/lib/components/alert/alert.component.ts","../../../projects/tin-spa/src/lib/components/alert/alert.component.html","../../../projects/tin-spa/src/lib/components/table-internal/detailsDialog-internal.component.ts","../../../projects/tin-spa/src/lib/components/table-internal/detailsDialog-internal.component.html","../../../projects/tin-spa/src/lib/services/table-config.service.ts","../../../projects/tin-spa/src/lib/services/condition.service.ts","../../../projects/tin-spa/src/lib/components/search/search.component.ts","../../../projects/tin-spa/src/lib/components/search/search.component.html","../../../projects/tin-spa/src/lib/components/table-header/table-header.component.ts","../../../projects/tin-spa/src/lib/components/table-header/table-header.component.html","../../../projects/tin-spa/src/lib/components/table-row/table-row.component.ts","../../../projects/tin-spa/src/lib/components/table-row/table-row.component.html","../../../projects/tin-spa/src/lib/components/table-action/table-action.component.ts","../../../projects/tin-spa/src/lib/components/table-action/table-action.component.html","../../../projects/tin-spa/src/lib/components/table-internal/table-internal.component.ts","../../../projects/tin-spa/src/lib/components/table-internal/table-internal.component.html","../../../projects/tin-spa/src/lib/components/table/detailsDialog.component.ts","../../../projects/tin-spa/src/lib/components/table/detailsDialog.component.html","../../../projects/tin-spa/src/lib/components/table/table.component.ts","../../../projects/tin-spa/src/lib/components/table/table.component.html","../../../projects/tin-spa/src/lib/components/tenant-settings/inviteDialog.component.ts","../../../projects/tin-spa/src/lib/components/tenant-settings/inviteDialog.component.html","../../../projects/tin-spa/src/lib/components/invitations-table/invitations-table.component.ts","../../../projects/tin-spa/src/lib/components/invitations-table/invitations-table.component.html","../../../projects/tin-spa/src/lib/components/tenant-settings/tenant-settings.component.ts","../../../projects/tin-spa/src/lib/components/tenant-settings/tenant-settings.component.html","../../../projects/tin-spa/src/lib/components/tenants/tenants.component.ts","../../../projects/tin-spa/src/lib/components/tenants/tenants.component.html","../../../projects/tin-spa/src/lib/components/bug/bug.component.ts","../../../projects/tin-spa/src/lib/components/bug/bug.component.html","../../../projects/tin-spa/src/lib/components/membership/membership.component.ts","../../../projects/tin-spa/src/lib/components/membership/membership.component.html","../../../projects/tin-spa/src/lib/components/plans/plans.component.ts","../../../projects/tin-spa/src/lib/components/plans/plans.component.html","../../../projects/tin-spa/src/lib/components/customers/customers.component.ts","../../../projects/tin-spa/src/lib/components/customers/customers.component.html","../../../projects/tin-spa/src/lib/components/inventory/quantityDialog.component.ts","../../../projects/tin-spa/src/lib/components/inventory/quantityDialog.component.html","../../../projects/tin-spa/src/lib/components/list-dialog/list-dialog.component.ts","../../../projects/tin-spa/src/lib/components/list-dialog/list-dialog.component.html","../../../projects/tin-spa/src/lib/components/inventory/inventory.component.ts","../../../projects/tin-spa/src/lib/components/inventory/inventory.component.html","../../../projects/tin-spa/src/lib/components/accounts/accountDialog.component.ts","../../../projects/tin-spa/src/lib/components/accounts/accountDialog.component.html","../../../projects/tin-spa/src/lib/components/accounts/accounts.component.ts","../../../projects/tin-spa/src/lib/components/accounts/accounts.component.html","../../../projects/tin-spa/src/lib/components/suppliers/suppliers.component.ts","../../../projects/tin-spa/src/lib/components/suppliers/suppliers.component.html","../../../projects/tin-spa/src/lib/components/transactions/transactDialog.component.ts","../../../projects/tin-spa/src/lib/components/transactions/transactDialog.component.html","../../../projects/tin-spa/src/lib/components/transactions/transactions.component.ts","../../../projects/tin-spa/src/lib/components/transactions/transactions.component.html","../../../projects/tin-spa/src/lib/components/tasks/tasks.component.ts","../../../projects/tin-spa/src/lib/components/tasks/tasks.component.html","../../../projects/tin-spa/src/lib/components/departments/departments.component.ts","../../../projects/tin-spa/src/lib/components/departments/departments.component.html","../../../projects/tin-spa/src/lib/components/employees/employees.component.ts","../../../projects/tin-spa/src/lib/components/employees/employees.component.html","../../../projects/tin-spa/src/lib/components/positions/positions.component.ts","../../../projects/tin-spa/src/lib/components/positions/positions.component.html","../../../projects/tin-spa/src/lib/components/grades/grades.component.ts","../../../projects/tin-spa/src/lib/components/grades/grades.component.html","../../../projects/tin-spa/src/lib/components/welcome/welcome.component.ts","../../../projects/tin-spa/src/lib/components/welcome/welcome.component.html","../../../projects/tin-spa/src/lib/components/invitations/invitations.component.ts","../../../projects/tin-spa/src/lib/components/invitations/invitations.component.html","../../../projects/tin-spa/src/lib/components/notifications/notifications.component.ts","../../../projects/tin-spa/src/lib/components/notifications/notifications.component.html","../../../projects/tin-spa/src/lib/tin-spa.module.ts","../../../projects/tin-spa/src/lib/components/login/login.component.ts","../../../projects/tin-spa/src/lib/components/login/login.component.html","../../../projects/tin-spa/src/lib/components/signup/signup.component.ts","../../../projects/tin-spa/src/lib/components/signup/signup.component.html","../../../projects/tin-spa/src/lib/components/recover-account/recover-account.component.ts","../../../projects/tin-spa/src/lib/components/recover-account/recover-account.component.html","../../../projects/tin-spa/src/lib/modules/spa-index.module.ts","../../../projects/tin-spa/src/lib/components/change-password/change-password.component.ts","../../../projects/tin-spa/src/lib/components/change-password/change-password.component.html","../../../projects/tin-spa/src/lib/components/profile/profile.component.ts","../../../projects/tin-spa/src/lib/components/profile/profile.component.html","../../../projects/tin-spa/src/lib/modules/spa-user.module.ts","../../../projects/tin-spa/src/lib/components/settings/settings.component.ts","../../../projects/tin-spa/src/lib/components/settings/settings.component.html","../../../projects/tin-spa/src/lib/components/logs/logs.component.ts","../../../projects/tin-spa/src/lib/components/logs/logs.component.html","../../../projects/tin-spa/src/lib/components/users/users.component.ts","../../../projects/tin-spa/src/lib/components/users/users.component.html","../../../projects/tin-spa/src/lib/components/roles/addRoleDialog.component.ts","../../../projects/tin-spa/src/lib/components/roles/addRoleDialog.component.html","../../../projects/tin-spa/src/lib/components/roles/roles.component.ts","../../../projects/tin-spa/src/lib/components/roles/roles.component.html","../../../projects/tin-spa/src/lib/components/create-account/create-account.component.ts","../../../projects/tin-spa/src/lib/components/create-account/create-account.component.html","../../../projects/tin-spa/src/lib/modules/spa-admin.module.ts","../../../projects/tin-spa/src/lib/modules/index/index-routing.module.ts","../../../projects/tin-spa/src/lib/modules/index/index.module.ts","../../../projects/tin-spa/src/lib/modules/admin/admin-routing.module.ts","../../../projects/tin-spa/src/lib/modules/admin/admin.module.ts","../../../projects/tin-spa/src/lib/modules/user/user-routing.module.ts","../../../projects/tin-spa/src/lib/modules/user/user.module.ts","../../../projects/tin-spa/src/public-api.ts","../../../projects/tin-spa/src/tin-spa.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TinSpaService {\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor() { }\r\n\r\n // Store the value\r\n async store(storageKey: string, value: any) {\r\n const encryptedValue = btoa(escape(JSON.stringify(value)));\r\n // const encryptedValue = JSON.stringify(value);\r\n await localStorage.setItem(storageKey, encryptedValue);\r\n }\r\n\r\n // Get the value\r\n async get(storageKey: string) {\r\n const ret = await localStorage.getItem(storageKey);\r\n return JSON.parse(unescape(atob(ret)));\r\n // return JSON.parse(ret);\r\n }\r\n\r\n // Remove\r\n async removeStorageItem(storageKey: string) {\r\n await localStorage.removeItem(storageKey);\r\n }\r\n\r\n // Clear storage\r\n async clear() {\r\n await localStorage.clear();\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\n\r\n\r\n@Component({\r\n selector: 'lib-app-message',\r\n templateUrl: './messageDialog.component.html'\r\n})\r\n\r\nexport class messageDialog implements OnInit {\r\n\r\n constructor(private dialogRef: MatDialogRef<messageDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n\r\n ngOnInit() {\r\n\r\n this.messageType = this.data.type\r\n this._messageSubject = this.data.subject;\r\n this._messageDetails = this.data.details;\r\n\r\n }\r\n\r\n messageType;\r\n _messageSubject;\r\n _messageDetails;\r\n\r\n response(resp: string) {\r\n\r\n this.dialogRef.close(resp);\r\n\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n"," <h2 mat-dialog-title>\r\n\r\n <div class=\"tin-between\">\r\n <mat-label *ngIf=\"messageType=='confirm'\">Confirm</mat-label>\r\n <mat-label *ngIf=\"messageType=='info'\">Information</mat-label>\r\n <mat-label *ngIf=\"messageType=='error'\">Error</mat-label>\r\n\r\n <mat-icon *ngIf=\"messageType=='confirm'\" >question_mark</mat-icon>\r\n <mat-icon *ngIf=\"messageType=='info'\" style=\"color: steelblue;\">info</mat-icon>\r\n </div>\r\n\r\n\r\n </h2>\r\n\r\n <mat-dialog-content >\r\n\r\n <!-- Confirm -->\r\n <div *ngIf=\"messageType=='confirm'\" class=\"alert alert-secondary\" role=\"alert\">\r\n {{_messageDetails}}\r\n </div>\r\n\r\n <!-- Information -->\r\n <div *ngIf=\"messageType=='info'\" class=\"alert alert-secondary\" role=\"alert\">\r\n\r\n <h3 *ngIf=\"_messageSubject && _messageSubject != ''\">{{_messageSubject}}</h3>\r\n {{_messageDetails}}\r\n\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"messageType=='error'\">\r\n\r\n {{_messageDetails}}\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n\r\n <button id=\"btnYes\" mat-stroked-button style=\"color: green;\" *ngIf=\"messageType=='confirm'\" (click)=\"response('yes')\" cdkFocusInitial>Yes</button>\r\n\r\n <button id=\"btnNo\" mat-stroked-button style=\"color: red;\" *ngIf=\"messageType=='confirm'\" (click)=\"response('no')\" >No</button>\r\n\r\n <button id=\"btnOK\" mat-stroked-button *ngIf=\"messageType=='info' || messageType=='error'\" color=\"primary\" (click)=\"response('ok')\" cdkFocusInitial>OK</button>\r\n\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { messageDialog } from \"../components/message/messageDialog.component\";\r\nimport { Observable, of } from 'rxjs';\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MessageService {\r\n constructor(private snackBar: MatSnackBar, public dialog: MatDialog) { }\r\n\r\n public toast(msg: string) {\r\n this.snackBar.open(msg, \"OK\", { duration: 5000 });\r\n }\r\n\r\n public info(details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, details },\r\n });\r\n\r\n }\r\n\r\n public infoWithSubject(subject: string, details: string) {\r\n\r\n let type = \"info\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public error(details: string) {\r\n\r\n let type = \"error\";\r\n let subject: \"\";\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"600px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n }\r\n\r\n public confirm(msg: string): Observable<any> {\r\n\r\n let type = \"confirm\";\r\n let subject = \"\";\r\n let details = msg\r\n\r\n const dialogRef = this.dialog.open(messageDialog, {\r\n width: \"400px\",\r\n data: { type, subject, details },\r\n });\r\n\r\n return dialogRef.afterClosed().pipe(mergeMap((result) => {\r\n\r\n return of(result);\r\n\r\n }\r\n\r\n ));\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n// import * as FileSaver from 'file-saver';\r\n// import * as XLSX from 'xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExportService {\r\n\r\n constructor() { }\r\n\r\n // fileType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n // fileExtension = '.xlsx';\r\n\r\n // public exportExcel(jsonData: any[], fileName: string): void {\r\n\r\n // const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(jsonData);\r\n // const wb: XLSX.WorkBook = { Sheets: { 'data': ws }, SheetNames: ['data'] };\r\n // const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n // this.saveExcelFile(excelBuffer, fileName);\r\n // }\r\n\r\n // private saveExcelFile(buffer: any, fileName: string): void {\r\n // const data: Blob = new Blob([buffer], { type: this.fileType });\r\n // FileSaver.saveAs(data, fileName + this.fileExtension);\r\n // }\r\n}\r\n","import { DetailsDialogConfig, DetailsSource, Field, FormConfig } from \"./Classes\";\r\n\r\nexport class Core {\r\n\r\n\r\n public static deepClone(obj) {\r\n if (obj === null || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n const arrCopy = [];\r\n obj.forEach((item, index) => {\r\n arrCopy[index] = this.deepClone(item);\r\n });\r\n return arrCopy;\r\n }\r\n\r\n const objCopy = {};\r\n Object.keys(obj).forEach(key => {\r\n objCopy[key] = this.deepClone(obj[key]);\r\n });\r\n return objCopy;\r\n }\r\n\r\n\r\n\r\n public static camelToWords(value: string): string {\r\n if (!value) return value;\r\n\r\n if (typeof value !== 'string') return value;\r\n\r\n if (value.length == 0) return value;\r\n\r\n let v = value.charAt(0).toUpperCase() + value.substring(1)\r\n return v.replace(/([A-Z]+)*([A-Z][a-z])/g, \"$1 $2\");\r\n }\r\n\r\n public static generateObject(fields: Field[]) {\r\n\r\n let data = {};\r\n fields.forEach(field => {\r\n\r\n if (field.type != 'section' && field.type != 'blank' ){\r\n data[field.name] = this.getInitialValue(field);\r\n }\r\n\r\n });\r\n\r\n // console.log(data)\r\n\r\n return data;\r\n }\r\n\r\n public static resetObject(fields: Field[], data) {\r\n\r\n fields.forEach(field => {\r\n if (field.type != 'section' && field.type != 'blank') {\r\n data[field.name] = this.getInitialValue(field);\r\n }\r\n });\r\n\r\n }\r\n\r\n public static testVisible(config : FormConfig, data, f: Field): boolean {\r\n\r\n if (f.hidden) return false;\r\n\r\n if (config.mode == 'create' && f.hideOnCreate) {\r\n return false;\r\n }\r\n\r\n\r\n if (config.mode != 'create' && f.hideOnExists) {\r\n return false;\r\n }\r\n\r\n if (f.hiddenCondition) {\r\n return !f.hiddenCondition(data);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public static validateObject(fields: Field[], data): string {\r\n\r\n console.log(\"Validations\")\r\n\r\n for (let field of fields) {\r\n\r\n if (field.type == 'file' || field.type == 'file-view' || field.type == 'blank' || field.type == 'section' ) continue\r\n\r\n\r\n\r\n let name = field.alias ?? this.camelToWords(field.name);\r\n let d = data[field.name];\r\n\r\n\r\n console.log(name + ' ' + d)\r\n\r\n if (field.required){\r\n\r\n if (d == undefined || d == null) return `${name} is required`;\r\n\r\n if (field.type == 'text'){\r\n\r\n if (d == '') return `Please enter ${name}`;\r\n\r\n if (field.min && d.length < field.min) return `Minimum ${name} length is ${field.min}`\r\n\r\n if (field.max && d.length > field.max) return `Maximum ${name} length is ${field.max}`\r\n\r\n }\r\n else if (field.type == 'number' || field.type == 'money' || field.type == 'date'){\r\n\r\n if (field.min && d < field.min) return `Minimum ${name} is ${field.min}`\r\n\r\n if (field.max && d > field.max) return `Maximum ${name} is ${field.max}`\r\n\r\n }\r\n else if (field.type == 'select') {\r\n\r\n if (typeof(d) == 'string' && d == '') return `Please select ${name}`;\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n return '';\r\n }\r\n\r\n private static getInitialValue(field: Field) {\r\n\r\n if (field.defaultValue){\r\n\r\n if (field.type == 'date' || field.type == 'datetime' && field.defaultValue == 'now') return this.nowDate(true);\r\n\r\n return field.defaultValue;\r\n }\r\n\r\n if (field.type == 'select' && (field.hidden || field.hideOnCreate)) return 0;\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return '';\r\n case 'money':\r\n return 0;\r\n case 'number':\r\n return 0;\r\n case 'date':\r\n return this.nowDate(true);\r\n case 'checkbox':\r\n return false;\r\n case 'select':\r\n return null;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n public static getClone(x) {\r\n return this.deepClone(x);\r\n }\r\n\r\n public static getNumber(value: string) {\r\n\r\n if (value == null || value == \"\") {\r\n return 0;\r\n }\r\n\r\n const onlyNumbers = value.replace(/[^\\d.-]/g, '');\r\n return onlyNumbers\r\n }\r\n\r\n public static getFirstDayOfMonth() {\r\n const date = new Date();\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n }\r\n\r\n public static emailIsValid(email) {\r\n // return /\\S+@\\S+\\.\\S+/.test(email)\r\n return false;\r\n }\r\n\r\n public static isValidUNCPath(path: string) {\r\n // return /\\\\\\\\([a-zA-Z0-9_.$●-]+)\\\\([a-zA-Z0-9_.$●-]+).*/.test(path)\r\n return false;\r\n }\r\n\r\n public static isValidDate(date) {\r\n\r\n var parsedDate = Date.parse(date);\r\n\r\n\r\n if (isNaN(date) && !isNaN(parsedDate)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n public static isValidEmailList(list: string) {\r\n\r\n if (list.includes(\";\")) {\r\n\r\n let emails = list.split(\";\")\r\n\r\n for (var email of emails) {\r\n if (this.emailIsValid(email) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n } else {\r\n\r\n if (this.emailIsValid(list) == false) {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n return true;\r\n\r\n }\r\n\r\n public static nullDate = \"01 Jan 1969\"\r\n\r\n public static isNumber(value: string | number): boolean {\r\n return ((value != null) &&\r\n (value !== '') &&\r\n !isNaN(Number(value.toString())));\r\n }\r\n\r\n public static getDiff(startDate, endDate = Date()) {\r\n\r\n var eventStartTime = new Date(startDate);\r\n var eventEndTime = new Date(endDate);\r\n var milliseconds = eventEndTime.valueOf() - eventStartTime.valueOf();\r\n\r\n function numberEnding(number: number) {\r\n\r\n if (number.toFixed() == '1') {\r\n return ''\r\n } else {\r\n return 's';\r\n }\r\n\r\n }\r\n\r\n var minutes = (milliseconds / (1000 * 60));\r\n\r\n var hours: number = (milliseconds / (1000 * 60 * 60));\r\n\r\n var days = (milliseconds / (1000 * 60 * 60 * 24));\r\n\r\n var weeks: number = (milliseconds / (1000 * 60 * 60 * 24 * 7));\r\n\r\n var months = (milliseconds / (1000 * 60 * 60 * 24 * 7 * 4));\r\n\r\n var years = (milliseconds / (1000 * 60 * 60 * 24 * 365));\r\n\r\n\r\n if (years >= 1) {\r\n\r\n return years.toFixed() + ' year' + numberEnding(years);\r\n\r\n } else if (months >= 1) {\r\n\r\n return months.toFixed() + ' month' + numberEnding(months);\r\n\r\n } else if (weeks >= 1) {\r\n\r\n return weeks.toFixed() + ' week' + numberEnding(weeks);\r\n\r\n } else if (days >= 1) {\r\n\r\n return days.toFixed() + ' day' + numberEnding(days);\r\n\r\n } else if (hours >= 1) {\r\n\r\n return hours.toFixed() + ' hour' + numberEnding(hours);\r\n\r\n } else if (minutes >= 1) {\r\n\r\n return minutes.toFixed() + ' minute' + numberEnding(minutes);\r\n\r\n } else if (milliseconds >= (-1000 * 60)) {\r\n\r\n return 'a minute';\r\n\r\n } else {\r\n\r\n return 'N/A';\r\n }\r\n\r\n }\r\n\r\n\r\n public static nowDate(NoTime: boolean = false) {\r\n\r\n if (NoTime) {\r\n return this.getFormatedDate(Date(), true);\r\n } else {\r\n return this.getFormatedDate(Date());\r\n }\r\n }\r\n\r\n public static getFormatedDate(dateString: string, NoTime: boolean = false) {\r\n\r\n let d: Date = new Date(dateString);\r\n d.setHours(d.getHours() + 2);\r\n\r\n if (NoTime == true) {\r\n return d.toISOString().split('T')[0];\r\n } else {\r\n return d.toISOString().split('.')[0];\r\n }\r\n\r\n }\r\n\r\n public static getFormatedDate2(d : Date, NoTime: boolean = false) {\r\n\r\n\r\n d.setHours(d.getHours() + 2);\r\n\r\n if (NoTime == true) {\r\n return d.toISOString().split('T')[0];\r\n } else {\r\n return d.toISOString().split('.')[0];\r\n }\r\n\r\n }\r\n\r\n public static getBusinessDatesCount(startDate: string, endDate: string) {\r\n var count = 0;\r\n var _startDate = new Date(startDate);\r\n var _endDate = new Date(endDate);\r\n\r\n var curDate = _startDate;\r\n\r\n while (curDate < _endDate) {\r\n var dayOfWeek = curDate.getDay();\r\n if (!(dayOfWeek == 6 || dayOfWeek == 0)) count++;\r\n curDate.setDate(curDate.getDate() + 1);\r\n }\r\n\r\n return count;\r\n }\r\n\r\n}\r\n\r\n\r\nexport class DetailsDialogProcessor {\r\n\r\n public static processDetailsConfig(detailsConfig: DetailsDialogConfig, row: any): DetailsDialogConfig {\r\n\r\n const updatedDetailsConfig : DetailsDialogConfig = Core.getClone(detailsConfig);\r\n updatedDetailsConfig.details = row;\r\n\r\n updatedDetailsConfig.formConfig.mode = updatedDetailsConfig.mode ?? \"view\";\r\n\r\n if (updatedDetailsConfig.heroField && row) {\r\n updatedDetailsConfig.heroValue = row[updatedDetailsConfig.heroField];\r\n }\r\n\r\n\r\n function updateTableConfig(tableConfig) {\r\n tableConfig.heroField = updatedDetailsConfig?.heroField;\r\n tableConfig.heroValue = updatedDetailsConfig?.heroValue;\r\n // tableConfig.setHero = updatedDetailsConfig.setHero;\r\n tableConfig.searchConfig = null;\r\n tableConfig.tileConfig = null;\r\n tableConfig.parentData = updatedDetailsConfig.details;\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfig) {\r\n updateTableConfig(updatedDetailsConfig.tableConfig);\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfigs) {\r\n updatedDetailsConfig.tableConfigs.forEach(updateTableConfig);\r\n }\r\n\r\n function transformLoadUrl(tableConfig) {\r\n if (tableConfig.loadAction && tableConfig.loadCriteria && tableConfig.loadIDField) {\r\n tableConfig.loadAction.url = `${tableConfig.loadAction.url.split('/')[0]}/${tableConfig.loadCriteria}/${updatedDetailsConfig.details[tableConfig.loadIDField]}`;\r\n console.log(\"Transformed\");\r\n } else {\r\n console.log(\"NOT Transformed\");\r\n }\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfig) {\r\n transformLoadUrl(updatedDetailsConfig.tableConfig);\r\n }\r\n\r\n if (updatedDetailsConfig.tableConfigs) {\r\n updatedDetailsConfig.tableConfigs.forEach(transformLoadUrl);\r\n }\r\n\r\n return updatedDetailsConfig;\r\n }\r\n\r\n\r\n static initializeConfigs(detailsConfig: DetailsDialogConfig) {\r\n const tableConfig = detailsConfig.tableConfig;\r\n const tableConfigs = detailsConfig.tableConfigs;\r\n const formConfig = detailsConfig.formConfig;\r\n const buttons = detailsConfig.buttons;\r\n formConfig.mode = formConfig.mode ?? \"view\";\r\n return { tableConfig, tableConfigs, formConfig, buttons };\r\n }\r\n\r\n static setHeroValue(detailsConfig: DetailsDialogConfig, details: any) {\r\n\r\n // console.log(detailsConfig)\r\n\r\n if ((detailsConfig.formConfig.mode == \"create\" ) && detailsConfig.heroField && detailsConfig.heroValue) {\r\n details[detailsConfig.heroField] = detailsConfig.heroValue;\r\n return;\r\n }\r\n\r\n // if (detailsConfig.config.mode != \"create\" && detailsConfig.heroField) {\r\n // detailsConfig.heroValue = details[detailsConfig.heroField];\r\n // }\r\n\r\n\r\n // console.log(detailsConfig)\r\n }\r\n\r\n static handleFormMode(detailsConfig: DetailsDialogConfig, formConfig: FormConfig,) {\r\n let details;\r\n let action;\r\n let loadByAction = false;\r\n\r\n if (formConfig.mode === \"create\") {\r\n\r\n details = Core.generateObject(formConfig.fields);\r\n\r\n // this.setHeroValue(detailsConfig, details);\r\n\r\n } else {\r\n let resp = this.loadDetailsData(detailsConfig, formConfig);\r\n details = resp.details;\r\n\r\n action = resp.action;\r\n loadByAction = resp.loadByAction;\r\n }\r\n\r\n return { details, loadByAction, action };\r\n }\r\n\r\n private static loadDetailsData(detailsConfig: DetailsDialogConfig, formConfig: FormConfig) {\r\n\r\n let details;\r\n let action;\r\n let loadByAction = false;\r\n\r\n console.log(\"Loading Details Data\" )\r\n console.log(detailsConfig)\r\n console.log(formConfig)\r\n\r\n\r\n\r\n //Choose source\r\n if (detailsConfig.detailsSource == DetailsSource.Row) {\r\n\r\n console.log(\"Details Data Row config\")\r\n details = detailsConfig.details;\r\n\r\n } else if (detailsConfig.detailsSource == DetailsSource.Url) {\r\n console.log(\"Details Data Url config\")\r\n action = this.loadDetailsFromUrl(detailsConfig, formConfig);\r\n loadByAction = true;\r\n\r\n } else {\r\n\r\n console.log(\"Details Data Else\")\r\n if (detailsConfig.details && !detailsConfig.heroField && !detailsConfig.heroValue) {\r\n\r\n console.log(\"using form data from details\");\r\n console.log(detailsConfig);\r\n details = detailsConfig.details;\r\n\r\n } else if (formConfig.loadAction) {\r\n\r\n action = this.loadDetailsFromUrl(detailsConfig, formConfig);\r\n loadByAction = true;\r\n\r\n } else {\r\n console.log(\"auto data source failed to pick, trying source config\");\r\n\r\n }\r\n }\r\n\r\n return { details, loadByAction, action };\r\n }\r\n\r\n private static loadDetailsFromUrl(detailsConfig: DetailsDialogConfig, formConfig: FormConfig) {\r\n let action;\r\n\r\n if (formConfig.loadAction) {\r\n\r\n if (detailsConfig.heroField && detailsConfig.details) {\r\n\r\n console.log(\"using form data from url + ID Field \" + detailsConfig.heroField);\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.details[detailsConfig.heroField]}` };\r\n\r\n } else if (detailsConfig.heroValue) {\r\n\r\n console.log(\"using form data from url + Solid ID\");\r\n action = { url: `${formConfig.loadAction.url}/${detailsConfig.heroValue}` };\r\n\r\n }\r\n else{\r\n console.log(\"url source failed : setup hero field or hero value\");\r\n }\r\n\r\n }else{\r\n console.log(\"No load action set\");\r\n }\r\n\r\n\r\n\r\n return action;\r\n }\r\n\r\n static setFileField(formConfig: FormConfig) {\r\n return formConfig.fields.find(x => x.type === 'file');\r\n }\r\n\r\n\r\n static setupButtons(formConfig: FormConfig, buttons: any) {\r\n let extraButtons, createButton, editButton, deleteButton;\r\n\r\n if (buttons) {\r\n if (formConfig.mode !== \"create\") {\r\n extraButtons = buttons.filter(x => x.name !== \"create\" && x.name !== \"edit\" && x.name !== \"delete\" && x.name !== \"view\" && x.inDialog);\r\n }\r\n createButton = buttons.find(x => x.name === \"create\");\r\n editButton = buttons.find(x => x.name === \"edit\");\r\n deleteButton = buttons.find(x => x.name === \"delete\");\r\n }\r\n return { extraButtons, createButton, editButton, deleteButton };\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n","import { Core } from \"./TinCore\";\r\n\r\nexport class ApiResponse {\r\n success: boolean;\r\n message: string;\r\n data;\r\n}\r\n\r\nexport class Constants {\r\n public static readonly AUTH_USER = 'a';\r\n public static readonly AUTH_NAME = 'b';\r\n public static readonly AUTH_ROLES = 'c';\r\n public static readonly AUTH_TOKEN = 'd';\r\n public static readonly AUTH_TOKEN_EXPIRE = 'e';\r\n public static readonly AUTH_TENANT_NAME = 'f';\r\n}\r\n\r\nexport class ListDialogConfig{\r\n name: string;\r\n title: string;\r\n listName: string;\r\n}\r\n\r\nexport enum DetailsSource {Row, Url}\r\n\r\nexport class DetailsDialogConfig {\r\n\r\n formConfig: FormConfig;\r\n tableConfig?: TableConfig;\r\n tableConfigs?: TableConfig[];\r\n buttons?: Button[];\r\n details? : any\r\n heroField? : any\r\n heroValue?: any\r\n mode?: 'create' | 'edit' | 'view'\r\n width?: string\r\n // setHero ?: boolean\r\n detailsSource?: DetailsSource\r\n // sourceMethod : 'row' | 'id' | 'idField'\r\n // row?: any\r\n options?: dialogOptions\r\n}\r\n\r\nexport class dialogOptions {\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport class Action{\r\n method?: 'get' | 'post'\r\n url: string;\r\n params? : any[]\r\n successMessage?: string\r\n isFormData?: boolean\r\n}\r\n\r\n\r\n\r\nexport class SearchConfig {\r\n fields: SearchField[]\r\n searchAction?: Action\r\n}\r\n\r\nexport interface SearchField extends Field{\r\n\r\n show?: boolean\r\n\r\n}\r\n\r\nexport class AlertMessages {\r\n\r\n subject? : string\r\n messages: AlertMessage[]\r\n\r\n}\r\n\r\nexport class AlertMessage {\r\n type?: 'success' |'info' | 'warn' | 'critical'\r\n content: string\r\n hiddenCondition?: (value: any) => boolean;\r\n}\r\n\r\n\r\n\r\nexport class FormConfig {\r\n title?: string\r\n fixedTitle?: boolean\r\n alertMessages?: AlertMessages\r\n fields: Field[]\r\n mode?: 'create' | 'edit' | 'view'\r\n button? : Button\r\n multiColumn?: boolean\r\n reset?: boolean\r\n fileAction?: Action\r\n loadAction?: Action\r\n heroField?: any\r\n heroValue?: any\r\n\r\n}\r\n\r\nexport interface Button{\r\n name: string\r\n visible?: (value: any) => boolean;\r\n display?: string;\r\n icon?: Icon;\r\n disabled?: (value: any) => boolean;\r\n color?: string;\r\n tip?: string\r\n dialog?: boolean\r\n action?: Action\r\n confirm?: Confirm\r\n inDialog?: boolean\r\n inHeader?: boolean\r\n detailsConfig?: DetailsDialogConfig\r\n setHeroField?: boolean;\r\n}\r\n\r\nexport interface Confirm {\r\n message: string\r\n}\r\n\r\nexport interface Condition{\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Field {\r\n name: string;\r\n type: 'text' | 'date' | 'datetime' | 'checkbox' | 'select' | 'multi-select' | 'money' | 'number' | 'section' | 'blank' | 'chip' | 'file' | 'file-view' | 'icon' | 'spinner' | 'button' | 'label';\r\n alias?: string;\r\n options?: any[];\r\n optionDisplay?: string\r\n optionValue?: string\r\n defaultValue?: any\r\n defaultFirstValue?: boolean\r\n required?: boolean\r\n min?: any\r\n max?: any\r\n rows?: number\r\n span?: boolean\r\n readonly?: boolean\r\n hidden?: boolean\r\n path?: string\r\n keyFiledName?: string\r\n hint?: string\r\n masterField?: string\r\n child?: ChildField\r\n children?: ChildField[]\r\n masterOptions?: any[]\r\n nullable ?: boolean\r\n\r\n hideOnCreate ?: boolean\r\n hideOnExists ?: boolean\r\n hiddenCondition?: (value: any) => boolean;\r\n readonlyCondition?: (value: any) => boolean;\r\n\r\n peekConfig ?: PeekDialogConfig;\r\n\r\n infoMessage?: string;\r\n suffix?: string;\r\n\r\n}\r\n\r\nexport interface PeekDialogConfig{\r\n detailsConfig: DetailsDialogConfig\r\n create? : boolean\r\n view? : boolean\r\n}\r\n\r\nexport interface ChildField {\r\n childField?: string\r\n childValueField?: string\r\n}\r\n\r\nexport class TableConfig{\r\n title?: string\r\n columns? : Column[]\r\n minColumns?: string[]\r\n showFilter?: boolean\r\n holdFilterSpace?: boolean\r\n holdHeaderButtonSpace?: boolean\r\n elevation?: 'none' | 'low' | 'medium' | 'high'\r\n formConfig?: FormConfig\r\n searchConfig?: SearchConfig\r\n tileConfig?: TileConfig\r\n buttons?: Button[]\r\n minButtons?: string[]\r\n loadAction?: Action\r\n loadIDField ?: string\r\n loadCriteria?: string\r\n logResponse?: boolean\r\n flatButtons?: boolean\r\n greyOut?: (value: any) => boolean;\r\n heroField?: any\r\n heroValue?: any\r\n collapseButtons?: boolean\r\n parentData ? : any\r\n hideTabCondition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Column {\r\n name: string;\r\n type?: 'text' | 'date' | 'datetime' | 'checkbox' | 'select' | 'money' | 'number' | 'chip' | 'icon' | 'spinner' | 'button' ;\r\n alias?: string;\r\n icon?: Icon;\r\n color?: Color;\r\n icons?: Icon[];\r\n options?: any[];\r\n optionDisplay?: string\r\n optionValue?: string\r\n detailsConfig?: DetailsDialogConfig\r\n hiddenCondition?: (parentData: any) => boolean;\r\n}\r\n\r\nexport interface Icon{\r\n name: string\r\n color?: string\r\n tip?: string\r\n tipField?: string\r\n bannerField?: string\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\nexport interface Color {\r\n name: string\r\n condition?: (value: any) => boolean;\r\n}\r\n\r\n\r\nexport class TileConfig{\r\n tiles : Tile[]\r\n loadAction?: Action\r\n loadInit?: boolean\r\n clickable?: boolean\r\n // reload?: boolean\r\n}\r\nexport interface Tile {\r\n\r\n name: string;\r\n alias?: string;\r\n value?: string;\r\n color?: string;\r\n selectedTile?: string;\r\n hidden?: boolean;\r\n info?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n}\r\n\r\nexport class Step {\r\n name: string\r\n icon: string;\r\n}\r\n\r\n\r\n\r\nexport class ActionResponse {\r\n name: string;\r\n value;\r\n}\r\n\r\n\r\nexport class loginConfig {\r\n\r\n constructor() {\r\n this.appName = \"\";\r\n this.selfService = false;\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n }\r\n\r\n appName: string;\r\n selfService: boolean;\r\n logo: string;\r\n logoSize: string;\r\n}\r\n\r\n\r\nexport class AppConfig {\r\n constructor() {\r\n this.appName = \"App Name\";\r\n this.logo = \"\";\r\n this.logoSize = \"normal\";\r\n this.ADAuth = true;\r\n this.localAuth = true;\r\n this.googleAuth = false;\r\n this.selfService = false;\r\n this.multitenant = false;\r\n this.navigation = 'top';\r\n this.progressLine = false;\r\n }\r\n appName: string;\r\n logo: string;\r\n logoSize: string;\r\n ADAuth: boolean;\r\n localAuth: boolean;\r\n googleAuth: boolean;\r\n selfService: boolean;\r\n capItems: CapItem[];\r\n multitenant : boolean;\r\n navigation : 'top' | 'side'\r\n progressLine: boolean;\r\n\r\n}\r\n\r\nexport class CapItem {\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.display = \"New Cap Item\";\r\n this.enabled = false;\r\n this.type = \"\";\r\n this.newLine = false;\r\n this.showMenu = true;\r\n this.ignoreSubsDisplay = false;\r\n this.link = \"\";\r\n this.icon = \"navigate_next\";\r\n\r\n }\r\n\r\n name: string;\r\n display: string;\r\n enabled: boolean;\r\n showMenu: boolean;\r\n\r\n ignoreSubsDisplay: boolean;\r\n type: string;\r\n newLine: boolean;\r\n link: string;\r\n icon: string;\r\n capSubItems: CapItem[];\r\n\r\n}\r\n\r\n\r\nexport class Account {\r\n user: User;\r\n profile: Profile;\r\n}\r\n\r\nexport class User {\r\n\r\n constructor() {\r\n\r\n\r\n this.userName = \"\";\r\n this.password = \"\";\r\n this.tries = \"0\";\r\n this.locked = \"0\";\r\n this.logged = \"0\";\r\n this.disabled = \"0\";\r\n this.changepassword = \"0\";\r\n this.dateCreated = Core.nowDate();\r\n this.dateUpdated = Core.nowDate();\r\n this.token = \"\";\r\n this.dateExpire = Core.nowDate();\r\n this.tokenExpire = Core.nowDate();\r\n this.authType = \"\";\r\n }\r\n\r\n userName:string;\r\n password: string;\r\n tries: string;\r\n locked: string;\r\n logged: string;\r\n disabled: string;\r\n changepassword: string;\r\n dateCreated: string;\r\n dateUpdated: string;\r\n dateExpire: string;\r\n token: string;\r\n tokenExpire: string;\r\n\r\n authType: string;\r\n}\r\n\r\nexport class ChangeUserPassword {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.currentPassword = \"\";\r\n this.newPassword = \"\";\r\n this.confirmPassword = \"\";\r\n }\r\n userName: string;\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmPassword: string;\r\n}\r\n\r\nexport class Transaction {\r\n\r\n constructor() {\r\n this.transactionID = 0;\r\n this.narration = \"\";\r\n this.amount = '0';\r\n this.type = 0;\r\n this.date = \"\";\r\n this.accountID = 0;\r\n this.destinationID = 0;\r\n this.categoryID = 0;\r\n }\r\n\r\n transactionID : number;\r\n narration : string;\r\n amount : string;\r\n type: number;\r\n date : string;\r\n accountID : number;\r\n destinationID : number;\r\n categoryID : number;\r\n\r\n}\r\n\r\nexport class FinAccount {\r\n\r\n constructor(){\r\n this.accountID = 0;\r\n this.name = \"\";\r\n this.description = \"\";\r\n this.currency = \"\";\r\n\r\n }\r\n\r\n\r\n accountID: number\r\n name: string;\r\n description: string;\r\n currency: string;\r\n\r\n}\r\n\r\nexport class Register {\r\n\r\n constructor() {\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.authType = \"local\";\r\n this.password = \"\";\r\n }\r\n\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n authType: string;\r\n password: string;\r\n}\r\n\r\nexport class Profile {\r\n\r\n constructor() {\r\n this.profileID = \"\";\r\n this.userName = \"\";\r\n this.roleID = 1;\r\n this.firstName = \"\";\r\n this.lastName = \"\";\r\n this.email = \"\";\r\n this.empID = \"\";\r\n this.arID = \"0\";\r\n this.authType = \"\";\r\n this.password = \"\";\r\n this.role = new Role();\r\n }\r\n\r\n profileID: string;\r\n userName: string;\r\n roleID: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n empID: string;\r\n arID: string;\r\n authType: string;\r\n password: string;\r\n role: Role\r\n}\r\n\r\n\r\nexport class Role {\r\n\r\n constructor() {\r\n this.roleID = 0;\r\n this.roleName = \"New Role\";\r\n this.cap1 = false;\r\n this.cap2 = false;\r\n this.cap3 = false;\r\n this.cap4 = false;\r\n this.cap5 = false;\r\n this.cap6 = false;\r\n this.cap7 = false;\r\n this.cap8 = false;\r\n this.cap9 = false;\r\n this.cap10 = false;\r\n this.cap11 = false;\r\n this.cap12 = false;\r\n this.cap13 = false;\r\n this.cap14 = false;\r\n this.cap15 = false;\r\n this.cap16 = false;\r\n this.cap17 = false;\r\n this.cap18 = false;\r\n this.cap19 = false;\r\n this.cap20 = false;\r\n this.cap21 = false;\r\n this.cap22 = false;\r\n this.cap23 = false;\r\n this.cap24 = false;\r\n this.cap25 = false;\r\n this.cap26 = false;\r\n this.cap27 = false;\r\n this.cap28 = false;\r\n this.cap29 = false;\r\n this.cap30 = false;\r\n this.cap31 = false;\r\n this.cap32 = false;\r\n this.cap33 = false;\r\n this.cap34 = false;\r\n this.cap35 = false;\r\n this.cap36 = false;\r\n this.cap37 = false;\r\n this.cap38 = false;\r\n this.cap39 = false;\r\n this.cap40 = false;\r\n this.cap41 = false;\r\n this.cap42 = false;\r\n this.cap43 = false;\r\n this.cap44 = false;\r\n this.cap45 = false;\r\n this.cap46 = false;\r\n this.cap47 = false;\r\n this.cap48 = false;\r\n this.cap49 = false;\r\n this.cap50 = false;\r\n this.cap51 = false;\r\n this.cap52 = false;\r\n this.cap53 = false;\r\n this.cap54 = false;\r\n this.cap55 = false;\r\n this.cap56 = false;\r\n this.cap57 = false;\r\n this.cap58 = false;\r\n this.cap59 = false;\r\n this.cap60 = false;\r\n this.cap61 = false;\r\n this.cap62 = false;\r\n this.cap63 = false;\r\n this.cap64 = false;\r\n this.cap65 = false;\r\n this.cap66 = false;\r\n this.cap67 = false;\r\n this.cap68 = false;\r\n this.cap69 = false;\r\n this.cap70 = false;\r\n this.cap71 = false;\r\n this.cap72 = false;\r\n this.cap73 = false;\r\n this.cap74 = false;\r\n this.cap75 = false;\r\n this.cap76 = false;\r\n this.cap77 = false;\r\n this.cap78 = false;\r\n this.cap79 = false;\r\n this.cap80 = false;\r\n this.cap81 = false;\r\n this.cap82 = false;\r\n this.cap83 = false;\r\n this.cap84 = false;\r\n this.cap85 = false;\r\n this.cap86 = false;\r\n this.cap87 = false;\r\n this.cap88 = false;\r\n this.cap89 = false;\r\n this.cap90 = false;\r\n this.cap91 = false;\r\n this.cap92 = false;\r\n this.cap93 = false;\r\n this.cap94 = false;\r\n this.cap95 = false;\r\n this.cap96 = false;\r\n this.cap97 = false;\r\n this.cap98 = false;\r\n this.cap99 = false;\r\n this.cap100 = false;\r\n }\r\n\r\n roleID: number;\r\n roleName: string;\r\n cap1: boolean;\r\n cap2: boolean;\r\n cap3: boolean;\r\n cap4: boolean;\r\n cap5: boolean;\r\n cap6: boolean;\r\n cap7: boolean;\r\n cap8: boolean;\r\n cap9: boolean;\r\n cap10: boolean;\r\n cap11: boolean;\r\n cap12: boolean;\r\n cap13: boolean;\r\n cap14: boolean;\r\n cap15: boolean;\r\n cap16: boolean;\r\n cap17: boolean;\r\n cap18: boolean;\r\n cap19: boolean;\r\n cap20: boolean;\r\n cap21: boolean;\r\n cap22: boolean;\r\n cap23: boolean;\r\n cap24: boolean;\r\n cap25: boolean;\r\n cap26: boolean;\r\n cap27: boolean;\r\n cap28: boolean;\r\n cap29: boolean;\r\n cap30: boolean;\r\n cap31: boolean;\r\n cap32: boolean;\r\n cap33: boolean;\r\n cap34: boolean;\r\n cap35: boolean;\r\n cap36: boolean;\r\n cap37: boolean;\r\n cap38: boolean;\r\n cap39: boolean;\r\n cap40: boolean;\r\n cap41: boolean;\r\n cap42: boolean;\r\n cap43: boolean;\r\n cap44: boolean;\r\n cap45: boolean;\r\n cap46: boolean;\r\n cap47: boolean;\r\n cap48: boolean;\r\n cap49: boolean;\r\n cap50: boolean;\r\n cap51: boolean;\r\n cap52: boolean;\r\n cap53: boolean;\r\n cap54: boolean;\r\n cap55: boolean;\r\n cap56: boolean;\r\n cap57: boolean;\r\n cap58: boolean;\r\n cap59: boolean;\r\n cap60: boolean;\r\n cap61: boolean;\r\n cap62: boolean;\r\n cap63: boolean;\r\n cap64: boolean;\r\n cap65: boolean;\r\n cap66: boolean;\r\n cap67: boolean;\r\n cap68: boolean;\r\n cap69: boolean;\r\n cap70: boolean;\r\n cap71: boolean;\r\n cap72: boolean;\r\n cap73: boolean;\r\n cap74: boolean;\r\n cap75: boolean;\r\n cap76: boolean;\r\n cap77: boolean;\r\n cap78: boolean;\r\n cap79: boolean;\r\n cap80: boolean;\r\n cap81: boolean;\r\n cap82: boolean;\r\n cap83: boolean;\r\n cap84: boolean;\r\n cap85: boolean;\r\n cap86: boolean;\r\n cap87: boolean;\r\n cap88: boolean;\r\n cap89: boolean;\r\n cap90: boolean;\r\n cap91: boolean;\r\n cap92: boolean;\r\n cap93: boolean;\r\n cap94: boolean;\r\n cap95: boolean;\r\n cap96: boolean;\r\n cap97: boolean;\r\n cap98: boolean;\r\n cap99: boolean;\r\n cap100: boolean;\r\n}\r\n\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6,\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class HttpService {\r\n\r\n constructor(private httpClient: HttpClient, private router: Router) { }\r\n\r\n\r\n //----Set apiUrl from the data service of the project---//\r\n public apiUrl = \"https://api.solinc.co.zw/\"; //default\r\n\r\n\r\n\r\n //POST\r\n public Post(service: string, data: any): Observable<any> {\r\n return this.httpClient.post(this.apiUrl + service, data, this.httpOptions_Legacy);\r\n }\r\n\r\n //PUT\r\n public Put(service: string, data: any): Observable<any> {\r\n return this.httpClient.put(this.apiUrl + service, data, this.httpOptions_Legacy);\r\n }\r\n\r\n\r\n //POST RAW\r\n public Post_Raw(url: string, data: any): Observable<any> {\r\n\r\n return this.httpClient.post(url, data, this.httpOptions_Legacy);\r\n }\r\n\r\n //POST with file\r\n public Post_WithFile(service: string, data: any, file: File) {\r\n\r\n let formData: FormData = new FormData();\r\n\r\n if (file) {\r\n formData.append(\"uploadFile\", file, file.name);\r\n }\r\n\r\n formData.append(\"data\", JSON.stringify(data));\r\n\r\n return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);\r\n }\r\n\r\n // //POST with files\r\n public Post_FormData(service: string, formData: FormData) {\r\n\r\n return this.httpClient.post(this.apiUrl + service, formData, this.httpOptions_Files);\r\n }\r\n\r\n //GET\r\n public Get(service: string): Observable<any> {\r\n return this.httpClient.get(this.apiUrl + service, this.httpOptions_Legacy);\r\n }\r\n\r\n //Get RAW\r\n public Get_Raw(url: string): Observable<any> {\r\n return this.httpClient.get(url, this.httpOptions_Legacy);\r\n }\r\n\r\n //ERROR\r\n public Error(error: HttpErrorResponse) {\r\n if (error.statusText == \"Unauthorized\") {\r\n this.router.navigate([\"login\"]);\r\n return \"Unauthorized\";\r\n } else {\r\n return \"Connection failed\";\r\n }\r\n }\r\n\r\n private httpOptions_Legacy = {\r\n headers: new HttpHeaders({\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Basic \" + btoa(\"emptyUser:emptyToken\"),\r\n }),\r\n resposeType: \"json\",\r\n };\r\n\r\n private httpOptions_Files = {\r\n headers: new HttpHeaders({\r\n Authorization: \"Basic \" + btoa(\"tnyagato:j5Toszfr@ys\"),\r\n }),\r\n resposeType: \"json\",\r\n };\r\n}\r\n","// import { Core } from 'tin-core';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { LogLevel } from '../classes/Classes';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class LogService {\r\n constructor() { }\r\n\r\n level: LogLevel = LogLevel.All;\r\n\r\n logToConsole: boolean = true;\r\n\r\n logToApi: boolean = false;\r\n\r\n debug(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Debug, optionalParams);\r\n }\r\n\r\n info(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Info, optionalParams);\r\n }\r\n\r\n warn(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Warn, optionalParams);\r\n }\r\n\r\n error(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Error, optionalParams);\r\n }\r\n\r\n fatal(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.Fatal, optionalParams);\r\n }\r\n\r\n log(msg: string, ...optionalParams: any[]) {\r\n this.writeToLog(msg, LogLevel.All, optionalParams);\r\n\r\n }\r\n\r\n private writeToLog(msg: string, level: LogLevel, params: any[]) {\r\n\r\n if (this.shouldLog(level)) {\r\n\r\n // Build log string\r\n let value: string = Core.getFormatedDate(Date(), false).replace(\"T\", \" \");\r\n // value += \" - Type: \" + LogLevel[this.level];\r\n value += \" - Message: \" + msg;\r\n\r\n\r\n if (params.length) {\r\n value += \" - Extra Info: \" + this.formatParams(params);\r\n }\r\n\r\n // Log the value\r\n if (this.logToConsole) {\r\n console.log(value);\r\n }\r\n\r\n if (this.logToApi) {\r\n //Call API post\r\n }\r\n\r\n }\r\n }\r\n\r\n private formatParams(params: any[]): string {\r\n\r\n let ret: string = params.join(\",\");\r\n // Is there at least one object in the array?\r\n if (params.some((p) => typeof p == \"object\")) {\r\n ret = \"\";\r\n // Build comma-delimited string\r\n for (let item of params) {\r\n ret += JSON.stringify(item) + \",\";\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n private shouldLog(level: LogLevel): boolean {\r\n\r\n let ret: boolean = false;\r\n\r\n if (\r\n (level >= this.level && level !== LogLevel.Off) ||\r\n this.level === LogLevel.All\r\n ) {\r\n ret = true;\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\n\r\n\r\n","import { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRoute } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { StorageService } from './storage.service';\r\nimport { LogService } from './log.service';\r\nimport { Role, Constants } from '../classes/Classes';\r\nimport { HttpService } from './http.service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class AuthService implements CanActivate {\r\n\r\n constructor(private _route: ActivatedRoute, private socialService: SocialAuthService, private storage: StorageService, public router: Router, private httpService: HttpService, private messageService: MessageService, private logService: LogService) { }\r\n\r\n clearSession(){\r\n\r\n this.Updateloggedin(false);\r\n this.UpdateAutoLogin(false);\r\n this.UpdateRole(new Role());\r\n this.storage.clear();\r\n this.socialService.signOut();\r\n\r\n }\r\n\r\n sessionExpired(){\r\n\r\n this.clearSession()\r\n\r\n let url = new URL(window.location.href);\r\n let path = url.hash.replace(\"#/\", \"\");\r\n\r\n this.router.navigate([\"login\"], {\r\n relativeTo: this._route,\r\n queryParams: { redirectTo: path },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n\r\n }\r\n\r\n logoff() {\r\n this.clearSession()\r\n\r\n this.router.navigate([\"login\"]);\r\n }\r\n\r\n //Logged in\r\n private loggedin: boolean = false;\r\n private loggedinSource = new BehaviorSubject(this.loggedin);\r\n public loggedinObserv = this.loggedinSource.asObservable();\r\n Updateloggedin(loggedin: boolean) {\r\n this.loggedinSource.next(loggedin);\r\n this.loggedin = loggedin;\r\n }\r\n\r\n //autoLogin\r\n private autoLogin: boolean = false;\r\n private autoLoginSource = new BehaviorSubject(this.autoLogin);\r\n public autoLoginObserv = this.autoLoginSource.asObservable();\r\n UpdateAutoLogin(autoLogin: boolean) {\r\n this.autoLoginSource.next(autoLogin);\r\n this.autoLogin = autoLogin;\r\n }\r\n\r\n\r\n //Token\r\n private token: string = \"\";\r\n public tokenSource = new BehaviorSubject(this.token);\r\n public tokenObserv = this.tokenSource.asObservable();\r\n UpdateToken(newToken: string) {\r\n this.tokenSource.next(newToken);\r\n\r\n }\r\n\r\n //TokenExpire\r\n private tokenExpire: string = \"\";\r\n public tokenExpireSource = new BehaviorSubject(this.tokenExpire);\r\n public tokenExpireObserv = this.tokenExpireSource.asObservable();\r\n UpdateTokenExpire(newTokenExpire: string) {\r\n this.tokenExpireSource.next(newTokenExpire);\r\n\r\n }\r\n\r\n //Current User\r\n public currentUser: string = \"tnyagato\";\r\n private currentUserSource = new BehaviorSubject(this.currentUser);\r\n public currentUserObserv = this.currentUserSource.asObservable();\r\n UpdateCurrentUser(newUser: string) {\r\n this.currentUserSource.next(newUser.toLocaleLowerCase());\r\n this.currentUser = newUser.toLocaleLowerCase();\r\n }\r\n\r\n //Line Manager\r\n private islineManager: boolean = false;\r\n private isLineManagerSource = new BehaviorSubject(this.islineManager);\r\n public isLineManagerObserv = this.isLineManagerSource.asObservable();\r\n UpdateIsLineManager(manager: boolean) {\r\n this.isLineManagerSource.next(manager);\r\n }\r\n\r\n //Roles\r\n private currentRole = new Role;\r\n public currentRoleSource = new BehaviorSubject(this.currentRole);\r\n public myRoleObserv = this.currentRoleSource.asObservable();\r\n UpdateRole(role) {\r\n this.currentRoleSource.next(role);\r\n }\r\n\r\n //Logged in FirstName\r\n private loggedUserSource = new BehaviorSubject(\"tnyagato\");\r\n public loggedUserFullName = this.loggedUserSource.asObservable();\r\n updateLoggedUserFullName(userName: string) {\r\n this.loggedUserSource.next(userName);\r\n }\r\n\r\n //TenantName\r\n private tenantNameSource = new BehaviorSubject(\"Tenant Name\");\r\n public tenantNameObserv = this.tenantNameSource.asObservable();\r\n updateTenantName(tenantName: string) {\r\n this.tenantNameSource.next(tenantName);\r\n }\r\n\r\n\r\n //Authorisation\r\n isAuthorised(capName: string): boolean {\r\n\r\n if (!this.currentRoleSource.value[capName]) {\r\n // this.logService.info(`authorise: ${this.currentRoleSource.value.roleName} not authorised for ${capName}`);\r\n this.router.navigate([\"home\"]);\r\n this.messageService.toast(`Unauthorised: ${capName}`);\r\n\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n isValidToken() {\r\n\r\n let tokenExpire: Date = new Date(this.tokenExpireSource.value);\r\n let nowDate: Date = new Date();\r\n\r\n let valid: boolean = tokenExpire > nowDate;\r\n\r\n if (!valid) {\r\n\r\n this.sessionExpired()\r\n this.messageService.toast(`Expired Session`);\r\n\r\n }\r\n\r\n return valid\r\n }\r\n\r\n canActivate() {\r\n\r\n if (this.loggedin && this.isValidToken()) {\r\n // this.logService.info(\"authentication: logged in\");\r\n return true;\r\n }\r\n\r\n if (localStorage.getItem(Constants.AUTH_USER) === null) {\r\n // this.logService.info(\"authentication: not logged and no cache\");\r\n\r\n this.sessionExpired();\r\n\r\n return false;\r\n\r\n } else {\r\n // this.logService.info(\"authentication: not logged but allowed login\");\r\n\r\n this.Updateloggedin(true);\r\n\r\n this.storage.get(Constants.AUTH_USER).then((resp: any) => {\r\n this.UpdateCurrentUser(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_NAME).then((resp: any) => {\r\n this.updateLoggedUserFullName(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_ROLES).then((resp) => {\r\n let ret = JSON.parse(resp);\r\n\r\n this.UpdateRole(ret);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN).then((resp: any) => {\r\n this.UpdateToken(resp);\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TOKEN_EXPIRE).then((resp: any) => {\r\n this.UpdateTokenExpire(resp);\r\n this.isValidToken();\r\n });\r\n\r\n this.storage.get(Constants.AUTH_TENANT_NAME).then((resp: any) => {\r\n this.updateTenantName(resp);\r\n });\r\n\r\n return true;\r\n }\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Action, ApiResponse, AppConfig, Button, CapItem, FormConfig, TableConfig, User } from '../classes/Classes';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { HttpService } from './http.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataServiceLib {\r\n\r\n constructor(private httpService: HttpService, public router: Router, private route: ActivatedRoute) {\r\n\r\n this.appConfig.appName = \"App-Name\";\r\n this.appConfig.logo = \"./assets/logo.png\"\r\n this.appConfig.ADAuth = true;\r\n this.appConfig.capItems = [this.capMultitenant, this.capAdmin, this.capHome];\r\n\r\n\r\n this.capHome.name = \"cap1\";\r\n this.capHome.display = \"Home\";\r\n this.capHome.link = \"home\";\r\n this.capHome.icon =\"home\";\r\n\r\n\r\n this.capAdmin.name = \"cap2\";\r\n this.capAdmin.display = \"Admin\";\r\n this.capAdmin.icon = \"security\"\r\n this.capAdmin.capSubItems = [this.capUsers, this.capRoles, this.capLogs, this.capSettings];\r\n\r\n this.capUsers.name = \"cap3\";\r\n this.capUsers.display = \"Users\";\r\n this.capUsers.link = \"home/admin/users\";\r\n this.capUsers.icon = \"group\";\r\n\r\n this.capRoles.name = \"cap4\"\r\n this.capRoles.display = \"Roles\";\r\n this.capRoles.link = \"home/admin/roles\";\r\n this.capRoles.icon = \"work\";\r\n\r\n this.capLogs.name = \"cap5\"\r\n this.capLogs.display = \"Logs\";\r\n this.capLogs.link = \"home/admin/logs\";\r\n this.capLogs.icon = \"text_snippet\";\r\n\r\n this.capSettings.name = \"cap6\"\r\n this.capSettings.display = \"Settings\";\r\n this.capSettings.link = \"home/admin/settings\";\r\n this.capSettings.icon =\"settings\";\r\n\r\n\r\n this.capMultitenant.name = \"cap7\"\r\n this.capMultitenant.display = \"Multitenant\";\r\n this.capMultitenant.icon = \"apartment\"\r\n this.capMultitenant.capSubItems = [this.capTenants, this.capMembership, this.capPlans ];\r\n\r\n this.capTenants.name = \"cap8\"\r\n this.capTenants.display = \"Tenants\";\r\n this.capTenants.link = \"home/admin/tenants\";\r\n\r\n this.capMembership.name = \"cap9\"\r\n this.capMembership.display = \"Membership\";\r\n this.capMembership.link = \"home/admin/membership\";\r\n\r\n this.capPlans.name = \"cap10\"\r\n this.capPlans.display = \"Plans\";\r\n this.capPlans.link = \"home/admin/plans\";\r\n\r\n\r\n this.capGeneral.name = \"cap11\"\r\n this.capGeneral.display = \"General\";\r\n this.capGeneral.capSubItems = [this.capCustomers, this.capInventory, this.capAccounts, this.capSuppliers, this.capTasks];\r\n\r\n this.capCustomers.name = \"cap12\"\r\n this.capCustomers.display = \"Customers\";\r\n this.capCustomers.link = \"home/admin/customers\";\r\n this.capCustomers.icon = \"group\"\r\n\r\n this.capInventory.name = \"cap13\"\r\n this.capInventory.display = \"Inventory\";\r\n this.capInventory.link = \"home/admin/inventory\";\r\n this.capInventory.icon = \"storefront\"\r\n\r\n this.capAccounts.name = \"cap14\"\r\n this.capAccounts.display = \"Accounts\";\r\n this.capAccounts.link = \"home/admin/accounts\";\r\n this.capAccounts.icon = \"account_balance_wallet\"\r\n\r\n this.capSuppliers.name = \"cap15\"\r\n this.capSuppliers.display = \"Suppliers\";\r\n this.capSuppliers.link = \"home/admin/suppliers\";\r\n this.capSuppliers.icon = \"groups\"\r\n\r\n this.capTasks.name = \"cap16\"\r\n this.capTasks.display = \"Tasks\";\r\n this.capTasks.link = \"home/admin/tasks\";\r\n this.capTasks.icon = \"task_alt\"\r\n\r\n\r\n this.capHR.name = \"cap17\"\r\n this.capHR.display = \"HR\";\r\n this.capHR.link = \"home/admin/hr\";\r\n this.capHR.icon = \"diversity_3\"\r\n this.capHR.capSubItems = [this.capEmployees,this.capDepartments,this.capPositions]\r\n\r\n this.capEmployees.name = \"cap17\"\r\n this.capEmployees.display = \"Employees\";\r\n this.capEmployees.link = \"home/admin/employees\";\r\n this.capEmployees.icon = \"group\"\r\n\r\n this.capDepartments.name = \"cap17\"\r\n this.capDepartments.display = \"Departments\";\r\n this.capDepartments.link = \"home/admin/departments\";\r\n this.capDepartments.icon = \"business_center\"\r\n\r\n this.capPositions.name = \"cap17\"\r\n this.capPositions.display = \"Positions\";\r\n this.capPositions.link = \"home/admin/positions\";\r\n this.capPositions.icon = \"picture_in_picture_medium\"\r\n\r\n\r\n\r\n }\r\n\r\n\r\n appConfig = new AppConfig();\r\n private appConfigSource = new BehaviorSubject(this.appConfig);\r\n public appConfigObserv = this.appConfigSource.asObservable();\r\n UpdateAppConfig(config: AppConfig) {\r\n this.appConfigSource.next(config);\r\n this.appConfig = config;\r\n }\r\n\r\n capHome = new CapItem;\r\n capAdmin = new CapItem;\r\n capUsers = new CapItem;\r\n capRoles = new CapItem;\r\n capLogs = new CapItem;\r\n capSettings = new CapItem;\r\n\r\n capMultitenant = new CapItem;\r\n capTenants = new CapItem;\r\n capMembership = new CapItem;\r\n capPlans = new CapItem;\r\n\r\n capGeneral = new CapItem;\r\n capCustomers = new CapItem;\r\n capInventory = new CapItem;\r\n capAccounts = new CapItem;\r\n capSuppliers = new CapItem;\r\n capTasks = new CapItem;\r\n\r\n capHR = new CapItem;\r\n capEmployees = new CapItem;\r\n capDepartments = new CapItem;\r\n capPositions = new CapItem;\r\n capGrades = new CapItem;\r\n\r\n public tmpProfileuserName = \"\";\r\n\r\n\r\n isProcessing = false;\r\n\r\n\r\n\r\n //--------------------------Employees-------------------------\r\n loadEmployeesMeta() {\r\n this.CallApi({ url: 'general/employeesmeta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.employeeFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;\r\n this.employeeFormConfig.fields.find(x => x.name == 'positionID').masterOptions = apiResponse.data.positions;\r\n this.employeeFormConfig.fields.find(x => x.name == 'employmentStatus').options = apiResponse.data.employmentStatuses;\r\n this.employeeFormConfig.fields.find(x => x.name == 'activeStatus').options = apiResponse.data.activeStatuses;\r\n });\r\n }\r\n\r\n genders = [\r\n { name: 'Male', value: 1 },\r\n { name: 'Female', value: 2 }\r\n ]\r\n\r\n employeeFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'nationalID', type: 'text', alias: 'National ID', required: true },\r\n { name: 'gender', alias: 'Gender', type: 'select', options: this.genders, required: true },\r\n { name: 'firstName', type: 'text', required: true },\r\n { name: 'lastName', type: 'text', required: true },\r\n { name: 'dateOfBirth', type: 'date', alias: 'Date of Birth', required: true },\r\n { name: 'employmentDate', type: 'date', alias: 'Employment Date', required: true },\r\n { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },\r\n { name: 'positionID', alias: 'Position', type: 'select', options: [], optionDisplay: 'name', optionValue: 'positionID', masterField: 'departmentID', },\r\n { name: 'employmentStatus', alias: 'Employment Status', type: 'select', options: [], optionDisplay: 'name', optionValue: 'value' },\r\n { name: 'activeStatus', alias: 'Active Status', type: 'select', options: [], optionDisplay: 'name', optionValue: 'value' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n { name: 'phone', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'note', type: 'text', rows: 2, span: true },\r\n ],\r\n }\r\n\r\n employeeTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'departmentName', 'positionName'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'genderName', type: 'text', alias: 'Gender' },\r\n { name: 'departmentName', type: 'text', alias: 'Department' },\r\n { name: 'positionName', type: 'text', alias: 'Position' },\r\n { name: 'employmentStatusName', type: 'text', alias: 'Employment Status' },\r\n { name: 'activeStatusName', type: 'text', alias: 'Active Status' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/employees?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/employees?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/employees?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'general/employees/x' },\r\n formConfig: this.employeeFormConfig\r\n }\r\n\r\n\r\n //--------------------------Positions-------------------------\r\n\r\n loadPositionMeta() {\r\n // this.CallApi({ url: 'positions/meta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n // this.positionFormConfig.fields.find(x => x.name == 'departmentID').options = apiResponse.data.departments;\r\n // });\r\n }\r\n\r\n positionFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n // { name: 'departmentID', alias: 'Department', type: 'select', options: [], optionDisplay: 'name', optionValue: 'departmentID' },\r\n { name: 'description', type: 'text', span: true },\r\n\r\n ],\r\n loadAction: { url: 'positions/id' },\r\n }\r\n\r\n editPositionButton: Button = { name: 'edit', dialog: true, action: { url: 'positions?action=edit', method: 'post', successMessage: 'Edited Successfully' } }\r\n\r\n positionTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'departmentName', 'salary'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'positionID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n // { name: 'departmentName', type: 'text', alias: 'Department' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'positions?action=create', method: 'post' } },\r\n {\r\n name: 'view',\r\n dialog: true,\r\n detailsConfig: {\r\n formConfig: { ...this.positionFormConfig, fields: this.positionFormConfig.fields.filter(x => x.name != 'departmentID') },\r\n heroField: 'positionID',\r\n buttons: [this.editPositionButton],\r\n tableConfigs: [\r\n {\r\n ...this.employeeTableConfig,\r\n loadAction: { url: 'positions/employees/x' },\r\n loadCriteria: 'employees',\r\n loadIDField: 'positionID',\r\n title: 'Employees',\r\n elevation: 'none',\r\n }\r\n ],\r\n }\r\n },\r\n this.editPositionButton,\r\n { name: 'delete', dialog: true, action: { url: 'positions?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'positions/all/x' },\r\n formConfig: this.positionFormConfig\r\n }\r\n\r\n\r\n //--------------------------Departments-------------------------\r\n departmentFormConfig: FormConfig = {\r\n fields: [\r\n { name: 'name', type: 'text', required: true },\r\n ],\r\n loadAction: { url: 'departments/id' },\r\n }\r\n\r\n editDepartmentButton: Button = { name: 'edit', dialog: true, action: { url: 'departments?action=edit', method: 'post', successMessage: 'Edited Successfully' } }\r\n\r\n departmentTableConfig: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n columns: [\r\n { name: 'departmentID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n ],\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'departments?action=create', method: 'post' } },\r\n {\r\n name: 'view',\r\n dialog: true,\r\n detailsConfig: {\r\n formConfig: this.departmentFormConfig,\r\n heroField: 'departmentID',\r\n buttons: [this.editDepartmentButton],\r\n tableConfigs: [\r\n {\r\n ...this.employeeTableConfig,\r\n loadAction: { url: 'departments/employees/x' },\r\n loadCriteria: 'employees',\r\n loadIDField: 'departmentID',\r\n title: 'Employees',\r\n elevation: 'none',\r\n },\r\n {\r\n ...this.positionTableConfig,\r\n loadAction: { url: 'departments/positions/x' },\r\n loadCriteria: 'positions',\r\n loadIDField: 'departmentID',\r\n title: 'Positions',\r\n elevation: 'none',\r\n\r\n }\r\n ],\r\n }\r\n },\r\n this.editDepartmentButton,\r\n { name: 'delete', dialog: true, action: { url: 'departments?action=delete', method: 'post' } },\r\n ],\r\n loadAction: { url: 'departments/all/x' },\r\n formConfig: this.departmentFormConfig\r\n }\r\n\r\n\r\n\r\n\r\n\r\n //---------------------------Other code\r\n\r\n public CallApi(action: Action, data: any = '' ) {\r\n\r\n if (!action.method){\r\n return this.httpService.Get(action.url);\r\n }\r\n\r\n if(action.method =='get'){\r\n return this.httpService.Get(action.url);\r\n } else if (action.method == 'post'){\r\n\r\n if (action.isFormData){\r\n return this.httpService.Post_FormData(action.url, data);\r\n }else{\r\n return this.httpService.Post(action.url, data);\r\n }\r\n\r\n }\r\n else{\r\n return this.httpService.Post(action.url, data);\r\n }\r\n\r\n }\r\n\r\n public CheckWelcomed(path: string = 'home/admin/welcome') {\r\n this.CallApi({ url: 'tenant/welcome/x' }).subscribe((x) => {\r\n if (!x.data) {\r\n this.Navigate(path)\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n public Navigate(path: string) {\r\n this.router.navigate([path]);\r\n }\r\n\r\n public NavigateWithValue(path: string, value : string){\r\n this.router.navigate([path], {\r\n queryParams: { v: value },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n }\r\n\r\n public GetNavigationValue(){\r\n if (this.route.snapshot.queryParams[\"v\"] != undefined) {\r\n return this.route.snapshot.queryParams[\"v\"]\r\n }else{\r\n return \"\";\r\n }\r\n }\r\n\r\n public tmpAccountID;\r\n\r\n\r\n\r\n //Users\r\n public GetUser() {\r\n return this.httpService.Get(\"User/all/x\");\r\n }\r\n\r\n public RegisterAccount(u) {\r\n return this.httpService.Post(\"User/register\", u);\r\n }\r\n\r\n public GetUserByID(val: string) {\r\n return this.httpService.Get(`User/id/${val}`);\r\n }\r\n\r\n public UpdateUser(profile) {\r\n return this.httpService.Post(\"User/edit\", profile);\r\n }\r\n\r\n public UnlockUser(user) {\r\n return this.httpService.Post(\"User/unlock\", user);\r\n }\r\n\r\n public LockUser(user) {\r\n return this.httpService.Post(\"User/lock\", user);\r\n }\r\n\r\n public DeleteUser(user) {\r\n return this.httpService.Post(\"User/delete\", user);\r\n }\r\n\r\n public Login(u: User) {\r\n return this.httpService.Post(\"User/login\", u);\r\n }\r\n\r\n public ChangePassword(u) {\r\n return this.httpService.Post(\"User/changepassword-self\", u);\r\n }\r\n\r\n public ChangePasswordAdmin(u) {\r\n return this.httpService.Post(\"User/changepassword-admin\", u);\r\n }\r\n\r\n public SelfReset(u: User): Observable<any> {\r\n return this.httpService.Post(\"Basic/SelfReset\", u);\r\n }\r\n\r\n\r\n //Roles\r\n\r\n public PostRole(role, action: string) {\r\n return this.httpService.Post(`Role?action=${action}`, role);\r\n }\r\n\r\n public PutRole(role) {\r\n return this.httpService.Put(\"Role\", role);\r\n }\r\n\r\n public GetRole(by: string, val: string) {\r\n return this.httpService.Get(\"Role/all/x\");\r\n }\r\n\r\n\r\n\r\n //Logs\r\n public GetLog(by: string, val: string) {\r\n return this.httpService.Get(\"Log/all/x\");\r\n }\r\n\r\n\r\n //Settings\r\n public GetSetting(by: string, val: string) {\r\n return this.httpService.Get(\"Setting/all/x\");\r\n }\r\n\r\n public UpdateSetting(setting, action: string) {\r\n return this.httpService.Post(`Setting?action=${action}`, setting);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n public isLoading = new BehaviorSubject(false);\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\r\nimport { Column, DetailsDialogConfig, TableConfig } from '../classes/Classes';\r\n// import { DetailsDialog } from '../components/table/detailsDialog.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DetailsDialogProcessor } from '../classes/TinCore';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n private smallScreen = false;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private breakpointObserver: BreakpointObserver\r\n ) {\r\n // Detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n });\r\n }\r\n\r\n openDetailsDialog<T>( config: DetailsDialogConfig, dialogComponent: new (...args: any[]) => T ): {\r\n afterClosed: Observable<any>,\r\n inputChange: Observable<any>,\r\n dialogRef: MatDialogRef<T>\r\n } {\r\n const hasTables = config.tableConfigs?.length > 0;\r\n\r\n const dialogOptions = {\r\n width: config.options?.width ? config.options?.width : (this.smallScreen ? '900px' : (hasTables ? '90%' : '900px')),\r\n height: config.options?.height ? config.options?.height : (hasTables ? '90%' : 'auto'),\r\n data: config\r\n };\r\n\r\n const dialogRef = this.dialog.open(dialogComponent, dialogOptions);\r\n\r\n return {\r\n afterClosed: dialogRef.afterClosed(),\r\n inputChange: (dialogRef.componentInstance as any).inputChange,\r\n dialogRef: dialogRef\r\n };\r\n }\r\n\r\n openConfiguredDetailsDialog<T>( buttonName: string, row: any, config: TableConfig | DetailsDialogConfig, dialogComponent: new (...args: any[]) => T, column?: Column ): Observable<any> {\r\n\r\n const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : config.buttons?.find(b => b.name === buttonName);\r\n\r\n if (!button || !button.dialog) {\r\n return new Observable(observer => {\r\n observer.next({ action: 'doAction', name: buttonName, row: row });\r\n observer.complete();\r\n });\r\n }\r\n\r\n\r\n let dialogConfig: DetailsDialogConfig = {\r\n formConfig: config.formConfig,\r\n buttons: config.buttons,\r\n details: row,\r\n // heroField : config.heroField,\r\n\r\n };\r\n\r\n\r\n if (button.detailsConfig) {\r\n dialogConfig = buttonName === 'create' ? button.detailsConfig : DetailsDialogProcessor.processDetailsConfig(button.detailsConfig, row);\r\n }else{\r\n dialogConfig = DetailsDialogProcessor.processDetailsConfig({...dialogConfig}, row);\r\n }\r\n\r\n\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n dialogConfig.formConfig.mode = button.detailsConfig.mode;\r\n } else {\r\n dialogConfig.formConfig.mode = buttonName === 'create' ? 'create' : (buttonName === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n if (buttonName === 'create') {\r\n dialogConfig.heroField = config.heroField;\r\n dialogConfig.heroValue = config.heroValue;\r\n }\r\n\r\n const dialogResult = this.openDetailsDialog(dialogConfig, dialogComponent);\r\n\r\n return new Observable(observer => {\r\n dialogResult.afterClosed.subscribe(result => {\r\n observer.next(result);\r\n observer.complete();\r\n });\r\n\r\n dialogResult.inputChange.subscribe(change => {\r\n observer.next({ action: 'inputChange', change: change });\r\n });\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-tin-spa',\r\n template: `\r\n <p>\r\n tin-spa works!\r\n </p>\r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class TinSpaComponent {\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } 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 { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\n\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n\r\n\r\n ],\r\n exports: [\r\n CommonModule,FormsModule, ReactiveFormsModule,\r\n MatMenuModule, MatSliderModule, MatTableModule, MatPaginatorModule,\r\n MatCheckboxModule, MatBadgeModule, MatButtonModule, MatIconModule, MatDialogModule, MatSnackBarModule,\r\n MatTabsModule, MatFormFieldModule, MatInputModule, MatCardModule, MatChipsModule, MatSelectModule,\r\n MatNativeDateModule, MatProgressSpinnerModule, MatListModule, MatAutocompleteModule, MatTooltipModule, MatSortModule,\r\n MatDatepickerModule, MatStepperModule, MatRadioModule, MatProgressBarModule,\r\n\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n RouterModule,\r\n MatExpansionModule,\r\n ],\r\n providers:[\r\n { provide: MAT_DIALOG_DEFAULT_OPTIONS, useValue: { disableClose: true, hasBackdrop: true } },\r\n { provide: MAT_DATE_LOCALE, useValue: \"en-GB\" },\r\n ]\r\n})\r\nexport class SpaMatModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { Core } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-text',\r\n templateUrl: './text.component.html',\r\n styleUrls: ['./text.component.css']\r\n})\r\nexport class TextComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (!this.options){\r\n this.options = []\r\n }\r\n\r\n if(this.options.length > 0){\r\n this.initFilter();\r\n }\r\n\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n this.initControl(this.control)\r\n\r\n this.initControl(this.myControl)\r\n\r\n }\r\n\r\n\r\n filteredOptions: Observable<string[]>;\r\n multiDimension = false;\r\n\r\n // options: FormGroup;\r\n hideRequiredControl = new FormControl(true);\r\n hide = true; //for password only\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() format = \"text\";\r\n @Input() type = \"\";\r\n\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n @Input() rows = 1;\r\n @Input() width = \"100%\"\r\n\r\n\r\n //Autocomplete items\r\n @Input() options: any = [];\r\n @Input() optionValue = \"\";\r\n\r\n //validation input\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max\r\n @Input() regex = \"\" //\"[a-zA-Z ]*\" //\"/\\S+@\\S+\\.\\S+/\";\r\n\r\n @Input() suffix: string;\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n private initFilter() {\r\n\r\n const objKeyList = Object.keys(this.options[0]);\r\n const firstKey = objKeyList[0];\r\n this.multiDimension = !Core.isNumber(firstKey);\r\n\r\n this.filteredOptions = this.myControl.valueChanges.pipe(\r\n startWith(\"\"),\r\n map((value) => this._filter(value))\r\n );\r\n }\r\n\r\n private _filter(value): string[] {\r\n\r\n if (this.multiDimension){\r\n\r\n let filterValue = \"\";\r\n if (value != \"\" && value){\r\n filterValue = value.toLowerCase();\r\n }\r\n\r\n return this.options.filter((option) => option[`${this.optionValue}`].toLowerCase().includes(filterValue));\r\n\r\n }else{\r\n const filterValue = value.toLowerCase();\r\n return this.options.filter(option => option.toLowerCase().includes(filterValue));\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n initControl(control: FormControl){\r\n if (this.readonly) {\r\n control.setValidators(null);\r\n control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly) {\r\n\r\n control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n\r\n //Events\r\n changed(){\r\n\r\n if (this.options.length > 0) {\r\n this.valueChange.emit(this.myControl.value);\r\n }else{\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n }\r\n\r\n leaved(){\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n\r\n //validation\r\n myControl = new FormControl('', [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex)]);\r\n control = new FormControl( this.value, [Validators.required, Validators.minLength(this.min), Validators.maxLength(this.max), Validators.pattern(this.regex) ]);\r\n\r\n validate(control: FormControl) : string{\r\n\r\n\r\n if ((this.required || this.min > 0) && control.hasError('required') ){\r\n return `Required`;\r\n }\r\n\r\n if (control.hasError('minlength') ){\r\n return `Minimun length is ${this.min}`;\r\n }\r\n\r\n if (control.hasError('maxlength')) {\r\n return `Maximum length is ${this.max}`;\r\n }\r\n\r\n if (control.hasError('pattern')) {\r\n return `Invalid Input`;\r\n }\r\n\r\n\r\n // if (this.regex != \"\"){\r\n\r\n // let r = new RegExp(this.regex, \"g\");\r\n\r\n // if (!r.test(this.value)){\r\n // this.valid = false;\r\n // this.errorMessage = \"Invalid input\";\r\n // return this.errorMessage;\r\n // }\r\n // }\r\n\r\n return \"\";\r\n }\r\n\r\n}\r\n","\r\n<!-- General Text -->\r\n<mat-form-field *ngIf=\"(!rows || rows == 1) && (format=='text' || format =='date') && options.length==0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\" >\r\n<mat-label *ngIf=\"format=='text'\">{{display}}</mat-label>\r\n<mat-label *ngIf=\"format=='date'\">{{display | date:'dd/MM/yyyy'}}</mat-label>\r\n<input matInput autocomplete=\"off\" [(ngModel)]=\"value\" (change)=\"changed()\" (blur)=\"leaved()\" (keyup.enter)=\"enterPressed()\" [type]=\"type\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\"/>\r\n<mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <label *ngIf=\"suffix\">{{suffix}}</label>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n\r\n </div>\r\n</mat-form-field>\r\n\r\n\r\n<!-- password -->\r\n<mat-form-field class=\"spa-text\" *ngIf=\"format=='password'\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"enterPressed()\" (change)=\"changed()\" (blur)=\"leaved()\" [(ngModel)]=\"value\" autocomplete=\"off\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\">\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n</mat-form-field>\r\n\r\n\r\n<!-- TextArea copy - Only change input to textarea and change ngif to not -->\r\n\r\n<mat-form-field *ngIf=\"rows > 1 && options.length==0\" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\">\r\n<mat-label>{{display}}</mat-label>\r\n<textarea matInput autocomplete=\"off\" [rows]=\"rows\" [(ngModel)]=\"value\" (change)=\"changed()\" (keyup.enter)=\"enterPressed()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\"></textarea>\r\n<mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n\r\n\r\n<!-- Auto Complete-->\r\n\r\n <mat-form-field *ngIf=\"(!rows || rows == 1) && format=='text' && options.length>0 \" [hideRequiredMarker]=\"!required\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input [type]=\"type\" [placeholder]=\"placeholder\" [(ngModel)]=\"value\" (change)=\"changed()\" matInput [formControl]=\"myControl\" [matAutocomplete]=\"auto\" [required]=\"required\" [readonly]=\"readonly\">\r\n <mat-error *ngIf=\"control.invalid\">{{validate(myControl)}}</mat-error>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"changed()\">\r\n\r\n <ng-container *ngIf=\"!multiDimension\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option\">\r\n {{option}}\r\n </mat-option>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiDimension\">\r\n <mat-option *ngFor=\"let row of filteredOptions | async\" [value]=\"row[optionValue]\">\r\n {{row[optionValue]}}\r\n </mat-option>\r\n </ng-container>\r\n\r\n\r\n </mat-autocomplete>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n </mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n\r\n\r\n@Component({\r\n selector: 'spa-check',\r\n templateUrl: './check.component.html',\r\n styleUrls: ['./check.component.css']\r\n})\r\nexport class CheckComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService,) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() display = \"\";\r\n @Input() value = false;\r\n @Output() valueChange = new EventEmitter();\r\n @Output() click = new EventEmitter();\r\n @Output() check = new EventEmitter();\r\n @Output() uncheck = new EventEmitter();\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n clicked(){\r\n this.click.emit();\r\n\r\n if(!this.value){\r\n this.checked();\r\n }else{\r\n this.unchecked();\r\n }\r\n }\r\n\r\n checked(){\r\n this.check.emit();\r\n }\r\n unchecked(){\r\n this.uncheck.emit();\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n\r\n }\r\n\r\n}\r\n","\r\n\r\n<mat-checkbox color=\"primary\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n\r\n<!-- <div class=\"suffix-icons\">\r\n\r\n <mat-checkbox color=\"primary\" [(ngModel)]=\"value\" (change)=\"changed()\" (click)=\"clicked()\" [disabled]=\"readonly\">{{display}}</mat-checkbox>\r\n\r\n <mat-icon *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" style=\"color: steelblue;font-size: 15px;margin-left: 5px;margin-top: 8px;\">info</mat-icon>\r\n\r\n</div> -->\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { Core } from '../../classes/TinCore';\r\n\r\n@Component({\r\n selector: 'spa-date',\r\n templateUrl: './date.component.html',\r\n styleUrls: ['./date.component.css']\r\n})\r\nexport class DateComponent implements OnInit, OnChanges {\r\n @Input() required = true;\r\n @Input() min = \"1900-01-01\";\r\n @Input() max = \"9999-01-01\";\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() value = Core.nowDate(true);\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() width = \"100%\";\r\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n minDate: FormControl;\r\n maxDate: FormControl;\r\n control: FormControl;\r\n\r\n ngOnInit(): void {\r\n this.initializeDateControls();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['readonly']) {\r\n this.updateControlState();\r\n }\r\n if (changes['value']) {\r\n this.control.setValue(new Date(this.value));\r\n }\r\n }\r\n\r\n private initializeDateControls(): void {\r\n this.minDate = new FormControl(new Date(this.min));\r\n this.maxDate = new FormControl(new Date(this.max));\r\n this.control = new FormControl({ value: new Date(this.value), disabled: this.readonly });\r\n\r\n this.updateControlState();\r\n setTimeout(() => this.onChangeEvent(), 5);\r\n }\r\n\r\n private updateControlState(): void {\r\n if (this.readonly) {\r\n this.control.disable();\r\n } else {\r\n this.control.enable();\r\n }\r\n }\r\n\r\n onChangeEvent(): void {\r\n const formattedDate = Core.getFormatedDate2(this.control.value, true);\r\n this.valueChange.emit(formattedDate);\r\n }\r\n\r\n validate(control: FormControl): string {\r\n if (control.hasError('matDatepickerMin')) {\r\n return `Minimum date is ${this.min}`;\r\n }\r\n if (control.hasError('matDatepickerMax')) {\r\n return `Maximum date is ${this.max}`;\r\n }\r\n return \"\";\r\n }\r\n}\r\n","\r\n<mat-form-field [ngStyle]=\"{'width':width}\">\r\n <input [formControl]=\"control\" [min]=\"minDate.value\" [max]=\"maxDate.value\" matInput [matDatepicker]=\"picker_date\" (dateInput)=\"onChangeEvent()\" [placeholder]=\"display\" [readonly]=\"true\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker_date\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker_date></mat-datepicker>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-datetime',\r\n templateUrl: './datetime.component.html',\r\n styleUrls: ['./datetime.component.css']\r\n})\r\nexport class DatetimeComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Output() valueChange = new EventEmitter();\r\n @Input() readonly = false;\r\n\r\n @Input() min = \"01 jan 1900\";\r\n\r\n @Input() max = \"31 dec 9999\";\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n}\r\n","<mat-form-field >\r\n<mat-label>{{display}}</mat-label>\r\n<input matInput autocomplete=\"off\" type=\"datetime-local\" [(ngModel)]=\"value\" [min]=\"min\" [max]=\"max\" (change)=\"changed()\" [placeholder]=\"display\" [readonly]=\"readonly\" />\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-label',\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.css']\r\n})\r\nexport class LabelComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() display = \"\";\r\n @Input() value = \"\";\r\n @Input() format = \"text\";\r\n\r\n}\r\n","<div *ngIf=\"format=='text'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label style=\"font-size: 20px; font-weight: 300\">{{value}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='date'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label>{{value | date:'dd/MM/yyyy'}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='datetime'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label>{{value | date:'dd/MM/yyyy HH:mm'}} </label> &nbsp;\r\n</div>\r\n\r\n<div *ngIf=\"format=='money'\">\r\n <label style=\"font-weight: 500\">{{display}} :</label> &nbsp; <label>{{value | currency:'USD':''}} </label> &nbsp;\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PeekDialogConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\n\r\n@Component({\r\n selector: 'spa-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.css']\r\n})\r\nexport class SelectComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService, private dialogService: DialogService) { }\r\n\r\n ngOnInit(): void {\r\n // this.displayValue = this.options.filter((m) => m.optionValue == this.value)\r\n // this.displayValue = this.value\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Select \" + this.display;\r\n }\r\n\r\n if (this.defaultFirstValue && this.options && this.options.length > 0 && (this.value == null || this.value == undefined || (typeof (this.value) == 'string' && this.value == '') || (typeof (this.value) == 'number' && this.value == 0))){\r\n this.value = this.options[0][this.optionValue]\r\n this.changed();\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (this.readonlyMode != \"\" && this.options.length > 0){\r\n this.displayValue = this.options.filter((m) => m[`${this.optionValue}`] == this.value)[0][`${this.optionDisplay}`]\r\n }\r\n\r\n //add a null option\r\n if (this.nullable && this.options && this.options.length > 0 && this.options[0][this.optionValue] != null){\r\n this.options.unshift({ [this.optionValue]: null, [this.optionDisplay]: \"None\" })\r\n }\r\n\r\n }\r\n\r\n displayValue;\r\n isHovered = false;\r\n\r\n @Input() width = \"100%\"\r\n @Input() readonly = false;\r\n @Input() required = true;\r\n @Input() defaultFirstValue = false;\r\n @Input() readonlyMode = \"\";\r\n @Input() hint = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() multiple: boolean = false;\r\n\r\n @Input() display = \"\";\r\n @Input() value ;\r\n @Input() options: any;\r\n @Input() masterOptions: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() optionDisplayExtra = \"\";\r\n @Input() nullable = false;\r\n\r\n @Input() peekConfig: PeekDialogConfig;\r\n @Input() infoMessage: string;\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n\r\n\r\n changed(){\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n }\r\n\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n }\r\n\r\n onAddClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n // if (this.peekConfig && this.peekConfig.create && this.value) {\r\n\r\n // const dynamicData = { [this.peekConfig.detailsConfig.heroField]: this.value };\r\n\r\n // this.dialogService.openConfiguredDetailsDialog( \"create\", dynamicData, this.peekConfig.detailsConfig, DetailsDialog ).subscribe(result => {\r\n // console.log(result);\r\n // });\r\n // } else {\r\n // this.messageService.toast(\"Configuration Error\");\r\n // }\r\n }\r\n\r\n onViewClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n\r\n // if (this.peekConfig && this.peekConfig.view && this.value) {\r\n\r\n // const dynamicData = { [this.peekConfig.detailsConfig.heroField]: this.value };\r\n\r\n // this.dialogService.openConfiguredDetailsDialog( \"view\", dynamicData, this.peekConfig.detailsConfig, DetailsDialogInternal ).subscribe(result => {\r\n // console.log(result);\r\n // });\r\n // } else {\r\n // this.messageService.toast(\"Configuration Error\");\r\n // }\r\n }\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n\r\n if (this.infoMessage) {\r\n this.messageService.info(this.infoMessage);\r\n }\r\n }\r\n\r\n}\r\n\r\n","\r\n<mat-form-field *ngIf=\"readonlyMode==''\" floatLabel=\"always\" [hintLabel]=\"hint\" [ngStyle]=\"{'width':width}\" [hideRequiredMarker]=\"!required\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n\r\n <mat-label>{{display}}</mat-label>\r\n <mat-select [(value)]=\"value\" (selectionChange)=\"changed()\" [multiple]=\"multiple\" [disabled]=\"readonly\" [placeholder]=\"placeholder\" >\r\n <mat-option *ngFor=\"let row of options\" [value]=\"row[optionValue]\">\r\n {{row[optionDisplay]}} <label *ngIf=\"optionDisplayExtra!='' && row[optionDisplayExtra] && row[optionDisplayExtra] != ''\">({{row[optionDisplayExtra]}})</label>\r\n </mat-option>\r\n </mat-select>\r\n\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.create && isHovered && value\" (click)=\"onAddClick($event)\" matTooltip=\"Add\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: green;\">add</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"peekConfig && peekConfig.view && isHovered && value\" (click)=\"onViewClick($event)\" matTooltip=\"View\" matTooltipPosition=\"above\" >\r\n <mat-icon color=\"primary\">launch</mat-icon>\r\n </button>\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\" >\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-form-field>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-activity',\r\n templateUrl: './activity.component.html',\r\n styleUrls: ['./activity.component.css']\r\n})\r\nexport class ActivityComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() notes = new Array();\r\n notesMessage: string = \"Empty\";\r\n @Input() title = \"Notes\"\r\n\r\n}\r\n","\r\n <div class=\"tin-input-row mt-3\" *ngIf=\"title != ''\">\r\n <mat-label style=\"font-size: 20px; font-weight: 300\" > {{title}}</mat-label >\r\n </div>\r\n\r\n <ul *ngIf=\"notes && notes.length>0\" class=\"list-group list-group-flush\" style=\"max-height:350px; margin-left:5px\">\r\n\r\n <li *ngFor=\"let note of notes\" class=\"list-group-item list-group-item-action flex-column align-items-start\">\r\n <div class=\"d-flex w-100 justify-content-between\">\r\n <div class=\"mb-0\">{{note.createdByName}}</div>\r\n <!-- <small class=\"text-muted\">{{note.expr1}} ago</small> -->\r\n </div>\r\n\r\n <small>{{note.details}} (<em>{{note.createdDate | date: 'dd MMM yyyy HH:mm'}}</em>) </small>\r\n </li>\r\n\r\n\r\n </ul>\r\n\r\n <div *ngIf=\"notes && notes.length==0\" class=\"d-flex justify-content-center row align-items-center\" style=\"max-height:200px\">\r\n\r\n No {{title.toLowerCase()}}\r\n\r\n </div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\n@Component({\r\n selector: 'spa-filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.css']\r\n})\r\nexport class FilterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges() {\r\n this.applyFilter(this._filterText);\r\n }\r\n\r\n @Input() flatButtons = false;\r\n @Input() showText = true;\r\n @Input() showButton = true;\r\n @Input() data = new MatTableDataSource();\r\n @Output() refreshClick = new EventEmitter();\r\n\r\n _filterText = \"\";\r\n\r\n\r\n keyUp(event: KeyboardEvent) {\r\n let text = event.target['value'];\r\n this.applyFilter(text);\r\n }\r\n\r\n\r\n applyFilter(filterValue: string) {\r\n\r\n if (this.data){\r\n this.data.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n }\r\n\r\n refreshClicked(){\r\n this.refreshClick.emit();\r\n }\r\n\r\n}\r\n","<mat-form-field *ngIf=\"showText\" >\r\n <mat-label>Filter</mat-label>\r\n <input id=\"txtFilter\" matInput [(ngModel)]=\"_filterText\" (keyup)=\"keyUp($event)\" placeholder=\"Enter Filter text\" autocomplete=\"off\">\r\n</mat-form-field>\r\n\r\n<button *ngIf=\"showButton && !flatButtons\" id=\"btnFilter\" mat-mini-fab color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\">\r\n <mat-icon class=\"refreshIcon\">cached</mat-icon>\r\n</button>\r\n\r\n<button *ngIf=\"showButton && flatButtons\" id=\"btnFilter\" mat-icon-button color=\"primary\" matTooltip=\"Refresh Data\" matTooltipPosition=\"above\" (click)=\"refreshClicked()\" style=\"margin-right:1em;margin-top:5px\">\r\n <mat-icon class=\"refreshIcon\">cached</mat-icon>\r\n</button>\r\n","import {\r\n OnInit,\r\n Directive,\r\n HostListener,\r\n ElementRef, forwardRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\nexport const CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CurrencyInputMaskDirective),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: '[appCurrencyInputMask]',\r\n providers: [\r\n CURRENCY_INPUT_MASK_DIRECTIVE_VALUE_ACCESSOR,\r\n DecimalPipe\r\n ]\r\n})\r\nexport class CurrencyInputMaskDirective implements ControlValueAccessor, OnInit {\r\n private el: HTMLInputElement;\r\n private onModelChange: Function;\r\n private onModelTouched: Function;\r\n private lastNumVal: number;\r\n private DECIMAL_MARK = '.';\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private decimalPipe: DecimalPipe\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n\r\n @HostListener('focus', ['$event'])\r\n handleFocus(event: any) {\r\n const strVal: string = this.getInputValue();\r\n const unmaskedStr: string = this.getUnmaskedValue(strVal);\r\n this.updateInputValue(unmaskedStr);\r\n }\r\n\r\n @HostListener('cut', ['$event'])\r\n handleCut(event: any) {\r\n setTimeout(() => {\r\n this.inputUpdated();\r\n }, 0);\r\n }\r\n\r\n @HostListener('keypress', ['$event'])\r\n handleKeypress(event: any) {\r\n // Restrict characters\r\n const newChar: string = String.fromCharCode(event.which);\r\n const allowedChars: RegExp = /^[\\d.]+$/;\r\n if (!allowedChars.test(newChar)) {\r\n event.preventDefault();\r\n return;\r\n }\r\n // Handle decimal mark input\r\n const currentValue: string = event.target.value;\r\n const separatorIdx: number = currentValue.indexOf(this.DECIMAL_MARK);\r\n const hasFractionalPart: boolean = (separatorIdx >= 0);\r\n if (!hasFractionalPart || newChar !== this.DECIMAL_MARK) {\r\n return;\r\n }\r\n const isOutsideSelection = !this.isIdxBetweenSelection(separatorIdx);\r\n if (isOutsideSelection) {\r\n const positionAfterMark = separatorIdx + 1;\r\n this.setCursorPosition(positionAfterMark);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInput(event: any) {\r\n this.inputUpdated();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n handlePaste(event: any) {\r\n setTimeout(() => {\r\n this.inputUpdated();\r\n }, 1);\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n handleBlur(event: any) {\r\n const strVal: string = this.getInputValue();\r\n const numVal: number = this.convertStrToDecimal(strVal);\r\n this.maskInput(numVal);\r\n this.onModelTouched.apply(event);\r\n }\r\n\r\n registerOnChange(callbackFunction: Function): void {\r\n this.onModelChange = callbackFunction;\r\n }\r\n\r\n registerOnTouched(callbackFunction: Function): void {\r\n this.onModelTouched = callbackFunction;\r\n }\r\n\r\n setDisabledState(value: boolean): void {\r\n this.el.disabled = value;\r\n }\r\n\r\n writeValue(numValue: number): void {\r\n this.maskInput(numValue);\r\n }\r\n\r\n private maskInput(numVal: number): void {\r\n if (!this.isNumeric(numVal)) {\r\n this.updateInputValue('');\r\n return;\r\n }\r\n const strVal: string = this.convertDecimalToStr(numVal);\r\n const newVal: string = this.transformWithPipe(strVal);\r\n this.updateInputValue(newVal);\r\n }\r\n\r\n private inputUpdated() {\r\n this.restrictDecimalValue();\r\n const strVal: string = this.getInputValue();\r\n const unmaskedVal: string = this.getUnmaskedValue(strVal);\r\n const numVal: number = this.convertStrToDecimal(unmaskedVal);\r\n if (numVal !== this.lastNumVal) {\r\n this.lastNumVal = numVal;\r\n this.onModelChange(numVal);\r\n }\r\n }\r\n\r\n private restrictDecimalValue(): void {\r\n const strVal: string = this.getInputValue();\r\n const dotIdx: number = strVal.indexOf(this.DECIMAL_MARK);\r\n const hasFractionalPart: boolean = (dotIdx >= 0);\r\n if (hasFractionalPart) {\r\n const fractionalPart: string = strVal.substring(dotIdx + 1);\r\n if (fractionalPart.length > 2) {\r\n const choppedVal: string = strVal.substring(0, dotIdx + 3);\r\n this.updateInputValue(choppedVal, true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n private transformWithPipe(str: string): string {\r\n return this.decimalPipe.transform(str, '1.2-2');\r\n }\r\n\r\n private getUnmaskedValue(value: string): string {\r\n return value.replace(/[^-\\d\\\\.]/g, '');\r\n }\r\n\r\n private updateInputValue(value: string, savePosition = false) {\r\n if (savePosition) {\r\n this.saveCursorPosition();\r\n }\r\n this.el.value = value;\r\n }\r\n\r\n private getInputValue(): string {\r\n return this.el.value;\r\n }\r\n\r\n private convertStrToDecimal(str: string): number {\r\n return (this.isNumeric(str)) ? parseFloat(str) : null;\r\n }\r\n\r\n private convertDecimalToStr(n: number): string {\r\n return (this.isNumeric(n)) ? n + '' : '';\r\n }\r\n\r\n private isNumeric(n: any): boolean {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n private saveCursorPosition() {\r\n const position: number = this.el.selectionStart;\r\n setTimeout(() => {\r\n this.setCursorPosition(position);\r\n }, 1);\r\n }\r\n\r\n private setCursorPosition(position: number) {\r\n this.el.selectionStart = position;\r\n this.el.selectionEnd = position;\r\n }\r\n\r\n private isIdxBetweenSelection(idx: number) {\r\n if (this.el.selectionStart === this.el.selectionEnd) {\r\n return false;\r\n }\r\n return (idx >= this.el.selectionStart && idx < this.el.selectionEnd);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'spa-money',\r\n templateUrl: './money.component.html',\r\n styleUrls: ['./money.component.css']\r\n})\r\nexport class MoneyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n if (this.placeholder == \"\") {\r\n this.placeholder = \"Enter \" + this.display;\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initControl(this.control)\r\n }\r\n\r\n initControl(control: FormControl) {\r\n if (this.readonly) {\r\n control.setValidators(null);\r\n control.updateValueAndValidity();\r\n }\r\n if (!this.required && !this.readonly) {\r\n\r\n control.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n @Input() readonly = false;\r\n @Input() hint = \"\";\r\n @Input() display = \"\";\r\n @Input() placeholder = \"\";\r\n @Input() value = \"\";\r\n @Input() width = \"100%\"\r\n @Input() currency = \"\";\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() leave = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n\r\n\r\n //validation input\r\n @Input() required = true;\r\n @Input() min = 0;\r\n @Input() max = 9000000000000000; //Math.max 9000000000000000\r\n\r\n\r\n @Input() infoMessage: string;\r\n @Output() infoClick = new EventEmitter<void>();\r\n\r\n onInfoClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n this.infoClick.emit();\r\n }\r\n\r\n changed(x){\r\n this.valueChange.emit(x);\r\n }\r\n\r\n leaved() {\r\n this.leave.emit();\r\n }\r\n\r\n enterPressed() {\r\n this.enterPress.emit();\r\n }\r\n\r\n //validation\r\n control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);\r\n\r\n validate(control: FormControl): string {\r\n\r\n if (this.required && control.hasError('required')) {\r\n return `Required`;\r\n }\r\n\r\n if (parseFloat(this.value) < this.min){\r\n return `Minimun value is ${this.min}`;\r\n }\r\n\r\n if (parseFloat(this.value) > this.max) {\r\n return `Maximum value is ${this.max}`;\r\n }\r\n\r\n if (control.hasError('min')) {\r\n return `Minimun value is ${this.min}`;\r\n }\r\n\r\n if (control.hasError('max')) {\r\n return `Maximum value is ${this.max}`;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" hideRequiredMarker=\"true\" style=\"margin-right: 5px;\">\r\n <mat-label>{{display}}</mat-label>\r\n <input matInput appCurrencyInputMask autocomplete=\"off\" style=\"text-align: right;\"\r\n [min]=\"min\" [max]=\"max\"\r\n [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (keyup.enter)=\"enterPressed()\" (blur)=\"leaved()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [readonly]=\"readonly\" />\r\n <span *ngIf=\"currency!=''\" matPrefix>{{currency}}&nbsp;</span>\r\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\r\n <div matSuffix class=\"suffix-icons\">\r\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\r\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\r\n </button>\r\n </div>\r\n</mat-form-field>\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'spa-option',\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.css']\r\n})\r\nexport class OptionComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.OGValue = this.value;\r\n }\r\n\r\n OGValue\r\n\r\n\r\n\r\n @Input() options: any;\r\n @Input() optionValue = \"\";\r\n @Input() optionDisplay = \"\";\r\n @Input() readonly = false;\r\n\r\n @Input() type = \"text\";\r\n @Input() value = \"\";\r\n @Input() display = \"\";\r\n @Input() show: boolean = false;\r\n\r\n\r\n @Output() valueChange = new EventEmitter();\r\n @Output() enterPress = new EventEmitter();\r\n\r\n changed() {\r\n this.valueChange.emit(this.value);\r\n }\r\n\r\n dateChanged(x){\r\n this.value = x\r\n this.changed()\r\n }\r\n\r\n enterPressed(){\r\n this.enterPress.emit();\r\n }\r\n\r\n resetValue(){\r\n this.value = this.OGValue;\r\n this.changed();\r\n }\r\n\r\n\r\n}\r\n","\r\n<div class=\"tin-row gap-0\">\r\n\r\n<mat-checkbox color=\"primary\" style=\"margin-right:5px\" [(ngModel)]=\"show\" (change)=\"resetValue()\" labelPosition=\"after\">{{display}}</mat-checkbox>\r\n\r\n<mat-form-field style=\"margin-right:5px;width: 0px;\" >\r\n<input matInput />\r\n</mat-form-field>\r\n\r\n\r\n<ng-container *ngIf=\"show\" [ngSwitch]=\"type\">\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"display\" [(value)]=\"value\" (valueChange)=\"dateChanged($event)\"></spa-date>\r\n\r\n <spa-select *ngSwitchCase=\"'select'\" [display]=\"display\" [options]=\"options\" [optionDisplay]=\"optionDisplay\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\">\r\n </spa-select>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"display\" (keyup.enter)=\"enterPressed()\" [options]=\"options\" [optionValue]=\"optionValue\" [(value)]=\"value\" (valueChange)=\"changed()\"></spa-text>\r\n\r\n</ng-container>\r\n\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Core } from '../classes/TinCore';\r\n\r\n@Pipe({\r\n name: 'camelToWords'\r\n})\r\nexport class CamelToWordsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n return Core.camelToWords(value);\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Action, Tile, TileConfig, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'spa-tiles',\r\n templateUrl: './tiles.component.html',\r\n styleUrls: ['./tiles.component.css']\r\n})\r\nexport class TilesComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService,) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.config){\r\n this.tiles = this.config.tiles;\r\n\r\n if (this.config?.loadAction && this.config.loadInit) {\r\n this.loadData(this.config?.loadAction, \"\");\r\n }\r\n }\r\n\r\n this.reload.subscribe(v => {\r\n\r\n if (v == true){\r\n if (this.config?.loadAction) {\r\n this.loadData(this.config?.loadAction, \"\");\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n }\r\n\r\n tiles: Tile[];\r\n @Input() config: TileConfig;\r\n\r\n\r\n @Input() data;\r\n // @Input() clickable: boolean = false;\r\n @Input() reload: Subject<boolean>;\r\n\r\n @Output() tileClick = new EventEmitter();\r\n\r\n selectedTile: string = \"\";\r\n\r\n new = true\r\n\r\n clicked(v: Tile){\r\n\r\n\r\n\r\n if(!this.config.clickable) return;\r\n\r\n\r\n if(this.selectedTile == v.name){\r\n this.tileClick.emit(\"\");\r\n this.selectedTile = \"\";\r\n }else{\r\n this.tileClick.emit(v.name);\r\n this.selectedTile = v.name;\r\n }\r\n\r\n\r\n }\r\n\r\n pop(x){\r\n\r\n if (x){\r\n this.messageService.info(x);\r\n }\r\n\r\n }\r\n\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.data = apiResponse.data\r\n }\r\n else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n}\r\n"," <div class=\"tin-row align-items-center tiles\" *ngIf=\"!new\">\r\n\r\n <ng-container *ngFor=\"let tile of tiles\">\r\n\r\n <mat-card class=\"card tin-col\" *ngIf=\"!tile.hidden\" (click)=\"clicked(tile)\">\r\n\r\n <mat-label style=\"font-weight:bold; text-align: center; padding: 0px; margin: 0px;\" [ngStyle]=\"{'color':tile.color,'font-size':tile.name == selectedTile ? '45px' : '35px' }\">{{data ? data[tile.name] : 0}}</mat-label>\r\n\r\n <div class=\"d-flex justify-content-center align-items-center\">\r\n\r\n <!-- <button mat-icon-button (click)=\"pop(tile.info)\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '14px' : '14px' }\" style=\"padding-left:5px;padding-right:5px; margin-right: 10px;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':tile.name == selectedTile ? '24x' : '24px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n </button> -->\r\n\r\n <button mat-icon-button (click)=\"pop(tile.info)\" style=\"margin: 0px; padding: 0px;\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '14px' : '14px' }\" style=\"padding-left:5px;padding-right:5px; margin-right: 10px;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':tile.name == selectedTile ? '24x' : '18px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n </button>\r\n\r\n <!-- <div class=\"row d-flex justify-content-center row align-items-center\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '18px' : '12px' }\" style=\"padding-left:5px;padding-right:5px\">{{tile.name}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" [ngStyle]=\"{'font-size':tile.name == selectedTile ? '20px' : '17px' }\" style=\" color:steelblue;\">info</mat-icon>\r\n </div> -->\r\n\r\n </div>\r\n\r\n </mat-card>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"d-flex row align-items-center justify-content-between\" *ngIf=\"new\">\r\n\r\n <ng-container *ngFor=\"let tile of tiles\">\r\n\r\n <mat-card class=\"col\" style=\"margin-left: 5px;margin-right: 5px; padding: 10px 16px ; min-width: 150px; margin-top: 5px;\" (click)=\"clicked(tile)\">\r\n\r\n <div class=\"row d-flex justify-content-center align-items-center\">\r\n\r\n <div style=\"text-align: center;\">\r\n <mat-label style=\"font-weight:bold;\" *ngIf=\"tile.prefix\" >{{tile.prefix}}</mat-label> &nbsp;\r\n <mat-label style=\"font-weight:bold; text-align: center;\" [ngStyle]=\"{'color':tile.color,'font-size':tile.name == selectedTile ? '35px' : '30px' }\">{{data ? data[tile.name] : 0}}</mat-label>&nbsp;\r\n <mat-label style=\"font-weight:bold;\" *ngIf=\"tile.suffix\">{{tile.suffix}}</mat-label>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n <div class=\"row d-flex justify-content-center align-items-center\">\r\n\r\n <div class=\"d-flex justify-content-center align-items-center\" style=\"text-align: center;\">\r\n <mat-label [ngStyle]=\"{'font-size':tile.name == selectedTile ? '18px' : '14px' }\" style=\"padding-left:5px;padding-right:5px; text-align: center;\">{{tile.alias ?? tile.name | camelToWords}}</mat-label>\r\n <mat-icon [matTooltip]=\"tile.info\" matTooltipPosition=\"above\" style=\"font-size: 20px; color:steelblue;\">info</mat-icon>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card>\r\n\r\n\r\n </ng-container>\r\n\r\n </div>\r\n","import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\nimport { Step } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS, useValue: { displayDefaultIndicatorType: false }\r\n }]\r\n})\r\nexport class StepsComponent implements OnInit, AfterViewInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n this.pushSteps();\r\n }\r\n\r\n @ViewChild('stepper') stepper: MatStepper;\r\n @Input() value = \"\";\r\n @Input() steps: Step[];\r\n\r\n setStepper() {\r\n\r\n if (this.value == \"\") return;\r\n\r\n\r\n this.stepper.selectedIndex = 0;\r\n\r\n switch (this.value) {\r\n\r\n\r\n\r\n case \"Draft\":\r\n this.stepper.selectedIndex = 0;\r\n break;\r\n\r\n case \"Head Approval\":\r\n this.pushStepper(1)\r\n break;\r\n\r\n case \"CE Approval\":\r\n this.pushStepper(2)\r\n break;\r\n\r\n case \"Booking\":\r\n this.pushStepper(3)\r\n break;\r\n\r\n case \"BTA Approval\":\r\n this.pushStepper(4)\r\n break;\r\n\r\n case \"Travel\":\r\n this.pushStepper(5)\r\n break;\r\n\r\n case \"BTR Approval\":\r\n this.pushStepper(6)\r\n break;\r\n\r\n case \"Travel Closure\":\r\n this.pushStepper(7)\r\n break;\r\n\r\n }\r\n\r\n }\r\n\r\n pushStepper(count: number) {\r\n\r\n for (let index = 0; index < count + 1; index++) {\r\n // const element = array[index];\r\n this.stepper.selectedIndex = index;\r\n }\r\n\r\n }\r\n\r\n pushSteps(){\r\n\r\n if(this.steps.length == 0) return;\r\n if (this.value == \"\") return;\r\n this.stepper.selectedIndex = 0;\r\n\r\n\r\n let i = 0;\r\n\r\n for (let step of this.steps) {\r\n\r\n if (step.name != this.value) {\r\n\r\n this.stepper.selectedIndex = i;\r\n i++;\r\n\r\n } else {\r\n\r\n this.stepper.selectedIndex = i;\r\n break;\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n<!-- <mat-horizontal-stepper class=\"test\" labelPosition=\"bottom\" #stepper>\r\n <mat-step [editable]=\"false\" label=\"Draft\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Head Approval\" > </mat-step>\r\n <mat-step [editable]=\"false\" label=\"CE Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Booking\" state=\"booking\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTA Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Travel\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"BTR Approval\"> </mat-step>\r\n <mat-step [editable]=\"false\" label=\"Closure\"> </mat-step>\r\n <ng-template matStepperIcon=\"booking\"> <mat-icon>forum</mat-icon> </ng-template>\r\n</mat-horizontal-stepper> -->\r\n\r\n<mat-horizontal-stepper class=\"transparent\" labelPosition=\"bottom\" #stepper>\r\n\r\n <mat-step *ngFor=\"let row of steps\"\r\n [editable]=\"false\" [label]=\"row.name\">\r\n </mat-step>\r\n\r\n <!-- <ng-template *ngFor=\"let row of steps\"\r\n [matStepperIcon]=\"row.name\"> <mat-icon>{{row.icon}}</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template matStepperIcon=\"booking\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template> -->\r\n\r\n <!-- <ng-template ngFor let-xb [ngForOf]=\"steps\" matStepperIcon=\"Booking\"> <mat-icon>forum</mat-icon>\r\n\r\n </ng-template> -->\r\n\r\n</mat-horizontal-stepper>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'spa-attach',\r\n templateUrl: './attach.component.html',\r\n styleUrls: ['./attach.component.scss']\r\n})\r\nexport class AttachComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @Input() message = \"Drag and drop files here\"\r\n @Input() files: any[] = [];\r\n @Output() filesChange = new EventEmitter();\r\n @Output() upload = new EventEmitter();\r\n\r\n\r\n @Input() enableUpload = false;\r\n\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n\r\n fileBrowseHandler(event) {\r\n let files = event.target.files;\r\n this.prepareFilesList(files);\r\n }\r\n\r\n\r\n deleteFile(index: number) {\r\n this.files.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Simulate the upload process\r\n */\r\n // uploadFilesSimulator(index: number) {\r\n // setTimeout(() => {\r\n // if (index === this.files.length) {\r\n // return;\r\n // } else {\r\n // const progressInterval = setInterval(() => {\r\n // if (this.files[index].progress === 100) {\r\n // clearInterval(progressInterval);\r\n // this.uploadFilesSimulator(index + 1);\r\n // } else {\r\n // this.files[index].progress += 5;\r\n // }\r\n // }, 200);\r\n // }\r\n // }, 1000);\r\n // }\r\n\r\n prepareFilesList(files: Array<any>) {\r\n for (const item of files) {\r\n item.progress = 0;\r\n this.files.push(item);\r\n }\r\n // this.uploadFilesSimulator(0);\r\n }\r\n\r\n formatBytes(bytes, decimals) {\r\n if (bytes === 0) {\r\n return '0 Bytes';\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals || 2;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n uploaded(){\r\n this.upload.emit();\r\n }\r\n\r\n filesChanged(){\r\n this.filesChange.emit(this.files);\r\n }\r\n}\r\n","<div class=\"tin-input-row\" style=\"width: 100%;\">\r\n\r\n <div class=\"col\">\r\n <div class=\"container\" appDnd (fileDropped)=\"onFileDropped($event)\">\r\n <input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event)\" />\r\n <h4>{{message}}</h4>\r\n\r\n <label for=\"fileDropRef\">Click to Browse</label>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <div class=\"files-list \">\r\n <div class=\"single-file \" style=\"width: 100%;\" *ngFor=\"let file of files; let i = index\">\r\n\r\n <div class=\"tin-input-row info\" >\r\n <h4 class=\"name\">\r\n {{ file?.name }}\r\n </h4>\r\n <p class=\"size\">\r\n {{ formatBytes(file?.size, 2) }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"delete\" (click)=\"deleteFile(i)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"18\" viewBox=\"0 0 14 18\">\r\n <path fill=\"#B1B1B1\" fill-rule=\"nonzero\"\r\n d=\"M1 16c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v10zm3.17-7.83a.996.996 0 0 1 1.41 0L7 9.59l1.42-1.42a.996.996 0 1 1 1.41 1.41L8.41 11l1.42 1.42a.996.996 0 1 1-1.41 1.41L7 12.41l-1.42 1.42a.996.996 0 1 1-1.41-1.41L5.59 11 4.17 9.58a.996.996 0 0 1 0-1.41zM10.5 1L9.79.29C9.61.11 9.35 0 9.09 0H4.91c-.26 0-.52.11-.7.29L3.5 1H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1h-2.5z\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length > 0 && enableUpload\" class=\"tin-input-row d-flex justify-content-center\" style=\"width: 100%;\" >\r\n <button mat-button color=\"primary\" (click)=\"uploaded()\" matTooltip=\"Upload New Documents\" matTooltipPosition=\"above\" ><mat-icon>file_upload</mat-icon> Upload</button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\n@Component({\r\n selector: 'spa-chips',\r\n templateUrl: './chips.component.html',\r\n styleUrls: ['./chips.component.css']\r\n})\r\nexport class ChipsComponent implements OnInit {\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n @Input() icon = \"\";\r\n @Input() removable = false;\r\n @Input() addable = false;\r\n\r\n\r\n\r\n @Input() chips: string[];\r\n // @Output() chipClick = new EventEmitter();\r\n\r\n @Output() click = new EventEmitter();\r\n\r\n @Output() remove = new EventEmitter();\r\n\r\n clicked(chip: string) {\r\n\r\n if (typeof chip != 'string') {\r\n return;\r\n }\r\n\r\n if (chip) {\r\n this.click.emit(chip);\r\n }\r\n }\r\n\r\n\r\n removed(chip) {\r\n\r\n // const index = this.chips.indexOf(chip);\r\n\r\n // if (index >= 0) {\r\n // this.chips.splice(index, 1);\r\n // }\r\n\r\n this.messageService.confirm(`Remove ${chip} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.remove.emit(chip);\r\n\r\n };\r\n });\r\n\r\n }\r\n\r\n}\r\n\r\n","\r\n\r\n\r\n<div class=\"row mt-1\" style=\"margin-left: 1em;\">\r\n <mat-chip-list #chipList>\r\n <mat-chip *ngFor=\"let chip of chips let i = index\" selectable [removable]=\"removable\" style=\"font-size: 12px;\" [ngStyle]=\"{'padding-right': removable ? '5px':'12px'}\" (click)=\"clicked(chip)\">\r\n <mat-icon *ngIf=\"icon != ''\" color=\"primary\" style=\"font-size: 22px;\">{{icon}}</mat-icon>\r\n\r\n {{chip}}\r\n\r\n <mat-icon *ngIf=\"removable\" style=\"font-size: 20px; margin-left: 5px;margin-top: 3px;margin-right: 0px; color: grey;\" (click)=\"removed(chip)\">cancel</mat-icon>\r\n </mat-chip>\r\n </mat-chip-list>\r\n</div>\r\n\r\n\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'spa-loader',\r\n templateUrl: './loader.component.html',\r\n styleUrls: ['./loader.component.css']\r\n})\r\nexport class LoaderComponent implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService) {\r\n\r\n this.loaderService.isLoading.subscribe((v) => {\r\n this.loading = v;\r\n });\r\n\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n @Input() logo = \"\";\r\n loading: boolean = false;\r\n\r\n}\r\n","<div class=\"progress-loader\" [hidden]=\"!loading\">\r\n <div class=\"loading-spinner\">\r\n\r\n <img *ngIf=\"logo==''\" style=\"width: 100px;\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==\"\r\n\r\n >\r\n\r\n <img *ngIf=\"logo!=''\" [src]=\"logo\" style=\"width: 100px;\" />\r\n\r\n\r\n <span id=\"loadingMessage\" class=\"loading-message\">Please wait...</span>\r\n </div>\r\n</div>\r\n","import { AppConfig, Role, Constants } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { StorageService } from '../../services/storage.service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\n\r\n\r\n@Component({\r\n selector: 'spa-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css']\r\n})\r\nexport class NavMenuComponent {\r\n\r\n constructor(public router: Router, public authService: AuthService, private storageService: StorageService, private socialService: SocialAuthService, private breakpointObserver: BreakpointObserver, public dataService: DataServiceLib,) {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n } else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.authService.loggedUserFullName.subscribe(user => this.loggedUserFullName = user)\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.authService.loggedinObserv.subscribe(obj => this.loggedin = obj)\r\n this.authService.tenantNameObserv.subscribe(obj => this.tenantName = obj)\r\n\r\n }\r\n\r\n smallScreen\r\n myRole;\r\n loggedUserFullName: string;\r\n tenantName : string;\r\n loggedin: boolean;\r\n isExpanded = false;\r\n\r\n nowDate = new Date()\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n @Input() footer: string = 'alsquaretech.net | Privacy Policy';\r\n\r\n\r\n\r\n collapse() {\r\n this.isExpanded = false;\r\n }\r\n\r\n toggle() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n closeSide() {\r\n this.isExpanded = false;\r\n }\r\n\r\n logoff() {\r\n // this.socialService.signOut();\r\n // this.authService.Updateloggedin(false);\r\n // this.authService.UpdateAutoLogin(false);\r\n // this.authService.UpdateRole(new Role());\r\n // this.storageService.clear();\r\n // this.router.navigate([\"login\"]);\r\n this.authService.logoff();\r\n }\r\n\r\n redirectTo(link: string){\r\n\r\n this.collapse();\r\n\r\n if (link!=\"\"){\r\n this.router.navigate([link]);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","<header *ngIf=\"loggedin && dataService.appConfig.navigation == 'top'\">\r\n\r\n <nav class=\"toolbar navbar navbar-expand-sm navbar-toggleable-sm navbar-light border-bottom box-shadow mb-3 \" style=\"padding-right: 10px;\">\r\n\r\n\r\n <div class=\"container-fluid\" style=\"padding-right: 0px;\">\r\n\r\n <img *ngIf=\"appConfig.logo!=''\" [src]=\"appConfig.logo\" style=\"height: 50px; margin-right: 2em\" />\r\n\r\n <div>\r\n <!-- <div style=\"font-size: 20px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px;\">\r\n {{tenantName}}\r\n </div> -->\r\n\r\n <div *ngIf=\"!dataService.appConfig.multitenant\" style=\"font-size: 22px;\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\" style=\"font-size: 20px; ; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\".navbar-collapse\" aria-label=\"Toggle navigation\" [attr.aria-expanded]=\"isExpanded\" (click)=\"toggle()\">\r\n <span class=\"navbar-toggler-icon\"></span>\r\n </button>\r\n\r\n <div *ngIf=\"myRole\" class=\" navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse stack-top\" style=\"margin-right: 0px;\" [ngClass]=\"{ show: isExpanded, navitems: isExpanded }\" >\r\n\r\n <button mat-icon-button (click)=\"logoff()\" > <mat-icon>logout</mat-icon> </button>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >support_agent</mat-icon> </button>\r\n\r\n <!-- <button mat-icon-button (click)=\"redirectTo('home/admin/tenants')\"> <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button> -->\r\n </div>\r\n\r\n\r\n <button id=\"btnUser\" mat-button [matMenuTriggerFor]=\"profileMenu\" ><mat-icon style=\"font-size: 24px;\">account_circle</mat-icon> &nbsp;{{loggedUserFullName}}</button>\r\n\r\n <mat-menu #profileMenu=\"matMenu\">\r\n <button id=\"btnProfile\" mat-menu-item (click)=\"redirectTo('home/user/profile')\" >Profile</button>\r\n <button id=\"btnLogOff\" mat-menu-item (click)=\"logoff()\">Log Off</button>\r\n </mat-menu>\r\n\r\n <div *ngFor=\"let item of appConfig.capItems\">\r\n\r\n <!-- Menu Item -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && !item.capSubItems && item.showMenu\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items ignored -->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && item.ignoreSubsDisplay\" mat-button (click)=\"redirectTo(item.link)\">{{item.display}}</button>\r\n\r\n <!-- Menu Item with Sub items to display-->\r\n <button id=\"btnMenu\" *ngIf=\"myRole[item.name] && item.capSubItems && item.showMenu && !item.ignoreSubsDisplay\" mat-button [matMenuTriggerFor]=\"adminMenu\">{{item.display}}</button>\r\n\r\n\r\n <!-- Sub Menu Items -->\r\n <mat-menu #adminMenu=\"matMenu\">\r\n\r\n <div *ngFor=\"let subItem of item.capSubItems\">\r\n\r\n <button *ngIf=\"myRole[subItem.name] && subItem.showMenu\" mat-menu-item (click)=\"redirectTo(subItem.link)\">{{subItem.display}}</button>\r\n\r\n </div>\r\n\r\n </mat-menu>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </nav>\r\n\r\n</header>\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"dataService.appConfig.navigation == 'top'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<!-- SIDE -->\r\n<mat-toolbar class=\"tin-bg-image-toolbar\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\" style=\"padding: 0px 8px;\">\r\n\r\n <button mat-icon-button (click)=\"toggle()\" matTooltip=\"Menu\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n\r\n <img [src]=\"dataService.appConfig.logo\" style=\"height: 50px;\" />\r\n\r\n <div style=\"padding-left: 10px; \">\r\n\r\n <div style=\"font-size: 20px; height: 25px; font-weight: 400;\" [ngStyle]=\"{'margin-top': dataService.appConfig.multitenant ? '12px' : ''}\">\r\n {{appConfig.appName}}\r\n </div>\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant && tenantName\" style=\"font-size: 12px; margin-bottom: 5px;\">\r\n {{tenantName}}\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <span class=\"toolbar-item-spacer\"></span>\r\n\r\n <!-- buttons -->\r\n\r\n <div *ngIf=\"dataService.appConfig.multitenant\">\r\n\r\n <button mat-icon-button (click)=\"redirectTo('home/admin/tenant-settings')\" > <mat-icon fontSet=\"material-icons-round\">apartment</mat-icon> </button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"redirectTo('home/admin/bug')\"> <mat-icon >help</mat-icon> </button>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button matTooltip=\"Notifications\"><mat-icon>notifications</mat-icon></button>\r\n\r\n <button mat-icon-button matTooltip=\"My Account\" [matMenuTriggerFor]=\"userAccountMenu\"><mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"!smallScreen\" mat-icon-button (click)=\"logoff()\"> <mat-icon>logout</mat-icon></button>\r\n\r\n\r\n <!-- my account menu -->\r\n <mat-menu #userAccountMenu [overlapTrigger]=\"false\" yPosition=\"below\">\r\n\r\n <button mat-menu-item routerLink=\"home/user/profile\">\r\n <mat-icon>person</mat-icon><span>Profile</span>\r\n </button>\r\n\r\n <button mat-menu-item routerLink=\"home/admin/bug\" *ngIf=\"dataService.appConfig.multitenant && smallScreen\">\r\n <mat-icon>help</mat-icon> <span>Help</span>\r\n </button>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <button mat-menu-item (click)=\"logoff()\">\r\n <mat-icon>logout</mat-icon>Logout\r\n </button>\r\n\r\n </mat-menu>\r\n\r\n</mat-toolbar>\r\n\r\n\r\n\r\n\r\n<mat-sidenav-container class=\"app-container\" [hasBackdrop]=\"smallScreen\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n\r\n <mat-sidenav #sidenav [mode]=\"smallScreen ? 'over' : 'over'\" [class.mat-elevation-z4]=\"true\" [opened]=\"isExpanded\" class=\"app-sidenav side-color\" style=\"height: 100%;\">\r\n <mat-nav-list >\r\n\r\n <ng-container *ngFor=\"let cap of dataService.appConfig.capItems\" >\r\n\r\n <!-- Menu item -->\r\n <mat-list-item [routerLink]=\"cap.link\" *ngIf=\"myRole[cap.name] && cap.showMenu && (!cap.capSubItems || cap.capSubItems && cap.ignoreSubsDisplay)\" style=\"height: 40px;font-size: 15px;\" (click)=\"toggle()\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon}}</mat-icon>{{cap.display}}\r\n </mat-list-item>\r\n\r\n <!-- Menu With Sub items -->\r\n <mat-expansion-panel class=\"side-color\" [class.mat-elevation-z0]=\"true\" *ngIf=\"myRole[cap.name] && cap.showMenu && cap.capSubItems && !cap.ignoreSubsDisplay\">\r\n\r\n <mat-expansion-panel-header style=\"height: 40px;padding-left: 15px;\">\r\n <mat-icon style=\"margin-right: 5px;\">{{cap.icon != 'navigate_next' ? cap.icon : 'fiber_manual_record' }}</mat-icon>{{cap.display}}\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Sub items -->\r\n <mat-nav-list *ngFor=\"let capSub of cap.capSubItems\">\r\n\r\n <mat-list-item [routerLink]=\"capSub.link\" style=\"height: 30px; font-size: 15px;\" (click)=\"toggle()\" *ngIf=\"myRole[cap.name] && cap.showMenu\">\r\n <mat-icon style=\"margin-right: 5px;\">{{capSub.icon}}</mat-icon>{{capSub.display}}\r\n </mat-list-item>\r\n\r\n </mat-nav-list>\r\n\r\n </mat-expansion-panel>\r\n\r\n </ng-container>\r\n\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n\r\n\r\n\r\n <mat-sidenav-content class=\"container-fluid tin-bg-image\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <hr style=\"margin-top: 0px;\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n </mat-sidenav-content>\r\n\r\n</mat-sidenav-container>\r\n\r\n\r\n<!-- footer -->\r\n<div class=\"tin-center\" *ngIf=\"loggedin && dataService.appConfig.navigation == 'side'\">\r\n <label style=\"text-align: center; font-size: 12px;\">&copy; {{nowDate | date : 'yyyy'}} {{footer}}</label>\r\n</div>\r\n\r\n\r\n<div class=\"container-fluid tin-bg-image\" *ngIf=\"!loggedin && dataService.appConfig.navigation == 'side'\">\r\n <router-outlet></router-outlet>\r\n <spa-loader [logo]=\"this.dataService.appConfig.logo\"></spa-loader>\r\n</div>\r\n","import { Router } from '@angular/router';\r\nimport { AuthService } from './auth.service';\r\nimport { MessageService } from './message.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpResponse, HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from './loader.service';\r\nimport { LogService } from './log.service';\r\n\r\n@Injectable()\r\nexport class LoaderInterceptor implements HttpInterceptor {\r\n\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private authService: AuthService, private router: Router, private logService: LogService) { }\r\n\r\n\r\n removeRequest(req: HttpRequest<any>) {\r\n\r\n const i = this.requests.indexOf(req);\r\n\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n showError(userMessage : string, error : HttpErrorResponse){\r\n\r\n console.log(error)\r\n\r\n let url = new URL(window.location.href);\r\n\r\n if (url.host.includes('localhost')) {\r\n this.messageService.error(error.error.Message)\r\n } else {\r\n this.messageService.toast(userMessage)\r\n }\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\r\n let requestClone = request.clone({\r\n setHeaders: {\r\n Authorization: \"Bearer \" + this.authService.tokenSource.value,\r\n }\r\n });\r\n\r\n\r\n this.requests.push(requestClone);\r\n\r\n if (this.requests.length > 1) {\r\n this.logService.info(\"Multiple connections detected >= \" + this.requests.length)\r\n }\r\n\r\n this.loaderService.isLoading.next(true);\r\n\r\n return Observable.create(observer => {\r\n\r\n const subscription = next.handle(requestClone).subscribe(event => {\r\n\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(requestClone);\r\n observer.next(event);\r\n }\r\n\r\n\r\n\r\n },\r\n (error: HttpErrorResponse) => {\r\n\r\n this.removeRequest(requestClone);\r\n observer.error(error);\r\n\r\n if (error.status === 401) {\r\n this.authService.sessionExpired()\r\n this.messageService.toast('Unauthorised: Please login again')\r\n }\r\n else if (error.status ===500){\r\n this.showError(\"System Error\", error)\r\n }\r\n else if (error.statusText == 'Unknown Error'){\r\n this.showError(\"Connection Error\", error)\r\n }\r\n else{\r\n this.showError(\"Error\", error)\r\n }\r\n\r\n },\r\n () => {\r\n this.removeRequest(requestClone);\r\n observer.complete();\r\n });\r\n\r\n\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(requestClone);\r\n subscription.unsubscribe();\r\n };\r\n\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { CurrencyInputMaskDirective } from './currency-input-mask.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n CurrencyInputMaskDirective\r\n ],\r\n exports: [\r\n CurrencyInputMaskDirective\r\n ]\r\n})\r\nexport class CurrencyInputModule {\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Button, TableConfig } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ButtonService {\r\n getButton(buttons: Button[], name: string): Button | null {\r\n return buttons?.find(x => x.name === name) || null;\r\n }\r\n\r\n getButtonProperties(button: Button, row: any, config: TableConfig): {\r\n color: string,\r\n icon: string,\r\n disabled: boolean,\r\n visible: boolean,\r\n tip: string\r\n } {\r\n return {\r\n color: this.getButtonColor(button, row),\r\n icon: this.getIcon(button, config),\r\n disabled: this.testDisabled(button, row),\r\n visible: this.testVisible(button, row),\r\n tip: button.tip || button.name\r\n };\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n if (this.isButtonDisabled(button, row)) return 'lightgray';\r\n\r\n if (button?.color) return button.color;\r\n if (button.icon?.color) return button.icon.color;\r\n\r\n const colorMap = {\r\n 'delete': '#F44336',\r\n 'create': 'green'\r\n };\r\n\r\n return colorMap[button.name] || '#4050B5';\r\n }\r\n\r\n isButtonDisabled(button: Button, row: any): boolean {\r\n return button?.disabled ? button.disabled(row) : false;\r\n }\r\n\r\n isButtonVisible(button: Button, row: any, isLoadComplete: boolean): boolean {\r\n if (!isLoadComplete) return false;\r\n return button?.visible ? button.visible(row) : true;\r\n }\r\n\r\n getTitleAction(mode: string, buttons: Button[]): string {\r\n const modeMap = {\r\n 'view': 'View',\r\n 'edit': buttons.find(b => b.name === 'edit')?.display || 'Edit',\r\n 'create': buttons.find(b => b.name === 'create')?.display || 'Create'\r\n };\r\n return modeMap[mode] || '';\r\n }\r\n\r\n isTabVisible(tableConfig: TableConfig): boolean {\r\n return tableConfig.hideTabCondition ? !tableConfig.hideTabCondition(tableConfig.parentData) : true;\r\n }\r\n\r\n getIcon(button: Button, config: TableConfig): string {\r\n if (button.icon) {\r\n return button.icon.name;\r\n }\r\n return this.getDefaultIcon(button.name, config.flatButtons);\r\n }\r\n\r\n testDisabled(button: Button, row: any): boolean {\r\n return button.disabled ? button.disabled(row) : false;\r\n }\r\n\r\n testVisible(button: Button, row: any): boolean {\r\n return button.visible ? button.visible(row) : true;\r\n }\r\n\r\n private getDefaultColor(buttonName: string): string {\r\n switch (buttonName) {\r\n case 'delete': return '#F44336';\r\n case 'create': return 'green';\r\n default: return '#4050B5';\r\n }\r\n }\r\n\r\n private getDefaultIcon(buttonName: string, flatButtons: boolean): string {\r\n switch (buttonName) {\r\n case 'view':\r\n return flatButtons ? 'open_in_new' : 'pageview';\r\n case 'edit': return 'edit';\r\n case 'delete': return 'delete';\r\n case 'create': return 'add';\r\n default: return 'more_horiz';\r\n }\r\n }\r\n\r\n getCreateButton(buttons: Button[]): Button | undefined {\r\n return buttons?.find(button => button?.name === 'create');\r\n }\r\n\r\n getDisplayedButtons(buttons: Button[], isSmallScreen: boolean, minButtons?: string[]): Button[] {\r\n const nonCreateButtons = buttons?.filter(x => x.name !== 'create' && !x.inHeader);\r\n\r\n if (isSmallScreen) {\r\n if (minButtons) {\r\n return nonCreateButtons.filter(x => minButtons.includes(x.name));\r\n }\r\n return nonCreateButtons.slice(0, 1);\r\n }\r\n\r\n return nonCreateButtons;\r\n }\r\n\r\n getActionsWidth(buttons: Button[]): string {\r\n return `${buttons.length * 40 + 20}px`;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\n\n@Component({\n selector: 'spa-number',\n templateUrl: './number.component.html',\n styleUrls: ['./number.component.css']\n})\nexport class NumberComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n if (this.placeholder == \"\") {\n this.placeholder = \"Enter \" + this.display;\n }\n }\n\n ngAfterViewInit() {\n this.initControl(this.control)\n }\n\n initControl(control: FormControl) {\n if (this.readonly) {\n control.setValidators(null);\n control.updateValueAndValidity();\n }\n if (!this.required && !this.readonly) {\n\n control.setValidators([Validators.minLength(this.min), Validators.maxLength(this.max)]);\n this.control.updateValueAndValidity();\n }\n }\n\n // options: FormGroup;\n hideRequiredControl = new FormControl(true);\n hide = true; //for password only\n\n @Input() readonly = false;\n @Input() hint = \"\";\n @Input() display = \"\";\n @Input() placeholder = \"\";\n @Input() value = 0;\n @Input() width = \"100%\"\n\n @Output() valueChange = new EventEmitter();\n @Output() leave = new EventEmitter();\n @Output() enterPress = new EventEmitter();\n\n\n\n\n\n\n //validation input\n @Input() required = true;\n @Input() min = 0;\n @Input() max = 9000000000000000; //Math.max\n @Input() step = 1;\n\n @Input() suffix: string;\n @Input() infoMessage: string;\n @Output() infoClick = new EventEmitter<void>();\n\n onInfoClick(event: MouseEvent): void {\n event.stopPropagation();\n this.infoClick.emit();\n }\n\n\n changed() {\n this.valueChange.emit(this.value);\n }\n\n leaved() {\n this.leave.emit();\n }\n\n enterPressed() {\n this.enterPress.emit();\n }\n\n //validation\n control = new FormControl(this.value, [Validators.required, Validators.min(this.min), Validators.max(this.max)]);\n\n validate(control: FormControl): string {\n\n if (this.required && control.hasError('required')) {\n return `Required`;\n }\n\n if (control.hasError('min')) {\n return `Minimun value is ${this.min}`;\n }\n\n if (control.hasError('max')) {\n return `Maximum value is ${this.max}`;\n }\n\n return \"\";\n }\n\n}\n","\n<mat-form-field hideRequiredMarker=\"true\" [hintLabel]=\"hint\" [hideRequiredMarker]=\"!required\" [ngStyle]=\"{'width':width}\" style=\"margin-right: 5px;\">\n <mat-label>{{display}}</mat-label>\n <input matInput autocomplete=\"off\" type=\"number\" [min]=\"min\" [max]=\"max\" [step]=\"step\" [(ngModel)]=\"value\" (change)=\"changed()\" (blur)=\"leaved()\" (keyup.enter)=\"enterPressed()\" [placeholder]=\"placeholder\" [formControl]=\"control\" [required]=\"required\" [readonly]=\"readonly\" />\n <mat-error *ngIf=\"control.invalid\">{{validate(control)}}</mat-error>\n <div matSuffix class=\"suffix-icons\">\n <label *ngIf=\"suffix\">{{suffix}}</label>\n <button mat-icon-button *ngIf=\"infoMessage\" (click)=\"onInfoClick($event)\" matTooltip=\"Info\" matTooltipPosition=\"above\">\n <mat-icon style=\"color: steelblue;\">info</mat-icon>\n </button>\n </div>\n</mat-form-field>\n","//-------------------------------------------EDIT\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { HttpService } from '../../services/http.service';\r\n// import { HttpService } from 'tin-core';\r\n\r\n@Component({\r\n selector: 'app-editRequest',\r\n templateUrl: './viewerDialog.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class viewerDialog implements OnInit {\r\n\r\n constructor(private httpService: HttpService, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.fileNames = this.data.fileNames;\r\n this.fullPath = this.data.path;\r\n this.fileName = this.data.fileName;\r\n this.currIndex = this.data.fileNames.indexOf(this.fileName);\r\n this.setURL();\r\n\r\n }\r\n\r\n isProcessing: boolean = false;\r\n\r\n fullPath: string;\r\n fileNames = new Array();\r\n fileName: string;\r\n currIndex = 0;\r\n\r\n currentFileUrl = \"\";\r\n\r\n\r\n previous() {\r\n\r\n if (this.fileNames.length == 0) {\r\n return;\r\n }\r\n\r\n if (this.currIndex -1 >= 0)\r\n {\r\n this.currIndex = this.currIndex - 1;\r\n }\r\n else if (this.currIndex == 0)\r\n {\r\n this.currIndex = this.fileNames.length -1;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n next() {\r\n\r\n if (this.fileNames.length == 0){\r\n return;\r\n }\r\n\r\n if (this.currIndex +1 < this.fileNames.length)\r\n {\r\n this.currIndex = this.currIndex + 1;\r\n }\r\n else if (this.currIndex +1 > this.fileNames.length -1)\r\n {\r\n this.currIndex = 0;\r\n }\r\n\r\n this.setURL();\r\n\r\n }\r\n\r\n imageDoc = false;\r\n\r\n setURL() {\r\n\r\n if (this.httpService.apiUrl.includes('localhost')){\r\n this.currentFileUrl = `./assets/${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n else{\r\n this.currentFileUrl = `${this.httpService.apiUrl.replace(\"/api\", \"\").replace(\"/api\", \"\") }${this.fullPath}/${this.fileNames[this.currIndex]}`;\r\n }\r\n\r\n // this.currentFileUrl = this.currentFileUrl.replace(\"//\",\"/\");\r\n\r\n console.log(this.currentFileUrl)\r\n // this.currentFileUrl = \"./assets/TinasheOxygen.pdf\"\r\n\r\n if (this.currentFileUrl.toLocaleLowerCase().endsWith(\".pdf\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpg\") || this.currentFileUrl.toLocaleLowerCase().endsWith(\".jpeg\")){\r\n this.imageDoc = true;\r\n }else{\r\n this.imageDoc = false\r\n window.open(this.currentFileUrl, '_blank');\r\n\r\n }\r\n\r\n }\r\n\r\n change(fileName){\r\n\r\n\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n this.currIndex = this.fileNames.indexOf(fileName);\r\n\r\n\r\n this.setURL();\r\n }\r\n\r\n}\r\n","\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col\">\r\n <ngx-doc-viewer *ngIf=\"imageDoc\"\r\n [url]=\"currentFileUrl\"\r\n viewer=\"url\"\r\n style=\"width:100%;height:60vh;\">\r\n </ngx-doc-viewer>\r\n\r\n <div *ngIf=\"!imageDoc\" class=\"d-flex justify-content-center row align-items-center\" style=\"height:60vh;\">\r\n\r\n This file type will be downloaded\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"col-3\">\r\n <spa-chips [chips]=\"fileNames\" display=\"Documents\" icon=\"description\" (click)=\"change($event)\"></spa-chips>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"currIndex == 0\" (click)=\"previous()\" cdkFocusInitial>Previous</button>\r\n<button mat-button [disabled]=\"currIndex+1 == fileNames.length\" (click)=\"next()\" cdkFocusInitial>Next</button>\r\n<button mat-button mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { viewerDialog } from './viewerDialog.component';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Action, ApiResponse } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-viewer',\r\n templateUrl: './viewer.component.html',\r\n styleUrls: ['./viewer.component.css']\r\n})\r\nexport class ViewerComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib,public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.fileAction){\r\n this.loadData();\r\n }else{\r\n this.convert();\r\n }\r\n }\r\n\r\n\r\n\r\n @Input() fileAction : Action;\r\n @Input() path = \"\";\r\n @Input() folderName=\"\";\r\n @Input() fileNames;// new Array()\r\n @Input() removable = false;\r\n @Output() remove = new EventEmitter();\r\n @Input() display = \"Documents\";\r\n @Input() title = \"Documents\";\r\n\r\n // fileList: string[];\r\n\r\n loadData() {\r\n\r\n console.log(\"Calling files\")\r\n let url = this.fileAction.url.replace(\"/x\", '/'+this.folderName)\r\n this.dataService.CallApi({url: url}, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.fileNames = apiResponse.data;\r\n // console.log(this.fileNames)\r\n this.convert();\r\n });\r\n }\r\n\r\n convert(){\r\n if (typeof this.fileNames == 'string') {\r\n this.fileNames = this.fileNames.split(\"|\")\r\n }\r\n }\r\n\r\n viewDocs(fileName: string) {\r\n\r\n if (typeof fileName != 'string') {\r\n return;\r\n }\r\n\r\n\r\n\r\n const dialogRef = this.dialog.open(viewerDialog, {\r\n minWidth: '95%',\r\n maxWidth: '80vw',\r\n\r\n data: { fileNames: this.fileNames, fileName: fileName, path: `${this.path ?? ''}/${this.folderName ?? ''}` }\r\n });\r\n\r\n }\r\n\r\n removed(i){\r\n this.remove.emit(i);\r\n }\r\n\r\n}\r\n","<div class=\"tin-input-row mt-3\" *ngIf=\"title != ''\">\r\n <mat-label style=\"font-size: 20px; font-weight: 300\" > {{title}}</mat-label >\r\n</div>\r\n\r\n<spa-chips [chips]=\"fileNames\" [title]=\"title\" [removable]=\"removable\" icon=\"description\" (click)=\"viewDocs($event)\" (remove)=\"removed($event)\"></spa-chips>\r\n\r\n\r\n\r\n<div *ngIf=\"!fileNames\" class=\"d-flex justify-content-center row align-items-center\" style=\"max-height:200px\">\r\n\r\n No {{title.toLowerCase()}}\r\n\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormConfig, Field, Button } from '../../classes/Classes';\r\nimport { Core } from '../../classes/TinCore';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n// import { DialogService } from '../../services/dialog.service';\r\n// import { DetailsDialog } from '../table/detailsDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.css']\r\n})\r\nexport class FormComponent implements OnInit {\r\n\r\n constructor( private messageService: MessageService, private dataService: DataServiceLib) { }\r\n\r\n ngOnInit() {\r\n\r\n if (!this.config.fields){\r\n this.messageService.toast(\"Please Configure Form Fields\")\r\n return;\r\n }\r\n\r\n if (!this.data) {\r\n this.messageService.toast(\"Please Configure Form Data\")\r\n return;\r\n }\r\n\r\n this.fields = this.config.fields;\r\n\r\n\r\n if (this.config.multiColumn){\r\n this.multiColumn = this.config.multiColumn\r\n }else{\r\n this.multiColumn = this.fields.length > 2\r\n }\r\n\r\n if (this.config?.button?.display){\r\n this.buttonDisplay = this.config.button.display;\r\n }\r\n\r\n this.fileField = this.fields.find(x => x.type == 'file')\r\n\r\n if (this.config?.button?.action && this.fileField) {\r\n this.config.button.action.isFormData = true;\r\n\r\n }\r\n\r\n this.childFields = this.fields.filter(x => x.masterField)\r\n\r\n this.childFields.forEach(child => {\r\n let master = this.fields.find(x => x.name == child.masterField)\r\n this.updateChildOptions(master);\r\n\r\n });\r\n\r\n\r\n }\r\n\r\n ngOnChanges() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n getVisibleFields(){\r\n return this.fields?.filter(x => Core.testVisible(this.config, this.data, x))\r\n }\r\n\r\n\r\n\r\n testReadOnly(f: Field): boolean {\r\n\r\n\r\n if (this.config.mode == 'create') {\r\n return false;\r\n }\r\n\r\n if (f.readonly) return true;\r\n\r\n if (this.config.mode == 'view') {\r\n return true;\r\n }\r\n\r\n\r\n if (f.readonlyCondition) {\r\n return f.readonlyCondition(this.data);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n fileNames\r\n fileField: Field;\r\n fileViewField: Field;\r\n @Input() files: any[] = [];\r\n fields: Field[];\r\n buttonDisplay = \"Submit\";\r\n isProcessing : boolean = false;\r\n multiColumn : boolean = false;\r\n\r\n childFields : Field[];\r\n\r\n @Input() data: any;\r\n @Input() config: FormConfig;\r\n @Output() buttonClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n inputChanged(field : Field, value){\r\n\r\n\r\n this.inputChange.emit({ field: field, value: value})\r\n\r\n this.updateChildOptions(field)\r\n\r\n if (this.config.mode == 'create' && field.child){\r\n\r\n let child = this.fields.find(x => x.name == field.child.childField)\r\n this.data[child.name] = field.options.find(x => x[field.optionValue] == value)[field.child.childValueField]\r\n\r\n }\r\n\r\n\r\n if (this.config.mode == 'create' && field.children){\r\n console.log(\"Children found\")\r\n\r\n field.children.forEach(childConfig => {\r\n\r\n let child = this.fields.find(x => x.name == childConfig.childField)\r\n console.log(\"Child found\")\r\n\r\n this.data[child.name] = field.options.find(x => x[field.optionValue] == value)[childConfig.childValueField]\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n updateChildOptions(masterField: Field){\r\n\r\n let child = this.childFields.find(x => x.masterField == masterField.name)\r\n if (child != null) {\r\n\r\n //current is master\r\n\r\n //filter child options based on master value\r\n child.options = child.masterOptions.filter(x => x[masterField.optionValue] == this.data[masterField.name])\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n handleInfoClick(field: Field) {\r\n if (field.infoMessage) {\r\n this.messageService.info(field.infoMessage);\r\n }\r\n }\r\n\r\n buttonClicked(){\r\n\r\n this.buttonClick.emit(this.data);\r\n\r\n let button = this.config.button;\r\n\r\n if (!button) {\r\n return;\r\n }\r\n\r\n //validation\r\n let resp = Core.validateObject(this.getVisibleFields(),this.data);\r\n if (resp != ''){\r\n this.messageService.toast(resp)\r\n return;\r\n }\r\n\r\n\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.config.mode =='create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return;\r\n }\r\n\r\n\r\n if (button.confirm){\r\n\r\n this.messageService.confirm(`${button.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.processCall(button)\r\n }\r\n });\r\n\r\n }else{\r\n this.processCall(button)\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n processCall(button: Button){\r\n\r\n if (!button.action) return\r\n\r\n let dataOut;\r\n\r\n if (button.action.isFormData){\r\n\r\n let formData: FormData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n\r\n formData.append(\"data\", JSON.stringify(this.data));\r\n\r\n\r\n dataOut = formData\r\n }else{\r\n\r\n dataOut = this.data\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.isProcessing = true\r\n this.dataService.CallApi(button.action, dataOut).subscribe((apiResponse) => {\r\n this.isProcessing = false\r\n\r\n if (apiResponse.success) {\r\n\r\n if (button.action.successMessage) {\r\n this.messageService.toast(button.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Submitted\");\r\n }\r\n\r\n if (this.config.reset) {\r\n Core.resetObject(this.fields, this.data)\r\n this.files = [];\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n processForm(){\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","\r\n<div [ngClass]=\"multiColumn ? 'tin-grid' : 'tin-col'\">\r\n\r\n <div [ngClass]=\"field.span || field.type =='section' || field.type =='file' || field.type =='file-view' ? 'span-col' : ''\" *ngFor=\"let field of getVisibleFields()\">\r\n\r\n <ng-container >\r\n\r\n <ng-container [ngSwitch]=\"field.type\" class=\"highlight\">\r\n\r\n <div *ngSwitchCase=\"'section'\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{field.name | camelToWords}}</label>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode !='view'\">\r\n <spa-attach message=\"Drag and Drop files here\" [(files)]=\"files\"></spa-attach>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'file-view'\">\r\n <div class=\"mt-1 mb-2\" *ngIf=\"config.mode && config.mode !='create'\">\r\n <spa-viewer [fileAction]=\"config.fileAction\" [path]=\"field.path\" [folderName]=\"data[field.keyFiledName]\" ></spa-viewer>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <label *ngSwitchCase=\"'blank'\"></label>\r\n\r\n <spa-label *ngSwitchCase=\"'label'\" [display]=\"field.alias ?? field.name | camelToWords\" [value]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" ></spa-label>\r\n\r\n <spa-number *ngSwitchCase=\"'number'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-number>\r\n\r\n <spa-money *ngSwitchCase=\"'money'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-money>\r\n\r\n <spa-check *ngSwitchCase=\"'checkbox'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-check>\r\n\r\n <spa-date *ngSwitchCase=\"'date'\" [display]=\"field.alias ?? field.name | camelToWords\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [min]=\"field?.min\" [max]=\"field?.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\"></spa-date>\r\n\r\n <spa-select *ngSwitchCase=\"'select'\"\r\n [display]=\"field.alias ?? field.name | camelToWords\" [nullable]=\"field.nullable\"\r\n [options]=\"field.options\" [masterOptions]=\"field.masterOptions\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\"\r\n [(value)]=\"data[field.name]\" [defaultFirstValue]=\"field.defaultFirstValue\" (valueChange)=\"inputChanged(field, data[field.name])\"\r\n [readonly]=\"testReadOnly(field)\"\r\n [hint]=\"field.hint\"\r\n [peekConfig]=\"field.peekConfig\"\r\n [infoMessage]=\"field.infoMessage\"\r\n >\r\n </spa-select>\r\n\r\n <spa-select *ngSwitchCase=\"'multi-select'\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay ?? 'name'\" [optionValue]=\"field.optionValue ?? 'value'\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field, data[field.name])\" [readonly]=\"testReadOnly(field)\" [multiple]=\"true\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\">\r\n </spa-select>\r\n\r\n <spa-text *ngSwitchDefault [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionValue]=\"field.optionValue ?? 'value'\" [rows]=\"field.rows\" [(value)]=\"data[field.name]\" (valueChange)=\"inputChanged(field,data[field.name])\" [required]=\"field.required\" [min]=\"field.min\" [max]=\"field.max\" [readonly]=\"testReadOnly(field)\" [hint]=\"field.hint\" [infoMessage]=\"field.infoMessage\" (infoClick)=\"handleInfoClick(field)\" [suffix]=\"field.suffix\"></spa-text>\r\n\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"span-col-center\" *ngIf=\"config.button\">\r\n <button mat-raised-button color=\"primary\" (click)=\"buttonClicked()\" cdkFocusInitial>{{buttonDisplay}}</button>\r\n </div>\r\n\r\n\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AlertMessage, AlertMessages } from '../../classes/Classes';\n\n@Component({\n selector: 'spa-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.css']\n})\nexport class AlertComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n\n @Input() alertMessages: AlertMessages;\n @Input() data;\n\n\n getAlertMessages(type = undefined) : AlertMessage[] {\n return this.alertMessages?.messages.filter(x => x.type === type)\n }\n\n hasAlertMessages(type = undefined) : boolean {\n let has = this.alertMessages?.messages.filter(x => x.type === type).length > 0;\n\n return has;\n }\n\n testVisible(msg: AlertMessage): boolean {\n\n return msg.hiddenCondition ? !msg.hiddenCondition(this.data) : true;\n\n }\n\n}\n","<div *ngIf=\"hasAlertMessages()\" class=\"alert alert-secondary\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages()\" >\n <label *ngIf=\"testVisible(msg)\" >{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('success')\" class=\"alert alert-success\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('success')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('info')\" class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('info')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('warn')\" class=\"alert alert-warning\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('warn')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n\n<div *ngIf=\"hasAlertMessages('critical')\" class=\"alert alert-danger\" style=\"font-size: 14px;\" role=\"alert\">\n <p *ngIf=\"alertMessages.subject\">{{alertMessages.subject}} </p>\n <ng-container *ngFor=\"let msg of getAlertMessages('critical')\">\n <label *ngIf=\"testVisible(msg)\">{{msg.content}}</label>\n </ng-container>\n</div>\n","\r\nimport { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { Subject } from 'rxjs';\r\n@Component({\r\n selector: 'app-viewModel-internal', //uniq to internal\r\n templateUrl: './detailsDialog-internal.component.html',\r\n styleUrls: ['./table-internal.component.css']\r\n})\r\nexport class DetailsDialogInternal implements OnInit {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialogInternal>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction) {\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n } else {\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.formConfig, this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction()\r\n\r\n }\r\n\r\n\r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs\r\n details: any\r\n formConfig: FormConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n\r\n loadData(action: Action, reload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if (reload) this.tableReload.next(true);\r\n }\r\n else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode) {\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction() {\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonDisabled(button, row) : false;\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonVisible(button, row, this.isLoadComplete) : false;\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n return this.buttonService.isTabVisible(tblConfig);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n this.handleButtonAction('delete');\r\n }\r\n\r\n\r\n custom(button: Button) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog(button.name, this.details, this.detailsConfig, DetailsDialogInternal).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n\r\n handleButtonAction(buttonName: string) {\r\n\r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.action) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n return;\r\n }\r\n\r\n if (this.validateForm()) {\r\n this.executeAction(button, this.details, button.action?.successMessage || \"Updated\");\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n const validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (button.action?.isFormData) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any, defaultSuccessMessage: string) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n this.messageService.confirm(button.confirm.message).subscribe((result) => {\r\n if (result === \"yes\") {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n });\r\n } else {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n }\r\n\r\n private performApiCall(button: Button, data: any, defaultSuccessMessage: string) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(button.action?.successMessage || defaultSuccessMessage);\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n\r\n};\r\n\r\n\r\n\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n <div class=\"row d-flex align-items-center mt-0\">\r\n\r\n <div class=\"col\">\r\n <h2 mat-dialog-title>{{titleAction | titlecase}} {{formConfig?.title}}</h2>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\">\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\" class=\"col d-flex justify-content-end\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, true)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n <spa-alert [alertMessages]=\"formConfig.alertMessages\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\"></spa-form>\r\n\r\n<!-- Unique to iternal no tables -->\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions>\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='create' && createButton\" (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='edit' && editButton\" (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"!smallScreen && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>{{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button color=\"primary\" mat-dialog-close>Cancel</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"testVisible(details,btn.name)\" mat-icon-button matTooltipPosition=\"above\" [matTooltip]=\"btn.tip ?? btn.name | titlecase\" [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon>{{btn.icon.name}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\r\n","// table-config.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { Button, Column, TableConfig } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TableConfigService {\r\n\r\n setColumns(config: TableConfig, smallScreen: boolean): string[] {\r\n\r\n if (!config?.columns) {\r\n return [];\r\n }\r\n\r\n let visibleColumns = this.getVisibleColumns(config);\r\n\r\n\r\n if (smallScreen && config.minColumns) {\r\n return config.minColumns.filter(col =>\r\n visibleColumns.some(x => x.name === col)\r\n );\r\n }\r\n\r\n return visibleColumns.map(({ name }) => name);\r\n }\r\n\r\n getVisibleColumns(config: TableConfig): Column[] {\r\n return config.columns.filter(column =>\r\n !column.hiddenCondition || !column.hiddenCondition(config.parentData)\r\n );\r\n }\r\n\r\n getActionsWidth(buttons: Button[]): string {\r\n return `${buttons?.length * 40 + 20}px`;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Icon, Color } from '../classes/Classes';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConditionService {\r\n\r\n\r\n testIconCondition(icon: Icon, row: any): boolean {\r\n if (!icon) return false;\r\n return icon.condition ? icon.condition(row) : true;\r\n }\r\n\r\n\r\n testColorCondition(color: Color, row: any): boolean {\r\n if (!color) return false;\r\n return color.condition ? color.condition(row) : true;\r\n }\r\n\r\n\r\n getColor(value: any, options: any[]): string {\r\n if (!options) return 'lightgrey';\r\n const option = options.find(opt => opt.value === value);\r\n return option ? option.color : 'lightgrey';\r\n }\r\n\r\n\r\n testCondition(condition: (value: any) => boolean, value: any): boolean {\r\n return condition ? condition(value) : true;\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Field, SearchConfig } from '../../classes/Classes';\nimport { Core } from '../../classes/TinCore';\n\n@Component({\n selector: 'spa-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.css']\n})\nexport class SearchComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n\n this.data = Core.generateObject(this.config.fields)\n\n }\n\n data;\n @Input() config: SearchConfig;\n @Output() searchClick = new EventEmitter();\n\n search(){\n this.searchClick.emit(this.data);\n }\n}\n","\n<div class=\"tin-between\">\n\n<div class=\"col tin-row\">\n\n <div *ngFor=\"let field of config.fields\">\n\n <spa-option [type]=\"field.type\" [show]=\"field.show\" [display]=\"field.alias ?? field.name | camelToWords\" [options]=\"field.options\" [optionDisplay]=\"field.optionDisplay\" [optionValue]=\"field.optionValue\" [(value)]=\"data[field.name]\" (enterPress)=\"search()\"></spa-option>\n\n </div>\n\n</div>\n\n<div class=\"col-1 tin-end\">\n <button mat-fab color=\"primary\" (click)=\"search()\" matTooltip=\"Search\" matTooltipPosition=\"right\">\n <mat-icon>search</mat-icon>\n </button>\n</div>\n\n\n\n</div>\n\n\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { TableConfig, Button, TileConfig } from '../../classes/Classes';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-header',\r\n templateUrl: './table-header.component.html',\r\n styleUrls: ['./table-header.component.css']\r\n})\r\nexport class TableHeaderComponent {\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n ngOnInit() {\r\n this.createButton = this.buttonService.getCreateButton(this.config?.buttons);\r\n }\r\n\r\n createButton: Button;\r\n\r\n @Input() config: TableConfig;\r\n @Input() hideTitle: boolean;\r\n @Input() tableDataSource: any;\r\n @Input() tileConfig: TileConfig;\r\n @Input() smallScreen: boolean;\r\n @Input() tileReload: Subject<boolean>;\r\n @Input() showFilterButton: boolean;\r\n // @Input() displayedButtons: Button[];\r\n\r\n @Output() createClick = new EventEmitter<void>();\r\n @Output() customClick = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter<void>();\r\n @Output() tileClick = new EventEmitter<string>();\r\n\r\n\r\n\r\n onButtonClick(button: Button) {\r\n if (button.name === 'create') {\r\n this.createClick.emit();\r\n } else {\r\n this.customClick.emit(button.name);\r\n }\r\n }\r\n\r\n onRefreshClick() {\r\n this.refreshClick.emit();\r\n }\r\n\r\n onTileClick(tileName: string) {\r\n this.tileClick.emit(tileName);\r\n }\r\n\r\n getHeaderButtons(): Button[] {\r\n return this.config.buttons.filter(b => b.name == 'create' || b.inHeader);\r\n }\r\n\r\n testVisible(button: Button): boolean {\r\n return this.buttonService.testVisible(button, this.config.parentData);\r\n }\r\n\r\n testDisabled(button: Button): boolean {\r\n return this.buttonService.testDisabled(button, this.config.parentData);\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n\r\n}\r\n","<div class=\"top\">\r\n\r\n <!-- buttons -->\r\n <div class=\"tin-row\" style=\"margin-right: 10px;\" *ngIf=\"getHeaderButtons().length > 0\" >\r\n\r\n <ng-container *ngFor=\"let button of getHeaderButtons()\">\r\n <ng-container *ngIf=\"testVisible(button)\" >\r\n <button *ngIf=\"!config.flatButtons\" mat-raised-button color=\"primary\" [disabled]=\"testDisabled(button)\" (click)=\"onButtonClick(button)\" >\r\n {{button.display}}\r\n </button>\r\n <button *ngIf=\"config.flatButtons\" mat-stroked-button [disabled]=\"testDisabled(button)\" (click)=\"onButtonClick(button)\" [ngStyle]=\"{'color': getButtonColor(button, config.parentData)}\">\r\n {{button.display}}\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"getHeaderButtons().length == 0 && config.holdHeaderButtonSpace || getHeaderButtons().length == 0 && !config.tileConfig\"></div>\r\n\r\n <!-- tiles -->\r\n <div *ngIf=\"config.tileConfig && !smallScreen\" style=\"min-width: 75%;\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" (tileClick)=\"onTileClick($event)\"></spa-tiles>\r\n </div>\r\n\r\n <!-- filter -->\r\n <div *ngIf=\"config.showFilter\" class=\"d-flex justify-content-end\">\r\n <spa-filter [showText]=\"!smallScreen || (smallScreen && tableDataSource?.length > 10)\" [showButton]=\"showFilterButton\" [data]=\"tableDataSource\" [flatButtons]=\"config.flatButtons\" (refreshClick)=\"onRefreshClick()\"></spa-filter>\r\n </div>\r\n <div *ngIf=\"!config.showFilter && config.holdFilterSpace\"></div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"config.tileConfig && smallScreen\" style=\"width: 100%;\">\r\n <spa-tiles [config]=\"config.tileConfig\" [reload]=\"tileReload\" (tileClick)=\"onTileClick($event)\"></spa-tiles>\r\n</div>\r\n\r\n<div *ngIf=\"config.title && !hideTitle\" class=\"title\">\r\n {{config.title | camelToWords}}\r\n</div>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Column, Button, TableConfig, Icon } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-row',\r\n templateUrl: './table-row.component.html',\r\n styleUrls: ['./table-row.component.css']\r\n})\r\nexport class TableRowComponent {\r\n @Input() column: Column;\r\n @Input() row: any;\r\n @Input() config: TableConfig;\r\n\r\n @Output() actionClick = new EventEmitter<{ name: string, row: any }>();\r\n @Output() columnClick = new EventEmitter<{ column: Column, row: any }>();\r\n @Output() showBannerEvent = new EventEmitter<string>();\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return icon.condition ? icon.condition(row) : true;\r\n }\r\n\r\n testColorCondition(row: any, color: any): boolean {\r\n return color && color.condition ? color.condition(row) : false;\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n if (!options) return 'lightgrey';\r\n const option = options.find(opt => opt.value === value);\r\n return option ? option.color : 'lightgrey';\r\n }\r\n\r\n onActionClick(name: string, row: any) {\r\n this.actionClick.emit({ name, row });\r\n }\r\n\r\n onColumnClick(column: Column, row: any) {\r\n this.columnClick.emit({ column, row });\r\n }\r\n\r\n showBanner(message: string) {\r\n this.showBannerEvent.emit(message);\r\n }\r\n}\r\n","<ng-container [ngSwitch]=\"column.type\">\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <spa-check [value]=\"row[column.name]\" [readonly]=\"true\"></spa-check>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'select'\">\r\n <spa-select [options]=\"column.options\" [optionDisplay]=\"column.optionDisplay\" [optionValue]=\"column.optionValue\" [(value)]=\"row[column.name]\" width=\"90%\"></spa-select>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'chip'\">\r\n <mat-chip-list>\r\n <mat-chip (click)=\"onColumnClick(column, row)\" [ngStyle]=\"{'background-color': testColorCondition(row, column.color) ? column.color.name : getColor(row[column.name], column?.options)}\" style=\"font-size: 12px;\"> {{row[column.name]}} </mat-chip>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </mat-chip-list>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'icon'\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n {{row[column.name] | date : 'dd/MM/yyyy HH:mm'}}\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'money'\">\r\n <label [ngStyle]=\"{'color': testColorCondition(row, column.color) ? column.color.name : ''}\">{{row[column.name] | currency:'':''}}</label>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'button'\">\r\n <button mat-button [ngStyle]=\"{'color': testColorCondition(row, column.color) ? column.color.name : ''}\" (click)=\"onActionClick(column.name, row)\">{{row[column.name]}}</button>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n <label [ngStyle]=\"{'color': testColorCondition(row, column.color) ? column.color.name : ''}\">{{row[column.name]}}</label>\r\n <mat-icon class=\"col-icon\" *ngIf=\"column.icon && testIconCondition(row, column.icon)\" [matTooltip]=\"row[column.icon.tipField] ?? column.icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[column.icon.tipField])\" [ngStyle]=\"{'color':column.icon?.color}\">{{column.icon.name }}</mat-icon>\r\n <ng-container *ngFor=\"let icon of column.icons\">\r\n <mat-icon class=\"col-icon\" *ngIf=\"testIconCondition(row, icon)\" [matTooltip]=\"row[icon.tipField] ?? icon?.tip\" matTooltipPosition=\"above\" (click)=\"showBanner(row[icon.tipField])\" [ngStyle]=\"{'color':icon?.color}\">{{icon.name }}</mat-icon>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { Button, TableConfig } from '../../classes/Classes';\r\nimport { ButtonService } from '../../services/button.service';\r\n\r\n@Component({\r\n selector: 'app-table-action',\r\n templateUrl: './table-action.component.html',\r\n styleUrls: ['./table-action.component.css']\r\n})\r\nexport class TableActionComponent {\r\n\r\n constructor(private buttonService: ButtonService) { }\r\n\r\n @Input() displayedButtons: Button[];\r\n @Input() config: TableConfig;\r\n @Input() row: any;\r\n\r\n @Output() actionClick = new EventEmitter<{ name: string, row: any }>();\r\n\r\n\r\n\r\n testVisible(row: any, buttonName: string): boolean {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.testVisible(button, row) : false;\r\n }\r\n\r\n testDisabled(row: any, buttonName: string): boolean {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.testDisabled(button, row) : true;\r\n }\r\n\r\n getButtonColor(button: Button, row: any): string {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getIcon(buttonName: string): string {\r\n const button = this.displayedButtons.find(b => b.name === buttonName);\r\n return button ? this.buttonService.getIcon(button, this.config) : '';\r\n }\r\n\r\n onActionClick(buttonName: string, row: any) {\r\n this.actionClick.emit({ name: buttonName, row });\r\n }\r\n}\r\n","<ng-container *ngFor=\"let button of displayedButtons\">\r\n <ng-container *ngIf=\"button.name != 'create' && testVisible(row, button.name)\">\r\n <button *ngIf=\"!config.flatButtons\" mat-mini-fab [matTooltip]=\"button.tip ?? button.name | titlecase\" matTooltipPosition=\"above\" style=\"margin-right:5px\" [ngStyle]=\"{'background-color': getButtonColor(button, row)}\" [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon>{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"config.flatButtons\" mat-icon-button [matTooltip]=\"button.tip ?? button.name | titlecase\" matTooltipPosition=\"above\" style=\"margin-right:5px\" [disabled]=\"testDisabled(row, button.name)\" (click)=\"onActionClick(button.name, row)\">\r\n <mat-icon [ngStyle]=\"{'color': getButtonColor(button, row)}\">{{getIcon(button.name)}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"button.name != 'create' && !testVisible(row, button.name) && !config.collapseButtons\">\r\n <label style=\"margin-right: 35px;\"></label>\r\n </ng-container>\r\n</ng-container>\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DetailsDialogInternal } from './detailsDialog-internal.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\n\r\n@Component({\r\n selector: 'spa-table-internal',\r\n templateUrl: './table-internal.component.html',\r\n styleUrls: ['./table-internal.component.css']\r\n})\r\nexport class TableInternalComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService) {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeComponent();\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (!this.config.loadAction) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n\r\n smallScreen = false\r\n // createButton: Button;\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() hideTitle = false;\r\n @Input() data: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config?.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n this.showFilterButton = !this.config?.searchConfig;\r\n\r\n if (this.displayedButtons?.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n private setupDataLoading() {\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n this.dataSource = apiResponse.data\r\n\r\n this.tableDataSource = new MatTableDataSource<any>(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n if (apiResponse.success) {\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setColumns() {\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config.buttons, this.smallScreen, this.config.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n\r\n if (this.displayedButtons.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n setButtons() {\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen) {\r\n this.displayedButtons = this.config.buttons;\r\n } else {\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column) {\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testVisible(button, row);\r\n }\r\n\r\n\r\n\r\n //Events\r\n searchClicked(x) {\r\n this.searchClick.emit(x);\r\n\r\n if (this.config.searchConfig.searchAction) {\r\n this.config.searchConfig.searchAction.method == 'post'\r\n this.loadData(this.config.searchConfig.searchAction, x);\r\n }\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n } else {\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column: Column, row) {\r\n if (column.detailsConfig) {\r\n this.open(column.name, row, column);\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n this.open(name, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({ name: name, data: row });\r\n }\r\n\r\n viewModel(row) {\r\n this.open('view', row);\r\n }\r\n\r\n newModel() {\r\n this.open('create', null);\r\n }\r\n\r\n editModel(row) {\r\n this.open('edit', row);\r\n }\r\n\r\n private open(buttonName: string, row: any | null, column?: Column): void {\r\n this.dialogService.openConfiguredDetailsDialog( buttonName, row, this.config, DetailsDialogInternal, column ).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n private openDetailsDialog(buttonName: string, row: any | null, column?: Column): void {\r\n const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.dialog) {\r\n this.doAction(button.name, row)\r\n this.actionClickedEmit(button.name, row);\r\n return;\r\n }\r\n\r\n if (!this.config.formConfig && !button.detailsConfig) {\r\n this.messageService.toast(\"Please configure form\");\r\n return;\r\n }\r\n\r\n let conf: DetailsDialogConfig = {\r\n formConfig: this.config.formConfig,\r\n buttons: this.config.buttons,\r\n details: row,\r\n };\r\n\r\n if (button.detailsConfig) {\r\n conf = buttonName === 'create'\r\n ? button.detailsConfig\r\n : DetailsDialogProcessor.processDetailsConfig(button.detailsConfig, row);\r\n }\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n conf.formConfig.mode = button.detailsConfig.mode;\r\n } else {\r\n conf.formConfig.mode = buttonName === 'create' ? 'create' : (buttonName === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n if (buttonName === 'create') {\r\n conf.heroField = this.config?.heroField;\r\n conf.heroValue = this.config?.heroValue;\r\n }\r\n\r\n\r\n\r\n const dialogResult = this.dialogService.openDetailsDialog(conf, DetailsDialogInternal); // Unique to internal\r\n\r\n if (buttonName === 'edit') {\r\n dialogResult.inputChange.subscribe((x) => {\r\n this.inputChanged(x);\r\n });\r\n }\r\n\r\n dialogResult.afterClosed.subscribe((result) => {\r\n if (result.message === 'success') {\r\n this.actionClickedEmit(button.name, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(button.name, result.data);\r\n }\r\n });\r\n\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n this.messageService.confirm(`DELETE ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name, row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue){\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n\r\n if (b.confirm) {\r\n this.messageService.confirm(`${b.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b, row)\r\n }\r\n });\r\n } else {\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(b: Button, row) {\r\n this.dataService.CallApi(b.action, row).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n if (b.action.successMessage) {\r\n this.messageService.toast(b.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\") {\r\n return \"\"\r\n }\r\n else if (elevation == \"low\") {\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\") {\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\") {\r\n return \"mat-elevation-z9\"\r\n }\r\n else {\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n\r\n}\r\n","\r\n<!-- Search -->\r\n<spa-search *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\"></spa-search>\r\n\r\n\r\n<!-- Header -->\r\n<app-table-header\r\n [config]=\"config\" [hideTitle]=\"false\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [smallScreen]=\"smallScreen\"\r\n [tileReload]=\"tileReload\" [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (refreshClick)=\"refreshClicked()\">\r\n</app-table-header>\r\n\r\n\r\n<!-- <div class=\"top\">\r\n\r\n <div class=\"tin-row\">\r\n <button *ngIf=\"createButton && !config.flatButtons && testVisible(config.parentData,createButton.name)\"\r\n [disabled]=\"testDisabled(config.parentData,createButton.name)\" id=\"btnNew\" mat-raised-button color=\"primary\" style=\"margin-right: 10px;\" (click)=\"newModel()\">{{createButton.display}}\r\n </button>\r\n <button *ngIf=\"createButton && config.flatButtons && testVisible(config.parentData,createButton.name)\"\r\n [ngStyle]=\"{'color': getButtonColor(createButton, config.parentData)}\"\r\n [disabled]=\"testDisabled(config.parentData,createButton.name)\" id=\"btnNew\" mat-stroked-button style=\"margin-right: 10px; color: green;\" (click)=\"newModel()\">{{createButton.display}}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"config.tileConfig && !smallScreen\" style=\"min-width: 75%;\">\r\n <spa-tiles [reload]=\"tileReload\" [config]=\"config.tileConfig\"></spa-tiles>\r\n </div>\r\n\r\n <div *ngIf=\"config.showFilter\" class=\"d-flex justify-content-end\">\r\n <spa-filter [showText]=\"!smallScreen || (smallScreen && dataSource?.length > 10)\" [showButton]=\"showFilterButton\" [data]=\"tableDataSource\" [flatButtons]=\"config.flatButtons\" (refreshClick)=\"refreshClicked()\"></spa-filter>\r\n </div>\r\n\r\n</div>\r\n\r\n<div *ngIf=\"config.tileConfig && smallScreen\" style=\"width: 100%;\">\r\n <spa-tiles [reload]=\"tileReload\" [config]=\"config.tileConfig\"></spa-tiles>\r\n</div>\r\n\r\n<div *ngIf=\"config.title && !hideTitle\" class=\"title\">\r\n <label style=\"font-size: larger;\">{{config.title | camelToWords}}</label>\r\n</div> -->\r\n\r\n<!-- Table -->\r\n<div>\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef>{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\">\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\" (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action [displayedButtons]=\"displayedButtons\" [config]=\"config\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': config.greyOut && config.greyOut(row)}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n</div>\r\n\r\n<div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>No Data</em></p>\r\n</div>\r\n\r\n\r\n","\r\nimport { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { FormConfig, Field, TableConfig, Button, DetailsDialogConfig, Action, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Subject, config } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\n@Component({\r\n selector: 'app-viewModel',\r\n templateUrl: './detailsDialog.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class DetailsDialog implements OnInit {\r\n\r\n constructor(private breakpointObserver: BreakpointObserver,private loaderService: LoaderService,public dataService: DataServiceLib,private messageService: MessageService,\r\n private dialogRef: MatDialogRef<DetailsDialog>, @Inject(MAT_DIALOG_DATA) public detailsConfig: DetailsDialogConfig, private buttonService: ButtonService,\r\n private dialogService: DialogService)\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n }else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n const { tableConfig, tableConfigs, formConfig, buttons } = DetailsDialogProcessor.initializeConfigs(this.detailsConfig);\r\n this.tableConfig = tableConfig;\r\n this.tableConfigs = tableConfigs;\r\n this.formConfig = formConfig;\r\n this.buttons = buttons;\r\n\r\n let resp = DetailsDialogProcessor.handleFormMode(this.detailsConfig, this.formConfig,);\r\n\r\n if (resp.loadByAction){\r\n this.loadByAction = true;\r\n formConfig.loadAction = resp.action;\r\n this.loadData(resp.action, false);\r\n }else{\r\n this.details = resp.details;\r\n DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n this.loadByAction = false;\r\n this.isLoadComplete = true;\r\n }\r\n\r\n this.fileField = DetailsDialogProcessor.setFileField(this.formConfig);\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n const { extraButtons, createButton, editButton, deleteButton } = DetailsDialogProcessor.setupButtons(this.formConfig, this.buttons);\r\n this.extraButtons = extraButtons;\r\n this.createButton = createButton;\r\n this.editButton = editButton;\r\n this.deleteButton = deleteButton;\r\n\r\n this.setTitleAction();\r\n\r\n }\r\n\r\n\r\n titleAction = \"View\";\r\n loadByAction = false;\r\n\r\n extraButtons: Button[];\r\n buttons: Button[];\r\n createButton: Button;\r\n editButton: Button;\r\n deleteButton: Button;\r\n\r\n // modeButton : Button\r\n fileField: Field;\r\n files: any[] = [];\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n tableConfig: TableConfig\r\n tableConfigs\r\n details: any\r\n formConfig: FormConfig;\r\n smallScreen = false;\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n @Output() inputChange = new EventEmitter();\r\n\r\n\r\n loadData(action: Action, reload) {\r\n\r\n if (action && this.loadByAction) {\r\n\r\n this.dataService.CallApi(action).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.details = apiResponse.data\r\n this.isLoadComplete = true;\r\n // DetailsDialogProcessor.setHeroValue(this.detailsConfig, this.details);\r\n if(reload) this.tableReload.next(true);\r\n }\r\n else{\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n }\r\n\r\n }\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n\r\n setMode(newMode){\r\n this.formConfig.mode = newMode\r\n this.setTitleAction()\r\n }\r\n\r\n setTitleAction(){\r\n if (this.formConfig.fixedTitle) {\r\n this.titleAction = \"\";\r\n return;\r\n }\r\n\r\n this.titleAction = this.buttonService.getTitleAction(this.formConfig.mode, this.buttons);\r\n }\r\n\r\n\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.buttons, name);\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonDisabled(button, row) : false;\r\n }\r\n\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return button ? this.buttonService.isButtonVisible(button, row, this.isLoadComplete) : false;\r\n }\r\n\r\n testVisibleTab(tblConfig: TableConfig): boolean {\r\n return this.buttonService.isTabVisible(tblConfig);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getVisibleFields() {\r\n return this.formConfig.fields?.filter(x => Core.testVisible(this.formConfig, this.details, x))\r\n }\r\n\r\n\r\n create() {\r\n this.handleButtonAction('create');\r\n }\r\n\r\n edit() {\r\n this.handleButtonAction('edit');\r\n }\r\n\r\n delete() {\r\n this.handleButtonAction('delete');\r\n }\r\n\r\n\r\n custom(button: Button ) {\r\n if (button.dialog && button.detailsConfig) {\r\n this.openNestedDetailsDialog(button);\r\n } else {\r\n this.handleButtonAction(button.name);\r\n }\r\n }\r\n\r\n private openNestedDetailsDialog(button: Button): void {\r\n\r\n this.dialogService.openConfiguredDetailsDialog( button.name, this.details, this.detailsConfig, DetailsDialog ).subscribe(result => {\r\n\r\n if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result && result.message === 'success') {\r\n this.refreshData();\r\n }\r\n\r\n });\r\n }\r\n\r\n private refreshData(): void {\r\n if (this.formConfig.loadAction) {\r\n this.loadData(this.formConfig.loadAction, true);\r\n }\r\n }\r\n\r\n handleButtonAction(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.action) {\r\n this.dialogRef.close({ message: 'emit', data: this.details });\r\n return;\r\n }\r\n\r\n if (this.validateForm()) {\r\n this.executeAction(button, this.details, button.action?.successMessage || \"Updated\");\r\n }\r\n }\r\n\r\n private validateForm(): boolean {\r\n const validationResult = Core.validateObject(this.getVisibleFields(), this.details);\r\n if (validationResult !== '') {\r\n this.messageService.toast(validationResult);\r\n return false;\r\n }\r\n\r\n if (this.files.length < 1 && this.fileField?.required && this.formConfig.mode === 'create') {\r\n this.messageService.toast(\"Please attach file(s)\");\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private prepareActionData(button: Button, data: any): any {\r\n if (button.action?.isFormData) {\r\n const formData = new FormData();\r\n for (let i = 0; i < this.files.length; i++) {\r\n formData.append(`uploadFile${i}`, this.files[i], this.files[i].name);\r\n }\r\n formData.append(\"data\", JSON.stringify(data));\r\n return formData;\r\n }\r\n return data;\r\n }\r\n\r\n private executeAction(button: Button, data: any, defaultSuccessMessage: string) {\r\n const actionData = this.prepareActionData(button, data);\r\n\r\n if (button.confirm) {\r\n this.messageService.confirm(button.confirm.message).subscribe((result) => {\r\n if (result === \"yes\") {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n });\r\n } else {\r\n this.performApiCall(button, actionData, defaultSuccessMessage);\r\n }\r\n }\r\n\r\n private performApiCall(button: Button, data: any, defaultSuccessMessage: string) {\r\n this.dataService.CallApi(button.action, data).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(button.action?.successMessage || defaultSuccessMessage);\r\n this.dialogRef.close({ message: 'success', data: this.details });\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n\r\n};\r\n\r\n\r\n\r\n","<div class=\"dialog-container\">\r\n\r\n <div class=\"dialog-content\">\r\n\r\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isProcessing && dataService.appConfig.progressLine\"></mat-progress-bar>\r\n <div class=\"row d-flex align-items-center mt-0\">\r\n\r\n <div class=\"col\">\r\n <h2 mat-dialog-title>{{titleAction | titlecase}} {{formConfig?.title}}</h2>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\">\r\n\r\n <div *ngIf=\"formConfig.mode=='view' && editButton && testVisible(details,editButton.name)\" class=\"col d-flex justify-content-end\">\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Edit\" color=\"primary\" (click)=\"setMode('edit')\" [disabled]=\"testDisabled(details,editButton.name)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <button [disabled]=\"isProcessing\" *ngIf=\"loadByAction\" mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Refresh\" color=\"primary\" (click)=\"loadData(formConfig.loadAction, true)\"><mat-icon class=\"refreshIcon\">cached</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n <mat-dialog-content class=\"mat-typography dialog-scroll-content\">\r\n\r\n\r\n <spa-alert [alertMessages]=\"formConfig.alertMessages\" [data]=\"details\"></spa-alert>\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <p *ngIf=\"formConfig && !details\"><em>Loading...</em></p>\r\n\r\n <spa-form *ngIf=\"formConfig && details\" [files]=\"files\" [data]=\"details\" [config]=\"formConfig\" (inputChange)=\"inputChanged($event)\"></spa-form>\r\n\r\n\r\n <mat-tab-group *ngIf=\"tableConfigs\">\r\n\r\n <ng-container *ngFor=\"let tbl of tableConfigs\">\r\n\r\n <mat-tab *ngIf=\"testVisibleTab(tbl)\">\r\n <ng-template matTabLabel>\r\n <span>{{tbl.title ?? 'Untitled'}}</span>\r\n </ng-template>\r\n\r\n <spa-table-internal [config]=\"tbl\" [hideTitle]=\"true\" [reload]=\"tableReload\" (dataLoad)=\"loadData(formConfig.loadAction, false)\"></spa-table-internal>\r\n\r\n </mat-tab>\r\n </ng-container>\r\n\r\n\r\n </mat-tab-group>\r\n\r\n\r\n\r\n </div>\r\n\r\n </mat-dialog-content>\r\n\r\n\r\n </div>\r\n\r\n <mat-dialog-actions >\r\n\r\n <div>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='create' && createButton\" (click)=\"create()\" cdkFocusInitial>{{createButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <button mat-raised-button [disabled]=\"isProcessing\" color=\"primary\" *ngIf=\"formConfig.mode=='edit' && editButton\" (click)=\"edit()\" cdkFocusInitial>{{editButton.display ?? 'Submit'}}\r\n </button>\r\n\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"!smallScreen && testVisible(details,btn.name)\" mat-stroked-button [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon [ngStyle]=\"{'color': getButtonColor(btn, details)}\">{{btn.icon.name}}</mat-icon>{{btn.display ?? btn.name | titlecase}}\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-stroked-button color=\"primary\" mat-dialog-close>Cancel</button>\r\n\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"smallScreen\">\r\n <ng-container *ngFor=\"let btn of extraButtons\">\r\n <button *ngIf=\"testVisible(details,btn.name)\" mat-icon-button matTooltipPosition=\"above\" [matTooltip]=\"btn.tip ?? btn.name | titlecase\" [disabled]=\"isProcessing || testDisabled(details,btn.name)\" [ngStyle]=\"{'color': getButtonColor(btn, details)}\" (click)=\"custom(btn)\" cdkFocusInitial><mat-icon>{{btn.icon.name}}</mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <button mat-icon-button matTooltipPosition=\"above\" matTooltip=\"Delete\" [disabled]=\"isProcessing\" style=\"color: red;\" (click)=\"delete()\" *ngIf=\"formConfig.mode!='create' && deleteButton\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n\r\n\r\n </mat-dialog-actions>\r\n\r\n\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { DatePipe, CurrencyPipe } from '@angular/common';\r\nimport { Action, Button, Color, Column, DetailsDialogConfig, FormConfig, Icon, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { DetailsDialog } from './detailsDialog.component';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Core, DetailsDialogProcessor } from '../../classes/TinCore';\r\nimport { Subject } from 'rxjs';\r\nimport { ButtonService } from '../../services/button.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TableConfigService } from '../../services/table-config.service';\r\nimport { ConditionService } from '../../services/condition.service';\r\n\r\n@Component({\r\n selector: 'spa-table',\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.css']\r\n})\r\nexport class TableComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog,\r\n private buttonService: ButtonService, private dialogService: DialogService, private tableConfigService: TableConfigService, private conditionService: ConditionService )\r\n {\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n this.smallScreen = result.matches;\r\n this.updateTableConfiguration();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initializeComponent();\r\n }\r\n\r\n ngOnChanges() {\r\n\r\n if (!this.config.loadAction) {\r\n this.dataSource = this.data;\r\n this.tableDataSource = new MatTableDataSource<any>(this.dataSource);\r\n }\r\n\r\n setTimeout(() => { this.tableDataSource.paginator = this.tablePaginator; }, 1000)\r\n }\r\n\r\n\r\n elevation = \"mat-elevation-z5\";\r\n actionsWidth = \"50px\";\r\n showFilterButton = true;\r\n tileReload: Subject<boolean> = new Subject();\r\n\r\n smallScreen = false\r\n\r\n //Table\r\n tableDataSource;\r\n dataSource: any[];\r\n displayedColumns = []\r\n displayedButtons = []\r\n\r\n @ViewChild('tablePaginator') tablePaginator: MatPaginator;\r\n\r\n @Input() hideTitle = false;\r\n @Input() data: any = [];\r\n @Input() config: TableConfig;\r\n @Input() reload: Subject<boolean>;\r\n @Output() dataLoad = new EventEmitter();\r\n @Output() refreshClick = new EventEmitter();\r\n @Output() searchClick = new EventEmitter();\r\n @Output() createClick = new EventEmitter();\r\n @Output() actionClick = new EventEmitter();\r\n @Output() inputChange = new EventEmitter();\r\n\r\n private initializeComponent() {\r\n this.updateTableConfiguration();\r\n this.setupDataLoading();\r\n this.formDefaults();\r\n }\r\n\r\n private updateTableConfiguration() {\r\n this.elevation = this.getElevationClass(this.config?.elevation);\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config?.buttons, this.smallScreen, this.config?.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n this.showFilterButton = !this.config?.searchConfig;\r\n\r\n if (this.displayedButtons?.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n private setupDataLoading() {\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n\r\n if (this.reload) {\r\n this.reload.subscribe(v => {\r\n if (v && this.config?.loadAction) {\r\n this.loadData(this.config.loadAction, \"\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n loadData(action: Action, data: any) {\r\n\r\n if (action) {\r\n this.dataService.CallApi(action, data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (this.config.logResponse) {\r\n console.log(apiResponse)\r\n }\r\n\r\n this.dataSource = apiResponse.data\r\n\r\n this.tableDataSource = new MatTableDataSource<any>(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n if (apiResponse.success) {\r\n this.tableDataSource = new MatTableDataSource(apiResponse.data);\r\n this.tableDataSource.paginator = this.tablePaginator;\r\n\r\n this.dataLoaded(apiResponse.data);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n inputChanged(event) {\r\n this.inputChange.emit({ field: event.field, value: event.value })\r\n }\r\n\r\n formDefaults() {\r\n\r\n if (!this.config.formConfig) {\r\n let config = new FormConfig\r\n\r\n config.fields = []\r\n\r\n this.config.columns.forEach(column => {\r\n\r\n let field = { name: column.name, type: column.type }\r\n config.fields.push(field)\r\n\r\n });\r\n\r\n this.config.formConfig = config;\r\n }\r\n }\r\n\r\n setColumns() {\r\n this.displayedColumns = this.tableConfigService.setColumns(this.config, this.smallScreen);\r\n this.displayedButtons = this.buttonService.getDisplayedButtons(this.config.buttons, this.smallScreen, this.config.minButtons);\r\n this.actionsWidth = this.tableConfigService.getActionsWidth(this.displayedButtons);\r\n\r\n if (this.displayedButtons.length > 0 && !this.displayedColumns.includes('action')) {\r\n this.displayedColumns.push('action');\r\n }\r\n }\r\n\r\n setButtons(){\r\n if (!this.config.buttons) return\r\n if (!this.smallScreen){\r\n this.displayedButtons = this.config.buttons;\r\n }else{\r\n this.displayedButtons = this.config.buttons;\r\n }\r\n }\r\n\r\n getButton(name: string) {\r\n return this.buttonService.getButton(this.config.buttons, name);\r\n }\r\n\r\n getIcon(buttonName: string) {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.getIcon(button, this.config);\r\n }\r\n\r\n getButtonColor(button: Button, row) {\r\n return this.buttonService.getButtonColor(button, row);\r\n }\r\n\r\n getOptions(column){\r\n let x = this.config.columns.find(opt => opt.name === column);\r\n return x\r\n }\r\n\r\n getColor(value: any, options: any[]): string {\r\n return this.conditionService.getColor(value, options);\r\n }\r\n\r\n testIconCondition(row: any, icon: Icon): boolean {\r\n return this.conditionService.testIconCondition(icon, row);\r\n }\r\n\r\n testColorCondition(row: any, color: Color): boolean {\r\n return this.conditionService.testColorCondition(color, row);\r\n }\r\n\r\n showBanner(message: string) {\r\n if (message && message !== '') {\r\n this.messageService.info(message);\r\n }\r\n }\r\n\r\n testDisabled(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testDisabled(button, row);\r\n }\r\n\r\n testVisible(row, buttonName: string): boolean {\r\n const button = this.getButton(buttonName);\r\n return this.buttonService.testVisible(button, row);\r\n }\r\n\r\n\r\n\r\n //Events\r\n searchClicked(x){\r\n this.searchClick.emit(x);\r\n\r\n if (this.config.searchConfig.searchAction){\r\n this.config.searchConfig.searchAction.method == 'post'\r\n this.loadData(this.config.searchConfig.searchAction, x);\r\n }\r\n }\r\n\r\n refreshClicked() {\r\n this.refreshClick.emit();\r\n\r\n if (this.config.loadAction) {\r\n this.loadData(this.config.loadAction,\"\");\r\n }else{\r\n this.dataLoad.emit();\r\n }\r\n }\r\n\r\n dataLoaded(x) {\r\n this.dataLoad.emit(x)\r\n\r\n if (this.config.tileConfig?.loadAction) {\r\n this.tileReload.next(true);\r\n }\r\n }\r\n\r\n actionClicked(name: string, row: any) {\r\n if (name === 'view') {\r\n this.viewModel(row);\r\n } else if (name === 'edit') {\r\n this.editModel(row);\r\n } else if (name === 'delete') {\r\n this.deleteModel(row);\r\n } else {\r\n this.customModel(name, row);\r\n }\r\n }\r\n\r\n\r\n //Dialog events\r\n columnClicked(column : Column, row){\r\n if (column.detailsConfig) {\r\n this.open(column.name, row, column);\r\n } else {\r\n this.actionClickedEmit(column.name, row);\r\n }\r\n }\r\n\r\n customModel(name, row) {\r\n this.open(name, row);\r\n }\r\n\r\n\r\n actionClickedEmit(name, row) {\r\n this.actionClick.emit({name:name,data : row});\r\n }\r\n\r\n viewModel(row) {\r\n this.open('view', row);\r\n }\r\n\r\n newModel() {\r\n this.open('create', null);\r\n }\r\n\r\n editModel(row) {\r\n this.open('edit', row);\r\n }\r\n\r\n private open(buttonName: string, row: any | null, column?: Column): void {\r\n this.dialogService.openConfiguredDetailsDialog( buttonName, row, this.config, DetailsDialog, column ).subscribe(result => {\r\n if (result.action === 'doAction') {\r\n this.doAction(result.name, result.row);\r\n this.actionClickedEmit(result.name, result.row);\r\n } else if (result.action === 'inputChange') {\r\n this.inputChanged(result.change);\r\n } else if (result.message === 'success') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(buttonName, result.data);\r\n }\r\n });\r\n }\r\n\r\n private openDetailsDialog(buttonName: string, row: any | null, column?: Column): void {\r\n const button = column ? { name: column.name, dialog: true, detailsConfig: column.detailsConfig } : this.getButton(buttonName);\r\n if (!button) return;\r\n\r\n if (!button.dialog) {\r\n this.doAction(button.name, row)\r\n this.actionClickedEmit(button.name, row);\r\n return;\r\n }\r\n\r\n if (!this.config.formConfig && !button.detailsConfig) {\r\n this.messageService.toast(\"Please configure form\");\r\n return;\r\n }\r\n\r\n let conf: DetailsDialogConfig = {\r\n formConfig: this.config.formConfig,\r\n buttons: this.config.buttons,\r\n details: row,\r\n };\r\n\r\n if (button.detailsConfig) {\r\n conf = buttonName === 'create'\r\n ? button.detailsConfig\r\n : DetailsDialogProcessor.processDetailsConfig(button.detailsConfig, row);\r\n }\r\n\r\n\r\n if (button.detailsConfig && button.detailsConfig.mode) {\r\n conf.formConfig.mode = button.detailsConfig.mode;\r\n }else{\r\n conf.formConfig.mode = buttonName === 'create' ? 'create' : (buttonName === 'edit' ? 'edit' : 'view');\r\n }\r\n\r\n\r\n if (conf.formConfig.mode === 'create') {\r\n conf.heroField = this.config?.heroField;\r\n conf.heroValue = this.config?.heroValue;\r\n }\r\n\r\n const dialogResult = this.dialogService.openDetailsDialog(conf, DetailsDialog);\r\n\r\n if (buttonName === 'edit') {\r\n dialogResult.inputChange.subscribe((x) => {\r\n this.inputChanged(x);\r\n });\r\n }\r\n\r\n dialogResult.afterClosed.subscribe((result) => {\r\n if (result.message === 'success') {\r\n this.actionClickedEmit(button.name, result.data);\r\n this.refreshClicked();\r\n } else if (result.message === 'emit') {\r\n this.actionClickedEmit(button.name, result.data);\r\n }\r\n });\r\n }\r\n\r\n deleteModel(row) {\r\n\r\n let button = this.getButton('delete');\r\n if (!button) return;\r\n\r\n this.messageService.confirm(`DELETE ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.actionClickedEmit('delete', row)\r\n this.doAction(button.name,row);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n //Actions\r\n doAction(buttonName: string, row) {\r\n\r\n let b = this.getButton(buttonName)\r\n\r\n if (!b) return;\r\n if (!b.action) return;\r\n\r\n if (b.setHeroField && this.config.heroValue) {\r\n row[this.config.heroField] = this.config.heroValue;\r\n }\r\n\r\n if (b.confirm){\r\n this.messageService.confirm(`${b.confirm.message}`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n this.execAction(b,row)\r\n }\r\n });\r\n }else{\r\n this.execAction(b, row)\r\n }\r\n\r\n }\r\n\r\n execAction(b: Button, row){\r\n this.dataService.CallApi(b.action, row).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n if (b.action.successMessage) {\r\n this.messageService.toast(b.action.successMessage);\r\n } else {\r\n this.messageService.toast(\"Updated\");\r\n }\r\n\r\n this.refreshClicked();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Error: \" + error);\r\n }\r\n );\r\n }\r\n\r\n\r\n //Misc\r\n private getElevationClass(elevation: string): string {\r\n\r\n if (elevation == \"none\"){\r\n return \"\"\r\n }\r\n else if (elevation == \"low\"){\r\n return \"mat-elevation-z1\"\r\n }\r\n else if (elevation == \"medium\"){\r\n return \"mat-elevation-z5\"\r\n }\r\n else if (elevation == \"high\"){\r\n return \"mat-elevation-z9\"\r\n }\r\n else{\r\n return \"mat-elevation-z5\"\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\n<!-- Search -->\r\n<spa-search\r\n *ngIf=\"config.searchConfig\" [config]=\"config.searchConfig\" style=\"margin-bottom: 20px;\" (searchClick)=\"searchClicked($event)\">\r\n</spa-search>\r\n\r\n<!-- Header -->\r\n<app-table-header\r\n [config]=\"config\" [hideTitle]=\"false\" [tableDataSource]=\"tableDataSource\" [tileConfig]=\"config.tileConfig\" [smallScreen]=\"smallScreen\"\r\n [tileReload]=\"tileReload\" [showFilterButton]=\"showFilterButton\" (createClick)=\"newModel()\" (customClick)=\"customModel($event,null)\" (refreshClick)=\"refreshClicked()\">\r\n</app-table-header>\r\n\r\n\r\n<!-- Table -->\r\n<div>\r\n\r\n <p *ngIf=\"!config\"><em>Configure Table</em></p>\r\n <p *ngIf=\"!dataSource\"><em>Loading...</em></p>\r\n\r\n <div *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\">\r\n\r\n <table mat-table [dataSource]=\"tableDataSource\" [ngClass]=\"elevation\">\r\n\r\n <ng-container *ngFor=\"let column of config.columns\" [matColumnDef]=\"column.name\">\r\n <th mat-header-cell *matHeaderCellDef >{{ column.alias ?? column.name | camelToWords }}</th>\r\n <td mat-cell *matCellDef=\"let row;\" class=\"right-padding\" >\r\n\r\n <!-- Rows -->\r\n <app-table-row [column]=\"column\" [row]=\"row\" [config]=\"config\"\r\n (actionClick)=\"actionClicked(column.name, row)\" (columnClick)=\"columnClicked(column, row)\" (showBannerEvent)=\"showBanner($event)\">\r\n </app-table-row>\r\n\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let row\" [ngStyle]=\"{width:false ? '50px' : actionsWidth}\">\r\n <div class=\"action-buttons-container\">\r\n\r\n <!-- Actions -->\r\n <app-table-action\r\n [displayedButtons]=\"displayedButtons\" [config]=\"config\" [row]=\"row\" (actionClick)=\"actionClicked($event.name, $event.row)\">\r\n </app-table-action>\r\n\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': config.greyOut && config.greyOut(row)}\"></tr>\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator *ngIf=\"dataSource && (!smallScreen || (smallScreen && dataSource?.length > 0))\" #tablePaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n\r\n</div>\r\n\r\n<div class=\"tin-center\">\r\n <p *ngIf=\"dataSource?.length == 0\"><em>No Data</em></p>\r\n</div>\r\n\r\n\r\n\r\n","\r\nimport { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { LoaderService } from \"../../services/loader.service\";\r\nimport { ApiResponse } from \"../../classes/Classes\";\r\n\r\n\r\n@Component({\r\n selector: \"app-addModel\",\r\n templateUrl: \"./inviteDialog.component.html\",\r\n styleUrls: [\"./tenant-settings.component.css\"],\r\n})\r\nexport class inviteDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService ,private messageService: MessageService, public dataService: DataServiceLib, private dialogRef: MatDialogRef<inviteDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n }\r\n\r\n isProcessing = false;\r\n invited = false;\r\n email = ''\r\n roleID = 0\r\n link = \"\";\r\n\r\n roles = [\r\n {roleName :'Default', roleID : 1},\r\n ]\r\n\r\n loadMeta() {\r\n this.dataService.CallApi({ url: 'tenant/member_roles/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.roles = apiResponse.data\r\n });\r\n }\r\n\r\n submit(){\r\n\r\n let invite = {email : this.email , roleID: this.roleID}\r\n\r\n this.dataService.CallApi({ url: 'tenant/members?action=invite', method: 'post' }, invite).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success){\r\n this.messageService.toast(\"Updated\");\r\n this.dialogRef.close(\"success\");\r\n\r\n // this.invited = true;\r\n // let url = new URL(window.location.href);\r\n // this.link = `${url.protocol}//${url.host}/login?code=` + apiResponse.message;\r\n\r\n }else{\r\n this.messageService.toast(apiResponse.message)\r\n }\r\n });\r\n }\r\n}\r\n","\r\n<div >\r\n <label style=\"font-size: 28px;\">Invite</label>\r\n</div>\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"mt-3\" style=\"font-size:14px\">\r\n\r\n <div>\r\n <spa-text display=\"Email\" [(value)]=\"email\" ></spa-text>\r\n <spa-select display=\"Role\" [(value)]=\"roleID\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [defaultFirstValue]=\"true\"></spa-select>\r\n </div>\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button [disabled]=\"isProcessing\" mat-stroked-button color=\"primary\" (click)=\"submit()\">Submit</button>\r\n <button mat-button mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ApiResponse, TableConfig } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-invitations-table',\r\n templateUrl: './invitations-table.component.html',\r\n styleUrls: ['./invitations-table.component.css']\r\n})\r\nexport class InvitationsTableComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n invActionClicked(x) {\r\n\r\n let message = \"Accept\"\r\n let action = \"accept\"\r\n if (x.name == \"decline\") {\r\n action = \"remove\";\r\n message = \"Decline\"\r\n }\r\n\r\n\r\n\r\n //accept / decline\r\n this.messageService.confirm(`${message} ${x.data.tenantName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n this.dataService.CallApi({ url: 'tenant/members?action=' + action, method: 'post', }, x.data).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.tableReload.next(true)\r\n\r\n // switch\r\n this.messageService.confirm(`Switch to ${x.data.tenantName} now ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n let tenant = {tenantID : x.data.tenantID}\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=switch', method: 'post' }, tenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Switched Successfully, please login again\");\r\n this.authService.logoff();\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n invTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['tenantName'],\r\n minButtons: ['accept', 'decline'],\r\n flatButtons : true,\r\n\r\n columns: [\r\n { name: 'tenantName', alias: 'Organisation', type: 'text' },\r\n { name: 'owner', type: 'text', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'accept', icon: { 'name': 'done', }, color: 'green', confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },\r\n { name: 'decline', icon: { 'name': 'close', }, color: 'red', confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },\r\n ],\r\n\r\n loadAction: { url: 'tenant/invitations/x' },\r\n\r\n }\r\n}\r\n","<spa-table [config]=\"invTableConfig\" (actionClick)=\"invActionClicked($event)\" [reload]=\"tableReload\"></spa-table>\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { inviteDialog } from './inviteDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-tenant-settings',\r\n templateUrl: './tenant-settings.component.html',\r\n styleUrls: ['./tenant-settings.component.css']\r\n})\r\nexport class TenantSettingsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog ) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.myRoleObserv.subscribe(rol => this.myRole = rol);\r\n this.loadData();\r\n this.loadTenants()\r\n }\r\n\r\n newName;\r\n\r\n myRole\r\n tenants;\r\n currTenant;\r\n currentTenantID;\r\n plan;\r\n ownTenant;\r\n roles = [\r\n { name: 'Default', value: 1 },\r\n // { name: 'Admin', value: 2 },\r\n // { name: 'Owner', value: 3 },\r\n ]\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url: 'tenant/meta/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n this.currTenant = apiResponse.data.tenant;\r\n this.currentTenantID = apiResponse.data.currentTenantID;\r\n this.plan = apiResponse.data.plan;\r\n this.ownTenant = apiResponse.data.ownTenant\r\n });\r\n }\r\n\r\n loadTenants() {\r\n this.dataService.CallApi({ url: 'tenant/meta_tenants/x' }, \"\").subscribe((apiResponse: ApiResponse) => {\r\n // this.tenant = apiResponse.data.tenant;\r\n this.tenants = apiResponse.data.tenants;\r\n });\r\n }\r\n\r\n renameTenant() {\r\n\r\n this.messageService.confirm(`Rename ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=rename', method: 'post' }, this.currTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.authService.updateTenantName(this.currTenant.name)\r\n this.messageService.toast(\"Renamed Successfully\");\r\n this.refreshOrgsLists();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n refreshOrgsLists(){\r\n this.loadTenants();\r\n this.orgsReload.next(true)\r\n }\r\n\r\n switchTenant() {\r\n\r\n this.messageService.confirm(`Switch ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n this.currTenant.tenantID = this.currentTenantID;\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=switch', method: 'post' }, this.currTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Switched Successfully, please login again\");\r\n this.authService.logoff();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n newTenant() {\r\n\r\n this.messageService.confirm(`Create ${this.newName} ?`).subscribe((result) => {\r\n if (result == \"yes\") {\r\n\r\n let tenant = {tenantID : 0, name : this.newName}\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=create', method: 'post' }, tenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Created Successfully\");\r\n this.refreshOrgsLists();\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n membersFormConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'email', type: 'text', required: true, min: 2 },\r\n { name: 'roleID', type: 'select', required: true, options: this.roles, optionDisplay : 'name', optionValue : 'value', defaultValue: 1 },\r\n ],\r\n\r\n }\r\n\r\n inviteActionClicked(x){\r\n\r\n\r\n if (x.name ==\"create\"){\r\n this.inviteDiag();\r\n }\r\n\r\n }\r\n\r\n\r\n inviteDiag() {\r\n const dialogRef = this.dialog.open(inviteDialog, {\r\n width: \"900px\",\r\n data: '',\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.tableReload.next(true);\r\n }\r\n });\r\n }\r\n\r\n tableReload: Subject<boolean> = new Subject();\r\n membersTableConfig: TableConfig = {\r\n\r\n greyOut : (value) => value.accepted == false,\r\n elevation: 'low',\r\n logResponse : true,\r\n minColumns: ['name'],\r\n minButtons: ['delete'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'roleName', alias : 'Role', type: 'text'},\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Invite', },\r\n { name: 'edit', dialog : true, action: { url: 'tenant/members?action=role', method: 'post' }, disabled: x => x.roleID != 1 },\r\n { name: 'delete', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'tenant/members?action=remove', method: 'post' }, disabled : x => x.roleID != 1 },\r\n ],\r\n\r\n loadAction: { url: 'tenant/members/x' },\r\n\r\n formConfig: this.membersFormConfig,\r\n }\r\n\r\n\r\n\r\n\r\n orgsReload: Subject<boolean> = new Subject();\r\n orgsTableConfig: TableConfig = {\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'createdByName', type: 'text', alias: 'Owner' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'delete', confirm: { message: 'Remove Member from this Organisation ?' }, action: { url: 'tenant/members?action=remove', method: 'post' } , disabled : x => x.own}, //action: { url: 'tenant/members?action=delete', method: 'post' }\r\n ],\r\n\r\n loadAction: { url: 'tenant/my_tenants/x' },\r\n\r\n }\r\n}\r\n","<div class=\"container\">\r\n\r\n <div>\r\n\r\n <label class=\"title\" >Organisation Details</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-2 mt-3 tin-grid\" style=\" font-size: 14px;\">\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"currTenant.name\" hint=\"This name will be displayed to all members of your organisation.\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"renameTenant()\">Save</button>\r\n </div>\r\n\r\n <div class=\"tin-col mb-3\" style=\"max-width: 500px;\">\r\n <spa-select display=\"Current Organisation\" [options]=\"tenants\" optionDisplay=\"name\" optionValue=\"tenantID\" [(value)]=\"currentTenantID\"\r\n hint=\"You are required to login again after switching organisations.\" style=\"min-width: 300px;\"></spa-select>\r\n <button mat-stroked-button color=\"primary\" (click)=\"switchTenant()\">Switch</button>\r\n </div>\r\n\r\n <div *ngIf=\"ownTenant\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n <!-- Members -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Members</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Invite other users to join your organisation as partners or employees to form a partnership or company.</label>\r\n\r\n <spa-table [config]=\"membersTableConfig\" [reload]=\"tableReload\" (actionClick)=\"inviteActionClicked($event)\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- Invitations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Invitations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Requests for you to join other organisations.</label>\r\n\r\n\r\n <spa-invitations-table></spa-invitations-table>\r\n\r\n </div>\r\n\r\n\r\n<!-- Member Organisations -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Member Organisations</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Organisations that you are a member of.</label>\r\n\r\n <spa-table [config]=\"orgsTableConfig\" [reload]=\"orgsReload\"></spa-table>\r\n\r\n </div>\r\n\r\n\r\n <!-- New Organisation -->\r\n <div class=\"mt-3\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\">New Organisation</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n <label class=\"subtitle text-muted\">Create another organisation</label>\r\n\r\n <div class=\"tin-col mb-3\" *ngIf=\"ownTenant\" style=\"max-width: 500px;\">\r\n <spa-text display=\"Name\" [(value)]=\"newName\" style=\"min-width: 300px;\"> </spa-text>\r\n <button mat-stroked-button color=\"primary\" (click)=\"newTenant()\">Create</button>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n <!-- Billing -->\r\n <div class=\"mt-3 mb-5\" *ngIf=\"ownTenant\">\r\n\r\n <label class=\"title\" >Billing and Subscription</label>\r\n <hr style=\"margin-top: 0px; margin-bottom: 0px;\">\r\n\r\n <div *ngIf=\"currTenant && plan\" class=\"mb-1 mt-3\" style=\"max-width: 300px; font-size: 14px;\">\r\n <spa-label display=\"Plan\" [value]=\"plan.name\"></spa-label>\r\n <spa-label display=\"Next Payment\" format=\"money\" [value]=\"plan.price\"></spa-label>\r\n <spa-label display=\"Due Date\" format=\"date\" value=\"2024-01-01\"></spa-label>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-tenants',\r\n templateUrl: './tenants.component.html',\r\n styleUrls: ['./tenants.component.css']\r\n})\r\nexport class TenantsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2 },\r\n { name: 'planID', alias :'Plan', type: 'number', required: true },\r\n ],\r\n\r\n reset: true,\r\n\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'tenantID', type: 'number', alias: 'ID' },\r\n { name: 'name', type: 'text' },\r\n { name: 'planName', alias : 'Plan', type: 'text' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/tenants?action=create', method: 'post' }},\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenant/tenants?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenant/tenants?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenant/all_tenants/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n}\r\n","<h4>Tenants</h4>\n<hr>\n\n\n<div class=\" mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" ></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-bug',\n templateUrl: './bug.component.html',\n styleUrls: ['./bug.component.css']\n})\nexport class BugComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>Report a fault</p>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-membership',\r\n templateUrl: './membership.component.html',\r\n styleUrls: ['./membership.component.css']\r\n})\r\nexport class MembershipComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'memberName', type: 'text', required: true, min: 2 },\r\n { name: 'tenantName', type: 'text', required: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['memberName','tenantName', 'roleName'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'tenantName', type: 'text' },\r\n { name: 'memberName', type: 'text' },\r\n { name: 'roleName', type: 'text' },\r\n { name: 'status', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/members?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenant/members?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenant/members?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenant/all_members/x' },\r\n\r\n formConfig: this.formConfig\r\n }\r\n}\r\n","<h4>Membership</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-plans',\r\n templateUrl: './plans.component.html',\r\n styleUrls: ['./plans.component.css']\r\n})\r\nexport class PlansComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', required: true, min: 2 },\r\n { name: 'description', type: 'text', required: true, min: 2 },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'planID', type: 'text' },\r\n { name: 'name', type: 'text' },\r\n { name: 'price', type: 'money' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'tenant/plans?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'tenant/plans?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'tenant/plans?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'tenant/all_plans/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Plans</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { ApiResponse, FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-customers',\r\n templateUrl: './customers.component.html',\r\n styleUrls: ['./customers.component.css']\r\n})\r\nexport class CustomersComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadTenants();\r\n }\r\n\r\n loadTenants() {\r\n this.dataService.CallApi({ url: 'tenant/available_tenants/x' }).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.success) {\r\n this.formConfig.fields.find(x => x.name == 'customerTenantID').options = apiResponse.data;\r\n }\r\n });\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'address', type: 'text', rows : 2, span : true },\r\n { name: 'customerTenantID', alias: 'Customer Tenant', type: 'select', optionDisplay: 'name', optionValue: 'tenantID', options: [], nullable : true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'isLinked', type: 'checkbox', alias: 'Linked' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/customers?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/customers?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/customers?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/customers/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Customers</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { LoaderService } from '../../services/loader.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\n\r\n// import { ApiResponse, DataServiceLib, MessageService } from 'projects/tin-spa/src/public-api';\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './quantityDialog.component.html',\r\n styleUrls: ['./inventory.component.css']\r\n})\r\nexport class quantityDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService : DataServiceLib, private dialogRef: MatDialogRef<quantityDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.action = this.data.name;\r\n this.inv = this.data.data\r\n this.isLoadComplete = true;\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n }\r\n\r\n quantity = 0\r\n action;\r\n inv\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n submit() {\r\n this.inv.quantity = this.quantity\r\n this.dataService.CallApi({ url: `general/inventory?action=${this.action}`, method: 'post' }, this.inv).subscribe((x : ApiResponse) => {\r\n\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{data.name | titlecase}} {{inv.name}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-grid\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [value]=\"inv.name\" [readonly]=\"true\"></spa-text>\r\n <spa-text display=\"Description\" [value]=\"inv.description\" [readonly]=\"true\"></spa-text>\r\n <spa-number display=\"Quantity\" [(value)]=\"quantity\" [hint]=\"'Quantity to ' + data.name\" ></spa-number>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormConfig, ListDialogConfig, TableConfig } from '../../classes/Classes';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-list-dialog',\r\n templateUrl: './list-dialog.component.html',\r\n styleUrls: ['./list-dialog.component.css']\r\n})\r\nexport class ListDialogComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private dialogRef: MatDialogRef<ListDialogComponent>, @Inject(MAT_DIALOG_DATA) public data : ListDialogConfig) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.listConfig = this.data;\r\n this.formConfig.fields.find(x => x.name == 'listName').defaultValue = this.listConfig.listName;\r\n this.config.loadAction = { url: 'general/lists/' + this.listConfig.listName }\r\n // this.config.buttons.find(x => x.name == 'create').display = \"New \" + this.listConfig.name\r\n\r\n\r\n }\r\n\r\n clicked = false;\r\n\r\n actionClicked(){\r\n this.clicked = true;\r\n }\r\n\r\n close(){\r\n if (this.clicked){\r\n this.dialogRef.close(\"success\")\r\n }else{\r\n this.dialogRef.close(\"\")\r\n }\r\n }\r\n\r\n item: string = \"\";\r\n tableReload: Subject<boolean> = new Subject();\r\n\r\n\r\n listConfig: ListDialogConfig\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'listName', type: 'text', hidden : true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n\r\n config: TableConfig = {\r\n\r\n showFilter : true,\r\n minColumns: ['name',],\r\n minButtons: ['edit'],\r\n elevation: 'none',\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create' , display : 'New', dialog: true, action: { url: 'general/lists?action=create', method: 'post' } },\r\n { name: 'edit', dialog: true, action: { url: 'general/lists?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/lists?action=delete', method: 'post' } },\r\n ],\r\n\r\n formConfig : this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<div>\n\n <label style=\"font-size: 24px;\">{{listConfig?.title ?? 'List'}}</label>\n\n</div>\n\n<mat-dialog-content class=\"mat-typography\">\n\n <div style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [reload]=\"tableReload\" (actionClick)=\"actionClicked()\"></spa-table>\n </div>\n\n\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-button (click)=\"close()\" >Ok</button>\n</mat-dialog-actions>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { quantityDialog } from './quantityDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component';\r\n\r\n\r\n@Component({\r\n selector: 'spa-inventory',\r\n templateUrl: './inventory.component.html',\r\n styleUrls: ['./inventory.component.css']\r\n})\r\nexport class InventoryComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({url :'general/lists/InventoryCategories'}).subscribe((apiResponse : ApiResponse) => {\r\n this.formConfig.fields.find(x => x.name == 'categoryID').options = apiResponse.data;\r\n })\r\n }\r\n\r\n reload: Subject<boolean> = new Subject();\r\n\r\n clicked(x){\r\n\r\n if (x.name == \"increase\" || x.name == \"decrease\"){\r\n this.comment(x)\r\n }\r\n }\r\n\r\n comment(x) {\r\n\r\n const dialogRef = this.dialog.open(quantityDialog, {\r\n width: \"900px\",\r\n data: x,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.reload.next(true);\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Inventory Categories\", name : 'Category', listName : 'InventoryCategories'}\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf ,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'serial', type: 'text', hidden : true },\r\n { name: 'price', type: 'money', },\r\n { name: 'minQuantity', alias : 'Minimum Quantity', type: 'number' },\r\n { name: 'categoryID', alias : 'Category', type: 'select', optionDisplay : 'name', optionValue : 'listItemID', defaultFirstValue : true },\r\n\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'quantity'],\r\n minButtons: ['increase', 'decrease', 'edit'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'name', type: 'text' },\r\n { name: 'description', type: 'text' },\r\n { name: 'categoryName', alias : 'Category', type: 'text' },\r\n { name: 'quantity', type: 'number', icon :{name : 'warning', color : 'red', tip : 'Stock up', condition : x => x.quantity <= x.minQuantity} },\r\n { name: 'price', alias : 'Unit Price', type: 'money', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'increase', icon: { name: 'add' }, color: 'green', },\r\n { name: 'decrease', icon: { name: 'remove' }, color: 'red', },\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/inventory?action=create', method: 'post' } },\r\n\r\n { name: 'edit', dialog: true, action: { url: 'general/inventory?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/inventory?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/inventory/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Inventory</label>\n\n <div >\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon >category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" (actionClick)=\"clicked($event)\" [reload]=\"reload\"></spa-table>\n</div>\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { FinAccount, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './accountDialog.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\nexport class accountDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService, private messageService: MessageService, private dataService: DataServiceLib, private dialogRef: MatDialogRef<accountDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.action = this.data == null ? 'create' : 'edit'\r\n\r\n this.account = this.data ?? new FinAccount();\r\n this.isLoadComplete = true;\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x );\r\n\r\n }\r\n\r\n action;\r\n account : FinAccount\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n currencies = [\r\n { name: 'USD', value: 'USD' },\r\n { name: 'ZAR', value: 'ZAR' },\r\n { name: 'ZWL', value: 'ZWL' },\r\n ]\r\n\r\n submit() {\r\n\r\n this.dataService.CallApi({ url: `general/accounts?action=${this.action}`, method: 'post' }, this.account).subscribe((x : ApiResponse) => {\r\n\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n<div class=\"tin-col\" style=\"font-size:14px\">\r\n\r\n <spa-text display=\"Name\" [(value)]=\"account.name\" ></spa-text>\r\n <spa-text display=\"Description\" [(value)]=\"account.description\" ></spa-text>\r\n <spa-select display=\"Currency\" [(value)]=\"account.currency\" [options]=\"currencies\" optionDisplay=\"name\" optionValue=\"value\"></spa-select>\r\n\r\n</div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n<button mat-stroked-button color=\"primary\" [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n// import { quantityDialog } from './quantityDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { accountDialog } from './accountDialog.component';\r\n\r\n@Component({\r\n selector: 'spa-accounts',\r\n templateUrl: './accounts.component.html',\r\n styleUrls: ['./accounts.component.css']\r\n})\r\nexport class AccountsComponent implements OnInit {\r\n\r\n constructor(public router: Router,private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n reload: Subject<boolean> = new Subject();\r\n accounts;\r\n\r\n loadData(){\r\n\r\n this.dataService.CallApi({ url: 'general/accounts/x' },'').subscribe((apiResponse : ApiResponse) => {\r\n this.accounts = apiResponse.data;\r\n })\r\n\r\n }\r\n\r\n\r\n\r\n view(x){\r\n this.dataService.NavigateWithValue(\"home/admin/transactions\", x.accountID)\r\n }\r\n\r\n open(x) {\r\n\r\n const dialogRef = this.dialog.open(accountDialog, {\r\n width: \"900px\",\r\n data: x,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n\r\n delete(row){\r\n this.messageService.confirm(`DELETE ${row.name} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n\r\n this.dataService.CallApi({ url: `general/accounts?action=delete`, method: 'post' }, row).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Deleted\");\r\n this.loadData();\r\n } else {\r\n this.messageService.toast(apiResponse.message);\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n","<h4>Accounts</h4>\r\n<hr>\r\n\r\n<div class=\"tin-row d-flex justify-content-between\" style=\"font-size: 14px;margin-left: 5px;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"open(null)\">Create</button>\r\n <spa-filter [showText]=\"false\" (refreshClick)=\"loadData()\"></spa-filter>\r\n</div>\r\n\r\n<div class=\"row \" style=\"margin-left: 0px;\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" *ngFor=\"let account of accounts\" style=\"max-width: 350px;margin: 5px;\">\r\n\r\n <div class=\"tin-row d-flex justify-content-between\">\r\n <label style=\"font-size: 24px; font-weight: 300;\">{{account.name}}</label>\r\n <button mat-mini-fab color=\"primary\" (click)=\"open(account)\"><mat-icon>edit</mat-icon></button>\r\n </div>\r\n\r\n <hr style=\"margin-top: 5px;margin-bottom: 10px;\"/>\r\n\r\n <label *ngIf=\"account.description != ''\" style=\"font-size: small;margin-bottom: 5px;\">{{account.description}}</label>\r\n\r\n <div *ngIf=\"account\" class=\"tin-row\">\r\n <label style=\"margin-right: 5px;font-size: 14px;\">{{account?.currency}}</label>\r\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\r\n </div>\r\n\r\n <mat-card-actions class=\"d-flex justify-content-between\" >\r\n <button mat-stroked-button color=\"primary\" style=\"margin-right:10px;\" (click)=\"view(account)\">View</button>\r\n <button mat-mini-fab *ngIf=\"account.count == 0\" color=\"warn\" style=\"margin-right:10px\" (click)=\"delete(account)\"><mat-icon>delete</mat-icon></button>\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-suppliers',\r\n templateUrl: './suppliers.component.html',\r\n styleUrls: ['./suppliers.component.css']\r\n})\r\nexport class SuppliersComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n { name: 'email', type: 'text' },\r\n { name: 'address', type: 'text', rows: 2, span: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text' },\r\n { name: 'phone', type: 'text' },\r\n { name: 'contactPerson', type: 'text' },\r\n\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/suppliers?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/suppliers?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/suppliers?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/suppliers/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n\r\n}\r\n","<h4>Suppliers</h4>\n<hr>\n\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\"></spa-table>\n</div>\n\n","//-------------------------------------------VIEW\r\n\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { FormConfig, Transaction, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-quanityDiag',\r\n templateUrl: './transactDialog.component.html',\r\n styleUrls: ['./transactions.component.css']\r\n})\r\nexport class transactDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService: DataServiceLib, private dialogRef: MatDialogRef<transactDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n\r\n this.action = this.data.action;\r\n this.account = this.data.account;\r\n this.accounts = this.data.accounts;\r\n this.categories = this.data.categories;\r\n this.isLoadComplete = true;\r\n\r\n if(this.action == \"edit\"){\r\n this.txn = this.data.data\r\n }\r\n\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n\r\n }\r\n\r\n\r\n txn = new Transaction;\r\n action\r\n account\r\n accounts\r\n categories\r\n\r\n isLoadComplete: boolean = false;\r\n isProcessing: boolean = false;\r\n\r\n\r\n submit() {\r\n\r\n if (parseFloat(this.txn.amount) == 0){\r\n this.messageService.toast(\"Enter Amount\")\r\n return\r\n }\r\n\r\n if (this.action == \"income\"){\r\n this.txn.type = 1\r\n }else{\r\n this.txn.type = 0\r\n }\r\n\r\n\r\n this.txn.accountID = this.account.accountID\r\n\r\n let act;\r\n if (this.action == \"edit\"){\r\n act = 'edit'\r\n }\r\n else if(this.action == \"transfer\") {\r\n act = 'transfer'\r\n }\r\n else{\r\n act = 'create'\r\n }\r\n\r\n this.dataService.CallApi({ url: `general/transactions?action=${act}`, method: 'post' }, this.txn).subscribe((x : ApiResponse) => {\r\n if (x.success){\r\n this.dialogRef.close('success');\r\n } else {\r\n this.messageService.toast(x.message)\r\n }\r\n\r\n })\r\n }\r\n};\r\n\r\n\r\n\r\n","\r\n<h2 mat-dialog-title>{{action | titlecase}}</h2>\r\n\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"tin-input\" style=\"font-size:14px\">\r\n\r\n <spa-select *ngIf=\"action == 'transfer'\" [(value)]=\"txn.destinationID\" display=\"Transfer to\" [options]=\"accounts\" optionDisplay=\"name\" optionValue=\"accountID\"></spa-select>\r\n\r\n <spa-date display=\"Date\" [(value)]=\"txn.date\"></spa-date>\r\n <spa-money display=\"Amount\" [(value)]=\"txn.amount\"></spa-money>\r\n <spa-text display=\"Narration\" [(value)]=\"txn.narration\"></spa-text>\r\n <spa-select display=\"Category\" [(value)]=\"txn.categoryID\" [options]=\"categories\" optionDisplay=\"name\" optionValue=\"listItemID\" [defaultFirstValue]=\"true\"></spa-select>\r\n\r\n\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n\r\n<mat-dialog-actions>\r\n<button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n<button mat-button [disabled]=\"isProcessing\" cdkFocusInitial mat-dialog-close>Cancel</button>\r\n</mat-dialog-actions>\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Subject } from 'rxjs';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { transactDialog } from './transactDialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component';\r\n\r\n@Component({\r\n selector: 'spa-transactions',\r\n templateUrl: './transactions.component.html',\r\n styleUrls: ['./transactions.component.css']\r\n})\r\nexport class TransactionsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, private breakpointObserver: BreakpointObserver, public dialog: MatDialog) {\r\n\r\n // detect screen size changes\r\n this.breakpointObserver.observe([\"(max-width: 600px)\"]).subscribe((result: BreakpointState) => {\r\n\r\n if (result.matches) {\r\n this.smallScreen = true\r\n } else {\r\n this.smallScreen = false\r\n }\r\n\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.accountID = this.dataService.GetNavigationValue()\r\n this.loadData();\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Transaction Categories\", name: 'Category', listName: 'TransactionCategories' }\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n }\r\n });\r\n\r\n }\r\n\r\n actionClicked(x){\r\n\r\n if (x.name == \"edit\"){\r\n this.transact('edit', x.data)\r\n }\r\n\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url: 'general/transactions/' + this.accountID },'').subscribe((apiResponse : ApiResponse) => {\r\n\r\n this.account = apiResponse.data.account;\r\n this.accounts = apiResponse.data.accounts;\r\n this.transactions = apiResponse.data.transactions;\r\n this.categories = apiResponse.data.categories;\r\n })\r\n }\r\n\r\n\r\n\r\n transact(x, data) {\r\n\r\n const dialogRef = this.dialog.open(transactDialog, {\r\n width: \"500px\",\r\n data: { action: x, account: this.account, data: data, accounts: this.accounts, categories: this.categories },\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.loadData()\r\n this.messageService.toast(\"Updated\")\r\n }\r\n });\r\n }\r\n\r\n transfer() {\r\n\r\n }\r\n\r\n smallScreen\r\n account;\r\n accounts = [];\r\n transactions = [];\r\n accountID;\r\n categories = [];\r\n reload: Subject<boolean> = new Subject();\r\n\r\n\r\n config: TableConfig = {\r\n\r\n minColumns: ['date','narration','amount'],\r\n minButtons: ['edit', 'delete'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n { name: 'date', type: 'date' },\r\n { name: 'narration', type: 'text'},\r\n { name: 'amount', type: 'money', color: { name: 'red', condition: x => x.type == 0 }, icons: [{ name: 'arrow_right_alt', condition: x => x.link != '' && x.type == 0 }, { name: 'keyboard_backspace', condition: x => x.link != '' && x.type == 1 }] },\r\n { name: 'categoryName',alias : 'Category', type: 'text' },\r\n ],\r\n\r\n buttons: [\r\n\r\n { name: 'edit', disabled: x => x.link != '' && x.type == 1 },\r\n { name: 'delete', dialog: true, action: { url: 'general/transactions?action=delete', method: 'post' }, disabled : x => x.link != '' && x.type == 1},\r\n ],\r\n\r\n }\r\n\r\n}\r\n","<!-- <h4>Transactions ({{account?.name}})</h4>\n<hr> -->\n\n<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Transactions ({{account?.name}})</label>\n\n <div>\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;padding-left: 0;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n<div class=\"d-flex justify-content-between\" style=\" font-size: 14px;\" >\n\n <div *ngIf=\"account\" class=\"tin-row actionbuttons\">\n <label style=\"margin-right: 5px;\">{{account?.currency}}</label>\n <label style=\"font-size: 34px;margin-right: 20px;\">{{account?.balance | currency : '' : ''}}</label>\n <div *ngIf=\"!smallScreen; then buttons\" ></div>\n </div>\n\n <div *ngIf=\"!smallScreen\">\n <spa-filter (refreshClick)=\"loadData()\"></spa-filter>\n </div>\n\n</div>\n\n<div *ngIf=\"smallScreen\" style=\"margin-bottom: 10px;\"></div>\n\n<div *ngIf=\"smallScreen; then buttons\" ></div>\n\n<ng-template #buttons >\n <div class=\"tin-row actionbuttons\">\n <button mat-stroked-button style=\"color: green;\" (click)=\"transact('income','')\"><mat-icon class=\"sign\">add</mat-icon>Income</button> <mat-icon class=\"info\">info</mat-icon>\n <button mat-stroked-button style=\"color: red;\" (click)=\"transact('expense','')\"><mat-icon class=\"sign\">remove</mat-icon>Expense</button> <mat-icon class=\"info\">info</mat-icon>\n <button mat-stroked-button style=\"color: orange;\" (click)=\"transact('transfer','')\" ><mat-icon class=\"sign\">sync_alt</mat-icon>Transfer</button> <mat-icon class=\"info\">info</mat-icon>\n </div>\n</ng-template>\n\n\n\n<div style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [data]=\"transactions\" [reload]=\"reload\" (dataLoad)=\"loadData()\" (actionClick)=\"actionClicked($event)\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, ListDialogConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { ListDialogComponent } from '../list-dialog/list-dialog.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'spa-tasks',\r\n templateUrl: './tasks.component.html',\r\n styleUrls: ['./tasks.component.css']\r\n})\r\nexport class TasksComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService, public dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n loadData(){\r\n this.dataService.CallApi({ url:'general/tasks_meta/x'}).subscribe((api : ApiResponse) => {\r\n this.formConfig.fields.find(x => x.name == 'assignee').options = api.data.members;\r\n this.formConfig.fields.find(x => x.name == 'assignee').defaultValue = this.authService.currentUser;\r\n this.formConfig.fields.find(x => x.name == 'categoryID').options = api.data.categories;\r\n })\r\n }\r\n\r\n cats() {\r\n\r\n let conf: ListDialogConfig = { title: \"Task Categories\", name: 'Category', listName: 'TaskCategories' }\r\n\r\n const dialogRef = this.dialog.open(ListDialogComponent, {\r\n width: \"900px\",\r\n data: conf,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n\r\n if (result == 'success') {\r\n this.reload.next(true);\r\n }\r\n });\r\n\r\n }\r\n\r\n\r\n reload: Subject<boolean> = new Subject();\r\n\r\n statuses = [\r\n { name: 'Not Started', value: 0 },\r\n { name: 'In-Progress', value: 1 },\r\n { name: 'Completed', value: 2 },\r\n ]\r\n\r\n formConfig: FormConfig = {\r\n\r\n fields: [\r\n { name: 'name', type: 'text', span : true, required : true },\r\n { name: 'status', type: 'select', options : this.statuses, defaultFirstValue : true, required : true },\r\n { name: 'dueDate', type: 'date' },\r\n { name: 'assignee', type: 'select', optionDisplay : 'name', optionValue : 'userName' },\r\n { name: 'categoryID', alias: 'Category', type: 'select', optionDisplay: 'name', optionValue: 'listItemID', defaultFirstValue: true, required: true },\r\n ],\r\n\r\n reset: true,\r\n }\r\n\r\n config: TableConfig = {\r\n showFilter: true,\r\n minColumns: ['name', 'assigneeName'],\r\n flatButtons: true,\r\n\r\n columns: [\r\n\r\n { name: 'name', type: 'text'},\r\n { name: 'statusName', type: 'text' },\r\n { name: 'dueDate', type: 'date' },\r\n { name: 'assigneeName', alias:'assignee', type: 'text'},\r\n { name: 'categoryName', alias: 'Category', type: 'text' },\r\n { name: 'createdDate', alias : 'Created', type: 'date' },\r\n ],\r\n\r\n buttons: [\r\n { name: 'create', display: 'Create', dialog: true, action: { url: 'general/tasks?action=create', method: 'post' } },\r\n { name: 'view', dialog: true },\r\n { name: 'edit', dialog: true, action: { url: 'general/tasks?action=edit', method: 'post' } },\r\n { name: 'delete', dialog: true, action: { url: 'general/tasks?action=delete', method: 'post' } },\r\n ],\r\n\r\n loadAction: { url: 'general/tasks/x' },\r\n\r\n formConfig: this.formConfig\r\n\r\n }\r\n}\r\n","<div class=\"d-flex align-items-center justify-content-between mt-0\" style=\"margin-left: 10px\">\n\n <label style=\"font-size: 16px;\">Tasks</label>\n\n <div>\n <button mat-mini-fab color=\"primary\" style=\"margin-right:1em;\" (click)=\"cats()\" matTooltip=\"Categories\" matTooltipPosition=\"above\"><mat-icon>category</mat-icon></button>\n </div>\n\n</div>\n<hr>\n\n<div class=\"mt-3\" style=\" font-size: 14px;\">\n <spa-table [config]=\"config\" [reload]=\"reload\"></spa-table>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-departments',\r\n templateUrl: './departments.component.html',\r\n styleUrls: ['./departments.component.css']\r\n})\r\nexport class DepartmentsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.dataService.loadPositionMeta();\r\n this.dataService.loadEmployeesMeta();\r\n }\r\n\r\n\r\n}\r\n","<h4>Departments</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.departmentTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { FormConfig, TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-employees',\r\n templateUrl: './employees.component.html',\r\n styleUrls: ['./employees.component.css']\r\n})\r\nexport class EmployeesComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.dataService.loadEmployeesMeta();\r\n }\r\n\r\n}\r\n","<h4>Employees</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.employeeTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-positions',\r\n templateUrl: './positions.component.html',\r\n styleUrls: ['./positions.component.css']\r\n})\r\nexport class PositionsComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.dataService.loadPositionMeta();\r\n }\r\n\r\n}\r\n","<h4>Positions</h4>\r\n<hr>\r\n\r\n<div class=\"mt-3\" style=\" font-size: 14px;\">\r\n <spa-table [config]=\"dataService.positionTableConfig\"></spa-table>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-grades',\n templateUrl: './grades.component.html',\n styleUrls: ['./grades.component.css']\n})\nexport class GradesComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<h4>Grades</h4>\n<hr>\n","import { Component, OnInit } from '@angular/core';\r\nimport { TableConfig, ApiResponse } from '../../classes/Classes';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\n\r\n@Component({\r\n selector: 'spa-welcome',\r\n templateUrl: './welcome.component.html',\r\n styleUrls: ['./welcome.component.css']\r\n})\r\nexport class WelcomeComponent implements OnInit {\r\n\r\n constructor(public dataService : DataServiceLib, public authService: AuthService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadMeta();\r\n\r\n this.authService.loggedUserFullName.subscribe(x => this.username = x)\r\n }\r\n\r\n username;\r\n\r\n step = \"terms\"\r\n agree = false\r\n own = true;\r\n invitations = false;\r\n\r\n myTenant\r\n\r\n loadMeta(){\r\n this.dataService.CallApi({ url:'tenant/welcome_meta/x'}).subscribe((api) => {\r\n this.invitations = api.data.invitations;\r\n this.own = api.data.own;\r\n this.myTenant = api.data.tenant;\r\n })\r\n }\r\n\r\n renameTenant() {\r\n\r\n this.dataService.CallApi({ url: 'tenant/tenants?action=rename', method: 'post' }, this.myTenant).subscribe((apiResponse: ApiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.authService.updateTenantName(this.myTenant.name)\r\n }\r\n });\r\n }\r\n\r\n next(){\r\n\r\n if (this.step == 'terms' && this.own){\r\n this.step = \"name\"\r\n return;\r\n }\r\n else if (this.step == \"terms\" && !this.own) {\r\n this.step = \"hi\"\r\n return;\r\n }\r\n else if (this.step == \"name\" && this.own){\r\n\r\n this.renameTenant();\r\n if (this.invitations == true){\r\n this.step = \"invitations\"\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n this.setWelcome();\r\n }\r\n\r\n setWelcome() {\r\n this.dataService.CallApi({ url: 'tenant/set_welcome/x' }).subscribe((api) => {\r\n this.home();\r\n })\r\n }\r\n\r\n home(){\r\n this.dataService.Navigate('home');\r\n }\r\n\r\n\r\n invTableConfig: TableConfig = {\r\n\r\n greyOut: (value) => value.accepted == false,\r\n elevation: 'low',\r\n minColumns: ['tenantName'],\r\n minButtons: ['accept', 'decline'],\r\n\r\n columns: [\r\n { name: 'tenantName', alias: 'Organisation', type: 'text' },\r\n { name: 'owner', type: 'text', },\r\n ],\r\n\r\n buttons: [\r\n { name: 'accept', icon: { 'name': 'done', }, color: 'green', action: { url: 'tenant/members?action=accept', method: 'post', }, confirm: { message: 'Accept ?' }, disabled: (x) => x.accepted },\r\n { name: 'decline', icon: { 'name': 'close', }, color: 'red', action: { url: 'tenant/members?action=remove', method: 'post', }, confirm: { message: 'Decline ?' }, disabled: (x) => x.accepted },\r\n ],\r\n\r\n loadAction: { url: 'tenant/invitations/x' },\r\n\r\n }\r\n\r\n}\r\n","<label class=\"title\">Welcome, {{username}}</label>\n\n\n\n<!-- terms -->\n<div class=\"mt-3\" *ngIf=\"step=='terms'\">\n\n <label class=\"subtitle text-muted mb-2\" >We care about our users and are dedicated to protecting your data and privacy -\n thats why we want to be clear about what data we collect and how we use it to improve your experience.</label>\n\n <br>\n <spa-check display=\"I agree to the Terms and Privacy Policy\" [(value)]=\"agree\"></spa-check>\n</div>\n\n<!-- owner -->\n<div class=\"mt-3\" *ngIf=\"step=='name' && own\">\n\n <label class=\"subtitle text-muted\" style=\" margin-bottom: 20px;\">The follow steps will guide you to customise your application.</label>\n\n <div style=\"max-width: 400px;\">\n <spa-text display=\"Organisation Name\" [(value)]=\"myTenant.name\" ></spa-text>\n </div>\n\n <label class=\"text-muted\" style=\" font-size: 12px;\">You can change the Organisation's name to your team or company name.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">The name can be changed later.</label>\n\n</div>\n\n<!-- guest -->\n<div *ngIf=\"step=='hi' && !own\">\n <label class=\"subtitle text-muted\">You are now signed in to {{myTenant.name}}.</label>\n</div>\n\n\n<!-- invitations -->\n<div class=\"mt-3\" *ngIf=\"step=='invitations' && own\">\n\n <label class=\"subtitle text-muted\">You have been requested to join the following organisations. If you accept, you have the option to switch to that org now or stay in you org.</label><br>\n <label class=\"text-muted\" style=\" font-size: 12px;margin-top: 10px;\">You will be able to switch later.</label>\n <spa-invitations-table></spa-invitations-table>\n\n</div>\n\n\n<!-- Actions -->\n<div class=\"mt-3\">\n <button mat-stroked-button color=\"primary\" [disabled]=\"!agree\" (click)=\"next()\">Next <mat-icon>arrow_right_alt</mat-icon></button>\n</div>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-invitations',\n templateUrl: './invitations.component.html',\n styleUrls: ['./invitations.component.css']\n})\nexport class InvitationsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>invitations works!</p>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'spa-notifications',\n templateUrl: './notifications.component.html',\n styleUrls: ['./notifications.component.css']\n})\nexport class NotificationsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<p>notifications works!</p>\n","import { NgModule } from '@angular/core';\r\nimport { TinSpaComponent } from './components/tin-spa.component';\r\nimport { SpaMatModule } from \"./modules/spa-mat.module\";\r\nimport { TextComponent } from './components/text/text.component';\r\nimport { CheckComponent } from './components/check/check.component';\r\nimport { DateComponent } from './components/date/date.component';\r\nimport { DatetimeComponent } from './components/datetime/datetime.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { SelectComponent } from './components/select/select.component';\r\nimport { ActivityComponent } from './components/activity/activity.component';\r\nimport { FilterComponent } from './components/filter/filter.component';\r\nimport { messageDialog } from './components/message/messageDialog.component';\r\nimport { MoneyComponent } from './components/money/money.component';\r\nimport { OptionComponent } from './components/option/option.component';\r\nimport { TilesComponent } from './components/tiles/tiles.component';\r\nimport { StepsComponent } from './components/steps/steps.component';\r\nimport { AttachComponent } from './components/attach/attach.component';\r\nimport { ChipsComponent } from './components/chips/chips.component';\r\nimport { LoaderComponent } from './components/loader/loader.component';\r\nimport { NavMenuComponent } from './components/nav-menu/nav-menu.component';\r\nimport { LoaderInterceptor } from './services/loader-interceptor.service';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { CurrencyPipe, DatePipe, HashLocationStrategy, LocationStrategy } from '@angular/common';\r\nimport { MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\r\nimport { CurrencyInputModule } from './components/money/currency-input-mask.module';\r\nimport { TableComponent } from './components/table/table.component';\r\nimport { DetailsDialog as DetailsDialog } from './components/table/detailsDialog.component';\r\nimport { FormComponent } from './components/form/form.component';\r\nimport { CamelToWordsPipe } from './pipes/camelToWords.pipe';\r\nimport { NumberComponent } from './components/number/number.component';\r\nimport { SearchComponent } from './components/search/search.component';\r\nimport { ViewerComponent } from './components/viewer/viewer.component';\r\nimport { viewerDialog } from './components/viewer/viewerDialog.component';\r\nimport { NgxDocViewerModule } from 'ngx-doc-viewer';\r\nimport { GoogleLoginProvider, SocialAuthServiceConfig } from '@abacritt/angularx-social-login';\r\nimport { TenantSettingsComponent } from './components/tenant-settings/tenant-settings.component';\r\nimport { TenantsComponent } from './components/tenants/tenants.component';\r\nimport { BugComponent } from './components/bug/bug.component';\r\nimport { MembershipComponent } from './components/membership/membership.component';\r\nimport { PlansComponent } from './components/plans/plans.component';\r\nimport { CustomersComponent } from './components/customers/customers.component';\r\nimport { InventoryComponent } from './components/inventory/inventory.component';\r\nimport { AccountsComponent } from './components/accounts/accounts.component';\r\nimport { SuppliersComponent } from './components/suppliers/suppliers.component';\r\nimport { quantityDialog } from './components/inventory/quantityDialog.component';\r\nimport { TransactionsComponent } from './components/transactions/transactions.component';\r\nimport { transactDialog } from './components/transactions/transactDialog.component';\r\nimport { accountDialog } from './components/accounts/accountDialog.component';\r\nimport { ListDialogComponent } from './components/list-dialog/list-dialog.component';\r\nimport { TasksComponent } from './components/tasks/tasks.component';\r\nimport { DepartmentsComponent } from './components/departments/departments.component';\r\nimport { EmployeesComponent } from './components/employees/employees.component';\r\nimport { PositionsComponent } from './components/positions/positions.component';\r\nimport { GradesComponent } from './components/grades/grades.component';\r\nimport { inviteDialog } from './components/tenant-settings/inviteDialog.component';\r\nimport { WelcomeComponent } from './components/welcome/welcome.component';\r\nimport { InvitationsComponent } from './components/invitations/invitations.component';\r\nimport { NotificationsComponent } from './components/notifications/notifications.component';\r\nimport { InvitationsTableComponent } from './components/invitations-table/invitations-table.component';\r\nimport { TableInternalComponent } from './components/table-internal/table-internal.component';\r\nimport { DetailsDialogInternal } from './components/table-internal/detailsDialog-internal.component';\r\nimport { TableHeaderComponent } from './components/table-header/table-header.component';\r\nimport { TableRowComponent } from './components/table-row/table-row.component';\r\nimport { TableActionComponent } from './components/table-action/table-action.component';\r\nimport { AlertComponent } from './components/alert/alert.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TinSpaComponent, TextComponent, CheckComponent,DateComponent,DatetimeComponent,LabelComponent,SelectComponent,\r\n ActivityComponent, FilterComponent, messageDialog, MoneyComponent, OptionComponent, TilesComponent, StepsComponent,\r\n AttachComponent, ChipsComponent, LoaderComponent, NavMenuComponent, TableComponent, TableInternalComponent, DetailsDialog, DetailsDialogInternal, FormComponent, CamelToWordsPipe, NumberComponent, SearchComponent, ViewerComponent, viewerDialog,\r\n TenantSettingsComponent, inviteDialog, TenantsComponent, BugComponent, MembershipComponent, PlansComponent, CustomersComponent, InventoryComponent, quantityDialog, AccountsComponent, accountDialog,\r\n SuppliersComponent,\r\n TransactionsComponent, transactDialog, ListDialogComponent, TasksComponent,\r\n DepartmentsComponent, EmployeesComponent, PositionsComponent, GradesComponent, WelcomeComponent, InvitationsComponent, NotificationsComponent, InvitationsTableComponent, TableHeaderComponent, TableRowComponent, TableActionComponent, AlertComponent,\r\n\r\n ],\r\n imports: [\r\n SpaMatModule,\r\n HttpClientModule,\r\n CurrencyInputModule,\r\n NgxDocViewerModule,\r\n\r\n\r\n ],\r\n exports: [\r\n TinSpaComponent,\r\n SpaMatModule,\r\n AlertComponent,\r\n TextComponent,\r\n messageDialog,\r\n NavMenuComponent,\r\n LoaderComponent,\r\n TilesComponent,\r\n DateComponent,\r\n SelectComponent,\r\n DatetimeComponent,\r\n CheckComponent,\r\n AttachComponent,\r\n MoneyComponent,\r\n ChipsComponent,\r\n ActivityComponent,\r\n OptionComponent,\r\n LabelComponent,\r\n StepsComponent,\r\n FilterComponent,\r\n TableComponent, DetailsDialog,\r\n FormComponent,\r\n NumberComponent,\r\n SearchComponent,\r\n ViewerComponent,\r\n viewerDialog,\r\n ListDialogComponent,\r\n\r\n CustomersComponent,\r\n AccountsComponent,\r\n InventoryComponent,\r\n SuppliersComponent,\r\n TransactionsComponent, ListDialogComponent, TasksComponent,\r\n DepartmentsComponent, EmployeesComponent, PositionsComponent, GradesComponent,\r\n WelcomeComponent\r\n\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: LoaderInterceptor, multi: true },\r\n { provide: LocationStrategy, useClass: HashLocationStrategy},\r\n {provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: {appearance: 'legacy'}},\r\n CurrencyPipe, DatePipe,\r\n\r\n ],\r\n})\r\nexport class TinSpaModule { }\r\n","import { MessageService } from \"../../services/message.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { LogService } from \"./../../services/log.service\";\r\nimport { User, AppConfig, ApiResponse, Constants } from \"../../classes/Classes\";\r\nimport { HttpService } from \"../../services/http.service\";\r\nimport { SocialAuthService, SocialUser } from '@abacritt/angularx-social-login';\r\n\r\n@Component({\r\n selector: \"spa-login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.css\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private storageService: StorageService, public router: Router, private messageService: MessageService, public dataService: DataServiceLib,\r\n public authService: AuthService, private logService: LogService, private route: ActivatedRoute, private socialService: SocialAuthService ) { }\r\n\r\n ngOnInit() {\r\n\r\n\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n\r\n if (this.route.snapshot.queryParams[\"redirectTo\"] != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams[\"redirectTo\"]\r\n }else{\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n\r\n\r\n this.authService.autoLoginObserv.subscribe(x => {\r\n this.autoLogin = x\r\n console.log(\"AUTO LOGIN :\" + this.autoLogin)\r\n })\r\n\r\n this.socialUser = null;\r\n\r\n this.socialService.authState.subscribe((socialUser: SocialUser) => {\r\n\r\n this.socialUser = socialUser;\r\n\r\n this.user.userName = socialUser.id;\r\n this.user.password = socialUser.id; //dummy data\r\n this.user.token = socialUser.idToken;\r\n this.user.authType = socialUser.provider;\r\n\r\n this.login();\r\n\r\n });\r\n\r\n // this.authService.logoff();\r\n\r\n }\r\n\r\n autoLogin: boolean;\r\n socialUser: SocialUser | null;\r\n\r\n style: string = \"default\";\r\n\r\n email: string = \"\";\r\n password: string = \"\";\r\n\r\n redirectPath\r\n\r\n public user = new User();\r\n hide = true;\r\n isProcessing: boolean = false;\r\n\r\n appConfig = new AppConfig();\r\n\r\n public signup() {\r\n this.router.navigate([\"signup\"]);\r\n }\r\n\r\n public recoverAccount() {\r\n this.router.navigate([\"recover-account\"]);\r\n }\r\n\r\n public login() {\r\n\r\n\r\n if (this.user.userName == \"\" || this.user.password == \"\") {\r\n this.messageService.toast(\"Please enter your credentials\");\r\n return;\r\n }\r\n\r\n\r\n this.logService.info(\"logging in\");\r\n\r\n this.isProcessing = true;\r\n\r\n\r\n this.user.userName = this.user.userName\r\n\r\n this.dataService.Login(this.user).subscribe((apiResponse: ApiResponse) => {\r\n\r\n this.isProcessing = false;\r\n\r\n\r\n if (apiResponse.success) {\r\n\r\n // if (apiResponse.data.authType == 'local' && !this.appConfig.localAuth) {\r\n // this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n // return;\r\n // }\r\n\r\n // if (apiResponse.data.authType == 'AD' && !this.appConfig.ADAuth) {\r\n // this.messageService.toast(\"Contact Admin: Authentication Type error\");\r\n // return;\r\n // }\r\n\r\n\r\n this.authService.Updateloggedin(true);\r\n\r\n this.authService.UpdateToken(apiResponse.data.token);\r\n this.storageService.store(Constants.AUTH_TOKEN, apiResponse.data.token);\r\n\r\n this.authService.UpdateTokenExpire(apiResponse.data.expiration);\r\n this.storageService.store(Constants.AUTH_TOKEN_EXPIRE, apiResponse.data.expiration);\r\n\r\n this.authService.UpdateCurrentUser(this.user.userName);\r\n this.storageService.store(Constants.AUTH_USER, this.user.userName);\r\n\r\n this.authService.updateLoggedUserFullName(apiResponse.data.firstName);\r\n this.storageService.store(Constants.AUTH_NAME, apiResponse.data.firstName);\r\n\r\n this.authService.UpdateRole(apiResponse.data.role);\r\n this.storageService.store(Constants.AUTH_ROLES, JSON.stringify(apiResponse.data.role));\r\n\r\n this.authService.updateTenantName(apiResponse.data.tenantName);\r\n this.storageService.store(Constants.AUTH_TENANT_NAME, apiResponse.data.tenantName);\r\n\r\n\r\n this.logService.info(\"logged in\");\r\n\r\n\r\n if (apiResponse.data.changePassword == true && apiResponse.data.authType == 'local') {\r\n\r\n this.router.navigate([\"home/user/change-password\"], {\r\n queryParams: { redirectTo: this.redirectPath },\r\n queryParamsHandling: 'merge',\r\n skipLocationChange: false\r\n });\r\n return\r\n }\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n this.user.password = \"\";\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n\r\n}\r\n","\r\n <div *ngIf=\"style=='old'\" class=\"tin-bg-login login-page\">\r\n\r\n <div *ngIf=\"appConfig.logo!=''\" class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;margin-bottom:1em\">\r\n\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px;margin-right:3em;margin-left:3em\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px; margin-right:3em;margin-left:3em\" />\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"appConfig.logo ==''\" style=\"margin-top:2em\">\r\n <!-- Add margin top when there is no logo -->\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" style=\"margin-top:3em;\">\r\n\r\n <div class=\"d-none d-sm-block\">\r\n </div>\r\n\r\n <div style=\"margin-left:1em\">\r\n\r\n <mat-card class=\"mat-elevation-z3 login-card\" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title>{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content>\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\" ></spa-text>\r\n\r\n <mat-form-field >\r\n <mat-label>Password</mat-label>\r\n <input id=\"txtPassword\" matInput [type]=\"hide ? 'password' : 'text'\" (keyup.enter)=\"login()\" [(ngModel)]=\"user.password\" autocomplete=\"off\" >\r\n <button mat-icon-button matSuffix (click)=\"hide = !hide\" [attr.aria-label]=\"'Hide password'\" [attr.aria-pressed]=\"hide\">\r\n <mat-icon style=\"font-size: 18px;\">{{hide ? 'visibility_off' : 'visibility'}}</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <div class=\"row \">\r\n\r\n <div class=\"col d-flex justify-content-center\">\r\n <button id=\"btnLogin\" mat-raised-button [disabled]=\"isProcessing\" style=\"width: 100px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"col d-flex justify-content-center\" *ngIf=\"appConfig.selfService\">\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 100px;\" (click)=\"signup()\">Signup</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <div *ngIf=\"appConfig.selfService\">\r\n <br />\r\n <a mat-button id=\"lnkRecover\" style=\"margin-left: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='default'\" class=\"login-page background tin-bg-login\">\r\n\r\n <div class=\"container\" >\r\n\r\n <div class=\"logo\">\r\n <img *ngIf=\"appConfig.logoSize=='normal'\" [src]=\"appConfig.logo\" style=\"width: 100px\" />\r\n <img *ngIf=\"appConfig.logoSize=='medium'\" [src]=\"appConfig.logo\" style=\"width: 150px\" />\r\n <img *ngIf=\"appConfig.logoSize=='large'\" [src]=\"appConfig.logo\" style=\"width: 250px\" />\r\n </div>\r\n\r\n <mat-card class=\"mat-elevation-z3 \" style=\"width:400px; \">\r\n\r\n <mat-card-header>\r\n <mat-card-title style=\"font-size: 40px;margin-bottom: 10px; margin-top: 20px; font-weight: 300\">{{appConfig.appName}}</mat-card-title>\r\n </mat-card-header>\r\n\r\n <mat-card-content *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n\r\n <div class=\"tin-input mt-2\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"user.userName\"></spa-text>\r\n\r\n <spa-text id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"user.password\" (enterPress)=\"login()\"></spa-text>\r\n\r\n </div>\r\n\r\n </mat-card-content>\r\n\r\n\r\n <mat-card-actions style=\"margin-bottom: 10px;\">\r\n\r\n <div class=\"button mt-0\" *ngIf=\"appConfig.localAuth || appConfig.ADAuth\">\r\n <button id=\"btnLogin\" mat-flat-button [disabled]=\"isProcessing\" style=\"width: 350px;\" (click)=\"login()\" color=\"primary\">Login</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"(appConfig.localAuth || appConfig.ADAuth) && appConfig.selfService\" >\r\n <button id=\"btnSignup\" mat-stroked-button color=\"primary\" style=\"width: 350px;\" (click)=\"signup()\">Sign up with Email</button>\r\n </div>\r\n\r\n <div class=\"button\" *ngIf=\"appConfig.googleAuth\">\r\n <asl-google-signin-button type='standard' width=\"350px\" size='medium' logo_alignment=\"center\" style=\"text-align: center;\"></asl-google-signin-button>\r\n </div>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n <a *ngIf=\"appConfig.selfService\" mat-button id=\"lnkRecover\" style=\"margin-top: 1em\" (click)=\"recoverAccount()\">Forgot your password ?</a>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"style=='bs'\">\r\n\r\n <div class=\"container\">\r\n\r\n <div class=\"image\">\r\n <img class=\"mb-4\" src=\"c:\\Tinashe\\Code\\Angular\\Junk\\bs-examples\\assets\\brand\\bootstrap-logo.svg\" alt=\"\" width=\"72\" height=\"57\">\r\n </div>\r\n\r\n <div class=\"details\">\r\n <h1 class=\"h3 mb-3 fw-normal\" >Please sign in</h1>\r\n\r\n <div class=\"form-floating\">\r\n <input class=\"form-control\" id=\"floatingInput\" placeholder=\"name@example.com\" [(ngModel)]=\"user.userName\">\r\n <label for=\"floatingInput\">Username</label>\r\n </div>\r\n\r\n <div class=\"form-floating\">\r\n <input type=\"password\" class=\"form-control\" id=\"floatingPassword\" placeholder=\"Password\" [(ngModel)]=\"user.password\">\r\n <label for=\"floatingPassword\">Password</label>\r\n </div>\r\n\r\n <div class=\"form-check text-start my-3\">\r\n <input class=\"form-check-input\" type=\"checkbox\" value=\"remember-me\" id=\"flexCheckDefault\" >\r\n <label class=\"form-check-label\" for=\"flexCheckDefault\">\r\n Remember me\r\n </label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary w-100 py-2\" (click)=\"login()\">Sign in</button>\r\n\r\n </div>\r\n\r\n <p class=\"mt-5 mb-3 text-body-secondary\">&copy; 2017–2023</p>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n// import { HttpService, ApiResponse } from 'tin-core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { User, Profile, Account, ApiResponse } from '../../classes/Classes';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n@Component({\r\n selector: 'spa-signup',\r\n templateUrl: './signup.component.html',\r\n styleUrls: ['./signup.component.css']\r\n})\r\nexport class SignupComponent implements OnInit {\r\n\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService,) { }\r\n\r\n ngOnInit() {\r\n\r\n this.account.user = this.user;\r\n this.account.profile = this.profile;\r\n }\r\n\r\n isProcessing: boolean = false;\r\n user = new User();\r\n profile = new Profile();\r\n\r\n account = new Account();\r\n\r\n confirmPassword: string;\r\n\r\n\r\ncreate(){\r\n\r\n this.profile.userName = this.user.userName;\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.account).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n this.user = new User();\r\n this.profile = new Profile();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n}\r\n\r\n\r\n\r\n}\r\n","\r\n<h4 style=\"padding-top: 30px;\">Sign up</h4>\r\n\r\n<hr/>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <spa-text display=\"FirstName\" [(value)]=\"account.profile.firstName\" ></spa-text>\r\n\r\n <spa-text display=\"LastName\" [(value)]=\"account.profile.lastName\" ></spa-text>\r\n\r\n <spa-text display=\"Username\" [(value)]=\"account.profile.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-text display=\"Password\" [(value)]=\"account.profile.password\" format=\"password\" ></spa-text>\r\n\r\n <spa-text display=\"Confirm Password\" [(value)]=\"confirmPassword\" format=\"password\" ></spa-text>\r\n\r\n <div class=\"span-col-center\">\r\n <button mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { User, ApiResponse } from '../../classes/Classes';\r\nimport { Location } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'spa-recover-account',\r\n templateUrl: './recover-account.component.html',\r\n styleUrls: ['./recover-account.component.css']\r\n})\r\nexport class RecoverAccountComponent implements OnInit {\r\n\r\n constructor(private location: Location, private dataService: DataServiceLib, public authService: AuthService, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n userName: string = \"\";\r\n\r\n recover(){\r\n\r\n\r\n if (this.userName == \"\") {\r\n\r\n this.messageService.toast(\"Please enter your userName\");\r\n return;\r\n } else {\r\n let u = new User();\r\n u.userName = this.userName;\r\n\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent to your email\");\r\n this.location.back();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","\r\n<div class=\"container\" style=\"padding-top: 30px;\">\r\n<h4>Recover Account</h4>\r\n\r\n<hr />\r\n\r\nSubmit your Username and we will send you details to your registered email address.\r\n\r\n<div style=\"font-size: 14px;\">\r\n <spa-text class=\"mt-3\" display=\"Username\" [(value)]=\"userName\"></spa-text>\r\n\r\n <div class=\"tin-center\">\r\n <button class=\"mt-3 w-50\" mat-raised-button color=\"primary\" (click)=\"recover()\" cdkFocusInitial>Submit</button>\r\n </div>\r\n\r\n</div>\r\n\r\n</div>\r\n\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { LoginComponent } from \"../components/login/login.component\";\r\nimport { SignupComponent } from \"../components/signup/signup.component\";\r\nimport { RecoverAccountComponent } from \"../components/recover-account/recover-account.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\nimport { SocialLoginModule } from \"@abacritt/angularx-social-login\";\r\n\r\n@NgModule({\r\n declarations: [LoginComponent, SignupComponent, RecoverAccountComponent],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule,\r\n SocialLoginModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n LoginComponent,\r\n SignupComponent,\r\n RecoverAccountComponent,\r\n ],\r\n})\r\nexport class SpaIndexModule {}\r\n","\r\nimport { ChangeUserPassword, ApiResponse } from './../../classes/Classes';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Location } from '@angular/common';\r\nimport { HttpService } from '../../services/http.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'spa-change-password',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css']\r\n})\r\nexport class ChangePasswordComponent implements OnInit {\r\n\r\n constructor(public router: Router, private location: Location, private httpService: HttpService, private messageService: MessageService, public dataService: DataServiceLib, private authService: AuthService, private route: ActivatedRoute) { }\r\n\r\n ngOnInit() {\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.changePassword.userName = this.authService.currentUser;\r\n\r\n }else{\r\n this.changePassword.userName = this.dataService.tmpProfileuserName;\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n if (this.route.snapshot.queryParams[\"redirectTo\"] != undefined) {\r\n this.redirectPath = this.route.snapshot.queryParams[\"redirectTo\"]\r\n } else {\r\n this.redirectPath = \"home\"\r\n }\r\n\r\n }\r\n\r\n myRole;\r\n redirectPath\r\n isProcessing: boolean = false;\r\n changePassword = new ChangeUserPassword();\r\n\r\n public change() {\r\n\r\n if (!this.myRole[this.dataService.capUsers.name]){\r\n if (this.changePassword.currentPassword == \"\") {\r\n this.messageService.toast(\"Please enter current Password\");\r\n return;\r\n }\r\n }\r\n\r\n if (this.changePassword.newPassword == \"\") {\r\n this.messageService.toast(\"Please enter new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword == \"\") {\r\n this.messageService.toast(\"Please confirm new Password\");\r\n return;\r\n }\r\n\r\n if (this.changePassword.confirmPassword != this.changePassword.newPassword ) {\r\n this.messageService.toast(\"Passwords do not match\");\r\n return;\r\n }\r\n\r\n this.isProcessing = true;\r\n\r\n if (this.myRole[this.dataService.capUsers.name]){\r\n\r\n\r\n this.dataService.ChangePasswordAdmin(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }else{\r\n\r\n this.dataService.ChangePassword(this.changePassword).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"Password Changed\");\r\n\r\n this.router.navigate([this.redirectPath]);\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n }\r\n );\r\n\r\n }\r\n }\r\n}\r\n","<h4>Change Password</h4>\r\n<hr>\r\n\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px;\">\r\n\r\n <div class=\"fill\">\r\n\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" type=\"password\"></spa-text>\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" type=\"password\"></spa-text>\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n\r\n </div>\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! …)<br>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n<!-- <div class=\"container\">\r\n\r\n <div class=\"d-flex justify-content-center row align-items-center\" >\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"tin-input \" style=\"font-size:14px;\">\r\n\r\n <div class=\"col\" *ngIf=\"changePassword.userName!=''\">\r\n <spa-text id=\"txtuserName\" display=\"Username\" [(value)]=\"changePassword.userName\" width=\"300px\" [readonly]=\"true\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\" *ngIf=\"!myRole[dataService.capUsers.name]\">\r\n <spa-text id=\"txtPassword\" display=\"Current Password\" [(value)]=\"changePassword.currentPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtNewPassword\" display=\"New Password\" [(value)]=\"changePassword.newPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col\">\r\n <spa-text id=\"txtConfirmPassword\" display=\"Confirm Password\" [(value)]=\"changePassword.confirmPassword\" width=\"300px\" type=\"password\"></spa-text>\r\n </div>\r\n\r\n <div class=\"col mt-3\">\r\n <button id=\"btnChange\" mat-raised-button color=\"primary\" (click)=\"change()\" cdkFocusInitial>Change</button>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"col\">\r\n\r\n <div class=\"alert alert-info\" style=\"font-size: 14px;\" role=\"alert\">\r\n <b>*Please consider these requirements for your new password.</b> <br><br>\r\n\r\n At least 8 characters<br>\r\n At least 1 uppercase letter (A-Z)<br>\r\n At least 2 lowercase letters (a-z)<br>\r\n At least 1 digit (0-9)<br>\r\n At least 1 special character (~`! …)<br>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</div> -->\r\n\r\n","import { AuthService } from './../../services/auth.service';\r\nimport { MessageService } from './../../services/message.service';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ApiResponse, AppConfig, Profile } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n@Component({\r\n selector: 'spa-profile',\r\n templateUrl: './profile.component.html',\r\n styleUrls: ['./profile.component.css']\r\n})\r\nexport class ProfileComponent implements OnInit {\r\n\r\n constructor(public dataService: DataServiceLib, private messageService: MessageService, private httpService: HttpService, private router: Router, private authService: AuthService) { }\r\n\r\n ngOnInit() {\r\n\r\n this.myRole = this.authService.currentRoleSource.value\r\n\r\n if (this.dataService.tmpProfileuserName==\"\"){\r\n this.loadProfile(this.authService.currentUser);\r\n\r\n }else{\r\n this.loadProfile(this.dataService.tmpProfileuserName);\r\n this.dataService.tmpProfileuserName = \"\";\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n isProcessing: boolean;\r\n myRole;\r\n initials = \"\";\r\n @Input() appConfig = new AppConfig();\r\n\r\n\r\n selfProfile : boolean = false;\r\n\r\n profile = new Profile ;\r\n roles;\r\n approvalRoles;\r\n employees;\r\n\r\n\r\n loadProfile(userName: string){\r\n\r\n let action = \"all\";\r\n\r\n this.dataService.GetUserByID(userName).subscribe( (apiResponse: ApiResponse) => {\r\n\r\n this.profile = apiResponse.data;\r\n\r\n if (this.profile.userName.toLocaleLowerCase() == this.authService.currentUser.toLocaleLowerCase()){\r\n this.selfProfile = true\r\n }\r\n this.loadRoles()\r\n this.initials = `${this.profile.firstName?.toUpperCase().charAt(0)}${this.profile.lastName?.toUpperCase().charAt(0)}`\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n loadRoles(){\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse;\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n }\r\n\r\n changePassword(){\r\n this.dataService.tmpProfileuserName = this.profile.userName;\r\n this.router.navigate([\"home/user/change-password\"]);\r\n }\r\n\r\n gotoUsers(){\r\n this.router.navigate([\"home/admin/users\"]);\r\n }\r\n\r\n update(){\r\n\r\n }\r\n\r\n updateProfile(){\r\n this.isProcessing = true;\r\n\r\n // return\r\n this.dataService.UpdateUser(this.profile).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Profile Updated\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n }\r\n\r\n}\r\n","\r\n<h4>Profile</h4>\r\n<hr>\r\n\r\n<div class=\"container tin-grid-auto\" style=\"font-size:14px;\">\r\n\r\n <div class=\"tin-center centa\">\r\n <div class=\"profileImage\">{{initials}}</div>\r\n <mat-label id=\"lbluserName\" >{{profile?.userName}}</mat-label>\r\n </div>\r\n\r\n <div>\r\n\r\n <spa-text id=\"txtFirstName\" display=\"First Name\" [(value)]=\"profile.firstName\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-text id=\"txtLastName\" display=\"Last Name\" [(value)]=\"profile.lastName\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-text id=\"txtAuth\" display=\"Authentication\" [(value)]=\"profile.authType\" [readonly]=\"true\"></spa-text>\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"profile.email\" [readonly]=\"selfProfile\"></spa-text>\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"profile.roleID\" [readonly]=\"selfProfile\"></spa-select>\r\n\r\n <button id=\"btnUpdate\" class=\"w-100\" mat-raised-button color=\"primary\" *ngIf=\"!selfProfile\" [disabled]=\"isProcessing\" (click)=\"updateProfile()\">Update Profile</button>\r\n </div>\r\n\r\n\r\n <div class=\"tin-center centa\">\r\n <a mat-button id=\"lnkUserManager\" style=\"margin-left: 1em\" *ngIf=\"!selfProfile\" (click)=\"gotoUsers()\">User Manager</a>\r\n <a mat-button id=\"lnkChangePassword\" style=\"margin-left: 1em\" *ngIf=\"(selfProfile || myRole[dataService.capUsers.name]) && profile.authType=='local'\" (click)=\"changePassword()\">Change Password</a>\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n\r\n\r\n\r\n","import { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { ChangePasswordComponent } from \"../components/change-password/change-password.component\";\r\nimport { ProfileComponent } from \"../components/profile/profile.component\";\r\nimport { TinSpaModule } from \"../tin-spa.module\";\r\n\r\n@NgModule({\r\n declarations: [ChangePasswordComponent, ProfileComponent],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n ChangePasswordComponent,\r\n ProfileComponent,\r\n ],\r\n})\r\nexport class SpaUserModule {}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApiResponse } from '../../classes/Classes';\r\n\r\n@Component({\r\n selector: 'spa-settings',\r\n templateUrl: './settings.component.html',\r\n styleUrls: ['./settings.component.css']\r\n})\r\nexport class SettingsComponent implements OnInit {\r\n\r\n constructor(private dataService: DataServiceLib, private messageService: MessageService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadSettings();\r\n }\r\n\r\n _filterText = \"\";\r\n settings;\r\n isProcessing = false;\r\n\r\n applyFilter(filterValue: string) {\r\n this.settings.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n loadSettings(){\r\n this.dataService.GetSetting(\"all\", \"\").subscribe((apiResponse) => {\r\n this.settings = apiResponse;\r\n }\r\n );\r\n\r\n }\r\n\r\n updateSetting(setting) {\r\n\r\n this.isProcessing = true;\r\n this.dataService.UpdateSetting(setting, \"edit\").subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(`Setting ${setting.sName} Updated`);\r\n this.loadSettings();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n addSetting() {\r\n\r\n // const dialogRef = this.dialog.open(addRoleDialog, {\r\n // width: \"1100px\",\r\n // data: \"\",\r\n // });\r\n\r\n // dialogRef.afterClosed().subscribe((result) => {\r\n // if (result == \"success\") {\r\n // this.loadRoles();\r\n // }\r\n // });\r\n this.messageService.toast(\"Feature not Available\");\r\n\r\n }\r\n\r\n}\r\n","<h4>Settings</h4>\r\n<hr>\r\n\r\n<div class=\"container\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px;padding-left:10px\">\r\n\r\n <div class=\"col-2\">\r\n <!-- <button mat-raised-button (click)=\"addSetting()\">New Setting</button> -->\r\n </div>\r\n <div class=\"col-2\">\r\n <button mat-raised-button (click)=\"loadSettings()\">Refresh</button>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"tin-row align-items-center mt-1 mb-1\" style=\"margin-left:10px\" *ngFor=\"let setting of settings\">\r\n\r\n <mat-form-field style=\"width: 500px; font-size: 14px;\">\r\n <mat-label>{{setting.sName}}</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"setting.sValue\" >\r\n </mat-form-field>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateSetting(setting)\" style=\"margin-right:10px;\"><mat-icon>done_all</mat-icon></button>\r\n\r\n <mat-label style=\"font-size: small;\">Last Updated by {{setting.updatedBy}} on {{setting.updatedDate | date: 'dd MMM yy HH:mm'}}</mat-label>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'spa-logs',\r\n templateUrl: './logs.component.html',\r\n styleUrls: ['./logs.component.css']\r\n})\r\nexport class LogsComponent implements OnInit {\r\n constructor(private authService: AuthService, private dataService: DataServiceLib,) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capLogs.name);\r\n this.loadLogs();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"logsPaginator\") logsPaginator: MatPaginator;\r\n\r\n\r\n logs;\r\n\r\n displayedColumns: string[] = [\"dateLogged\", \"userName\", \"fullName\", \"source\", \"details\"];\r\n\r\n public loadLogs() {\r\n this.dataService.GetLog(\"all\", \"\").subscribe((apiResponse) => {\r\n\r\n this.logs = new MatTableDataSource(apiResponse);\r\n this.logs.paginator = this.logsPaginator;\r\n\r\n }\r\n );\r\n }\r\n\r\n}\r\n","<h4>Logs</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n\r\n <div class=\"col-2\">\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"logs\" (refreshClick)=\"loadLogs()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <p *ngIf=\"!logs\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"logs\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"logs\">\r\n\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> User </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.userName}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"dateLogged\">\r\n <th mat-header-cell *matHeaderCellDef class=\"datetime\"> Date Logged </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.dateLogged | date: 'dd MMM yy HH:mm:ss'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"source\">\r\n <th mat-header-cell *matHeaderCellDef> Source </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.source}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"details\">\r\n <th mat-header-cell *matHeaderCellDef> Details </th>\r\n <td mat-cell *matCellDef=\"let log\"> {{log.details}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let log\">{{log.user?.firstName}} {{log.user?.lastName}}</td>\r\n </ng-container>\r\n\r\n\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #logsPaginator [pageSizeOptions]=\"[50, 100, 200]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n","import { Component, OnInit, Inject, ViewChild } from \"@angular/core\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport { MatPaginator } from \"@angular/material/paginator\";\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from \"../../services/message.service\";\r\nimport { AuthService } from \"../../services/auth.service\";\r\nimport { TableConfig, User, ApiResponse } from '../../classes/Classes';\r\nimport { HttpService } from \"../../services/http.service\";\r\n\r\n@Component({\r\n selector: \"spa-users\",\r\n templateUrl: \"./users.component.html\",\r\n styleUrls: [\"./users.component.css\"],\r\n})\r\nexport class UsersComponent implements OnInit {\r\n constructor(private httpService: HttpService, public router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capUsers.name);\r\n this.UpdateData();\r\n }\r\n\r\n isProcessing: boolean = false;\r\n @ViewChild(\"usersPaginator\") usersPaginator: MatPaginator;\r\n\r\n _filterText = \"\";\r\n\r\n users;\r\n usersRaw;\r\n displayedColumns: string[] = [\"userName\", \"fullName\", \"roleName\", \"locked\", \"dateCreated\", \"Action\"];\r\n\r\n public UpdateData() {\r\n this.dataService.GetUser().subscribe(\r\n (apiResponse) => {\r\n\r\n this.usersRaw = apiResponse.data;\r\n this.users = new MatTableDataSource(apiResponse.data);\r\n this.users.paginator = this.usersPaginator;\r\n this.applyFilter(this._filterText);\r\n\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n applyFilter(filterValue: string) {\r\n this.users.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n createAccount() {\r\n this.router.navigate([\"home/admin/create-account\"]);\r\n }\r\n\r\n viewProfile(user: User) {\r\n\r\n this.dataService.tmpProfileuserName = user.userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n lock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.LockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Locked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n unlock(u) {\r\n let login = { userName: u.userName, password: \"Abcdef@123\" }\r\n\r\n this.dataService.UnlockUser(login).subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"User Unlocked\");\r\n this.UpdateData();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n }\r\n\r\n recover(u: User) {\r\n this.dataService.SelfReset(u).subscribe((apiResponse: ApiResponse) => {\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"The password has been sent on email\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n });\r\n\r\n }\r\n\r\n deleteUser(user: User) {\r\n\r\n\r\n\r\n this.messageService.confirm(`Delete ${user.userName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.isProcessing = true;\r\n this.dataService.DeleteUser(user).subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.message == \"success\") {\r\n this.messageService.toast(\"User Deleted\");\r\n\r\n this.UpdateData();\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.messageService.toast(\"Connection failed \");\r\n this.isProcessing = false;\r\n }\r\n );\r\n\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n //----------------------------------------\r\n\r\n // config: TableConfig = {\r\n // showFilter: true,\r\n // newText: \"Create Account\",\r\n // minColumns: ['firstName', 'lastName', 'roleID'],\r\n\r\n // columns: [\r\n // { name: 'userName', type: 'text', icon: { name: 'person', color: 'green', tip: 'name desc' } },\r\n // { name: 'firstName', type: 'text',},\r\n // { name: 'lastName', type: 'text' },\r\n // { name: 'roleID', type: 'text' },\r\n // { name: 'locked', type: 'checkbox' },\r\n // { name: 'createdDate', type: 'date' },\r\n // ],\r\n\r\n // buttons: [\r\n // { name:'create', display:'Create Account', dialog: true },\r\n // { name: 'view', dialog: true, icon: { name: 'account_circle'} },\r\n // { name: 'custom1', action: { method: 'post', url: 'User/lock', successMessage: \"User locked\" }, color:'red', tip:'lock', icon: { name: 'lock'}, visible: (value) => value.locked == 0},\r\n // { name: 'custom2', action: { method: 'post', url: 'User/unlock', successMessage: \"User Unlocked\" }, color: 'green', tip: 'unlock', icon: { name: 'lock_open' }, visible: (value) => value.locked == 1 },\r\n // { name: 'delete' },\r\n // ],\r\n\r\n // loadAction: { url: 'User/all/x' }\r\n\r\n // }\r\n\r\n}\r\n\r\n\r\n\r\n","\r\n<h4>Users</h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid\" style=\"font-size: 14px;\">\r\n\r\n <div class=\"row justify-content-between\" style=\"padding-bottom: 10px\">\r\n <div class=\"col-2\">\r\n <button id=\"btnCreateAccount\" mat-raised-button color=\"primary\" (click)=\"createAccount()\">Create User</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <spa-filter [data]=\"users\" (refreshClick)=\"UpdateData()\"></spa-filter>\r\n </div>\r\n </div>\r\n\r\n\r\n <p *ngIf=\"!users\"><em>Loading...</em></p>\r\n\r\n\r\n <div class=\"mat-elevation-z8\" *ngIf=\"users\">\r\n\r\n <table id=\"tblTable\" mat-table [dataSource]=\"users\">\r\n\r\n <ng-container matColumnDef=\"userName\">\r\n <th mat-header-cell *matHeaderCellDef> UserName </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.userName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"locked\">\r\n <th mat-header-cell *matHeaderCellDef> Locked </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.locked}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"fullName\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.firstName}} {{user.lastName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"roleName\">\r\n <th mat-header-cell *matHeaderCellDef> Role </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.role.roleName}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"disabled\">\r\n <th mat-header-cell *matHeaderCellDef> Disabled </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.disabled}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateCreated\">\r\n <th mat-header-cell *matHeaderCellDef> Created </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.createdDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"dateUpdated\">\r\n <th mat-header-cell *matHeaderCellDef> Updated </th>\r\n <td mat-cell *matCellDef=\"let user\"> {{user.updatedDate | date: 'dd/MM/yyyy'}} </td>\r\n </ng-container>\r\n\r\n\r\n <ng-container matColumnDef=\"Action\">\r\n <th mat-header-cell *matHeaderCellDef> Action </th>\r\n <td mat-cell *matCellDef=\"let user\" style=\"width: 250px;\">\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"viewProfile(user)\" style=\"margin-right:30px\" matTooltip=\"View Profile\" matTooltipPosition=\"above\"> <mat-icon>account_circle</mat-icon></button>\r\n\r\n <button *ngIf=\"user.locked=='0'\" mat-mini-fab color=\"warn\" (click)=\"lock(user)\" style=\"margin-right:10px\" matTooltip=\"Lock\" matTooltipPosition=\"above\"> <mat-icon>lock</mat-icon></button>\r\n <button *ngIf=\"user.locked=='1'\" mat-mini-fab (click)=\"unlock(user)\" style=\"margin-right:10px; background-color: green;\" matTooltip=\"Unlock\" matTooltipPosition=\"above\"> <mat-icon >lock_open</mat-icon></button>\r\n\r\n <!-- <button *ngIf=\"user.disabled=='0'\" mat-mini-fab color=\"warn\" (click)=\"disable(user)\" style=\"margin-right:10px\" matTooltip=\"Disable\" matTooltipPosition=\"above\"> <mat-icon>block</mat-icon></button>\r\n <button *ngIf=\"user.disabled=='1'\" mat-mini-fab (click)=\"enable(user)\" style=\"margin-right:10px; background-color: green\" matTooltip=\"Enable\" matTooltipPosition=\"above\"> <mat-icon>done</mat-icon></button> -->\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteUser(user)\" style=\"margin-right:10px\" matTooltip=\"Delete\" matTooltipPosition=\"above\"> <mat-icon>delete</mat-icon></button>\r\n <!-- <button mat-mini-fab color=\"primary\" (click)=\"recover(user)\" style=\"margin-right:10px\" matTooltip=\"Reset Password\" matTooltipPosition=\"above\"> <mat-icon>vpn_key</mat-icon></button> -->\r\n\r\n\r\n\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" [ngClass]=\"{'make-gray': row.disabled =='1'}\"></tr>\r\n\r\n </table>\r\n\r\n </div>\r\n\r\n <mat-paginator #usersPaginator [pageSizeOptions]=\"[10, 20, 50]\" showFirstLastButtons></mat-paginator>\r\n</div>\r\n\r\n<!-- ------------------ -->\r\n\r\n<!-- <div class=\"container mt-5\" style=\" font-size: 14px;\">\r\n<spa-table [data]=\"usersRaw\" [config]=\"config\" (refreshClick)=\"UpdateData()\" (viewClick)=\"viewProfile($event)\" (createClick)=\"createAccount()\" (deleteClick)=\"deleteUser($event)\"></spa-table>\r\n</div> -->\r\n\r\n","import { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { DataServiceLib } from '../../services/datalib.service';\r\nimport { Role, ApiResponse } from '../../classes/Classes';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'app-addRole',\r\n templateUrl: './addRoleDialog.component.html',\r\n styleUrls: ['./roles.component.css']\r\n})\r\nexport class addRoleDialog implements OnInit {\r\n\r\n constructor(private loaderService: LoaderService,private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, private dialogRef: MatDialogRef<addRoleDialog>, @Inject(MAT_DIALOG_DATA) public data) { }\r\n\r\n ngOnInit() {\r\n this.capItems = this.data;\r\n this.loaderService.isLoading.subscribe(x => this.isProcessing = x);\r\n }\r\n\r\n capItems;\r\n\r\n isProcessing: boolean;\r\n role = new Role();\r\n\r\n submit() {\r\n\r\n if (this.role.roleName == \"New Role\" || this.role.roleName == \"\"){\r\n this.messageService.toast(\"Please enter Role Name\");\r\n return;\r\n }\r\n\r\n\r\n this.dataService.PostRole(this.role,\"add\").subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Added\");\r\n this.dialogRef.close(\"success\");\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n\r\n\r\n }, error => {\r\n this.messageService.toast(\"Connection failed\");\r\n this.isProcessing = false;\r\n });\r\n\r\n };\r\n};\r\n\r\n\r\n\r\n","<mat-form-field>\r\n <mat-label>Role Name</mat-label>\r\n <input matInput autocomplete=\"off\" [(ngModel)]=\"role.roleName\" placeholder=\"Enter Role Name\" />\r\n</mat-form-field>\r\n\r\n<mat-dialog-content class=\"mat-typography\">\r\n\r\n <div class=\"row\" >\r\n\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n</mat-dialog-content>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button [disabled]=\"isProcessing\" (click)=\"submit()\" cdkFocusInitial>Submit</button>\r\n <button mat-button mat-dialog-close=\"success\">Cancel</button>\r\n</mat-dialog-actions>\r\n","import { AppConfig } from './../../classes/Classes';\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { DataServiceLib } from \"../../services/datalib.service\";\r\nimport { Role, CapItem } from \"../../classes/Classes\";\r\nimport { addRoleDialog } from \"./addRoleDialog.component\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n\r\n@Component({\r\n selector: \"spa-roles\",\r\n templateUrl: \"./roles.component.html\",\r\n styleUrls: [\"./roles.component.css\"],\r\n})\r\nexport class RolesComponent implements OnInit {\r\n constructor(private httpService: HttpService, private router: Router, private authService: AuthService, private dataService: DataServiceLib, public dialog: MatDialog, private messageService: MessageService) { }\r\n\r\n ngOnInit() {\r\n this.authService.isAuthorised(this.dataService.capRoles.name);\r\n this.loadRoles();\r\n this.dataService.appConfigObserv.subscribe(x => this.appConfig = x);\r\n }\r\n\r\n isProcessing = false;\r\n roles: Role[];\r\n\r\n appConfig = new AppConfig();\r\n\r\n loadRoles() {\r\n this.dataService.GetRole(\"all\", \"\").subscribe((apiResponse) => {\r\n this.roles = apiResponse;\r\n });\r\n }\r\n\r\n refresh() {\r\n this.loadRoles();\r\n }\r\n\r\n addRole() {\r\n const dialogRef = this.dialog.open(addRoleDialog, {\r\n width: \"1100px\",\r\n data: this.appConfig.capItems,\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result == \"success\") {\r\n this.loadRoles();\r\n }\r\n });\r\n }\r\n\r\n updateRole(role: Role) {\r\n\r\n this.messageService.confirm(`UPDATE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"edit\").subscribe((apiResponse) => {\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Updated\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n\r\n };\r\n\r\n deleteRole(role: Role) {\r\n\r\n this.messageService.confirm(`DELETE ${role.roleName} ?`).subscribe((result) => {\r\n\r\n if (result == \"yes\") {\r\n\r\n this.dataService.PostRole(role, \"delete\").subscribe((apiResponse) => {\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Role Deleted\");\r\n this.loadRoles();\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse);\r\n }\r\n });\r\n\r\n }\r\n\r\n })\r\n\r\n }\r\n}\r\n","<h4> Roles </h4>\r\n<hr />\r\n\r\n<div class=\"container-fluid mb-5\">\r\n\r\n <div class=\"d-flex justify-content-between mb-2\">\r\n\r\n <div >\r\n <button id=\"btnNewRole\" mat-raised-button color=\"primary\" (click)=\"addRole()\">New Role</button>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-end\">\r\n <button id=\"btnRefresh\" mat-mini-fab color=\"primary\" (click)=\"refresh()\" matTooltip=\"refresh data\" matTooltipPosition=\"right\"><mat-icon class=\"refreshIcon\">refresh</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"row mt-2 mb-1\" *ngFor=\"let role of roles\">\r\n\r\n <mat-card class=\"mat-elevation-z8\" style=\"width:100%\">\r\n\r\n <h4>{{role.roleName}}</h4>\r\n <hr />\r\n\r\n <div class=\"tin-row\" style=\" font-size:12px;\">\r\n\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capItem of appConfig.capItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capItem.name]\">{{capItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubItem of capItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubItem.name]\">{{capSubItem.display}}</mat-checkbox>\r\n\r\n <div class=\"tin-row\" *ngFor=\"let capSubSubItem of capSubItem.capSubItems\">\r\n\r\n <mat-checkbox color=\"primary\" style=\"min-width: 100px;\" [(ngModel)]=\"role[capSubSubItem.name]\">{{capSubSubItem.display}}</mat-checkbox>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <mat-card-actions>\r\n\r\n <button mat-mini-fab color=\"primary\" (click)=\"updateRole(role)\" style=\"margin-right:10px;\">\r\n <mat-icon>done_all</mat-icon>\r\n </button>\r\n\r\n <button mat-mini-fab color=\"warn\" (click)=\"deleteRole(role)\" style=\"margin-right:10px\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-card-actions>\r\n\r\n </mat-card>\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n","import { DataServiceLib } from '../../services/datalib.service';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { Profile, AppConfig, Register, ApiResponse } from '../../classes/Classes';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from '../../services/http.service';\r\n\r\n@Component({\r\n selector: 'spa-create-account',\r\n templateUrl: './create-account.component.html',\r\n styleUrls: ['./create-account.component.css']\r\n})\r\nexport class CreateAccountComponent implements OnInit {\r\n\r\n constructor(private httpService: HttpService, private messageService: MessageService, private dataService: DataServiceLib, private authService: AuthService, public router: Router) { }\r\n\r\n ngOnInit() {\r\n this.appConfig = this.dataService.appConfig;\r\n this.loadRoles();\r\n }\r\n\r\n\r\n\r\n @Input() appConfig = new AppConfig();\r\n\r\n isProcessing: boolean = false;\r\n register = new Register();\r\n confirmPassword: string;\r\n openProfile: boolean = true;\r\n\r\n authTypes = [\r\n { name: \"Local Authentication\", value: \"local\" },\r\n { name: \"AD Authentication\", value: \"AD\" }\r\n ]\r\n\r\n roles;\r\n\r\n check(){\r\n\r\n if ( this.register.authType != \"AD\") {\r\n\r\n return;\r\n }\r\n\r\n if (this.register.userName == \"\"){\r\n this.messageService.toast(\"Please enter UserName\")\r\n return;\r\n }\r\n\r\n this.dataService.CallApi({url: 'User/ad/' + this.register.userName}, '').subscribe((apiResponse : ApiResponse) => {\r\n\r\n if (apiResponse.success){\r\n this.register.firstName = apiResponse.data.firstName;\r\n this.register.lastName = apiResponse.data.surname;\r\n this.register.email = apiResponse.data.emailAddress;\r\n }\r\n else{\r\n this.messageService.toast(apiResponse.message)\r\n }\r\n\r\n })\r\n }\r\n\r\n loadRoles() {\r\n\r\n this.dataService.GetRole(\"all\", \"\").subscribe(\r\n (apiResponse: ApiResponse) => {\r\n this.roles = apiResponse;\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n\r\n }\r\n\r\n create() {\r\n\r\n if (this.register.authType == \"\") {\r\n this.messageService.toast(\"Choose Authentication Type\");\r\n return;\r\n }\r\n\r\n if (this.register.firstName == \"\") {\r\n this.messageService.toast(\"Enter First Name\");\r\n return;\r\n }\r\n\r\n if (this.register.lastName == \"\") {\r\n this.messageService.toast(\"Enter Last Name\");\r\n return;\r\n }\r\n\r\n\r\n this.isProcessing = true;\r\n this.dataService.RegisterAccount(this.register).subscribe((apiResponse: ApiResponse) => {\r\n this.isProcessing = false;\r\n\r\n if (apiResponse.success) {\r\n this.messageService.toast(\"Account Created\");\r\n\r\n if (this.openProfile) {\r\n this.viewProfile(this.register.userName);\r\n } else {\r\n // this.user = new User();\r\n this.register = new Register();\r\n this.confirmPassword = \"\";\r\n }\r\n\r\n\r\n } else {\r\n this.messageService.toast(\"Error: \" + apiResponse.message);\r\n }\r\n },\r\n (error) => {\r\n this.isProcessing = false;\r\n this.messageService.toast(this.httpService.Error(error));\r\n }\r\n );\r\n }\r\n\r\n viewProfile(userName: string) {\r\n\r\n this.dataService.tmpProfileuserName = userName;\r\n this.router.navigate([\"home/user/profile\"]);\r\n\r\n }\r\n\r\n}\r\n","<h4>Create User</h4>\r\n\r\n<hr/>\r\n\r\n<div class=\"container tin-grid\" style=\"font-size:14px; max-width: 70%;\">\r\n\r\n <spa-text id=\"txtUserName\" display=\"Username\" [(value)]=\"register.userName\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-select id=\"cboAuth\" display=\"Authentication Type\" [options]=\"authTypes\" optionDisplay=\"name\" optionValue=\"value\" [(value)]=\"register.authType\" (valueChange)=\"check()\" ></spa-select>\r\n\r\n &nbsp;\r\n\r\n <spa-text id=\"txtFirstName\" display=\"FirstName\" [(value)]=\"register.firstName\" [readonly]=\"register.authType =='AD'\"></spa-text>\r\n\r\n <spa-text id=\"txtLastName\" display=\"LastName\" [(value)]=\"register.lastName\" [readonly]=\"register.authType =='AD'\"></spa-text>\r\n\r\n\r\n <spa-text *ngIf=\"register.authType == 'local'\" id=\"txtPassword\" display=\"Password\" format=\"password\" [(value)]=\"register.password\" ></spa-text>\r\n\r\n <spa-text *ngIf=\"register.authType == 'local'\" id=\"txtConfirmPassword\" display=\"Confirm Password\" format=\"password\" [(value)]=\"confirmPassword\" ></spa-text>\r\n\r\n <spa-text id=\"txtEmail\" display=\"Email\" [(value)]=\"register.email\"></spa-text>\r\n\r\n &nbsp;\r\n\r\n <spa-select id=\"cboRole\" display=\"Role\" [options]=\"roles\" optionDisplay=\"roleName\" optionValue=\"roleID\" [(value)]=\"register.roleID\"></spa-select>\r\n\r\n &nbsp;\r\n\r\n <spa-check display=\"Open profile after creation\" [(value)]=\"openProfile\"></spa-check>\r\n\r\n <div class=\"span-col-center\">\r\n <button id=\"btnCreate\" [disabled]=\"register.authType ==''\" mat-raised-button color=\"primary\" (click)=\"create()\" cdkFocusInitial>Create</button>\r\n </div>\r\n\r\n\r\n\r\n</div>\r\n\r\n\r\n","import { SettingsComponent } from '../components/settings/settings.component';\r\nimport { LogsComponent } from '../components/logs/logs.component';\r\nimport { SpaMatModule } from \"./spa-mat.module\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { UsersComponent } from \"../components/users/users.component\";\r\nimport { RolesComponent } from \"../components/roles/roles.component\";\r\nimport { addRoleDialog } from \"../components/roles/addRoleDialog.component\";\r\nimport { CreateAccountComponent } from \"../components/create-account/create-account.component\";\r\nimport { TinSpaModule } from '../tin-spa.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent,\r\n\r\n\r\n ],\r\n\r\n\r\n\r\n imports: [\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: \"never\" }),\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TinSpaModule\r\n ],\r\n\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n TinSpaModule,\r\n UsersComponent,\r\n RolesComponent,\r\n addRoleDialog,\r\n CreateAccountComponent,\r\n LogsComponent,\r\n SettingsComponent,\r\n\r\n\r\n ],\r\n})\r\nexport class SpaAdminModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { SignupComponent } from '../../components/signup/signup.component';\r\nimport { RecoverAccountComponent } from '../../components/recover-account/recover-account.component';\r\nimport { LoginComponent } from '../../components/login/login.component';\r\n\r\nconst routes: Routes = [\r\n\r\n { path: \"signup\", component: SignupComponent },\r\n { path: 'recover-account', component: RecoverAccountComponent },\r\n { path: 'login', component: LoginComponent },\r\n { path: '', redirectTo: 'login', pathMatch: 'full' },\r\n { path: '**', redirectTo: '' },\r\n\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class IndexRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IndexRoutingModule } from './index-routing.module';\r\nimport { SpaIndexModule } from '../spa-index.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n IndexRoutingModule,\r\n SpaIndexModule\r\n ]\r\n})\r\nexport class IndexModule { }\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { UsersComponent } from '../../components/users/users.component';\r\nimport { RolesComponent } from '../../components/roles/roles.component';\r\nimport { CreateAccountComponent } from '../../components/create-account/create-account.component';\r\nimport { LogsComponent } from '../../components/logs/logs.component';\r\nimport { SettingsComponent } from '../../components/settings/settings.component';\r\nimport { TenantSettingsComponent } from '../../components/tenant-settings/tenant-settings.component';\r\nimport { TenantsComponent } from '../../components/tenants/tenants.component';\r\nimport { BugComponent } from '../../components/bug/bug.component';\r\nimport { MembershipComponent } from '../../components/membership/membership.component';\r\nimport { PlansComponent } from '../../components/plans/plans.component';\r\nimport { CustomersComponent } from '../../components/customers/customers.component';\r\nimport { InventoryComponent } from '../../components/inventory/inventory.component';\r\nimport { SuppliersComponent } from '../../components/suppliers/suppliers.component';\r\nimport { AccountsComponent } from '../../components/accounts/accounts.component';\r\nimport { TransactionsComponent } from '../../components/transactions/transactions.component';\r\nimport { TasksComponent } from '../../components/tasks/tasks.component';\r\nimport { EmployeesComponent } from '../../components/employees/employees.component';\r\nimport { DepartmentsComponent } from '../../components/departments/departments.component';\r\nimport { PositionsComponent } from '../../components/positions/positions.component';\r\nimport { GradesComponent } from '../../components/grades/grades.component';\r\nimport { WelcomeComponent } from '../../components/welcome/welcome.component';\r\n\r\nconst routes: Routes = [\r\n { path: \"users\", component: UsersComponent},\r\n { path: \"roles\", component: RolesComponent},\r\n { path: \"create-account\", component: CreateAccountComponent },\r\n { path: \"logs\", component: LogsComponent},\r\n { path: \"settings\", component: SettingsComponent},\r\n\r\n { path: \"tenant-settings\", component: TenantSettingsComponent },\r\n { path: \"tenants\", component: TenantsComponent },\r\n { path: \"bug\", component: BugComponent },\r\n { path: \"membership\", component: MembershipComponent },\r\n { path: \"plans\", component: PlansComponent },\r\n\r\n { path: \"customers\", component: CustomersComponent },\r\n { path: \"inventory\", component: InventoryComponent },\r\n { path: \"suppliers\", component: SuppliersComponent },\r\n { path: \"accounts\", component: AccountsComponent },\r\n { path: \"transactions\", component: TransactionsComponent },\r\n { path: \"tasks\", component: TasksComponent },\r\n\r\n { path: \"employees\", component: EmployeesComponent },\r\n { path: \"departments\", component: DepartmentsComponent },\r\n { path: \"positions\", component: PositionsComponent },\r\n { path: \"grades\", component: GradesComponent },\r\n { path: \"welcome\", component: WelcomeComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AdminRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { AdminRoutingModule } from './admin-routing.module';\r\nimport { SpaAdminModule } from '../spa-admin.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n AdminRoutingModule,\r\n SpaAdminModule\r\n ]\r\n})\r\nexport class AdminModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ChangePasswordComponent } from '../../components/change-password/change-password.component';\r\nimport { ProfileComponent } from '../../components/profile/profile.component';\r\n\r\nconst routes: Routes = [\r\n {path: \"change-password\", component: ChangePasswordComponent },\r\n {path: \"profile\", component: ProfileComponent },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class UserRoutingModule { }\r\n","\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UserRoutingModule } from './user-routing.module';\r\nimport { SpaUserModule } from '../spa-user.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n UserRoutingModule,\r\n SpaUserModule\r\n ]\r\n})\r\nexport class UserModule { }\r\n","/*\r\n * Public API Surface of tin-spa\r\n */\r\n\r\n\r\n\r\n//Services\r\nexport * from './lib/services/tin-spa.service';\r\nexport * from './lib/services/storage.service';\r\nexport * from './lib/services/message.service';\r\nexport * from './lib/services/export.service';\r\nexport * from './lib/services/auth.service';\r\nexport * from './lib/services/datalib.service';\r\nexport * from './lib/services/log.service';\r\nexport * from './lib/services/http.service';\r\nexport * from './lib/services/loader.service';\r\nexport * from './lib/services/dialog.service';\r\n\r\n\r\n//classes\r\nexport * from './lib/classes/Classes';\r\nexport * from './lib/classes/TinCore';\r\n\r\n\r\n//modules\r\nexport * from './lib/tin-spa.module';\r\nexport * from './lib/modules/spa-mat.module'\r\nexport * from './lib/modules/spa-index.module'\r\nexport * from './lib/modules/spa-user.module'\r\nexport * from './lib/modules/spa-admin.module'\r\nexport * from './lib/modules/index/index.module'\r\nexport * from './lib/modules/admin/admin.module'\r\nexport * from './lib/modules/user/user.module'\r\n\r\n//components\r\nexport * from './lib/components/tin-spa.component';\r\nexport * from './lib/components/tiles/tiles.component';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/components/date/date.component';\r\nexport * from './lib/components/text/text.component';\r\nexport * from './lib/components/label/label.component';\r\nexport * from './lib/components/datetime/datetime.component';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/attach/attach.component';\r\nexport * from './lib/components/check/check.component';\r\n// export * from './lib/components/viewer/viewer.component';\r\nexport * from './lib/components/money/money.component';\r\nexport * from './lib/components/chips/chips.component';\r\nexport * from './lib/components/activity/activity.component';\r\n// export * from './lib/components/html/html.component';\r\nexport * from './lib/components/option/option.component';\r\nexport * from './lib/components/steps/steps.component';\r\nexport * from './lib/components/filter/filter.component';\r\nexport * from './lib/components/message/messageDialog.component';\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/users/users.component';\r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/nav-menu/nav-menu.component';\r\nexport * from './lib/components/roles/roles.component';\r\nexport * from './lib/components/roles/addRoleDialog.component';\r\nexport * from './lib/components/signup/signup.component';\r\nexport * from './lib/components/change-password/change-password.component';\r\nexport * from './lib/components/profile/profile.component';\r\nexport * from './lib/components/recover-account/recover-account.component';\r\nexport * from './lib/components/create-account/create-account.component';\r\n// export * from './lib/components/timeout/timeout.component'\r\n\r\nexport * from './lib/components/logs/logs.component';\r\nexport * from './lib/components/settings/settings.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/table/detailsDialog.component';\r\nexport * from './lib/components/form/form.component';\r\nexport * from './lib/components/number/number.component';\r\nexport * from './lib/components/search/search.component';\r\nexport * from './lib/components/viewer/viewer.component';\r\nexport * from './lib/components/viewer/viewerDialog.component';\r\n\r\nexport * from './lib/components/customers/customers.component';\r\nexport * from './lib/components/inventory/inventory.component';\r\nexport * from './lib/components/accounts/accounts.component';\r\nexport * from './lib/components/suppliers/suppliers.component';\r\n\r\nexport * from './lib/components/list-dialog/list-dialog.component';\r\nexport * from './lib/components/transactions/transactions.component';\r\nexport * from './lib/components/tasks/tasks.component';\r\n\r\nexport * from './lib/components/departments/departments.component';\r\nexport * from './lib/components/employees/employees.component';\r\nexport * from './lib/components/positions/positions.component';\r\nexport * from './lib/components/grades/grades.component';\r\nexport * from './lib/components/welcome/welcome.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i4","i1","i3.StorageService","i4.HttpService","i5.MessageService","i6.LogService","i1.HttpService","i8","i9","i1.MessageService","i3","i7","i2.DialogService","i5","i6","i8.CurrencyInputMaskDirective","i6.TextComponent","i7.DateComponent","i8.SelectComponent","i1.DataServiceLib","i2.MessageService","i9.CamelToWordsPipe","i1.LoaderService","i2.AuthService","i6.DataServiceLib","i10","i13","i15","i17.LoaderComponent","i3.AuthService","i5.LogService","i6.ChipsComponent","i5.ChipsComponent","i2.DataServiceLib","i5.TextComponent","i6.CheckComponent","i8.LabelComponent","i9.SelectComponent","i10.MoneyComponent","i11.AttachComponent","i12.NumberComponent","i13.ViewerComponent","i14.CamelToWordsPipe","i6.ButtonService","i7.DialogService","i11","i12","i13.FormComponent","i14.AlertComponent","i5.OptionComponent","i6.CamelToWordsPipe","i1.ButtonService","i4.FilterComponent","i5.TilesComponent","i7.CheckComponent","i5.ButtonService","i6.DialogService","i7.TableConfigService","i8.ConditionService","i12.SearchComponent","i13.TableHeaderComponent","i14.TableRowComponent","i15.TableActionComponent","i16.CamelToWordsPipe","i14.TableInternalComponent","i15.FormComponent","i16.AlertComponent","i7.SelectComponent","i4.TableComponent","i7.TextComponent","i10.TableComponent","i11.InvitationsTableComponent","i7.NumberComponent","i8.TableComponent","i3.MessageService","i4.AuthService","i10.FilterComponent","i8.DateComponent","i9.FilterComponent","i3.TableComponent","i8.InvitationsTableComponent","i2.StorageService","i4.MessageService","i5.DataServiceLib","i6.AuthService","i7.LogService","i14","i16.TextComponent","i3.DataServiceLib","i3.HttpService","i8.TextComponent","i5.AuthService","i9.TextComponent","i10.SelectComponent","i1.AuthService","i6.FilterComponent","i4.DataServiceLib","i6.MessageService","i13.FilterComponent","i10.CheckComponent","routes"],"mappings":"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GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,Q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"}