@rosoftlab/ionic 1.0.0-alpha-4 → 1.0.0-alpha-6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"rosoftlab-ionic.mjs","sources":["../../../../projects/rosoftlab/ionic/src/lib/ionic-dialog.service.ts","../../../../projects/rosoftlab/ionic/src/lib/translate.extension.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/wrappers.module.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-sm-buttons/ionic-sm-buttons.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-sm-buttons/ionic-sm-buttons.component.html","../../../../projects/rosoftlab/ionic/src/lib/types/repeat/repeat-section.type.ts","../../../../projects/rosoftlab/ionic/src/lib/types/repeat/repeat-section.html","../../../../projects/rosoftlab/ionic/src/lib/validators/must-match.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/accordion-wrapper.component.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/panel-wrapper.component.ts","../../../../projects/rosoftlab/ionic/src/lib/rsl-ionic-module.module.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-crud.component/rsl-ionic-crud.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-crud.component/rsl-ionic-crud.component.html","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-data-table/rsl-ionic-data-table.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-data-table/rsl-ionic-data-table.component.html","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-grid/rsl-ionic-grid.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-grid/rsl-ionic-grid.component.html","../../../../projects/rosoftlab/ionic/src/lib/decorators/ionic-datatable-layout.ts","../../../../projects/rosoftlab/ionic/src/lib/decorators/ionic-list.decorator.ts","../../../../projects/rosoftlab/ionic/src/public-api.ts","../../../../projects/rosoftlab/ionic/src/rosoftlab-ionic.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AlertController } from '@ionic/angular';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IonicDialogService {\n\n constructor(private alertController: AlertController) { }\n async confirm(message?: string, title?: string,\n confirmButtonText: string = 'Delete',\n cancelButtonText: string = 'Cancel'): Promise<boolean> {\n let choice\n const alert = await this.alertController.create({\n header: title,\n subHeader: message,\n buttons: [{\n text: cancelButtonText,\n handler: () => {\n alert.dismiss(false)\n return false\n }\n }, {\n text: confirmButtonText,\n handler: () => {\n alert.dismiss(true);\n return true;\n }\n }]\n });\n\n await alert.present();\n await alert.onDidDismiss().then((data) => {\n choice = data\n })\n return choice\n\n }\n async showSaveMessage(message?: string, title?: string) {\n const alert = await this.alertController.create({\n header: title,\n subHeader: message,\n buttons: ['OK']\n });\n\n await alert.present();\n\n }\n\n}\n","import { FormlyExtension, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport class TranslateExtension implements FormlyExtension {\r\n constructor(private translate: TranslateService) { }\r\n prePopulate(field: FormlyFieldConfig) {\r\n const props = field.props || {};\r\n if (!props['translate'] || props['_translated']) {\r\n return;\r\n }\r\n\r\n props['_translated'] = true;\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.label': this.translate.stream(props.label),\r\n };\r\n if (props.placeholder) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.placeholder': this.translate.stream(props.placeholder)\r\n };\r\n }\r\n if (props.description) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.description': this.translate.stream(props.description)\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport function registerTranslateExtension(translate: TranslateService) {\r\n return {\r\n validationMessages: [\r\n {\r\n name: 'required',\r\n message(error: any, field: FormlyFieldConfig) {\r\n // console.log(field);\r\n return translate.stream('General.Field.Required', { field: field.props.label });\r\n },\r\n },\r\n ],\r\n extensions: [\r\n {\r\n name: 'translate',\r\n extension: new TranslateExtension(translate),\r\n }\r\n ],\r\n };\r\n}","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';\nimport { FormlyIonicModule } from '@ngx-formly/ionic';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { SmActionService } from '@rosoftlab/statemachine';\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\nimport { registerTranslateExtension } from '../translate.extension';\n\nconst COMMON_MODULES = [\n CommonModule,\n IonicModule,\n ReactiveFormsModule,\n FormlyIonicModule,\n NgxDatatableModule\n];\n\n@NgModule({\n imports: [\n ...COMMON_MODULES,\n TranslateModule\n ],\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },\n SmActionService\n ],\n exports: [\n ...COMMON_MODULES,\n FormlyModule,\n TranslateModule\n ],\n})\nexport class WrappersModule { }\n","import { Component, OnInit, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { FormlyFieldInput } from '@ngx-formly/ionic/input';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SmAction, SmActionService, State, StateService } from '@rosoftlab/statemachine';\nimport { Observable } from 'rxjs';\nimport { WrappersModule } from '../../wrappers/wrappers.module';\ninterface InputProps extends FormlyFieldProps { }\n\nexport interface FormlyInputFieldConfig extends FormlyFieldConfig<InputProps> {\n type: 'input' | Type<FormlyFieldInput>;\n}\n@Component({\n standalone: true,\n selector: 'app-ionic-sm-buttons',\n templateUrl: './ionic-sm-buttons.component.html',\n styleUrls: ['./ionic-sm-buttons.component.css'],\n imports: [\n WrappersModule\n ]\n})\nexport class RslIonicSmButtonsComponent extends FieldType<FieldTypeConfig<InputProps>> implements OnInit {\n smActions$: Observable<SmAction[]>\n currentState: State;\n\n objectType: string;\n objectId: string;\n constructor(\n public smActionService: SmActionService,\n private stateService: StateService,\n public translate: TranslateService) {\n super()\n }\n ngOnInit() {\n this.objectType = this.props.attributes['objectType'] as string\n this.objectId = this.field.parent.model.id\n this.loadCurrentState(this.field.model.currentStateId);\n this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType)\n // console.log(this.field)\n }\n executeAction(action: SmAction) {\n // this.currentState = null\n // this.smActions$ = null\n // console.log(action.actionID)\n this.smActionService.executeAction(this.objectId, this.objectType, action.actionID, \"\")\n .subscribe(\n response => {\n // console.log(response)\n if (this.field.props['onStateCahnged'])\n this.field.props['onStateCahnged']({ model: this.field.parent.model, response });\n this.model['currentStateId'] = response.currentStateId\n this.smActionService.getActions(this.objectId, this.objectType)\n\n this.options.resetModel()\n // this.field.formControl.updateValueAndValidity() \n this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType)\n // //this.smActions = []\n this.loadCurrentState(response.currentStateId);\n }\n )\n // console.log(action);\n }\n loadCurrentState(stateId: any) {\n this.stateService.get(stateId).subscribe(\n state => this.currentState = state\n )\n }\n getColor(action: SmAction) {\n if (action.props) {\n return action.props[\"Color\"] ? action.props[\"Color\"] : \"primary\";\n }\n return \"primary\"\n }\n getCurrentState() {\n return this.translate.instant('General.State.CurrentState', { field: this.currentState.name });\n }\n}\n","<!-- <ion-input [type]=\"props.type || 'text'\" [formControl]=\"formControl\" [ionFormlyAttributes]=\"field\"></ion-input> -->\n\n<!-- <p>Sync</p>\n<ion-list>\n <ion-button *ngFor=\"let action of smActions\" color=\"{{getColor(action)}}\" (click)=\"executeAction(action)\">\n {{action.buttonTranslationKey |translate}}\n </ion-button>\n</ion-list> -->\n<ion-label *ngIf=\"currentState\">{{ getCurrentState() }}</ion-label>\n<ion-list>\n <ion-button *ngFor=\"let action of smActions$ | async \" color=\"{{getColor(action)}}\" (click)=\"executeAction(action)\">\n {{action.buttonTranslationKey |translate}}\n <!-- - {{action.actionID}} -->\n </ion-button>\n</ion-list>","import { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FieldArrayType, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { getValueFromJsonData, readFileAsync } from '@rosoftlab/core';\r\nimport { FileSaverService } from 'ngx-filesaver';\r\nimport * as XLSX from 'xlsx';\r\nimport { IonicDialogService } from '../../ionic-dialog.service';\r\nimport { WrappersModule } from '../../wrappers/wrappers.module';\r\n\r\ninterface SearchProp {\r\n showSerach: boolean\r\n searchProp: string\r\n}\r\ninterface ExportDataProp {\r\n propertiesToExport: string[]\r\n sheetName: string;\r\n fileName: string;\r\n}\r\ninterface ImportDataProp {\r\n keyProp: string\r\n propertiesToImport: string[]\r\n}\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n standalone: true,\r\n selector: 'formly-repeat-section',\r\n templateUrl: './repeat-section.html',\r\n styleUrls: ['./repeat-section.scss'],\r\n imports: [\r\n WrappersModule\r\n ]\r\n})\r\nexport class RepeatTypeComponent extends FieldArrayType {\r\n /**\r\n *\r\n */\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n data: FormlyFieldConfig[] = null;\r\n serach: SearchProp = null;\r\n showSerach: boolean = false;\r\n deleteMessage: string\r\n deleteButton: string\r\n cancelButton: string\r\n filterValue: string = null;\r\n typeKey: string;\r\n importDataProp: ImportDataProp = null;\r\n exportDataProp: ExportDataProp = null;\r\n constructor(\r\n public dialogService: IonicDialogService,\r\n public translate: TranslateService,\r\n private fileSaverService: FileSaverService) {\r\n super();\r\n this.deleteMessage = this.translate.instant(\"General.Delete.Question\")\r\n this.deleteButton = this.translate.instant(\"General.Delete.Button\")\r\n this.cancelButton = this.translate.instant(\"General.Cancel.Button\")\r\n\r\n }\r\n override remove(i: number, { markAsDirty } = { markAsDirty: true }) {\r\n this.dialogService.confirm(this.deleteMessage, null, this.deleteButton, this.cancelButton).then(\r\n (value: any) => {\r\n if (value.data) {\r\n var onDelete = this.field.props['onDelete'];\r\n if (onDelete) {\r\n onDelete(this.field.fieldGroup[i].model).subscribe(\r\n () => {\r\n super.remove(i);\r\n }\r\n )\r\n }\r\n super.remove(i);\r\n }\r\n }\r\n )\r\n }\r\n ngOnInit() {\r\n this.typeKey = this.field.key as string\r\n this.serach = this.props['search']\r\n this.exportDataProp = this.props['export'] || null\r\n this.importDataProp = this.props['import'] || null\r\n if (this.serach) {\r\n this.showSerach = this.serach.showSerach\r\n }\r\n\r\n }\r\n postPopulate(field: any) {\r\n if (this.showSerach) {\r\n this.data = field.fieldGroup\r\n if (this.filterValue) {\r\n this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue))\r\n }\r\n }\r\n }\r\n handleChange(event) {\r\n if (this.showSerach) {\r\n if (this.data == null && this.field.fieldGroup !== null) {\r\n this.data = this.field.fieldGroup\r\n }\r\n this.filterValue = event.target.value.toLowerCase();\r\n this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue))\r\n }\r\n }\r\n importData() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n async handleImportFile(event: any) {\r\n const file = event.target.files[0];\r\n\r\n if (file) {\r\n try {\r\n\r\n\r\n const fileContents = await readFileAsync(file);\r\n // Handle the file contents here (e.g., display or process the data)\r\n const wb: XLSX.WorkBook = XLSX.read(fileContents)//, { type: 'binary' });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: XLSX.WorkSheet = wb.Sheets[wsname];\r\n const excelData = XLSX.utils.sheet_to_json(ws)//, { header: 1 });\r\n excelData.forEach(element => {\r\n const jsonX = getValueFromJsonData(element, this.importDataProp.keyProp)\r\n const idx = this.field.parent.model[this.typeKey].findIndex(f => f[this.importDataProp.keyProp] === jsonX)\r\n if (idx >= 0) {\r\n const existingdata = this.field.parent.model[this.typeKey][idx]\r\n for (const prop of this.importDataProp.propertiesToImport) {\r\n const jsonVal = getValueFromJsonData(element, prop)\r\n if (existingdata[prop] !== jsonVal) {\r\n var fieldControl = this.field.fieldGroup[idx].formControl as FormGroup\r\n fieldControl.controls[prop].setValue(jsonVal)\r\n }\r\n }\r\n } else {\r\n super.add(null, element)\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.error('Error reading the file:', error);\r\n }\r\n }\r\n }\r\n\r\n exportData() {\r\n\r\n // Filter the data to include only the specified properties\r\n const filteredData = this.field.parent.model[this.typeKey].map(item => {\r\n const filteredItem: any = {};\r\n for (const prop of this.exportDataProp.propertiesToExport) {\r\n filteredItem[prop] = item[prop];\r\n }\r\n return filteredItem;\r\n });\r\n\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(filteredData);\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, this.exportDataProp.sheetName);\r\n\r\n const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n\r\n const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\r\n this.fileSaverService.save(blob, this.exportDataProp.fileName);\r\n }\r\n\r\n // getValueFromJsonData(jsonData: any, key: string): any {\r\n // // Convert the key and all JSON keys to lowercase\r\n // const lowercaseKey = key.toLowerCase();\r\n // const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());\r\n\r\n // // Find the lowercase key in the lowercase keys array\r\n // const index = lowercaseKeys.indexOf(lowercaseKey);\r\n\r\n // // If found, use the original (proper case) key to access the value\r\n // if (index !== -1) {\r\n // const originalKey = Object.keys(jsonData)[index];\r\n // return jsonData[originalKey];\r\n // }\r\n\r\n // // Key not found\r\n // return undefined;\r\n // }\r\n // private readFileAsync(file: File): Promise<any> {\r\n // return new Promise<any>((resolve, reject) => {\r\n // const reader = new FileReader();\r\n\r\n // reader.onload = (event: any) => {\r\n // resolve(event.target.result);\r\n // };\r\n\r\n // reader.onerror = (event: any) => {\r\n // reject(event.target.error);\r\n // };\r\n\r\n // reader.readAsArrayBuffer(file);\r\n // });\r\n // }\r\n}","<ion-header [translucent]=\"true\">\r\n <ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\r\n </ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\r\n</ion-header>\r\n\r\n<ng-template #header>\r\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\r\n\r\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\r\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\r\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n </ion-button>\r\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\r\n\r\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\r\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n\r\n<ion-list lines=\"full\">\r\n <ion-item *ngFor=\"let field of field.fieldGroup; let i = index\" class=\"row align-items-baseline\">\r\n <formly-field class=\"formly-ion-list-item\" [field]=\"field\"></formly-field>\r\n <ion-button [disabled]=\"props.disabled\" color=\"danger\" slot=\"end\" (click)='remove(i)'>\r\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\r\n </ion-button>\r\n </ion-item>\r\n</ion-list>\r\n\r\n\r\n<ng-template #search>\r\n <ion-toolbar *ngIf=\"showSerach\">\r\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\r\n </ion-toolbar>\r\n</ng-template>","import { AbstractControl } from '@angular/forms';\n\nexport function fieldMatchValidator(control: AbstractControl) {\n const { password, confirmPassword } = control.value;\n\n // avoid displaying the message error when values are empty\n if (!confirmPassword || !password) {\n return null;\n }\n\n if (confirmPassword === password) {\n return null;\n }\n\n return { fieldMatch: { message: 'Fields.Not.Matching' } };\n}","import { Component } from '@angular/core';\r\nimport { FieldWrapper } from '@ngx-formly/core';\r\nimport { WrappersModule } from './wrappers.module';\r\n\r\n@Component({\r\n standalone: true,\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'formly-accordion-panel',\r\n template: `\r\n\r\n <ion-accordion-group [value]=\"['first']\">\r\n <ion-accordion value=\"first\">\r\n <ion-item slot=\"header\">\r\n <ion-card-title>{{ props.label}}</ion-card-title>\r\n </ion-item>\r\n <div class=\"ion-padding\" slot=\"content\">\r\n <ng-container #fieldComponent></ng-container>\r\n </div>\r\n </ion-accordion>\r\n </ion-accordion-group>\r\n\r\n\r\n \r\n `,\r\n imports: [WrappersModule]\r\n})\r\nexport class AccordionWrapperComponent extends FieldWrapper { }\r\n","import { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { WrappersModule } from './wrappers.module';\n\n@Component({\n standalone: true,\n selector: 'formly-wrapper-panel',\n template: `\n <ion-card>\n <ion-card-header>\n <ion-card-title>{{ props.label}}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ng-container #fieldComponent></ng-container>\n </ion-card-content>\n </ion-card>\n `,\n imports: [WrappersModule]\n})\nexport class PanelWrapperComponent extends FieldWrapper { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';\nimport { FormlyIonicModule } from '@ngx-formly/ionic';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\nimport { RslIonicSmButtonsComponent } from './components/rsl-ionic-sm-buttons/ionic-sm-buttons.component';\nimport { IonicDialogService } from './ionic-dialog.service';\nimport { registerTranslateExtension } from './translate.extension';\nimport { RepeatTypeComponent } from './types/repeat/repeat-section.type';\nimport { fieldMatchValidator } from './validators/must-match';\nimport { AccordionWrapperComponent } from './wrappers/accordion-wrapper.component';\nimport { PanelWrapperComponent } from './wrappers/panel-wrapper.component';\nconst COMMON_MODULES = [\n CommonModule,\n IonicModule,\n ReactiveFormsModule,\n FormlyIonicModule,\n NgxDatatableModule\n];\n\n@NgModule({\n imports: [\n ...COMMON_MODULES,\n TranslateModule,\n FormlyModule.forRoot({\n types: [\n { name: 'repeat', component: RepeatTypeComponent },\n { name: 'sm-buttons', component: RslIonicSmButtonsComponent }\n ],\n validators: [{ name: 'fieldMatch', validation: fieldMatchValidator }],\n wrappers: [\n { name: 'panel', component: PanelWrapperComponent },\n { name: 'accordion', component: AccordionWrapperComponent }],\n validationMessages: [\n { name: 'required', message: 'This field is required' },\n ],\n }),\n ],\n providers: [\n IonicDialogService,\n { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },\n ],\n exports: [\n ...COMMON_MODULES,\n FormlyModule,\n TranslateModule\n ],\n})\nexport class RslIonicModuleModule { }\n","import { Location } from '@angular/common';\nimport { Component, Injector, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\nimport { FormlyJsonschema } from '@ngx-formly/core/json-schema';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BaseModelFormly, BaseServiceFormly } from '@rosoftlab/formly';\nimport * as _ from 'lodash';\nimport { Observable, from } from 'rxjs';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { RslIonicModuleModule } from '../../rsl-ionic-module.module';\n@Component({\n standalone: true,\n selector: 'rslc-ionic-crud',\n templateUrl: './rsl-ionic-crud.component.html',\n styleUrls: ['./rsl-ionic-crud.component.css'],\n imports: [RslIonicModuleModule]\n\n})\nexport class GenericIonicCrudComponent<T extends BaseModelFormly, U extends BaseServiceFormly<T>> implements OnInit {\n baseForm: UntypedFormGroup;\n modelId: string;\n model: T;\n origModel: T;\n isEdit: boolean;\n isLoading = true;\n cancelRoute: string;\n editRoute: string;\n modelService: U\n public changeUrlRoute: boolean = true;\n public title: string;\n fields: FormlyFieldConfig[]\n options: FormlyFormOptions = {};\n //#region Dialog messages\n confirmQuestion: string\n confirmButton: string\n saveMessage: string\n //#endregion\n constructor(\n public fb: UntypedFormBuilder,\n public router: Router,\n public route: ActivatedRoute,\n public dialogService: IonicDialogService,\n public translate: TranslateService,\n public location: Location,\n private injector: Injector,\n private formlyJsonschema: FormlyJsonschema,\n ) {\n\n const SERVICE_TOKEN = route.snapshot.data['requiredService'];\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n this.confirmQuestion = this.translate.instant('General.Discard.Question');\n this.confirmButton = this.translate.instant('General.Discard.ConfirmButton');\n this.saveMessage = this.translate.instant('General.Save.Message');\n }\n\n ionViewWillLeave() {\n this.options.resetModel()\n this.baseForm.reset();\n }\n\n public afterSave(model: T): Observable<T> {\n return new Observable((observer) => {\n observer.next(model);\n observer.complete();\n });\n }\n\n public beforeSave(model: T): Observable<T> {\n return new Observable((observer) => {\n observer.next(model);\n observer.complete();\n });\n }\n\n ngOnInit() {\n this.initForm();\n }\n initForm(customInclude: string = '', newModelId: string = null, model: T = null) {\n if (model === null) {\n this.modelId = this.route.snapshot.paramMap.get('id') ?? newModelId;\n this.isEdit = false;\n if (this.modelId) {\n this.modelService.get(this.modelId, customInclude).subscribe((value: T) => {\n this.isEdit = true;\n this.generateForm(value)\n }\n );\n } else {\n if (this.changeUrlRoute) {\n const addUrl = this.router.createUrlTree([]).toString();\n this.editRoute = this.router.createUrlTree([addUrl.replace('add', 'edit')]).toString();\n }\n // }\n this.generateForm(this.modelService.newModel());\n }\n } else {\n this.modelId = model.id;\n this.isEdit = true;\n this.generateForm(model)\n }\n }\n generateForm(model?: T) {\n this.isLoading = false;\n this.modelId = model.id;\n this.model = model;\n this.origModel = _.cloneDeep(model);;\n this.title = this.model.modelConfig.formTitle\n this.baseForm = new UntypedFormGroup({});//= this.modelService.toFormGroup(this.fb, model);\n this.afterFormGenerated();\n this.fields = this.modelService.getFormlyFields(this.model)\n }\n public afterFormGenerated() {\n\n }\n private getFromGroup(formGroup: UntypedFormGroup | string = null): UntypedFormGroup {\n if (!formGroup)\n return this.baseForm;\n if (formGroup instanceof UntypedFormGroup)\n return formGroup;\n return this.baseForm.controls[formGroup] as UntypedFormGroup;\n }\n validateAllFormFields(formGroup: UntypedFormGroup | string = null) {\n const fg = this.getFromGroup(formGroup)\n Object.keys(fg.controls).forEach(field => {\n // console.log(field);\n const control = fg.get(field);\n if (control instanceof UntypedFormControl) {\n control.markAsTouched({ onlySelf: true });\n } else if (control instanceof UntypedFormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n isFieldValid(field: string, formGroup: UntypedFormGroup | string = null) {\n const fg = this.getFromGroup(formGroup)\n const filedControl = fg.get(field)\n return !filedControl.valid && filedControl.touched;\n }\n\n isFieldValidFromArray(arrayIndex: number, field: string, arrayName: string = 'formArray') {\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\n return !fieldControl.valid && fieldControl.touched;\n }\n\n displayFieldCss(field: string) {\n return {\n 'has-error': this.isFieldValid(field),\n 'has-feedback': this.isFieldValid(field)\n };\n }\n onCancel() {\n this.router.navigate([this.cancelRoute]);\n }\n onSave() {\n this.saveModel(this.baseForm)\n }\n onSubmit(model) {\n this.saveModel(this.baseForm)\n }\n\n saveModel(formGroup: UntypedFormGroup | string = null) {\n const fg = this.getFromGroup(formGroup)\n const that = this;\n if (fg) {\n if (fg.valid) {\n this.beforeSave(this.model).subscribe(_ => {\n this.modelService.save(this.model, this.modelId, this.origModel).subscribe(\n (newModel: T) => {\n this.model = newModel;\n this.modelId = newModel.id;\n if (this.editRoute) {\n this.isEdit = true;\n if (this.changeUrlRoute) {\n const url = this.router.createUrlTree([this.editRoute, this.modelId]).toString();\n this.location.replaceState(url);\n }\n }\n this.afterSave(newModel).subscribe((val: T) => {\n from(this.dialogService.showSaveMessage(this.saveMessage)).subscribe(d => {\n this.options.updateInitialValue()\n fg.markAsPristine();\n });\n });\n },\n err => {\n this.serverErrors(err)\n });\n });\n } else {\n this.validateAllFormFields(formGroup);\n }\n }\n }\n serverErrors(err: any) {\n if (err.error) {\n if (err.error.errors) {\n const validationErrors = err.error.errors;\n if (Array.isArray(validationErrors)) {\n validationErrors.forEach(prop => {\n const formControl = this.baseForm.get(this.firstCharToLowerCase(prop));\n if (formControl) {\n // activate the error message\n formControl.setErrors({\n serverError: { message: validationErrors[prop].join('\\n') }\n });\n }\n });\n } else {\n const keys = Object.keys(validationErrors);\n keys.forEach(prop => {\n const formControl = this.baseForm.get(this.firstCharToLowerCase(prop));\n if (formControl) {\n // activate the error message\n formControl.setErrors({\n serverError: { message: validationErrors[prop].join('\\n') }\n });\n }\n });\n }\n }\n }\n }\n private firstCharToLowerCase(str: string): string {\n if (str.length === 0) {\n return str; // Return an empty string if the input is empty\n }\n\n const firstChar = str.charAt(0).toLowerCase();\n const restOfString = str.slice(1);\n\n return firstChar + restOfString;\n }\n async canDeactivate(): Promise<boolean> {\n if (!this.baseForm.dirty) {\n return true;\n }\n var result = await this.dialogService.confirm(this.confirmQuestion, null, this.confirmButton)\n return result;\n }\n getFiledName(filedTranslationKey: string) {\n return { field: this.translate.instant(filedTranslationKey) };\n }\n getCustomErrorMessage(error: any, fieldLabel: string): string {\n return '';\n }\n getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName: string = 'formArray'): string {\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\n return this.getErrorMessageForField(fieldControl, filedTranslationKey)\n }\n getErrorMessage(field: string, filedTranslationKey: string, formGroup: UntypedFormGroup | string = null): string {\n const fg = this.getFromGroup(formGroup)\n return this.getErrorMessageForField(fg.get(field), filedTranslationKey)\n }\n getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string {\n const error = fieldControl.errors;\n const fieldLabel = this.translate.instant(filedTranslationKey);\n let rvalue = '';\n if (error !== null) {\n if (error['required'] === true) {\n rvalue = this.translate.instant('General.Field.Required', { field: fieldLabel });\n }\n if (error['minlength']) {\n rvalue = this.translate.instant('General.Field.MinLength', { field: fieldLabel, requiredLength: error.minlength.requiredLength });\n }\n if (error['email'] === true) {\n rvalue = this.translate.instant('General.Field.InvalidEmail');\n }\n if (error['url'] === true) {\n rvalue = this.translate.instant('General.Field.InvalidUrl');\n }\n if (error['serverError']) {\n rvalue = error['serverError'];\n }\n if (rvalue === '') {\n rvalue = this.getCustomErrorMessage(error, fieldLabel);\n }\n }\n return rvalue;\n }\n}\n","<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n <ng-container *ngIf=\"!isLoading\">\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\n </form>\n </ng-container>\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button *ngIf=\"!isLoading\" slot=\"end\" fill=\"clear\" (click)=\"onSave()\"\n [disabled]=\"baseForm.invalid || !baseForm.dirty\">\n <ion-icon size=\"large\" name=\"save\"></ion-icon>\n </ion-button>\n</ng-template>","import { Location } from '@angular/common';\nimport { Component, ElementRef, Injector, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationStart, Router, UrlSegment } from '@angular/router';\nimport { NavController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BaseQueryData, BaseService, Rule } from '@rosoftlab/core';\nimport { BaseModelFormly } from '@rosoftlab/formly';\nimport { ColumnMode, SelectionType } from '@swimlane/ngx-datatable';\nimport * as jsonLogic from 'json-logic-js/logic.js';\nimport { IonicDataTableLayoutConfig } from '../../decorators/ionic-datatable-layout';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { RslIonicModuleModule } from '../../rsl-ionic-module.module';\nexport declare type SortDirection = 'asc' | 'desc' | '';\n@Component({\n standalone: true,\n selector: 'app-rsl-ionic-data-table',\n templateUrl: './rsl-ionic-data-table.component.html',\n styleUrls: ['./rsl-ionic-data-table.component.scss'],\n imports: [RslIonicModuleModule],\n})\nexport class RslIonicDataTableComponent<T extends BaseModelFormly, U extends BaseService<T>> implements OnInit {\n @ViewChild('actionsTmpl', { static: true }) actionsTmpl: TemplateRef<any>;\n public title: string;\n @Input() showSerach: boolean;\n @Input() searchFields: string;\n @Input() customInclude: string;\n @Input() defaultSort: string;\n @Input() defaultSortDirection: SortDirection;\n @Input() deletePropertyName: string;\n @Input() defaultFilter: string;\n @Input() showHeader: boolean;\n @Input() deleteDisableRule: Rule[];\n @Input() hasAdd: boolean;\n @Input() canDelete: boolean;\n @Input() canEdit: boolean;\n\n @Input() model: T;\n @Input() modelService: U\n\n data: any[] = [];\n pageIndex: number = 1;\n pageSize: number = 30\n\n basePath: string;\n\n columns = [];\n allColumns = [];\n ColumnMode = ColumnMode;\n SelectionType = SelectionType;\n\n readonly headerHeight = 50;\n readonly rowHeight = 50;\n isLoading: boolean;\n filterValue: string;\n oldOffsetY: number;\n constructor(\n public router: Router,\n public route: ActivatedRoute,\n public translate: TranslateService,\n public location: Location,\n private injector: Injector,\n private navCtrl: NavController,\n public dialogService: IonicDialogService,\n private el: ElementRef) {\n\n }\n ngOnInit() {\n this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);\n this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSort', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSortDirection', '');\n this.setValueFromSnapshot(this, this.route.snapshot, 'deletePropertyName', 'name');\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultFilter', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'showHeader', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'deleteDisableRule', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'hasAdd', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'canDelete', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'canEdit', true);\n if (!this.modelService) {\n const SERVICE_TOKEN = this.route.snapshot.data['requiredService'];\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n }\n this.model = this.modelService.newModel()\n this.title = this.model.modelConfig.formTitle\n this.getListLayout()\n\n const currentUrlSegments: UrlSegment[] = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));\n this.basePath = currentUrlSegments.map(segment => segment.path).join('/');\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n // Navigation to another page is about to occur\n this.data = [];\n this.pageIndex = 1\n // Perform actions or update component as needed\n }\n });\n // this.isLoading = true;\n // this.onScroll(0);\n }\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\n if (component[key] === undefined) {\n let dataFromSnapshot = snapshot.data[key];\n if (dataFromSnapshot === null || dataFromSnapshot === undefined) {\n dataFromSnapshot = snapshot.params[key];\n }\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\n }\n }\n onScroll(offsetY: number) {\n if (offsetY) {\n if (this.oldOffsetY !== offsetY) {\n this.oldOffsetY = offsetY;\n const viewHeight = this.el.nativeElement.getBoundingClientRect().height - this.headerHeight;\n if (!this.isLoading && offsetY + viewHeight >= this.data.length * this.rowHeight) {\n // total number of results to load\n let limit = this.pageSize;\n\n // check if we haven't fetched any results yet\n if (this.data.length === 0) {\n // calculate the number of rows that fit within viewport\n const pageSize = Math.ceil(viewHeight / this.rowHeight);\n\n // change the limit to pageSize such that we fill the first page entirely\n // (otherwise, we won't be able to scroll past it)\n limit = Math.max(pageSize, this.pageSize);\n }\n // this.pageIndex\n this.pageSize = limit\n this.loadData();\n // this.loadPage(limit);\n }\n }\n }\n }\n async ionViewWillEnter() {\n this.data = [];\n this.loadData();\n }\n async handleChange(event) {\n this.filterValue = event.target.value.toLowerCase();\n this.data = [];\n this.pageIndex = 1\n this.loadData();\n }\n loadData(event = null) {\n const filters = [];\n let sorts = '';\n this.isLoading = true;\n if (this.defaultSort) {\n if (this.defaultSortDirection === 'desc') {\n sorts = '-' + this.defaultSort;\n } else {\n sorts = this.defaultSort;\n }\n }\n if (this.showSerach) {\n if (this.filterValue) {\n const y = '(' + this.searchFields.replace(',', '|') + ')';\n filters.push(y + '@=*' + this.filterValue);\n }\n }\n if (this.defaultFilter) {\n filters.push(this.defaultFilter)\n }\n setTimeout(() => {\n const filtersValue = filters.join(', ');\n this.modelService.getAll(this.pageIndex, this.pageSize, sorts, filtersValue, this.customInclude).subscribe(\n (response: BaseQueryData<T>) => {\n if (this.pageIndex !== response.getMeta().meta.count) {\n this.pageIndex++\n } else {\n if (event) event.target.disabled = true;\n }\n // if (this.filterValue)\n // this.data = response.getModels();\n // else\n const rows = [...this.data, ...response.getModels()];\n this.data = rows;\n // this.data = this.data.concat();\n\n if (event) event.target.complete();\n this.isLoading = false;\n })\n }, 700);\n }\n async handleRefresh(event) {\n this.pageIndex = 1\n this.data = [];\n this.loadData();\n event.target.complete();\n }\n onAdd() {\n console.log(this.basePath)\n this.router.navigate([this.basePath + '/add'])\n // this.navCtrl.navigateForward(this.basePath + '/add');\n }\n editModel(model: BaseModelFormly) {\n if (this.canEdit)\n this.router.navigate([this.basePath + '/edit/', model.id]);\n // this.navCtrl.navigateForward(this.basePath + '/edit/' + model.id);\n }\n getListLayout() {\n if (!this.model) {\n this.model = this.modelService.newModel(); \n }\n this.allColumns=[];\n this.columns=[];\n this.allColumns = Reflect.getMetadata('IonicDataTableLayout', this.model).map((item: IonicDataTableLayoutConfig) => {\n if (!item.isTranslated) {\n item.name = this.translate.instant(item.name);\n item.isTranslated = true\n }\n return item;\n });\n\n this.allColumns.sort((a, b) => a.order - b.order);\n\n if (this.canDelete || this.canEdit) {\n this.allColumns.push({\n cellTemplate: this.actionsTmpl,\n name: '',\n cellClass: 'actions-cell',\n draggable: false,\n sortable: false,\n visible: true\n // width: 100,\n // maxWidth: 100,\n // minWidth: 100\n })\n }\n this.columns = this.allColumns.filter((item: IonicDataTableLayoutConfig) => item.visible);\n // Sort the columns array by the order property\n\n }\n deleteModel(model) {\n const msg = 'Do you want to delete ' + model[this.deletePropertyName] + '?';\n this.dialogService.confirm(msg).then(\n (value: any) => {\n if (value.data) {\n this.modelService.delete(model.id).subscribe(() => {\n const tempData = [];\n // this.selectedObject.emit(null);\n this.data.map((item) => {\n if (item.id !== model.id) {\n tempData.push(item);\n }\n });\n this.data = tempData;\n });\n }\n }\n )\n }\n\n deleteEnabled(model: T) {\n if (this.canDelete) {\n if (this.deleteDisableRule) {\n return this.evaluateRule(this.deleteDisableRule, model);\n } else {\n return true;\n }\n } else {\n return false;\n }\n }\n private evaluateRule(rules: Rule[], model: T): boolean {\n let result = true;\n rules.forEach(rule => {\n let jsonRule: any;\n if (typeof rule.rule === 'string') {\n jsonRule = JSON.parse(rule.rule);\n } else {\n jsonRule = rule.rule;\n }\n if (rule.parameters) {\n const data = '{' + rule.parameters.map((item: string) => {\n return '\"' + item + '\":\"' + model[item] + '\"';\n }).join(',') + '}';\n result = jsonLogic.apply(jsonRule, JSON.parse(data));\n } else {\n result = jsonLogic.apply(jsonRule);\n }\n });\n return result;\n }\n\n\n}\n","<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ngx-datatable class=\"material fullscreen rls-server-scrolling\" style=\"top: 115px\" [rows]=\"data\" [columns]=\"columns\"\n [columnMode]=\"ColumnMode.standard\" [headerHeight]=\"headerHeight\" [rowHeight]=\"rowHeight\" [scrollbarV]=\"true\"\n [loadingIndicator]=\"isLoading\" [scrollbarH]=\"true\" (scroll)=\"onScroll($event.offsetY)\"\n >\n </ngx-datatable>\n \n <ng-template #actionsTmpl let-row=\"row\" let-value=\"value\">\n <ion-button fill=\"clear\" *ngIf=\"canEdit\" (click)='editModel(row)'>\n <ion-icon slot=\"icon-only\" name=\"create\" (click)='editModel(row)'></ion-icon>\n </ion-button>\n <ion-button fill=\"clear\" *ngIf=\"deleteEnabled(row)\" (click)='deleteModel(row)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='deleteModel(row)'></ion-icon>\n </ion-button>\n </ng-template>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\" *ngIf=\"hasAdd\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>","import { DatePipe, DecimalPipe, Location, PercentPipe } from '@angular/common';\nimport { Component, Injector, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationStart, Router, UrlSegment } from '@angular/router';\nimport { LoadingController, NavController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BaseQueryData, BaseService, GridLayoutFormat, Rule } from '@rosoftlab/core';\nimport { BaseModelFormly } from '@rosoftlab/formly';\nimport * as jsonLogic from 'json-logic-js/logic.js';\nimport { IonicListLayoutConfig } from '../../interfaces';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { RslIonicModuleModule } from '../../rsl-ionic-module.module';\nexport declare type SortDirection = 'asc' | 'desc' | '';\n@Component({\n standalone: true,\n selector: 'rsl-ionic-grid',\n templateUrl: './rsl-ionic-grid.component.html', \n imports: [RslIonicModuleModule],\n})\nexport class RslIonicGridComponent<T extends BaseModelFormly, U extends BaseService<T>> implements OnInit {\n public title: string;\n @Input() showSerach: boolean;\n @Input() searchFields: string;\n @Input() customInclude: string;\n @Input() defaultSort: string;\n @Input() defaultSortDirection: SortDirection;\n @Input() deletePropertyName: string;\n @Input() defaultFilter: string;\n @Input() showHeader: boolean;\n @Input() deleteDisableRule: Rule[];\n @Input() model: T;\n @Input() modelService: U\n\n data: any[] = [];\n pageIndex: number = 1;\n pageSize: number = 30\n\n gridLayout: IonicListLayoutConfig[]\n basePath: string;\n constructor(\n public router: Router,\n public route: ActivatedRoute,\n public translate: TranslateService,\n public location: Location,\n private injector: Injector,\n private loadingCtrl: LoadingController,\n private navCtrl: NavController,\n public dialogService: IonicDialogService,\n private datePipe: DatePipe,\n private numberPipe: DecimalPipe,\n private percentPipe: PercentPipe) {\n }\n\n ngOnInit() {\n this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);\n this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSort', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSortDirection', '');\n this.setValueFromSnapshot(this, this.route.snapshot, 'deletePropertyName', 'name');\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultFilter', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'showHeader', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'deleteDisableRule', null);\n\n // this.showSerach = route.snapshot.data['showSerach'] || false;\n // this.searchFields = this.route.snapshot.data['searchFields'] || null;\n\n // this.customInclude = this.route.snapshot.data['customInclude'] || null;\n\n // this.defaultSort = this.route.snapshot.data['defaultSort'] || null;\n // this.defaultSortDirection = this.route.snapshot.data['defaultSortDirection'] || '';\n\n // this.deletePropertyName = this.route.snapshot.data['deletePropertyName'] || 'name';\n // this.defaultFilter = this.route.snapshot.data['defaultFilter'] || null;\n\n if (!this.modelService) {\n const SERVICE_TOKEN = this.route.snapshot.data['requiredService'];\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n }\n this.model = this.modelService.newModel()\n this.title = this.model.modelConfig.formTitle\n this.getListLayout()\n\n const currentUrlSegments: UrlSegment[] = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));\n this.basePath = currentUrlSegments.map(segment => segment.path).join('/');\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n // Navigation to another page is about to occur\n this.data = [];\n this.pageIndex = 1\n // Perform actions or update component as needed\n }\n });\n }\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\n if (component[key] === undefined) {\n let dataFromSnapshot = snapshot.data[key];\n if (!dataFromSnapshot)\n dataFromSnapshot = snapshot.params[key];\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\n }\n }\n async ionViewWillEnter() {\n this.data = [];\n const loading = await this.loadingCtrl.create({\n message: this.translate.instant('General.Loading'),\n spinner: 'circles',\n });\n loading.present();\n this.loadData(null, null, loading);\n }\n async handleChange(event) {\n const loading = await this.loadingCtrl.create({\n message: this.translate.instant('General.Loading'),\n spinner: 'circles',\n });\n loading.present();\n const query = event.target.value.toLowerCase();\n this.pageIndex = 1\n this.loadData(null, query, loading);\n // this.results = this.data.filter((d) => d.toLowerCase().indexOf(query) > -1);\n }\n loadData(event = null, filterValue = undefined, loading = null) {\n const filters = [];\n let sorts = '';\n if (this.defaultSort) {\n if (this.defaultSortDirection === 'desc') {\n sorts = '-' + this.defaultSort;\n } else {\n sorts = this.defaultSort;\n }\n }\n if (this.showSerach) {\n if (filterValue) {\n const y = '(' + this.searchFields.replace(',', '|') + ')';\n filters.push(y + '@=*' + filterValue);\n }\n }\n if (this.defaultFilter) {\n filters.push(this.defaultFilter)\n }\n setTimeout(() => {\n const filtersValue = filters.join(', ');\n this.modelService.getAll(this.pageIndex, this.pageSize, sorts, filtersValue, this.customInclude).subscribe(\n (response: BaseQueryData<T>) => {\n if (this.pageIndex !== response.getMeta().meta.count) {\n this.pageIndex++\n } else {\n if (event) event.target.disabled = true;\n }\n if (filterValue || loading)\n this.data = response.getModels();\n else\n this.data = this.data.concat(response.getModels());\n\n if (event) event.target.complete();\n if (loading)\n loading.dismiss()\n })\n }, 700);\n }\n async handleRefresh(event) {\n const loading = await this.loadingCtrl.create({\n message: this.translate.instant('General.Loading'),\n spinner: 'circles',\n });\n loading.present();\n this.pageIndex = 1\n this.loadData(null, null, loading);\n event.target.complete();\n }\n onAdd() {\n console.log(this.basePath)\n this.navCtrl.navigateForward(this.basePath + '/add');\n }\n editModel(model: BaseModelFormly) {\n this.navCtrl.navigateForward(this.basePath + '/edit/' + model.id);\n }\n getListLayout() {\n if (!this.model) {\n this.model = this.modelService.newModel();\n }\n this.gridLayout = Reflect.getMetadata('IonicListLayout', this.model);\n }\n deleteModel(model) {\n const msg = 'Do you want to delete ' + model[this.deletePropertyName] + '?';\n this.dialogService.confirm(msg).then(\n (value: any) => {\n if (value.data) {\n this.modelService.delete(model.id).subscribe(() => {\n const tempData = [];\n // this.selectedObject.emit(null);\n this.data.map((item) => {\n if (item.id !== model.id) {\n tempData.push(item);\n }\n });\n this.data = tempData;\n });\n }\n }\n )\n }\n getCelValue(row: any, propertyName: string): any {\n if (!row)\n return \"\";\n // if (propertyName == 'kompetenzenStdev')\n // console.log(propertyName);\n if (propertyName.indexOf('.') === -1) {\n var gridLayout = this.gridLayout.find(f => f.key.indexOf(propertyName) > -1);\n return this.getFormatedValue(gridLayout, row[propertyName]);\n } else {\n const prop = propertyName.split('.')[0];\n const subProp = propertyName.replace(prop + '.', '');\n return this.getCelValue(row[prop], subProp);\n }\n }\n private getFormatedValue(gridLayout: IonicListLayoutConfig, value: any) {\n\n if (gridLayout) {\n switch (gridLayout.formating) {\n case GridLayoutFormat.date:\n return this.datePipe.transform(value, gridLayout.customFormat);\n break;\n case GridLayoutFormat.number:\n return this.numberPipe.transform(value, gridLayout.customFormat);\n case GridLayoutFormat.percent:\n const valuePrc = value / 100;\n return this.percentPipe.transform(valuePrc, gridLayout.customFormat);\n default:\n return value;\n break;\n }\n }\n return value;\n }\n\n deleteEnabled(model: T) {\n if (this.deleteDisableRule) {\n return this.evaluateRule(this.deleteDisableRule, model);\n } else {\n return true;\n }\n }\n private evaluateRule(rules: Rule[], model: T): boolean {\n let result = true;\n rules.forEach(rule => {\n let jsonRule: any;\n if (typeof rule.rule === 'string') {\n jsonRule = JSON.parse(rule.rule);\n } else {\n jsonRule = rule.rule;\n }\n if (rule.parameters) {\n const data = '{' + rule.parameters.map((item: string) => {\n return '\"' + item + '\":\"' + model[item] + '\"';\n }).join(',') + '}';\n result = jsonLogic.apply(jsonRule, JSON.parse(data));\n } else {\n result = jsonLogic.apply(jsonRule);\n }\n });\n return result;\n }\n}\n","<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ion-list>\n <ng-container *ngFor=\"let item of data\">\n <ion-item-sliding>\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n <ion-item-options *ngIf=\"deleteEnabled(item)\" side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\" (click)='deleteModel(item)'></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ng-container>\n </ion-list>\n <ion-infinite-scroll threshold=\"100px\" (ionInfinite)=\"loadData($event)\">\n <ion-infinite-scroll-content loadingSpinner=\"bubbles\" loadingText=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>\n\n<ng-template #listItem let-item='item'>\n <ion-item button (click)='editModel(item)'>\n <ion-label>\n <ng-container *ngFor=\"let row of gridLayout\">\n <h2 *ngIf=\"row.primary\"> {{getCelValue(item,row.key)}} </h2>\n <h3 *ngIf=\"!row.primary\">{{getCelValue(item,row.key)}} </h3>\n </ng-container>\n </ion-label>\n </ion-item>\n</ng-template>","\nimport { TableColumn } from '@swimlane/ngx-datatable';\nimport { } from 'reflect-metadata';\nexport interface IonicDataTableLayoutConfig extends TableColumn {\n order?: number;\n visible?: boolean;\n isTranslated?: boolean;\n}\nexport function IonicDataTableLayout(config: IonicDataTableLayoutConfig) {\n return (target: any, propertyName: string) => {\n const annotations = Reflect.getMetadata('IonicDataTableLayout', target) || [];\n config.prop = propertyName;\n config.visible = config.visible === undefined ? true : config.visible;\n annotations.push(config);\n\n Reflect.defineMetadata('IonicDataTableLayout', annotations, target);\n };\n}\n","import { } from 'reflect-metadata';\nimport { IonicListLayoutConfig } from '../interfaces/ionic-list-layout-config';\nexport function IonicListLayout(config: IonicListLayoutConfig) {\n return (target: any, propertyName: string) => {\n const annotations = Reflect.getMetadata('IonicListLayout', target) || [];\n config.key = propertyName;\n annotations.push(config);\n\n Reflect.defineMetadata('IonicListLayout', annotations, target);\n };\n}\n","/*\n * Public API Surface of ionic\n */\n\nexport * from './lib/components';\nexport * from './lib/decorators';\nexport * from './lib/interfaces';\nexport * from './lib/ionic-dialog.service';\nexport * from './lib/translate.extension';\nexport * from './lib/types';\nexport * from './lib/validators';\nexport * from './lib/wrappers';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","COMMON_MODULES","i1.IonicDialogService","i3","i4","i5","i2","i3.IonicDialogService","i6","i7","i8","i5.IonicDialogService"],"mappings":"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"}
1
+ {"version":3,"file":"rosoftlab-ionic.mjs","sources":["../../../../projects/rosoftlab/ionic/src/lib/ionic-dialog.service.ts","../../../../projects/rosoftlab/ionic/src/lib/translate.extension.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/wrappers.module.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-sm-buttons/ionic-sm-buttons.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-sm-buttons/ionic-sm-buttons.component.html","../../../../projects/rosoftlab/ionic/src/lib/types/repeat-datatable/repeat-datatable.component.ts","../../../../projects/rosoftlab/ionic/src/lib/types/repeat-datatable/repeat-datatable.component.html","../../../../projects/rosoftlab/ionic/src/lib/types/repeat/repeat-section.type.ts","../../../../projects/rosoftlab/ionic/src/lib/types/repeat/repeat-section.html","../../../../projects/rosoftlab/ionic/src/lib/validators/must-match.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/accordion-wrapper.component.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/panel-wrapper.component.ts","../../../../projects/rosoftlab/ionic/src/lib/rsl-ionic-module.module.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-crud.component/rsl-ionic-crud.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-crud.component/rsl-ionic-crud.component.html","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-data-table/rsl-ionic-data-table.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-data-table/rsl-ionic-data-table.component.html","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-grid/rsl-ionic-grid.component.ts","../../../../projects/rosoftlab/ionic/src/lib/components/rsl-ionic-grid/rsl-ionic-grid.component.html","../../../../projects/rosoftlab/ionic/src/lib/decorators/ionic-datatable-layout.ts","../../../../projects/rosoftlab/ionic/src/lib/decorators/ionic-list.decorator.ts","../../../../projects/rosoftlab/ionic/src/public-api.ts","../../../../projects/rosoftlab/ionic/src/rosoftlab-ionic.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AlertController } from '@ionic/angular';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IonicDialogService {\n\n constructor(private alertController: AlertController) { }\n async confirm(message?: string, title?: string,\n confirmButtonText: string = 'Delete',\n cancelButtonText: string = 'Cancel'): Promise<boolean> {\n let choice\n const alert = await this.alertController.create({\n header: title,\n subHeader: message,\n buttons: [{\n text: cancelButtonText,\n handler: () => {\n alert.dismiss(false)\n return false\n }\n }, {\n text: confirmButtonText,\n handler: () => {\n alert.dismiss(true);\n return true;\n }\n }]\n });\n\n await alert.present();\n await alert.onDidDismiss().then((data) => {\n choice = data\n })\n return choice\n\n }\n async showSaveMessage(message?: string, title?: string) {\n const alert = await this.alertController.create({\n header: title,\n subHeader: message,\n buttons: ['OK']\n });\n\n await alert.present();\n\n }\n\n}\n","import { FormlyExtension, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport class TranslateExtension implements FormlyExtension {\r\n constructor(private translate: TranslateService) { }\r\n prePopulate(field: FormlyFieldConfig) {\r\n const props = field.props || {};\r\n if (!props['translate'] || props['_translated']) {\r\n return;\r\n }\r\n\r\n props['_translated'] = true;\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.label': this.translate.stream(props.label),\r\n };\r\n if (props.placeholder) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.placeholder': this.translate.stream(props.placeholder)\r\n };\r\n }\r\n if (props.description) {\r\n field.expressions = {\r\n ...(field.expressions || {}),\r\n 'props.description': this.translate.stream(props.description)\r\n };\r\n }\r\n }\r\n}\r\n\r\nexport function registerTranslateExtension(translate: TranslateService) {\r\n return {\r\n validationMessages: [\r\n {\r\n name: 'required',\r\n message(error: any, field: FormlyFieldConfig) {\r\n // console.log(field);\r\n return translate.stream('General.Field.Required', { field: field.props.label });\r\n },\r\n },\r\n ],\r\n extensions: [\r\n {\r\n name: 'translate',\r\n extension: new TranslateExtension(translate),\r\n }\r\n ],\r\n };\r\n}","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';\nimport { FormlyIonicModule } from '@ngx-formly/ionic';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { SmActionService } from '@rosoftlab/statemachine';\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\nimport { registerTranslateExtension } from '../translate.extension';\n\nconst COMMON_MODULES = [\n CommonModule,\n IonicModule,\n ReactiveFormsModule,\n FormlyIonicModule,\n NgxDatatableModule\n];\n\n@NgModule({\n imports: [\n ...COMMON_MODULES,\n TranslateModule\n ],\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },\n SmActionService\n ],\n exports: [\n ...COMMON_MODULES,\n FormlyModule,\n TranslateModule\n ],\n})\nexport class WrappersModule { }\n","import { Component, OnInit, Type } from '@angular/core';\nimport { FieldType, FieldTypeConfig, FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\nimport { FormlyFieldInput } from '@ngx-formly/ionic/input';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SmAction, SmActionService, State, StateService } from '@rosoftlab/statemachine';\nimport { Observable } from 'rxjs';\nimport { WrappersModule } from '../../wrappers/wrappers.module';\ninterface InputProps extends FormlyFieldProps { }\n\nexport interface FormlyInputFieldConfig extends FormlyFieldConfig<InputProps> {\n type: 'input' | Type<FormlyFieldInput>;\n}\n@Component({\n standalone: true,\n selector: 'app-ionic-sm-buttons',\n templateUrl: './ionic-sm-buttons.component.html',\n styleUrls: ['./ionic-sm-buttons.component.css'],\n imports: [\n WrappersModule\n ]\n})\nexport class RslIonicSmButtonsComponent extends FieldType<FieldTypeConfig<InputProps>> implements OnInit {\n smActions$: Observable<SmAction[]>\n currentState: State;\n\n objectType: string;\n objectId: string;\n constructor(\n public smActionService: SmActionService,\n private stateService: StateService,\n public translate: TranslateService) {\n super()\n }\n ngOnInit() {\n this.objectType = this.props.attributes['objectType'] as string\n this.objectId = this.field.parent.model.id\n this.loadCurrentState(this.field.model.currentStateId);\n this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType)\n // console.log(this.field)\n }\n executeAction(action: SmAction) {\n // this.currentState = null\n // this.smActions$ = null\n // console.log(action.actionID)\n this.smActionService.executeAction(this.objectId, this.objectType, action.actionID, \"\")\n .subscribe(\n response => {\n // console.log(response)\n if (this.field.props['onStateCahnged'])\n this.field.props['onStateCahnged']({ model: this.field.parent.model, response });\n this.model['currentStateId'] = response.currentStateId\n this.smActionService.getActions(this.objectId, this.objectType)\n\n this.options.resetModel()\n // this.field.formControl.updateValueAndValidity() \n this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType)\n // //this.smActions = []\n this.loadCurrentState(response.currentStateId);\n }\n )\n // console.log(action);\n }\n loadCurrentState(stateId: any) {\n this.stateService.get(stateId).subscribe(\n state => this.currentState = state\n )\n }\n getColor(action: SmAction) {\n if (action.props) {\n return action.props[\"Color\"] ? action.props[\"Color\"] : \"primary\";\n }\n return \"primary\"\n }\n getCurrentState() {\n return this.translate.instant('General.State.CurrentState', { field: this.currentState.name });\n }\n}\n","<!-- <ion-input [type]=\"props.type || 'text'\" [formControl]=\"formControl\" [ionFormlyAttributes]=\"field\"></ion-input> -->\n\n<!-- <p>Sync</p>\n<ion-list>\n <ion-button *ngFor=\"let action of smActions\" color=\"{{getColor(action)}}\" (click)=\"executeAction(action)\">\n {{action.buttonTranslationKey |translate}}\n </ion-button>\n</ion-list> -->\n<ion-label *ngIf=\"currentState\">{{ getCurrentState() }}</ion-label>\n<ion-list>\n <ion-button *ngFor=\"let action of smActions$ | async \" color=\"{{getColor(action)}}\" (click)=\"executeAction(action)\">\n {{action.buttonTranslationKey |translate}}\n <!-- - {{action.actionID}} -->\n </ion-button>\n</ion-list>","import { Component, ElementRef, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldArrayType, FormlyFieldConfig } from '@ngx-formly/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ColumnMode, SelectionType, TableColumn } from '@swimlane/ngx-datatable';\nimport { FileSaverService } from 'ngx-filesaver';\nimport * as XLSX from 'xlsx';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { WrappersModule } from '../../wrappers/wrappers.module';\ninterface SearchProp {\n showSerach: boolean\n searchProp: string\n}\ninterface ExportDataProp {\n propertiesToExport: string[]\n sheetName: string;\n fileName: string;\n}\ninterface ImportDataProp {\n keyProp: string\n propertiesToImport: string[]\n}\n@Component({\n standalone: true,\n selector: 'app-repeat-datatable',\n templateUrl: './repeat-datatable.component.html',\n styleUrls: ['./repeat-datatable.component.scss'],\n imports: [\n WrappersModule\n ]\n})\nexport class RepeatDatatableComponent extends FieldArrayType implements OnInit {\n /**\n *\n */\n @ViewChild('fileInput') fileInput: ElementRef;\n @ViewChild('defaultColumn', { static: true }) public defaultColumn: TemplateRef<any>;\n @ViewChild('actionsTmpl', { static: true }) actionsTmpl: TemplateRef<any>;\n\n data: FormlyFieldConfig[] = null;\n serach: SearchProp = null;\n showSerach: boolean = false;\n deleteMessage: string\n deleteButton: string\n cancelButton: string\n filterValue: string = null;\n typeKey: string;\n importDataProp: ImportDataProp = null;\n exportDataProp: ExportDataProp = null;\n\n ColumnMode = ColumnMode;\n SelectionType = SelectionType;\n constructor(\n public dialogService: IonicDialogService,\n public translate: TranslateService,\n private fileSaverService: FileSaverService) {\n super();\n this.deleteMessage = this.translate.instant(\"General.Delete.Question\")\n this.deleteButton = this.translate.instant(\"General.Delete.Button\")\n this.cancelButton = this.translate.instant(\"General.Cancel.Button\")\n\n }\n override add(i?: number, initialModel?: any) {\n initialModel = {}\n this.props['columns'].forEach(column => initialModel[column.prop] = null)\n super.add(i, initialModel);\n }\n override remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n this.dialogService.confirm(this.deleteMessage, null, this.deleteButton, this.cancelButton).then(\n (value: any) => {\n if (value.data) {\n var onDelete = this.field.props['onDelete'];\n if (onDelete) {\n onDelete(this.field.fieldGroup[i].model).subscribe(\n () => {\n super.remove(i);\n }\n )\n }\n super.remove(i);\n }\n }\n )\n }\n ngOnInit() {\n this.props['columns'].forEach(column => column.cellTemplate = this.defaultColumn);\n this.props['columns'].push({\n cellTemplate: this.actionsTmpl,\n name: '',\n cellClass: 'actions-cell',\n draggable: false,\n sortable: false,\n visible: true,\n width: 75,\n maxWidth: 75,\n minWidth: 75\n })\n this.typeKey = this.field.key as string\n this.serach = this.props['search']\n this.exportDataProp = this.props['export'] || null\n this.importDataProp = this.props['import'] || null\n if (this.serach) {\n this.showSerach = this.serach.showSerach\n }\n\n }\n getField(field: FormlyFieldConfig, column: TableColumn, rowIndex: number): FormlyFieldConfig {\n return field.fieldGroup[rowIndex].fieldGroup.find(f => f.key === column.prop);\n }\n postPopulate(field: any) {\n if (this.showSerach) {\n this.data = field.fieldGroup\n if (this.filterValue) {\n this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue))\n }\n }\n }\n handleChange(event) {\n if (this.showSerach) {\n if (this.data == null && this.field.fieldGroup !== null) {\n this.data = this.field.fieldGroup\n }\n this.filterValue = event.target.value.toLowerCase();\n this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue))\n }\n }\n importData() {\n this.fileInput.nativeElement.click();\n }\n async handleImportFile(event: any) {\n const file = event.target.files[0];\n\n if (file) {\n try {\n\n\n const fileContents = await this.readFileAsync(file);\n // Handle the file contents here (e.g., display or process the data)\n const wb: XLSX.WorkBook = XLSX.read(fileContents)//, { type: 'binary' });\n const wsname: string = wb.SheetNames[0];\n const ws: XLSX.WorkSheet = wb.Sheets[wsname];\n const excelData = XLSX.utils.sheet_to_json(ws)//, { header: 1 });\n excelData.forEach(element => {\n const jsonX = this.getValueFromJsonData(element, this.importDataProp.keyProp)\n const idx = this.field.parent.model[this.typeKey].findIndex(f => f[this.importDataProp.keyProp] === jsonX)\n if (idx >= 0) {\n const existingdata = this.field.parent.model[this.typeKey][idx]\n for (const prop of this.importDataProp.propertiesToImport) {\n const jsonVal = this.getValueFromJsonData(element, prop)\n if (existingdata[prop] !== jsonVal) {\n var fieldControl = this.field.fieldGroup[idx].formControl as FormGroup\n fieldControl.controls[prop].setValue(jsonVal)\n }\n }\n } else {\n super.add(null, element)\n }\n });\n\n } catch (error) {\n console.error('Error reading the file:', error);\n }\n }\n }\n\n exportData() {\n\n // Filter the data to include only the specified properties\n const filteredData = this.field.parent.model[this.typeKey].map(item => {\n const filteredItem: any = {};\n for (const prop of this.exportDataProp.propertiesToExport) {\n filteredItem[prop] = item[prop];\n }\n return filteredItem;\n });\n\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(filteredData);\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(wb, ws, this.exportDataProp.sheetName);\n\n const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\n\n const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n this.fileSaverService.save(blob, this.exportDataProp.fileName);\n }\n\n getValueFromJsonData(jsonData: any, key: string): any {\n // Convert the key and all JSON keys to lowercase\n const lowercaseKey = key.toLowerCase();\n const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());\n\n // Find the lowercase key in the lowercase keys array\n const index = lowercaseKeys.indexOf(lowercaseKey);\n\n // If found, use the original (proper case) key to access the value\n if (index !== -1) {\n const originalKey = Object.keys(jsonData)[index];\n return jsonData[originalKey];\n }\n\n // Key not found\n return undefined;\n }\n private readFileAsync(file: File): Promise<any> {\n return new Promise<any>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (event: any) => {\n resolve(event.target.result);\n };\n\n reader.onerror = (event: any) => {\n reject(event.target.error);\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n}","<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ng-template #header>\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\n\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\n </ion-button>\n\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\n </ion-button>\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\n\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ngx-datatable #table class=\"material fullscreen rls-server-scrolling\" [rows]=\"model\" [columns]=\"props['columns']\" [columnMode]=\"props['columnMode']\"\n [rowHeight]=\"props['rowHeight']\" [headerHeight]=\"props['headerHeight']\" [footerHeight]=\"props['footerHeight']\" [limit]=\"props['limit']\"\n [scrollbarH]=\"props['scrollbarH']\" [reorderable]=\"props['reorderable']\" [externalSorting]=\"true\">\n <ng-template #defaultColumn ngx-datatable-cell-template let-rowIndex=\"rowIndex\" let-value=\"value\" let-row=\"row\"\n let-column=\"column\">\n <formly-field class=\"formly-ion-list-item\" [field]=\"getField(field, column, rowIndex)\"></formly-field>\n </ng-template>\n</ngx-datatable>\n\n<ng-template #actionsTmpl let-row=\"row\" let-value=\"value\" let-rowIndex=\"rowIndex\">\n <ion-button style=\"height: 100%;\" fill=\"clear\"[disabled]=\"props.disabled\" (click)='remove(rowIndex)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='remove(rowIndex)'></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>","import { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FieldArrayType, FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { getValueFromJsonData, readFileAsync } from '@rosoftlab/core';\r\nimport { FileSaverService } from 'ngx-filesaver';\r\nimport * as XLSX from 'xlsx';\r\nimport { IonicDialogService } from '../../ionic-dialog.service';\r\nimport { WrappersModule } from '../../wrappers/wrappers.module';\r\n\r\ninterface SearchProp {\r\n showSerach: boolean\r\n searchProp: string\r\n}\r\ninterface ExportDataProp {\r\n propertiesToExport: string[]\r\n sheetName: string;\r\n fileName: string;\r\n}\r\ninterface ImportDataProp {\r\n keyProp: string\r\n propertiesToImport: string[]\r\n}\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n standalone: true,\r\n selector: 'formly-repeat-section',\r\n templateUrl: './repeat-section.html',\r\n styleUrls: ['./repeat-section.scss'],\r\n imports: [\r\n WrappersModule\r\n ]\r\n})\r\nexport class RepeatTypeComponent extends FieldArrayType {\r\n /**\r\n *\r\n */\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n data: FormlyFieldConfig[] = null;\r\n serach: SearchProp = null;\r\n showSerach: boolean = false;\r\n deleteMessage: string\r\n deleteButton: string\r\n cancelButton: string\r\n filterValue: string = null;\r\n typeKey: string;\r\n importDataProp: ImportDataProp = null;\r\n exportDataProp: ExportDataProp = null;\r\n constructor(\r\n public dialogService: IonicDialogService,\r\n public translate: TranslateService,\r\n private fileSaverService: FileSaverService) {\r\n super();\r\n this.deleteMessage = this.translate.instant(\"General.Delete.Question\")\r\n this.deleteButton = this.translate.instant(\"General.Delete.Button\")\r\n this.cancelButton = this.translate.instant(\"General.Cancel.Button\")\r\n\r\n }\r\n override remove(i: number, { markAsDirty } = { markAsDirty: true }) {\r\n this.dialogService.confirm(this.deleteMessage, null, this.deleteButton, this.cancelButton).then(\r\n (value: any) => {\r\n if (value.data) {\r\n var onDelete = this.field.props['onDelete'];\r\n if (onDelete) {\r\n onDelete(this.field.fieldGroup[i].model).subscribe(\r\n () => {\r\n super.remove(i);\r\n }\r\n )\r\n }\r\n super.remove(i);\r\n }\r\n }\r\n )\r\n }\r\n ngOnInit() {\r\n this.typeKey = this.field.key as string\r\n this.serach = this.props['search']\r\n this.exportDataProp = this.props['export'] || null\r\n this.importDataProp = this.props['import'] || null\r\n if (this.serach) {\r\n this.showSerach = this.serach.showSerach\r\n }\r\n\r\n }\r\n postPopulate(field: any) {\r\n if (this.showSerach) {\r\n this.data = field.fieldGroup\r\n if (this.filterValue) {\r\n this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue))\r\n }\r\n }\r\n }\r\n handleChange(event) {\r\n if (this.showSerach) {\r\n if (this.data == null && this.field.fieldGroup !== null) {\r\n this.data = this.field.fieldGroup\r\n }\r\n this.filterValue = event.target.value.toLowerCase();\r\n this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue))\r\n }\r\n }\r\n importData() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n async handleImportFile(event: any) {\r\n const file = event.target.files[0];\r\n\r\n if (file) {\r\n try {\r\n\r\n\r\n const fileContents = await readFileAsync(file);\r\n // Handle the file contents here (e.g., display or process the data)\r\n const wb: XLSX.WorkBook = XLSX.read(fileContents)//, { type: 'binary' });\r\n const wsname: string = wb.SheetNames[0];\r\n const ws: XLSX.WorkSheet = wb.Sheets[wsname];\r\n const excelData = XLSX.utils.sheet_to_json(ws)//, { header: 1 });\r\n excelData.forEach(element => {\r\n const jsonX = getValueFromJsonData(element, this.importDataProp.keyProp)\r\n const idx = this.field.parent.model[this.typeKey].findIndex(f => f[this.importDataProp.keyProp] === jsonX)\r\n if (idx >= 0) {\r\n const existingdata = this.field.parent.model[this.typeKey][idx]\r\n for (const prop of this.importDataProp.propertiesToImport) {\r\n const jsonVal = getValueFromJsonData(element, prop)\r\n if (existingdata[prop] !== jsonVal) {\r\n var fieldControl = this.field.fieldGroup[idx].formControl as FormGroup\r\n fieldControl.controls[prop].setValue(jsonVal)\r\n }\r\n }\r\n } else {\r\n super.add(null, element)\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.error('Error reading the file:', error);\r\n }\r\n }\r\n }\r\n\r\n exportData() {\r\n\r\n // Filter the data to include only the specified properties\r\n const filteredData = this.field.parent.model[this.typeKey].map(item => {\r\n const filteredItem: any = {};\r\n for (const prop of this.exportDataProp.propertiesToExport) {\r\n filteredItem[prop] = item[prop];\r\n }\r\n return filteredItem;\r\n });\r\n\r\n const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(filteredData);\r\n const wb: XLSX.WorkBook = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(wb, ws, this.exportDataProp.sheetName);\r\n\r\n const excelBuffer: any = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });\r\n\r\n const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\r\n this.fileSaverService.save(blob, this.exportDataProp.fileName);\r\n }\r\n\r\n // getValueFromJsonData(jsonData: any, key: string): any {\r\n // // Convert the key and all JSON keys to lowercase\r\n // const lowercaseKey = key.toLowerCase();\r\n // const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());\r\n\r\n // // Find the lowercase key in the lowercase keys array\r\n // const index = lowercaseKeys.indexOf(lowercaseKey);\r\n\r\n // // If found, use the original (proper case) key to access the value\r\n // if (index !== -1) {\r\n // const originalKey = Object.keys(jsonData)[index];\r\n // return jsonData[originalKey];\r\n // }\r\n\r\n // // Key not found\r\n // return undefined;\r\n // }\r\n // private readFileAsync(file: File): Promise<any> {\r\n // return new Promise<any>((resolve, reject) => {\r\n // const reader = new FileReader();\r\n\r\n // reader.onload = (event: any) => {\r\n // resolve(event.target.result);\r\n // };\r\n\r\n // reader.onerror = (event: any) => {\r\n // reject(event.target.error);\r\n // };\r\n\r\n // reader.readAsArrayBuffer(file);\r\n // });\r\n // }\r\n}","<ion-header [translucent]=\"true\">\r\n <ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\r\n </ion-toolbar>\r\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\r\n</ion-header>\r\n\r\n<ng-template #header>\r\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\r\n\r\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\r\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\r\n </ion-button>\r\n\r\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\r\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n </ion-button>\r\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\r\n\r\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\r\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\r\n </ion-button>\r\n</ng-template>\r\n\r\n\r\n<ion-list lines=\"full\">\r\n <ion-item *ngFor=\"let field of field.fieldGroup; let i = index\" class=\"row align-items-baseline\">\r\n <formly-field class=\"formly-ion-list-item\" [field]=\"field\"></formly-field>\r\n <ion-button [disabled]=\"props.disabled\" color=\"danger\" slot=\"end\" (click)='remove(i)'>\r\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\r\n </ion-button>\r\n </ion-item>\r\n</ion-list>\r\n\r\n\r\n<ng-template #search>\r\n <ion-toolbar *ngIf=\"showSerach\">\r\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\r\n </ion-toolbar>\r\n</ng-template>","import { AbstractControl } from '@angular/forms';\n\nexport function fieldMatchValidator(control: AbstractControl) {\n const { password, confirmPassword } = control.value;\n\n // avoid displaying the message error when values are empty\n if (!confirmPassword || !password) {\n return null;\n }\n\n if (confirmPassword === password) {\n return null;\n }\n\n return { fieldMatch: { message: 'Fields.Not.Matching' } };\n}","import { Component } from '@angular/core';\r\nimport { FieldWrapper } from '@ngx-formly/core';\r\nimport { WrappersModule } from './wrappers.module';\r\n\r\n@Component({\r\n standalone: true,\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'formly-accordion-panel',\r\n template: `\r\n\r\n <ion-accordion-group [value]=\"['first']\">\r\n <ion-accordion value=\"first\">\r\n <ion-item slot=\"header\">\r\n <ion-card-title>{{ props.label}}</ion-card-title>\r\n </ion-item>\r\n <div class=\"ion-padding\" slot=\"content\">\r\n <ng-container #fieldComponent></ng-container>\r\n </div>\r\n </ion-accordion>\r\n </ion-accordion-group>\r\n\r\n\r\n \r\n `,\r\n imports: [WrappersModule]\r\n})\r\nexport class AccordionWrapperComponent extends FieldWrapper { }\r\n","import { Component } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\nimport { WrappersModule } from './wrappers.module';\n\n@Component({\n standalone: true,\n selector: 'formly-wrapper-panel',\n template: `\n <ion-card>\n <ion-card-header>\n <ion-card-title>{{ props.label}}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ng-container #fieldComponent></ng-container>\n </ion-card-content>\n </ion-card>\n `,\n imports: [WrappersModule]\n})\nexport class PanelWrapperComponent extends FieldWrapper { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';\nimport { FormlyIonicModule } from '@ngx-formly/ionic';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { NgxDatatableModule } from '@swimlane/ngx-datatable';\nimport { RslIonicSmButtonsComponent } from './components/rsl-ionic-sm-buttons/ionic-sm-buttons.component';\nimport { IonicDialogService } from './ionic-dialog.service';\nimport { registerTranslateExtension } from './translate.extension';\nimport { RepeatDatatableComponent } from './types/repeat-datatable/repeat-datatable.component';\nimport { RepeatTypeComponent } from './types/repeat/repeat-section.type';\nimport { fieldMatchValidator } from './validators/must-match';\nimport { AccordionWrapperComponent } from './wrappers/accordion-wrapper.component';\nimport { PanelWrapperComponent } from './wrappers/panel-wrapper.component';\nconst COMMON_MODULES = [\n CommonModule,\n IonicModule,\n ReactiveFormsModule,\n FormlyIonicModule,\n NgxDatatableModule\n];\n\n@NgModule({\n imports: [\n ...COMMON_MODULES,\n TranslateModule,\n FormlyModule.forRoot({\n types: [\n { name: 'repeat', component: RepeatTypeComponent },\n { name: 'repeat-data-table', component: RepeatDatatableComponent },\n { name: 'sm-buttons', component: RslIonicSmButtonsComponent }\n ],\n validators: [{ name: 'fieldMatch', validation: fieldMatchValidator }],\n wrappers: [\n { name: 'panel', component: PanelWrapperComponent },\n { name: 'accordion', component: AccordionWrapperComponent }],\n validationMessages: [\n { name: 'required', message: 'This field is required' },\n ],\n }),\n ],\n providers: [\n IonicDialogService,\n { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },\n ],\n exports: [\n ...COMMON_MODULES,\n FormlyModule,\n TranslateModule\n ],\n})\nexport class RslIonicModuleModule { }\n","import { Location } from '@angular/common';\nimport { Component, Injector, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\nimport { FormlyJsonschema } from '@ngx-formly/core/json-schema';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BaseModelFormly, BaseServiceFormly } from '@rosoftlab/formly';\nimport * as _ from 'lodash';\nimport { Observable, from } from 'rxjs';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { RslIonicModuleModule } from '../../rsl-ionic-module.module';\n@Component({\n standalone: true,\n selector: 'rslc-ionic-crud',\n templateUrl: './rsl-ionic-crud.component.html',\n styleUrls: ['./rsl-ionic-crud.component.css'],\n imports: [RslIonicModuleModule]\n\n})\nexport class GenericIonicCrudComponent<T extends BaseModelFormly, U extends BaseServiceFormly<T>> implements OnInit {\n baseForm: UntypedFormGroup;\n modelId: string;\n model: T;\n origModel: T;\n isEdit: boolean;\n isLoading = true;\n cancelRoute: string;\n editRoute: string;\n modelService: U\n public changeUrlRoute: boolean = true;\n public title: string;\n fields: FormlyFieldConfig[]\n options: FormlyFormOptions = {};\n //#region Dialog messages\n confirmQuestion: string\n confirmButton: string\n saveMessage: string\n //#endregion\n constructor(\n public fb: UntypedFormBuilder,\n public router: Router,\n public route: ActivatedRoute,\n public dialogService: IonicDialogService,\n public translate: TranslateService,\n public location: Location,\n private injector: Injector,\n private formlyJsonschema: FormlyJsonschema,\n ) {\n\n const SERVICE_TOKEN = route.snapshot.data['requiredService'];\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n this.confirmQuestion = this.translate.instant('General.Discard.Question');\n this.confirmButton = this.translate.instant('General.Discard.ConfirmButton');\n this.saveMessage = this.translate.instant('General.Save.Message');\n }\n\n ionViewWillLeave() {\n this.options.resetModel()\n this.baseForm.reset();\n }\n\n public afterSave(model: T): Observable<T> {\n return new Observable((observer) => {\n observer.next(model);\n observer.complete();\n });\n }\n\n public beforeSave(model: T): Observable<T> {\n return new Observable((observer) => {\n observer.next(model);\n observer.complete();\n });\n }\n\n ngOnInit() {\n this.initForm();\n }\n initForm(customInclude: string = '', newModelId: string = null, model: T = null) {\n if (model === null) {\n this.modelId = this.route.snapshot.paramMap.get('id') ?? newModelId;\n this.isEdit = false;\n if (this.modelId) {\n this.modelService.get(this.modelId, customInclude).subscribe((value: T) => {\n this.isEdit = true;\n this.generateForm(value)\n }\n );\n } else {\n if (this.changeUrlRoute) {\n const addUrl = this.router.createUrlTree([]).toString();\n this.editRoute = this.router.createUrlTree([addUrl.replace('add', 'edit')]).toString();\n }\n // }\n this.generateForm(this.modelService.newModel());\n }\n } else {\n this.modelId = model.id;\n this.isEdit = true;\n this.generateForm(model)\n }\n }\n generateForm(model?: T) {\n this.isLoading = false;\n this.modelId = model.id;\n this.model = model;\n this.origModel = _.cloneDeep(model);;\n this.title = this.model.modelConfig.formTitle\n this.baseForm = new UntypedFormGroup({});//= this.modelService.toFormGroup(this.fb, model);\n this.afterFormGenerated();\n this.fields = this.modelService.getFormlyFields(this.model)\n }\n public afterFormGenerated() {\n\n }\n private getFromGroup(formGroup: UntypedFormGroup | string = null): UntypedFormGroup {\n if (!formGroup)\n return this.baseForm;\n if (formGroup instanceof UntypedFormGroup)\n return formGroup;\n return this.baseForm.controls[formGroup] as UntypedFormGroup;\n }\n validateAllFormFields(formGroup: UntypedFormGroup | string = null) {\n const fg = this.getFromGroup(formGroup)\n Object.keys(fg.controls).forEach(field => {\n // console.log(field);\n const control = fg.get(field);\n if (control instanceof UntypedFormControl) {\n control.markAsTouched({ onlySelf: true });\n } else if (control instanceof UntypedFormGroup) {\n this.validateAllFormFields(control);\n }\n });\n }\n isFieldValid(field: string, formGroup: UntypedFormGroup | string = null) {\n const fg = this.getFromGroup(formGroup)\n const filedControl = fg.get(field)\n return !filedControl.valid && filedControl.touched;\n }\n\n isFieldValidFromArray(arrayIndex: number, field: string, arrayName: string = 'formArray') {\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\n return !fieldControl.valid && fieldControl.touched;\n }\n\n displayFieldCss(field: string) {\n return {\n 'has-error': this.isFieldValid(field),\n 'has-feedback': this.isFieldValid(field)\n };\n }\n onCancel() {\n this.router.navigate([this.cancelRoute]);\n }\n onSave() {\n this.saveModel(this.baseForm)\n }\n onSubmit(model) {\n this.saveModel(this.baseForm)\n }\n\n saveModel(formGroup: UntypedFormGroup | string = null) {\n const fg = this.getFromGroup(formGroup)\n const that = this;\n if (fg) {\n if (fg.valid) {\n this.beforeSave(this.model).subscribe(_ => {\n this.modelService.save(this.model, this.modelId, this.origModel).subscribe(\n (newModel: T) => {\n this.model = newModel;\n this.modelId = newModel.id;\n if (this.editRoute) {\n this.isEdit = true;\n if (this.changeUrlRoute) {\n const url = this.router.createUrlTree([this.editRoute, this.modelId]).toString();\n this.location.replaceState(url);\n }\n }\n this.afterSave(newModel).subscribe((val: T) => {\n from(this.dialogService.showSaveMessage(this.saveMessage)).subscribe(d => {\n this.options.updateInitialValue()\n fg.markAsPristine();\n });\n });\n },\n err => {\n this.serverErrors(err)\n });\n });\n } else {\n this.validateAllFormFields(formGroup);\n }\n }\n }\n serverErrors(err: any) {\n if (err.error) {\n if (err.error.errors) {\n const validationErrors = err.error.errors;\n if (Array.isArray(validationErrors)) {\n validationErrors.forEach(prop => {\n const formControl = this.baseForm.get(this.firstCharToLowerCase(prop));\n if (formControl) {\n // activate the error message\n formControl.setErrors({\n serverError: { message: validationErrors[prop].join('\\n') }\n });\n }\n });\n } else {\n const keys = Object.keys(validationErrors);\n keys.forEach(prop => {\n const formControl = this.baseForm.get(this.firstCharToLowerCase(prop));\n if (formControl) {\n // activate the error message\n formControl.setErrors({\n serverError: { message: validationErrors[prop].join('\\n') }\n });\n }\n });\n }\n }\n }\n }\n private firstCharToLowerCase(str: string): string {\n if (str.length === 0) {\n return str; // Return an empty string if the input is empty\n }\n\n const firstChar = str.charAt(0).toLowerCase();\n const restOfString = str.slice(1);\n\n return firstChar + restOfString;\n }\n async canDeactivate(): Promise<boolean> {\n if (!this.baseForm.dirty) {\n return true;\n }\n var result = await this.dialogService.confirm(this.confirmQuestion, null, this.confirmButton)\n return result;\n }\n getFiledName(filedTranslationKey: string) {\n return { field: this.translate.instant(filedTranslationKey) };\n }\n getCustomErrorMessage(error: any, fieldLabel: string): string {\n return '';\n }\n getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName: string = 'formArray'): string {\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\n return this.getErrorMessageForField(fieldControl, filedTranslationKey)\n }\n getErrorMessage(field: string, filedTranslationKey: string, formGroup: UntypedFormGroup | string = null): string {\n const fg = this.getFromGroup(formGroup)\n return this.getErrorMessageForField(fg.get(field), filedTranslationKey)\n }\n getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string {\n const error = fieldControl.errors;\n const fieldLabel = this.translate.instant(filedTranslationKey);\n let rvalue = '';\n if (error !== null) {\n if (error['required'] === true) {\n rvalue = this.translate.instant('General.Field.Required', { field: fieldLabel });\n }\n if (error['minlength']) {\n rvalue = this.translate.instant('General.Field.MinLength', { field: fieldLabel, requiredLength: error.minlength.requiredLength });\n }\n if (error['email'] === true) {\n rvalue = this.translate.instant('General.Field.InvalidEmail');\n }\n if (error['url'] === true) {\n rvalue = this.translate.instant('General.Field.InvalidUrl');\n }\n if (error['serverError']) {\n rvalue = error['serverError'];\n }\n if (rvalue === '') {\n rvalue = this.getCustomErrorMessage(error, fieldLabel);\n }\n }\n return rvalue;\n }\n}\n","<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n <ng-container *ngIf=\"!isLoading\">\n <form [formGroup]=\"baseForm\" (ngSubmit)=\"onSubmit(model)\">\n <formly-form [form]=\"baseForm\" [fields]=\"fields\" [model]=\"model\" [options]=\"options\"></formly-form>\n </form>\n </ng-container>\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button *ngIf=\"!isLoading\" slot=\"end\" fill=\"clear\" (click)=\"onSave()\"\n [disabled]=\"baseForm.invalid || !baseForm.dirty\">\n <ion-icon size=\"large\" name=\"save\"></ion-icon>\n </ion-button>\n</ng-template>","import { Location } from '@angular/common';\nimport { Component, ElementRef, Injector, Input, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationStart, Router, UrlSegment } from '@angular/router';\nimport { NavController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BaseQueryData, BaseService, Rule } from '@rosoftlab/core';\nimport { BaseModelFormly } from '@rosoftlab/formly';\nimport { ColumnMode, SelectionType } from '@swimlane/ngx-datatable';\nimport * as jsonLogic from 'json-logic-js/logic.js';\nimport { IonicDataTableLayoutConfig } from '../../decorators/ionic-datatable-layout';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { RslIonicModuleModule } from '../../rsl-ionic-module.module';\nexport declare type SortDirection = 'asc' | 'desc' | '';\n@Component({\n standalone: true,\n selector: 'app-rsl-ionic-data-table',\n templateUrl: './rsl-ionic-data-table.component.html',\n styleUrls: ['./rsl-ionic-data-table.component.scss'],\n imports: [RslIonicModuleModule],\n})\nexport class RslIonicDataTableComponent<T extends BaseModelFormly, U extends BaseService<T>> implements OnInit {\n @ViewChild('actionsTmpl', { static: true }) actionsTmpl: TemplateRef<any>;\n public title: string;\n @Input() showSerach: boolean;\n @Input() searchFields: string;\n @Input() customInclude: string;\n @Input() defaultSort: string;\n @Input() defaultSortDirection: SortDirection;\n @Input() deletePropertyName: string;\n @Input() defaultFilter: string;\n @Input() showHeader: boolean;\n @Input() deleteDisableRule: Rule[];\n @Input() hasAdd: boolean;\n @Input() canDelete: boolean;\n @Input() canEdit: boolean;\n\n @Input() model: T;\n @Input() modelService: U\n\n data: any[] = [];\n pageIndex: number = 1;\n pageSize: number = 30\n\n basePath: string;\n\n columns = [];\n allColumns = [];\n ColumnMode = ColumnMode;\n SelectionType = SelectionType;\n\n readonly headerHeight = 50;\n readonly rowHeight = 50;\n isLoading: boolean;\n filterValue: string;\n oldOffsetY: number;\n constructor(\n public router: Router,\n public route: ActivatedRoute,\n public translate: TranslateService,\n public location: Location,\n private injector: Injector,\n private navCtrl: NavController,\n public dialogService: IonicDialogService,\n private el: ElementRef) {\n\n }\n ngOnInit() {\n this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);\n this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSort', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSortDirection', '');\n this.setValueFromSnapshot(this, this.route.snapshot, 'deletePropertyName', 'name');\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultFilter', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'showHeader', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'deleteDisableRule', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'hasAdd', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'canDelete', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'canEdit', true);\n if (!this.modelService) {\n const SERVICE_TOKEN = this.route.snapshot.data['requiredService'];\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n }\n this.model = this.modelService.newModel()\n this.title = this.model.modelConfig.formTitle\n this.getListLayout()\n\n const currentUrlSegments: UrlSegment[] = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));\n this.basePath = currentUrlSegments.map(segment => segment.path).join('/');\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n // Navigation to another page is about to occur\n this.data = [];\n this.pageIndex = 1\n // Perform actions or update component as needed\n }\n });\n // this.isLoading = true;\n // this.onScroll(0);\n }\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\n if (component[key] === undefined) {\n let dataFromSnapshot = snapshot.data[key];\n if (dataFromSnapshot === null || dataFromSnapshot === undefined) {\n dataFromSnapshot = snapshot.params[key];\n }\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\n }\n }\n onScroll(offsetY: number) {\n if (offsetY) {\n if (this.oldOffsetY !== offsetY) {\n this.oldOffsetY = offsetY;\n const viewHeight = this.el.nativeElement.getBoundingClientRect().height - this.headerHeight;\n if (!this.isLoading && offsetY + viewHeight >= this.data.length * this.rowHeight) {\n // total number of results to load\n let limit = this.pageSize;\n\n // check if we haven't fetched any results yet\n if (this.data.length === 0) {\n // calculate the number of rows that fit within viewport\n const pageSize = Math.ceil(viewHeight / this.rowHeight);\n\n // change the limit to pageSize such that we fill the first page entirely\n // (otherwise, we won't be able to scroll past it)\n limit = Math.max(pageSize, this.pageSize);\n }\n // this.pageIndex\n this.pageSize = limit\n this.loadData();\n // this.loadPage(limit);\n }\n }\n }\n }\n async ionViewWillEnter() {\n this.data = [];\n this.loadData();\n }\n async handleChange(event) {\n this.filterValue = event.target.value.toLowerCase();\n this.data = [];\n this.pageIndex = 1\n this.loadData();\n }\n loadData(event = null) {\n const filters = [];\n let sorts = '';\n this.isLoading = true;\n if (this.defaultSort) {\n if (this.defaultSortDirection === 'desc') {\n sorts = '-' + this.defaultSort;\n } else {\n sorts = this.defaultSort;\n }\n }\n if (this.showSerach) {\n if (this.filterValue) {\n const y = '(' + this.searchFields.replace(',', '|') + ')';\n filters.push(y + '@=*' + this.filterValue);\n }\n }\n if (this.defaultFilter) {\n filters.push(this.defaultFilter)\n }\n setTimeout(() => {\n const filtersValue = filters.join(', ');\n this.modelService.getAll(this.pageIndex, this.pageSize, sorts, filtersValue, this.customInclude).subscribe(\n (response: BaseQueryData<T>) => {\n if (this.pageIndex !== response.getMeta().meta.count) {\n this.pageIndex++\n } else {\n if (event) event.target.disabled = true;\n }\n // if (this.filterValue)\n // this.data = response.getModels();\n // else\n const rows = [...this.data, ...response.getModels()];\n this.data = rows;\n // this.data = this.data.concat();\n\n if (event) event.target.complete();\n this.isLoading = false;\n })\n }, 700);\n }\n async handleRefresh(event) {\n this.pageIndex = 1\n this.data = [];\n this.loadData();\n event.target.complete();\n }\n onAdd() {\n console.log(this.basePath)\n this.router.navigate([this.basePath + '/add'])\n // this.navCtrl.navigateForward(this.basePath + '/add');\n }\n editModel(model: BaseModelFormly) {\n if (this.canEdit)\n this.router.navigate([this.basePath + '/edit/', model.id]);\n // this.navCtrl.navigateForward(this.basePath + '/edit/' + model.id);\n }\n getListLayout() {\n if (!this.model) {\n this.model = this.modelService.newModel(); \n }\n this.allColumns=[];\n this.columns=[];\n this.allColumns = Reflect.getMetadata('IonicDataTableLayout', this.model).map((item: IonicDataTableLayoutConfig) => {\n if (!item.isTranslated) {\n item.name = this.translate.instant(item.name);\n item.isTranslated = true\n }\n return item;\n });\n\n this.allColumns.sort((a, b) => a.order - b.order);\n\n if (this.canDelete || this.canEdit) {\n this.allColumns.push({\n cellTemplate: this.actionsTmpl,\n name: '',\n cellClass: 'actions-cell',\n draggable: false,\n sortable: false,\n visible: true\n // width: 100,\n // maxWidth: 100,\n // minWidth: 100\n })\n }\n this.columns = this.allColumns.filter((item: IonicDataTableLayoutConfig) => item.visible);\n // Sort the columns array by the order property\n\n }\n deleteModel(model) {\n const msg = 'Do you want to delete ' + model[this.deletePropertyName] + '?';\n this.dialogService.confirm(msg).then(\n (value: any) => {\n if (value.data) {\n this.modelService.delete(model.id).subscribe(() => {\n const tempData = [];\n // this.selectedObject.emit(null);\n this.data.map((item) => {\n if (item.id !== model.id) {\n tempData.push(item);\n }\n });\n this.data = tempData;\n });\n }\n }\n )\n }\n\n deleteEnabled(model: T) {\n if (this.canDelete) {\n if (this.deleteDisableRule) {\n return this.evaluateRule(this.deleteDisableRule, model);\n } else {\n return true;\n }\n } else {\n return false;\n }\n }\n private evaluateRule(rules: Rule[], model: T): boolean {\n let result = true;\n rules.forEach(rule => {\n let jsonRule: any;\n if (typeof rule.rule === 'string') {\n jsonRule = JSON.parse(rule.rule);\n } else {\n jsonRule = rule.rule;\n }\n if (rule.parameters) {\n const data = '{' + rule.parameters.map((item: string) => {\n return '\"' + item + '\":\"' + model[item] + '\"';\n }).join(',') + '}';\n result = jsonLogic.apply(jsonRule, JSON.parse(data));\n } else {\n result = jsonLogic.apply(jsonRule);\n }\n });\n return result;\n }\n\n\n}\n","<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ngx-datatable class=\"material fullscreen rls-server-scrolling\" style=\"top: 115px\" [rows]=\"data\" [columns]=\"columns\"\n [columnMode]=\"ColumnMode.standard\" [headerHeight]=\"headerHeight\" [rowHeight]=\"rowHeight\" [scrollbarV]=\"true\"\n [loadingIndicator]=\"isLoading\" [scrollbarH]=\"true\" (scroll)=\"onScroll($event.offsetY)\"\n >\n </ngx-datatable>\n \n <ng-template #actionsTmpl let-row=\"row\" let-value=\"value\">\n <ion-button fill=\"clear\" *ngIf=\"canEdit\" (click)='editModel(row)'>\n <ion-icon slot=\"icon-only\" name=\"create\" (click)='editModel(row)'></ion-icon>\n </ion-button>\n <ion-button fill=\"clear\" *ngIf=\"deleteEnabled(row)\" (click)='deleteModel(row)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='deleteModel(row)'></ion-icon>\n </ion-button>\n </ng-template>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\" *ngIf=\"hasAdd\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>","import { DatePipe, DecimalPipe, Location, PercentPipe } from '@angular/common';\nimport { Component, Injector, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationStart, Router, UrlSegment } from '@angular/router';\nimport { LoadingController, NavController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BaseQueryData, BaseService, GridLayoutFormat, Rule } from '@rosoftlab/core';\nimport { BaseModelFormly } from '@rosoftlab/formly';\nimport * as jsonLogic from 'json-logic-js/logic.js';\nimport { IonicListLayoutConfig } from '../../interfaces';\nimport { IonicDialogService } from '../../ionic-dialog.service';\nimport { RslIonicModuleModule } from '../../rsl-ionic-module.module';\nexport declare type SortDirection = 'asc' | 'desc' | '';\n@Component({\n standalone: true,\n selector: 'rsl-ionic-grid',\n templateUrl: './rsl-ionic-grid.component.html', \n imports: [RslIonicModuleModule],\n})\nexport class RslIonicGridComponent<T extends BaseModelFormly, U extends BaseService<T>> implements OnInit {\n public title: string;\n @Input() showSerach: boolean;\n @Input() searchFields: string;\n @Input() customInclude: string;\n @Input() defaultSort: string;\n @Input() defaultSortDirection: SortDirection;\n @Input() deletePropertyName: string;\n @Input() defaultFilter: string;\n @Input() showHeader: boolean;\n @Input() deleteDisableRule: Rule[];\n @Input() model: T;\n @Input() modelService: U\n\n data: any[] = [];\n pageIndex: number = 1;\n pageSize: number = 30\n\n gridLayout: IonicListLayoutConfig[]\n basePath: string;\n constructor(\n public router: Router,\n public route: ActivatedRoute,\n public translate: TranslateService,\n public location: Location,\n private injector: Injector,\n private loadingCtrl: LoadingController,\n private navCtrl: NavController,\n public dialogService: IonicDialogService,\n private datePipe: DatePipe,\n private numberPipe: DecimalPipe,\n private percentPipe: PercentPipe) {\n }\n\n ngOnInit() {\n this.setValueFromSnapshot(this, this.route.snapshot, 'showSerach', false);\n this.setValueFromSnapshot(this, this.route.snapshot, 'searchFields', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'customInclude', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSort', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultSortDirection', '');\n this.setValueFromSnapshot(this, this.route.snapshot, 'deletePropertyName', 'name');\n this.setValueFromSnapshot(this, this.route.snapshot, 'defaultFilter', null);\n this.setValueFromSnapshot(this, this.route.snapshot, 'showHeader', true);\n this.setValueFromSnapshot(this, this.route.snapshot, 'deleteDisableRule', null);\n\n // this.showSerach = route.snapshot.data['showSerach'] || false;\n // this.searchFields = this.route.snapshot.data['searchFields'] || null;\n\n // this.customInclude = this.route.snapshot.data['customInclude'] || null;\n\n // this.defaultSort = this.route.snapshot.data['defaultSort'] || null;\n // this.defaultSortDirection = this.route.snapshot.data['defaultSortDirection'] || '';\n\n // this.deletePropertyName = this.route.snapshot.data['deletePropertyName'] || 'name';\n // this.defaultFilter = this.route.snapshot.data['defaultFilter'] || null;\n\n if (!this.modelService) {\n const SERVICE_TOKEN = this.route.snapshot.data['requiredService'];\n this.modelService = this.injector.get<U>(<any>SERVICE_TOKEN);\n }\n this.model = this.modelService.newModel()\n this.title = this.model.modelConfig.formTitle\n this.getListLayout()\n\n const currentUrlSegments: UrlSegment[] = this.router.url.split('/').map(segment => new UrlSegment(segment, {}));\n this.basePath = currentUrlSegments.map(segment => segment.path).join('/');\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n // Navigation to another page is about to occur\n this.data = [];\n this.pageIndex = 1\n // Perform actions or update component as needed\n }\n });\n }\n setValueFromSnapshot<T>(component: any, snapshot: ActivatedRouteSnapshot, key: string, defaultValue: T): void {\n if (component[key] === undefined) {\n let dataFromSnapshot = snapshot.data[key];\n if (!dataFromSnapshot)\n dataFromSnapshot = snapshot.params[key];\n component[key] = dataFromSnapshot !== undefined ? dataFromSnapshot : defaultValue;\n }\n }\n async ionViewWillEnter() {\n this.data = [];\n const loading = await this.loadingCtrl.create({\n message: this.translate.instant('General.Loading'),\n spinner: 'circles',\n });\n loading.present();\n this.loadData(null, null, loading);\n }\n async handleChange(event) {\n const loading = await this.loadingCtrl.create({\n message: this.translate.instant('General.Loading'),\n spinner: 'circles',\n });\n loading.present();\n const query = event.target.value.toLowerCase();\n this.pageIndex = 1\n this.loadData(null, query, loading);\n // this.results = this.data.filter((d) => d.toLowerCase().indexOf(query) > -1);\n }\n loadData(event = null, filterValue = undefined, loading = null) {\n const filters = [];\n let sorts = '';\n if (this.defaultSort) {\n if (this.defaultSortDirection === 'desc') {\n sorts = '-' + this.defaultSort;\n } else {\n sorts = this.defaultSort;\n }\n }\n if (this.showSerach) {\n if (filterValue) {\n const y = '(' + this.searchFields.replace(',', '|') + ')';\n filters.push(y + '@=*' + filterValue);\n }\n }\n if (this.defaultFilter) {\n filters.push(this.defaultFilter)\n }\n setTimeout(() => {\n const filtersValue = filters.join(', ');\n this.modelService.getAll(this.pageIndex, this.pageSize, sorts, filtersValue, this.customInclude).subscribe(\n (response: BaseQueryData<T>) => {\n if (this.pageIndex !== response.getMeta().meta.count) {\n this.pageIndex++\n } else {\n if (event) event.target.disabled = true;\n }\n if (filterValue || loading)\n this.data = response.getModels();\n else\n this.data = this.data.concat(response.getModels());\n\n if (event) event.target.complete();\n if (loading)\n loading.dismiss()\n })\n }, 700);\n }\n async handleRefresh(event) {\n const loading = await this.loadingCtrl.create({\n message: this.translate.instant('General.Loading'),\n spinner: 'circles',\n });\n loading.present();\n this.pageIndex = 1\n this.loadData(null, null, loading);\n event.target.complete();\n }\n onAdd() {\n console.log(this.basePath)\n this.navCtrl.navigateForward(this.basePath + '/add');\n }\n editModel(model: BaseModelFormly) {\n this.navCtrl.navigateForward(this.basePath + '/edit/' + model.id);\n }\n getListLayout() {\n if (!this.model) {\n this.model = this.modelService.newModel();\n }\n this.gridLayout = Reflect.getMetadata('IonicListLayout', this.model);\n }\n deleteModel(model) {\n const msg = 'Do you want to delete ' + model[this.deletePropertyName] + '?';\n this.dialogService.confirm(msg).then(\n (value: any) => {\n if (value.data) {\n this.modelService.delete(model.id).subscribe(() => {\n const tempData = [];\n // this.selectedObject.emit(null);\n this.data.map((item) => {\n if (item.id !== model.id) {\n tempData.push(item);\n }\n });\n this.data = tempData;\n });\n }\n }\n )\n }\n getCelValue(row: any, propertyName: string): any {\n if (!row)\n return \"\";\n // if (propertyName == 'kompetenzenStdev')\n // console.log(propertyName);\n if (propertyName.indexOf('.') === -1) {\n var gridLayout = this.gridLayout.find(f => f.key.indexOf(propertyName) > -1);\n return this.getFormatedValue(gridLayout, row[propertyName]);\n } else {\n const prop = propertyName.split('.')[0];\n const subProp = propertyName.replace(prop + '.', '');\n return this.getCelValue(row[prop], subProp);\n }\n }\n private getFormatedValue(gridLayout: IonicListLayoutConfig, value: any) {\n\n if (gridLayout) {\n switch (gridLayout.formating) {\n case GridLayoutFormat.date:\n return this.datePipe.transform(value, gridLayout.customFormat);\n break;\n case GridLayoutFormat.number:\n return this.numberPipe.transform(value, gridLayout.customFormat);\n case GridLayoutFormat.percent:\n const valuePrc = value / 100;\n return this.percentPipe.transform(valuePrc, gridLayout.customFormat);\n default:\n return value;\n break;\n }\n }\n return value;\n }\n\n deleteEnabled(model: T) {\n if (this.deleteDisableRule) {\n return this.evaluateRule(this.deleteDisableRule, model);\n } else {\n return true;\n }\n }\n private evaluateRule(rules: Rule[], model: T): boolean {\n let result = true;\n rules.forEach(rule => {\n let jsonRule: any;\n if (typeof rule.rule === 'string') {\n jsonRule = JSON.parse(rule.rule);\n } else {\n jsonRule = rule.rule;\n }\n if (rule.parameters) {\n const data = '{' + rule.parameters.map((item: string) => {\n return '\"' + item + '\":\"' + model[item] + '\"';\n }).join(',') + '}';\n result = jsonLogic.apply(jsonRule, JSON.parse(data));\n } else {\n result = jsonLogic.apply(jsonRule);\n }\n });\n return result;\n }\n}\n","<ion-header *ngIf=\"showHeader\">\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ion-content [fullscreen]=\"true\">\n\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"handleRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <ion-list>\n <ng-container *ngFor=\"let item of data\">\n <ion-item-sliding>\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n <ion-item-options *ngIf=\"deleteEnabled(item)\" side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\" (click)='deleteModel(item)'></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ng-container>\n </ion-list>\n <ion-infinite-scroll threshold=\"100px\" (ionInfinite)=\"loadData($event)\">\n <ion-infinite-scroll-content loadingSpinner=\"bubbles\" loadingText=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n\n</ion-content>\n\n<ng-template #header>\n <ion-title class=\"ion-text-center\">{{title |translate}}</ion-title>\n <ion-button slot=\"end\" (click)=\"onAdd()\" fill=\"clear\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>\n\n<ng-template #listItem let-item='item'>\n <ion-item button (click)='editModel(item)'>\n <ion-label>\n <ng-container *ngFor=\"let row of gridLayout\">\n <h2 *ngIf=\"row.primary\"> {{getCelValue(item,row.key)}} </h2>\n <h3 *ngIf=\"!row.primary\">{{getCelValue(item,row.key)}} </h3>\n </ng-container>\n </ion-label>\n </ion-item>\n</ng-template>","\nimport { TableColumn } from '@swimlane/ngx-datatable';\nimport { } from 'reflect-metadata';\nexport interface IonicDataTableLayoutConfig extends TableColumn {\n order?: number;\n visible?: boolean;\n isTranslated?: boolean;\n}\nexport function IonicDataTableLayout(config: IonicDataTableLayoutConfig) {\n return (target: any, propertyName: string) => {\n const annotations = Reflect.getMetadata('IonicDataTableLayout', target) || [];\n config.prop = propertyName;\n config.visible = config.visible === undefined ? true : config.visible;\n annotations.push(config);\n\n Reflect.defineMetadata('IonicDataTableLayout', annotations, target);\n };\n}\n","import { } from 'reflect-metadata';\nimport { IonicListLayoutConfig } from '../interfaces/ionic-list-layout-config';\nexport function IonicListLayout(config: IonicListLayoutConfig) {\n return (target: any, propertyName: string) => {\n const annotations = Reflect.getMetadata('IonicListLayout', target) || [];\n config.key = propertyName;\n annotations.push(config);\n\n Reflect.defineMetadata('IonicListLayout', annotations, target);\n };\n}\n","/*\n * Public API Surface of ionic\n */\n\nexport * from './lib/components';\nexport * from './lib/decorators';\nexport * from './lib/interfaces';\nexport * from './lib/ionic-dialog.service';\nexport * from './lib/translate.extension';\nexport * from './lib/types';\nexport * from './lib/validators';\nexport * from './lib/wrappers';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","COMMON_MODULES","i1.IonicDialogService","i3","i4","i5","i6","i2","i3.IonicDialogService","i7","i8","i5.IonicDialogService"],"mappings":"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"}