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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  export { GenericIonicCrudComponent } from './rsl-ionic-crud.component/rsl-ionic-crud.component';
2
2
  export { RslIonicDataTableComponent } from "./rsl-ionic-data-table/rsl-ionic-data-table.component";
3
3
  export { RslIonicGridComponent } from './rsl-ionic-grid/rsl-ionic-grid.component';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFBO0FBQy9GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFBO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgR2VuZXJpY0lvbmljQ3J1ZENvbXBvbmVudCB9IGZyb20gJy4vcnNsLWlvbmljLWNydWQuY29tcG9uZW50L3JzbC1pb25pYy1jcnVkLmNvbXBvbmVudCdcclxuZXhwb3J0IHsgUnNsSW9uaWNEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi9yc2wtaW9uaWMtZGF0YS10YWJsZS9yc2wtaW9uaWMtZGF0YS10YWJsZS5jb21wb25lbnRcIlxyXG5leHBvcnQgeyBSc2xJb25pY0dyaWRDb21wb25lbnQgfSBmcm9tICcuL3JzbC1pb25pYy1ncmlkL3JzbC1pb25pYy1ncmlkLmNvbXBvbmVudCdcclxuIl19
4
+ export { RslIonicSmButtonsComponent } from './rsl-ionic-sm-buttons/ionic-sm-buttons.component';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFBO0FBQy9GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVEQUF1RCxDQUFBO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgR2VuZXJpY0lvbmljQ3J1ZENvbXBvbmVudCB9IGZyb20gJy4vcnNsLWlvbmljLWNydWQuY29tcG9uZW50L3JzbC1pb25pYy1jcnVkLmNvbXBvbmVudCdcclxuZXhwb3J0IHsgUnNsSW9uaWNEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi9yc2wtaW9uaWMtZGF0YS10YWJsZS9yc2wtaW9uaWMtZGF0YS10YWJsZS5jb21wb25lbnRcIlxyXG5leHBvcnQgeyBSc2xJb25pY0dyaWRDb21wb25lbnQgfSBmcm9tICcuL3JzbC1pb25pYy1ncmlkL3JzbC1pb25pYy1ncmlkLmNvbXBvbmVudCdcclxuZXhwb3J0IHsgUnNsSW9uaWNTbUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL3JzbC1pb25pYy1zbS1idXR0b25zL2lvbmljLXNtLWJ1dHRvbnMuY29tcG9uZW50J1xyXG4iXX0=
@@ -2,7 +2,7 @@ import { Component } from '@angular/core';
2
2
  import { FieldType } from '@ngx-formly/core';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
4
  import { SmActionService, StateService } from '@rosoftlab/statemachine';
5
- import { RslIonicModuleModule } from '../../rsl-ionic-module.module';
5
+ import { WrappersModule } from '../../wrappers/wrappers.module';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@rosoftlab/statemachine";
8
8
  import * as i2 from "@ngx-translate/core";
@@ -54,12 +54,12 @@ export class RslIonicSmButtonsComponent extends FieldType {
54
54
  return this.translate.instant('General.State.CurrentState', { field: this.currentState.name });
55
55
  }
56
56
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicSmButtonsComponent, deps: [{ token: i1.SmActionService }, { token: i1.StateService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: RslIonicSmButtonsComponent, isStandalone: true, selector: "app-ionic-sm-buttons", usesInheritance: true, ngImport: i0, template: "<!-- <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>", styles: [""], dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: RslIonicSmButtonsComponent, isStandalone: true, selector: "app-ionic-sm-buttons", usesInheritance: true, ngImport: i0, template: "<!-- <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>", styles: [""], dependencies: [{ kind: "ngmodule", type: WrappersModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
58
58
  }
59
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicSmButtonsComponent, decorators: [{
60
60
  type: Component,
61
61
  args: [{ standalone: true, selector: 'app-ionic-sm-buttons', imports: [
62
- RslIonicModuleModule
62
+ WrappersModule
63
63
  ], template: "<!-- <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>" }]
64
64
  }], ctorParameters: function () { return [{ type: i1.SmActionService }, { type: i1.StateService }, { type: i2.TranslateService }]; } });
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtc20tYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL3JzbC1pb25pYy1zbS1idXR0b25zL2lvbmljLXNtLWJ1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtc20tYnV0dG9ucy9pb25pYy1zbS1idXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQXdELE1BQU0sa0JBQWtCLENBQUM7QUFFbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFZLGVBQWUsRUFBUyxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7O0FBZXJFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxTQUFzQztJQU1wRixZQUNTLGVBQWdDLEVBQy9CLFlBQTBCLEVBQzNCLFNBQTJCO1FBQ2xDLEtBQUssRUFBRSxDQUFBO1FBSEEsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQy9CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBRXBDLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQVcsQ0FBQTtRQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUE7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDakYsMEJBQTBCO0lBQzVCLENBQUM7SUFDRCxhQUFhLENBQUMsTUFBZ0I7UUFDNUIsMkJBQTJCO1FBQzNCLHlCQUF5QjtRQUN6QiwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2FBQ3BGLFNBQVMsQ0FDUixRQUFRLENBQUMsRUFBRTtZQUNULHdCQUF3QjtZQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2dCQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFBO1lBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRS9ELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDekIsMkRBQTJEO1lBQzNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDakYsd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUNGLENBQUE7UUFDSCx1QkFBdUI7SUFDekIsQ0FBQztJQUNELGdCQUFnQixDQUFDLE9BQVk7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUN0QyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUNuQyxDQUFBO0lBQ0gsQ0FBQztJQUNELFFBQVEsQ0FBQyxNQUFnQjtRQUN2QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDbEU7UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7OEdBdERVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHVHQ3JCdkMsMHFCQWNXLHlERElQLG9CQUFvQjs7MkZBR1gsMEJBQTBCO2tCQVR0QyxTQUFTO2lDQUNJLElBQUksWUFDTixzQkFBc0IsV0FHdkI7d0JBQ1Asb0JBQW9CO3FCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seUZpZWxkSW5wdXQgfSBmcm9tICdAbmd4LWZvcm1seS9pb25pYy9pbnB1dCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTbUFjdGlvbiwgU21BY3Rpb25TZXJ2aWNlLCBTdGF0ZSwgU3RhdGVTZXJ2aWNlIH0gZnJvbSAnQHJvc29mdGxhYi9zdGF0ZW1hY2hpbmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUnNsSW9uaWNNb2R1bGVNb2R1bGUgfSBmcm9tICcuLi8uLi9yc2wtaW9uaWMtbW9kdWxlLm1vZHVsZSc7XG5pbnRlcmZhY2UgSW5wdXRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMgeyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWx5SW5wdXRGaWVsZENvbmZpZyBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnPElucHV0UHJvcHM+IHtcbiAgdHlwZTogJ2lucHV0JyB8IFR5cGU8Rm9ybWx5RmllbGRJbnB1dD47XG59XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdhcHAtaW9uaWMtc20tYnV0dG9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pb25pYy1zbS1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW9uaWMtc20tYnV0dG9ucy5jb21wb25lbnQuY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBSc2xJb25pY01vZHVsZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJzbElvbmljU21CdXR0b25zQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxJbnB1dFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQge1xuICBzbUFjdGlvbnMkOiBPYnNlcnZhYmxlPFNtQWN0aW9uW10+XG4gIGN1cnJlbnRTdGF0ZTogU3RhdGU7XG5cbiAgb2JqZWN0VHlwZTogc3RyaW5nO1xuICBvYmplY3RJZDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc21BY3Rpb25TZXJ2aWNlOiBTbUFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0ZVNlcnZpY2U6IFN0YXRlU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKVxuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub2JqZWN0VHlwZSA9IHRoaXMucHJvcHMuYXR0cmlidXRlc1snb2JqZWN0VHlwZSddIGFzIHN0cmluZ1xuICAgIHRoaXMub2JqZWN0SWQgPSB0aGlzLmZpZWxkLnBhcmVudC5tb2RlbC5pZFxuICAgIHRoaXMubG9hZEN1cnJlbnRTdGF0ZSh0aGlzLmZpZWxkLm1vZGVsLmN1cnJlbnRTdGF0ZUlkKTtcbiAgICB0aGlzLnNtQWN0aW9ucyQgPSB0aGlzLnNtQWN0aW9uU2VydmljZS5nZXRBY3Rpb25zKHRoaXMub2JqZWN0SWQsIHRoaXMub2JqZWN0VHlwZSlcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmZpZWxkKVxuICB9XG4gIGV4ZWN1dGVBY3Rpb24oYWN0aW9uOiBTbUFjdGlvbikge1xuICAgIC8vIHRoaXMuY3VycmVudFN0YXRlID0gbnVsbFxuICAgIC8vIHRoaXMuc21BY3Rpb25zJCA9IG51bGxcbiAgICAvLyBjb25zb2xlLmxvZyhhY3Rpb24uYWN0aW9uSUQpXG4gICAgdGhpcy5zbUFjdGlvblNlcnZpY2UuZXhlY3V0ZUFjdGlvbih0aGlzLm9iamVjdElkLCB0aGlzLm9iamVjdFR5cGUsIGFjdGlvbi5hY3Rpb25JRCwgXCJcIilcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSlcbiAgICAgICAgICBpZiAodGhpcy5maWVsZC5wcm9wc1snb25TdGF0ZUNhaG5nZWQnXSlcbiAgICAgICAgICAgIHRoaXMuZmllbGQucHJvcHNbJ29uU3RhdGVDYWhuZ2VkJ10oeyBtb2RlbDogdGhpcy5maWVsZC5wYXJlbnQubW9kZWwsIHJlc3BvbnNlIH0pO1xuICAgICAgICAgIHRoaXMubW9kZWxbJ2N1cnJlbnRTdGF0ZUlkJ10gPSByZXNwb25zZS5jdXJyZW50U3RhdGVJZFxuICAgICAgICAgIHRoaXMuc21BY3Rpb25TZXJ2aWNlLmdldEFjdGlvbnModGhpcy5vYmplY3RJZCwgdGhpcy5vYmplY3RUeXBlKVxuXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoKVxuICAgICAgICAgIC8vIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpICAgICAgICAgXG4gICAgICAgICAgdGhpcy5zbUFjdGlvbnMkID0gdGhpcy5zbUFjdGlvblNlcnZpY2UuZ2V0QWN0aW9ucyh0aGlzLm9iamVjdElkLCB0aGlzLm9iamVjdFR5cGUpXG4gICAgICAgICAgLy8gLy90aGlzLnNtQWN0aW9ucyA9IFtdXG4gICAgICAgICAgdGhpcy5sb2FkQ3VycmVudFN0YXRlKHJlc3BvbnNlLmN1cnJlbnRTdGF0ZUlkKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIC8vIGNvbnNvbGUubG9nKGFjdGlvbik7XG4gIH1cbiAgbG9hZEN1cnJlbnRTdGF0ZShzdGF0ZUlkOiBhbnkpIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5nZXQoc3RhdGVJZCkuc3Vic2NyaWJlKFxuICAgICAgc3RhdGUgPT4gdGhpcy5jdXJyZW50U3RhdGUgPSBzdGF0ZVxuICAgIClcbiAgfVxuICBnZXRDb2xvcihhY3Rpb246IFNtQWN0aW9uKSB7XG4gICAgaWYgKGFjdGlvbi5wcm9wcykge1xuICAgICAgcmV0dXJuIGFjdGlvbi5wcm9wc1tcIkNvbG9yXCJdID8gYWN0aW9uLnByb3BzW1wiQ29sb3JcIl0gOiBcInByaW1hcnlcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwicHJpbWFyeVwiXG4gIH1cbiAgZ2V0Q3VycmVudFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdHZW5lcmFsLlN0YXRlLkN1cnJlbnRTdGF0ZScsIHsgZmllbGQ6IHRoaXMuY3VycmVudFN0YXRlLm5hbWUgfSk7XG4gIH1cbn1cbiIsIjwhLS0gPGlvbi1pbnB1dCBbdHlwZV09XCJwcm9wcy50eXBlIHx8ICd0ZXh0J1wiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtpb25Gb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCI+PC9pb24taW5wdXQ+IC0tPlxuXG48IS0tIDxwPlN5bmM8L3A+XG48aW9uLWxpc3Q+XG4gIDxpb24tYnV0dG9uICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygc21BY3Rpb25zXCIgY29sb3I9XCJ7e2dldENvbG9yKGFjdGlvbil9fVwiIChjbGljayk9XCJleGVjdXRlQWN0aW9uKGFjdGlvbilcIj5cbiAgICB7e2FjdGlvbi5idXR0b25UcmFuc2xhdGlvbktleSB8dHJhbnNsYXRlfX1cbiAgPC9pb24tYnV0dG9uPlxuPC9pb24tbGlzdD4gLS0+XG48aW9uLWxhYmVsICpuZ0lmPVwiY3VycmVudFN0YXRlXCI+e3sgZ2V0Q3VycmVudFN0YXRlKCkgfX08L2lvbi1sYWJlbD5cbjxpb24tbGlzdD5cbiAgPGlvbi1idXR0b24gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBzbUFjdGlvbnMkIHwgYXN5bmMgXCIgY29sb3I9XCJ7e2dldENvbG9yKGFjdGlvbil9fVwiIChjbGljayk9XCJleGVjdXRlQWN0aW9uKGFjdGlvbilcIj5cbiAgICB7e2FjdGlvbi5idXR0b25UcmFuc2xhdGlvbktleSB8dHJhbnNsYXRlfX1cbiAgICAgPCEtLSAtIHt7YWN0aW9uLmFjdGlvbklEfX0gLS0+XG4gIDwvaW9uLWJ1dHRvbj5cbjwvaW9uLWxpc3Q+Il19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW9uaWMtc20tYnV0dG9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9jb21wb25lbnRzL3JzbC1pb25pYy1zbS1idXR0b25zL2lvbmljLXNtLWJ1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvY29tcG9uZW50cy9yc2wtaW9uaWMtc20tYnV0dG9ucy9pb25pYy1zbS1idXR0b25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQXdELE1BQU0sa0JBQWtCLENBQUM7QUFFbkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFZLGVBQWUsRUFBUyxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztBQWVoRSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsU0FBc0M7SUFNcEYsWUFDUyxlQUFnQyxFQUMvQixZQUEwQixFQUMzQixTQUEyQjtRQUNsQyxLQUFLLEVBQUUsQ0FBQTtRQUhBLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUMvQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUVwQyxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFXLENBQUE7UUFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFBO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2pGLDBCQUEwQjtJQUM1QixDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQWdCO1FBQzVCLDJCQUEyQjtRQUMzQix5QkFBeUI7UUFDekIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzthQUNwRixTQUFTLENBQ1IsUUFBUSxDQUFDLEVBQUU7WUFDVCx3QkFBd0I7WUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQTtZQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUUvRCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3pCLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2pGLHdCQUF3QjtZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FDRixDQUFBO1FBQ0gsdUJBQXVCO0lBQ3pCLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxPQUFZO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDdEMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FDbkMsQ0FBQTtJQUNILENBQUM7SUFDRCxRQUFRLENBQUMsTUFBZ0I7UUFDdkIsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ2hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUNELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDOzhHQXREVSwwQkFBMEI7a0dBQTFCLDBCQUEwQix1R0NyQnZDLDBxQkFjVyx5RERJUCxjQUFjOzsyRkFHTCwwQkFBMEI7a0JBVHRDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLHNCQUFzQixXQUd2Qjt3QkFDUCxjQUFjO3FCQUNmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRJbnB1dCB9IGZyb20gJ0BuZ3gtZm9ybWx5L2lvbmljL2lucHV0JztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNtQWN0aW9uLCBTbUFjdGlvblNlcnZpY2UsIFN0YXRlLCBTdGF0ZVNlcnZpY2UgfSBmcm9tICdAcm9zb2Z0bGFiL3N0YXRlbWFjaGluZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXcmFwcGVyc01vZHVsZSB9IGZyb20gJy4uLy4uL3dyYXBwZXJzL3dyYXBwZXJzLm1vZHVsZSc7XG5pbnRlcmZhY2UgSW5wdXRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMgeyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWx5SW5wdXRGaWVsZENvbmZpZyBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnPElucHV0UHJvcHM+IHtcbiAgdHlwZTogJ2lucHV0JyB8IFR5cGU8Rm9ybWx5RmllbGRJbnB1dD47XG59XG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdhcHAtaW9uaWMtc20tYnV0dG9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9pb25pYy1zbS1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW9uaWMtc20tYnV0dG9ucy5jb21wb25lbnQuY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBXcmFwcGVyc01vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJzbElvbmljU21CdXR0b25zQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZzxJbnB1dFByb3BzPj4gaW1wbGVtZW50cyBPbkluaXQge1xuICBzbUFjdGlvbnMkOiBPYnNlcnZhYmxlPFNtQWN0aW9uW10+XG4gIGN1cnJlbnRTdGF0ZTogU3RhdGU7XG5cbiAgb2JqZWN0VHlwZTogc3RyaW5nO1xuICBvYmplY3RJZDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc21BY3Rpb25TZXJ2aWNlOiBTbUFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0ZVNlcnZpY2U6IFN0YXRlU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKVxuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub2JqZWN0VHlwZSA9IHRoaXMucHJvcHMuYXR0cmlidXRlc1snb2JqZWN0VHlwZSddIGFzIHN0cmluZ1xuICAgIHRoaXMub2JqZWN0SWQgPSB0aGlzLmZpZWxkLnBhcmVudC5tb2RlbC5pZFxuICAgIHRoaXMubG9hZEN1cnJlbnRTdGF0ZSh0aGlzLmZpZWxkLm1vZGVsLmN1cnJlbnRTdGF0ZUlkKTtcbiAgICB0aGlzLnNtQWN0aW9ucyQgPSB0aGlzLnNtQWN0aW9uU2VydmljZS5nZXRBY3Rpb25zKHRoaXMub2JqZWN0SWQsIHRoaXMub2JqZWN0VHlwZSlcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmZpZWxkKVxuICB9XG4gIGV4ZWN1dGVBY3Rpb24oYWN0aW9uOiBTbUFjdGlvbikge1xuICAgIC8vIHRoaXMuY3VycmVudFN0YXRlID0gbnVsbFxuICAgIC8vIHRoaXMuc21BY3Rpb25zJCA9IG51bGxcbiAgICAvLyBjb25zb2xlLmxvZyhhY3Rpb24uYWN0aW9uSUQpXG4gICAgdGhpcy5zbUFjdGlvblNlcnZpY2UuZXhlY3V0ZUFjdGlvbih0aGlzLm9iamVjdElkLCB0aGlzLm9iamVjdFR5cGUsIGFjdGlvbi5hY3Rpb25JRCwgXCJcIilcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSlcbiAgICAgICAgICBpZiAodGhpcy5maWVsZC5wcm9wc1snb25TdGF0ZUNhaG5nZWQnXSlcbiAgICAgICAgICAgIHRoaXMuZmllbGQucHJvcHNbJ29uU3RhdGVDYWhuZ2VkJ10oeyBtb2RlbDogdGhpcy5maWVsZC5wYXJlbnQubW9kZWwsIHJlc3BvbnNlIH0pO1xuICAgICAgICAgIHRoaXMubW9kZWxbJ2N1cnJlbnRTdGF0ZUlkJ10gPSByZXNwb25zZS5jdXJyZW50U3RhdGVJZFxuICAgICAgICAgIHRoaXMuc21BY3Rpb25TZXJ2aWNlLmdldEFjdGlvbnModGhpcy5vYmplY3RJZCwgdGhpcy5vYmplY3RUeXBlKVxuXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoKVxuICAgICAgICAgIC8vIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpICAgICAgICAgXG4gICAgICAgICAgdGhpcy5zbUFjdGlvbnMkID0gdGhpcy5zbUFjdGlvblNlcnZpY2UuZ2V0QWN0aW9ucyh0aGlzLm9iamVjdElkLCB0aGlzLm9iamVjdFR5cGUpXG4gICAgICAgICAgLy8gLy90aGlzLnNtQWN0aW9ucyA9IFtdXG4gICAgICAgICAgdGhpcy5sb2FkQ3VycmVudFN0YXRlKHJlc3BvbnNlLmN1cnJlbnRTdGF0ZUlkKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIC8vIGNvbnNvbGUubG9nKGFjdGlvbik7XG4gIH1cbiAgbG9hZEN1cnJlbnRTdGF0ZShzdGF0ZUlkOiBhbnkpIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5nZXQoc3RhdGVJZCkuc3Vic2NyaWJlKFxuICAgICAgc3RhdGUgPT4gdGhpcy5jdXJyZW50U3RhdGUgPSBzdGF0ZVxuICAgIClcbiAgfVxuICBnZXRDb2xvcihhY3Rpb246IFNtQWN0aW9uKSB7XG4gICAgaWYgKGFjdGlvbi5wcm9wcykge1xuICAgICAgcmV0dXJuIGFjdGlvbi5wcm9wc1tcIkNvbG9yXCJdID8gYWN0aW9uLnByb3BzW1wiQ29sb3JcIl0gOiBcInByaW1hcnlcIjtcbiAgICB9XG4gICAgcmV0dXJuIFwicHJpbWFyeVwiXG4gIH1cbiAgZ2V0Q3VycmVudFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdHZW5lcmFsLlN0YXRlLkN1cnJlbnRTdGF0ZScsIHsgZmllbGQ6IHRoaXMuY3VycmVudFN0YXRlLm5hbWUgfSk7XG4gIH1cbn1cbiIsIjwhLS0gPGlvbi1pbnB1dCBbdHlwZV09XCJwcm9wcy50eXBlIHx8ICd0ZXh0J1wiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtpb25Gb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCI+PC9pb24taW5wdXQ+IC0tPlxuXG48IS0tIDxwPlN5bmM8L3A+XG48aW9uLWxpc3Q+XG4gIDxpb24tYnV0dG9uICpuZ0Zvcj1cImxldCBhY3Rpb24gb2Ygc21BY3Rpb25zXCIgY29sb3I9XCJ7e2dldENvbG9yKGFjdGlvbil9fVwiIChjbGljayk9XCJleGVjdXRlQWN0aW9uKGFjdGlvbilcIj5cbiAgICB7e2FjdGlvbi5idXR0b25UcmFuc2xhdGlvbktleSB8dHJhbnNsYXRlfX1cbiAgPC9pb24tYnV0dG9uPlxuPC9pb24tbGlzdD4gLS0+XG48aW9uLWxhYmVsICpuZ0lmPVwiY3VycmVudFN0YXRlXCI+e3sgZ2V0Q3VycmVudFN0YXRlKCkgfX08L2lvbi1sYWJlbD5cbjxpb24tbGlzdD5cbiAgPGlvbi1idXR0b24gKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBzbUFjdGlvbnMkIHwgYXN5bmMgXCIgY29sb3I9XCJ7e2dldENvbG9yKGFjdGlvbil9fVwiIChjbGljayk9XCJleGVjdXRlQWN0aW9uKGFjdGlvbilcIj5cbiAgICB7e2FjdGlvbi5idXR0b25UcmFuc2xhdGlvbktleSB8dHJhbnNsYXRlfX1cbiAgICAgPCEtLSAtIHt7YWN0aW9uLmFjdGlvbklEfX0gLS0+XG4gIDwvaW9uLWJ1dHRvbj5cbjwvaW9uLWxpc3Q+Il19
@@ -5,6 +5,7 @@ import { IonicModule } from '@ionic/angular';
5
5
  import { FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';
6
6
  import { FormlyIonicModule } from '@ngx-formly/ionic';
7
7
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
8
+ import { SmActionService } from '@rosoftlab/statemachine';
8
9
  import { NgxDatatableModule } from '@swimlane/ngx-datatable';
9
10
  import { registerTranslateExtension } from '../translate.extension';
10
11
  import * as i0 from "@angular/core";
@@ -29,6 +30,7 @@ export class WrappersModule {
29
30
  TranslateModule] }); }
30
31
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: WrappersModule, providers: [
31
32
  { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
33
+ SmActionService
32
34
  ], imports: [COMMON_MODULES, TranslateModule, CommonModule,
33
35
  IonicModule,
34
36
  ReactiveFormsModule,
@@ -45,6 +47,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
45
47
  ],
46
48
  providers: [
47
49
  { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
50
+ SmActionService
48
51
  ],
49
52
  exports: [
50
53
  ...COMMON_MODULES,
@@ -53,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
53
56
  ],
54
57
  }]
55
58
  }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvd3JhcHBlcnMvd3JhcHBlcnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFcEUsTUFBTSxjQUFjLEdBQUc7SUFDckIsWUFBWTtJQUNaLFdBQVc7SUFDWCxtQkFBbUI7SUFDbkIsaUJBQWlCO0lBQ2pCLGtCQUFrQjtDQUNuQixDQUFDO0FBZ0JGLE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxZQXJCekIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGtCQUFrQixFQU1oQixlQUFlLGFBVmpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixrQkFBa0IsRUFhaEIsWUFBWTtZQUNaLGVBQWU7K0dBR04sY0FBYyxhQVRkO1lBQ1QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7U0FDMUcsWUFMSSxjQUFjLEVBQ2pCLGVBQWUsRUFWakIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGtCQUFrQixFQWFoQixZQUFZO1lBQ1osZUFBZTs7MkZBR04sY0FBYztrQkFkMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsR0FBRyxjQUFjO3dCQUNqQixlQUFlO3FCQUNoQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7cUJBQzFHO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLGNBQWM7d0JBQ2pCLFlBQVk7d0JBQ1osZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEZPUk1MWV9DT05GSUcsIEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5SW9uaWNNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9pb25pYyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE5neERhdGF0YWJsZU1vZHVsZSB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcbmltcG9ydCB7IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uIH0gZnJvbSAnLi4vdHJhbnNsYXRlLmV4dGVuc2lvbic7XG5cbmNvbnN0IENPTU1PTl9NT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIElvbmljTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBGb3JtbHlJb25pY01vZHVsZSxcbiAgTmd4RGF0YXRhYmxlTW9kdWxlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgLi4uQ09NTU9OX01PRFVMRVMsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRk9STUxZX0NPTkZJRywgbXVsdGk6IHRydWUsIHVzZUZhY3Rvcnk6IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIC4uLkNPTU1PTl9NT0RVTEVTLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV3JhcHBlcnNNb2R1bGUgeyB9XG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlcnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvd3JhcHBlcnMvd3JhcHBlcnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRXBFLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLFlBQVk7SUFDWixXQUFXO0lBQ1gsbUJBQW1CO0lBQ25CLGlCQUFpQjtJQUNqQixrQkFBa0I7Q0FDbkIsQ0FBQztBQWlCRixNQUFNLE9BQU8sY0FBYzs4R0FBZCxjQUFjOytHQUFkLGNBQWMsWUF0QnpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixrQkFBa0IsRUFNaEIsZUFBZSxhQVZqQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsa0JBQWtCLEVBY2hCLFlBQVk7WUFDWixlQUFlOytHQUdOLGNBQWMsYUFWZDtZQUNULEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3pHLGVBQWU7U0FDaEIsWUFOSSxjQUFjLEVBQ2pCLGVBQWUsRUFWakIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGtCQUFrQixFQWNoQixZQUFZO1lBQ1osZUFBZTs7MkZBR04sY0FBYztrQkFmMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsR0FBRyxjQUFjO3dCQUNqQixlQUFlO3FCQUNoQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLDBCQUEwQixFQUFFLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7d0JBQ3pHLGVBQWU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLGNBQWM7d0JBQ2pCLFlBQVk7d0JBQ1osZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEZPUk1MWV9DT05GSUcsIEZvcm1seU1vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5SW9uaWNNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9pb25pYyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNtQWN0aW9uU2VydmljZSB9IGZyb20gJ0Byb3NvZnRsYWIvc3RhdGVtYWNoaW5lJztcbmltcG9ydCB7IE5neERhdGF0YWJsZU1vZHVsZSB9IGZyb20gJ0Bzd2ltbGFuZS9uZ3gtZGF0YXRhYmxlJztcbmltcG9ydCB7IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uIH0gZnJvbSAnLi4vdHJhbnNsYXRlLmV4dGVuc2lvbic7XG5cbmNvbnN0IENPTU1PTl9NT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIElvbmljTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBGb3JtbHlJb25pY01vZHVsZSxcbiAgTmd4RGF0YXRhYmxlTW9kdWxlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgLi4uQ09NTU9OX01PRFVMRVMsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRk9STUxZX0NPTkZJRywgbXVsdGk6IHRydWUsIHVzZUZhY3Rvcnk6IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcbiAgICBTbUFjdGlvblNlcnZpY2VcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIC4uLkNPTU1PTl9NT0RVTEVTLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV3JhcHBlcnNNb2R1bGUgeyB9XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i3 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Injectable, Component, NgModule, ViewChild, Input } from '@angular/core';
4
+ import { Injectable, NgModule, Component, ViewChild, Input } from '@angular/core';
5
5
  import * as i1$1 from '@angular/forms';
6
6
  import { ReactiveFormsModule, UntypedFormGroup, UntypedFormControl } from '@angular/forms';
7
7
  import * as i1$2 from '@angular/router';
@@ -14,11 +14,12 @@ import { Observable, from } from 'rxjs';
14
14
  import * as i4 from '@ionic/angular';
15
15
  import { IonicModule } from '@ionic/angular';
16
16
  import * as i6 from '@ngx-formly/core';
17
- import { FieldType, FormlyModule, FORMLY_CONFIG, FieldArrayType, FieldWrapper } from '@ngx-formly/core';
17
+ import { FormlyModule, FORMLY_CONFIG, FieldType, FieldArrayType, FieldWrapper } from '@ngx-formly/core';
18
18
  import { FormlyIonicModule } from '@ngx-formly/ionic';
19
19
  import * as i6$2 from '@swimlane/ngx-datatable';
20
20
  import { NgxDatatableModule, ColumnMode, SelectionType } from '@swimlane/ngx-datatable';
21
21
  import * as i1 from '@rosoftlab/statemachine';
22
+ import { SmActionService } from '@rosoftlab/statemachine';
22
23
  import { readFileAsync, getValueFromJsonData, GridLayoutFormat } from '@rosoftlab/core';
23
24
  import * as i3$1 from 'ngx-filesaver';
24
25
  import * as XLSX from 'xlsx';
@@ -71,61 +72,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
71
72
  }]
72
73
  }], ctorParameters: function () { return [{ type: i4.AlertController }]; } });
73
74
 
74
- class RslIonicSmButtonsComponent extends FieldType {
75
- constructor(smActionService, stateService, translate) {
76
- super();
77
- this.smActionService = smActionService;
78
- this.stateService = stateService;
79
- this.translate = translate;
80
- }
81
- ngOnInit() {
82
- this.objectType = this.props.attributes['objectType'];
83
- this.objectId = this.field.parent.model.id;
84
- this.loadCurrentState(this.field.model.currentStateId);
85
- this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType);
86
- // console.log(this.field)
87
- }
88
- executeAction(action) {
89
- // this.currentState = null
90
- // this.smActions$ = null
91
- // console.log(action.actionID)
92
- this.smActionService.executeAction(this.objectId, this.objectType, action.actionID, "")
93
- .subscribe(response => {
94
- // console.log(response)
95
- if (this.field.props['onStateCahnged'])
96
- this.field.props['onStateCahnged']({ model: this.field.parent.model, response });
97
- this.model['currentStateId'] = response.currentStateId;
98
- this.smActionService.getActions(this.objectId, this.objectType);
99
- this.options.resetModel();
100
- // this.field.formControl.updateValueAndValidity()
101
- this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType);
102
- // //this.smActions = []
103
- this.loadCurrentState(response.currentStateId);
104
- });
105
- // console.log(action);
106
- }
107
- loadCurrentState(stateId) {
108
- this.stateService.get(stateId).subscribe(state => this.currentState = state);
109
- }
110
- getColor(action) {
111
- if (action.props) {
112
- return action.props["Color"] ? action.props["Color"] : "primary";
113
- }
114
- return "primary";
115
- }
116
- getCurrentState() {
117
- return this.translate.instant('General.State.CurrentState', { field: this.currentState.name });
118
- }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicSmButtonsComponent, deps: [{ token: i1.SmActionService }, { token: i1.StateService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: RslIonicSmButtonsComponent, isStandalone: true, selector: "app-ionic-sm-buttons", usesInheritance: true, ngImport: i0, template: "<!-- <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>", styles: [""], dependencies: [{ kind: "ngmodule", type: RslIonicModuleModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
121
- }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicSmButtonsComponent, decorators: [{
123
- type: Component,
124
- args: [{ standalone: true, selector: 'app-ionic-sm-buttons', imports: [
125
- RslIonicModuleModule
126
- ], template: "<!-- <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>" }]
127
- }], ctorParameters: function () { return [{ type: i1.SmActionService }, { type: i1.StateService }, { type: i2.TranslateService }]; } });
128
-
129
75
  class TranslateExtension {
130
76
  constructor(translate) {
131
77
  this.translate = translate;
@@ -195,6 +141,7 @@ class WrappersModule {
195
141
  TranslateModule] }); }
196
142
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: WrappersModule, providers: [
197
143
  { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
144
+ SmActionService
198
145
  ], imports: [COMMON_MODULES$1, TranslateModule, CommonModule,
199
146
  IonicModule,
200
147
  ReactiveFormsModule,
@@ -211,6 +158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
211
158
  ],
212
159
  providers: [
213
160
  { provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] },
161
+ SmActionService
214
162
  ],
215
163
  exports: [
216
164
  ...COMMON_MODULES$1,
@@ -220,6 +168,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
220
168
  }]
221
169
  }] });
222
170
 
171
+ class RslIonicSmButtonsComponent extends FieldType {
172
+ constructor(smActionService, stateService, translate) {
173
+ super();
174
+ this.smActionService = smActionService;
175
+ this.stateService = stateService;
176
+ this.translate = translate;
177
+ }
178
+ ngOnInit() {
179
+ this.objectType = this.props.attributes['objectType'];
180
+ this.objectId = this.field.parent.model.id;
181
+ this.loadCurrentState(this.field.model.currentStateId);
182
+ this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType);
183
+ // console.log(this.field)
184
+ }
185
+ executeAction(action) {
186
+ // this.currentState = null
187
+ // this.smActions$ = null
188
+ // console.log(action.actionID)
189
+ this.smActionService.executeAction(this.objectId, this.objectType, action.actionID, "")
190
+ .subscribe(response => {
191
+ // console.log(response)
192
+ if (this.field.props['onStateCahnged'])
193
+ this.field.props['onStateCahnged']({ model: this.field.parent.model, response });
194
+ this.model['currentStateId'] = response.currentStateId;
195
+ this.smActionService.getActions(this.objectId, this.objectType);
196
+ this.options.resetModel();
197
+ // this.field.formControl.updateValueAndValidity()
198
+ this.smActions$ = this.smActionService.getActions(this.objectId, this.objectType);
199
+ // //this.smActions = []
200
+ this.loadCurrentState(response.currentStateId);
201
+ });
202
+ // console.log(action);
203
+ }
204
+ loadCurrentState(stateId) {
205
+ this.stateService.get(stateId).subscribe(state => this.currentState = state);
206
+ }
207
+ getColor(action) {
208
+ if (action.props) {
209
+ return action.props["Color"] ? action.props["Color"] : "primary";
210
+ }
211
+ return "primary";
212
+ }
213
+ getCurrentState() {
214
+ return this.translate.instant('General.State.CurrentState', { field: this.currentState.name });
215
+ }
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicSmButtonsComponent, deps: [{ token: i1.SmActionService }, { token: i1.StateService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: RslIonicSmButtonsComponent, isStandalone: true, selector: "app-ionic-sm-buttons", usesInheritance: true, ngImport: i0, template: "<!-- <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>", styles: [""], dependencies: [{ kind: "ngmodule", type: WrappersModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i4.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
218
+ }
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: RslIonicSmButtonsComponent, decorators: [{
220
+ type: Component,
221
+ args: [{ standalone: true, selector: 'app-ionic-sm-buttons', imports: [
222
+ WrappersModule
223
+ ], template: "<!-- <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>" }]
224
+ }], ctorParameters: function () { return [{ type: i1.SmActionService }, { type: i1.StateService }, { type: i2.TranslateService }]; } });
225
+
223
226
  class RepeatTypeComponent extends FieldArrayType {
224
227
  constructor(dialogService, translate, fileSaverService) {
225
228
  super();
@@ -1309,5 +1312,5 @@ function IonicListLayout(config) {
1309
1312
  * Generated bundle index. Do not edit.
1310
1313
  */
1311
1314
 
1312
- export { AccordionWrapperComponent, GenericIonicCrudComponent, IonicDataTableLayout, IonicDialogService, IonicListLayout, PanelWrapperComponent, RepeatTypeComponent, RslIonicDataTableComponent, RslIonicGridComponent, TranslateExtension, fieldMatchValidator, registerTranslateExtension };
1315
+ export { AccordionWrapperComponent, GenericIonicCrudComponent, IonicDataTableLayout, IonicDialogService, IonicListLayout, PanelWrapperComponent, RepeatTypeComponent, RslIonicDataTableComponent, RslIonicGridComponent, RslIonicSmButtonsComponent, TranslateExtension, fieldMatchValidator, registerTranslateExtension };
1313
1316
  //# sourceMappingURL=rosoftlab-ionic.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rosoftlab-ionic.mjs","sources":["../../../../projects/rosoftlab/ionic/src/lib/ionic-dialog.service.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/translate.extension.ts","../../../../projects/rosoftlab/ionic/src/lib/wrappers/wrappers.module.ts","../../../../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 { 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 { RslIonicModuleModule } from '../../rsl-ionic-module.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 RslIonicModuleModule\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 { 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 { 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 ],\n exports: [\n ...COMMON_MODULES,\n FormlyModule,\n TranslateModule\n ],\n})\nexport class WrappersModule { }\n","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/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,3 +1,4 @@
1
1
  export { GenericIonicCrudComponent } from './rsl-ionic-crud.component/rsl-ionic-crud.component';
2
2
  export { RslIonicDataTableComponent } from "./rsl-ionic-data-table/rsl-ionic-data-table.component";
3
3
  export { RslIonicGridComponent } from './rsl-ionic-grid/rsl-ionic-grid.component';
4
+ export { RslIonicSmButtonsComponent } from './rsl-ionic-sm-buttons/ionic-sm-buttons.component';
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@rosoftlab/ionic",
3
- "version": "1.0.0-alpha-3",
3
+ "version": "1.0.0-alpha-4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.2.1",
6
6
  "@angular/core": "^16.2.1",
7
7
  "@ngx-formly/core": "^6.1.8",
8
8
  "@ionic/angular": "^6.7.5",
9
9
  "@swimlane/ngx-datatable": "^20.1.0",
10
- "@rosoftlab/core": "1.0.0-alpha-3",
11
- "@rosoftlab/formly": "1.0.0-alpha-3",
12
- "@rosoftlab/statemachine": "1.0.0-alpha-3"
10
+ "@rosoftlab/core": "1.0.0-alpha-4",
11
+ "@rosoftlab/formly": "1.0.0-alpha-4",
12
+ "@rosoftlab/statemachine": "1.0.0-alpha-4"
13
13
  },
14
14
  "dependencies": {
15
15
  "tslib": "^2.3.0"