@rosoftlab/core 1.0.1-alpha-3 → 1.0.1-alpha-5

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.
@@ -11,9 +11,8 @@ import { Observable, throwError, of } from 'rxjs';
11
11
  import * as i1 from '@angular/common/http';
12
12
  import { HttpHeaders, HttpParams, HttpResponse, HttpClient, HttpClientModule } from '@angular/common/http';
13
13
  import { compare } from 'fast-json-patch';
14
- import * as qs from 'qs';
14
+ import queryString from 'query-string';
15
15
  import { map, catchError, tap } from 'rxjs/operators';
16
- import 'reflect-metadata';
17
16
  import { parseISO } from 'date-fns';
18
17
  import { __decorate, __metadata } from 'tslib';
19
18
 
@@ -66,6 +65,27 @@ class BaseQueryData {
66
65
  }
67
66
  }
68
67
 
68
+ class MetadataStorage {
69
+ static { this.metadataMap = new WeakMap(); }
70
+ static getMetadata(key, target, propertyKey) {
71
+ const metadata = this.metadataMap.get(target) || {};
72
+ return propertyKey ? metadata[`${key}:${propertyKey}`] : metadata[key];
73
+ }
74
+ static setMetadata(key, value, target, propertyKey) {
75
+ let metadata = this.metadataMap.get(target);
76
+ if (!metadata) {
77
+ metadata = {};
78
+ this.metadataMap.set(target, metadata);
79
+ }
80
+ if (propertyKey) {
81
+ metadata[`${key}:${propertyKey}`] = value;
82
+ }
83
+ else {
84
+ metadata[key] = value;
85
+ }
86
+ }
87
+ }
88
+
69
89
  class CacheService {
70
90
  constructor() {
71
91
  this.cache = {};
@@ -290,7 +310,7 @@ class BaseDatastore {
290
310
  if (customUrl) {
291
311
  return customUrl;
292
312
  }
293
- const modelConfig = Reflect.getMetadata('BaseModelConfig', modelType);
313
+ const modelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);
294
314
  const baseUrl = modelConfig.baseUrl || this.datastoreConfig.baseUrl;
295
315
  const apiVersion = modelConfig.apiVersion || this.datastoreConfig.apiVersion;
296
316
  const modelEndpointUrl = modelConfig.modelEndpointUrl || modelConfig.type;
@@ -328,7 +348,7 @@ class BaseDatastore {
328
348
  return throwError(error);
329
349
  }
330
350
  parseMeta(body, modelType) {
331
- const metaModel = Reflect.getMetadata('BaseModelConfig', modelType).meta;
351
+ const metaModel = MetadataStorage.getMetadata('BaseModelConfig', modelType).meta;
332
352
  return new metaModel(body);
333
353
  }
334
354
  resetMetadataAttributes(res, attributesMetadata, modelType) {
@@ -347,7 +367,7 @@ class BaseDatastore {
347
367
  return res;
348
368
  }
349
369
  get datastoreConfig() {
350
- const configFromDecorator = Reflect.getMetadata('BaseDatastoreConfig', this.constructor);
370
+ const configFromDecorator = MetadataStorage.getMetadata('BaseDatastoreConfig', this.constructor);
351
371
  return Object.assign(configFromDecorator, this.config);
352
372
  }
353
373
  transformSerializedNamesToPropertyNames(modelType, attributes) {
@@ -361,7 +381,7 @@ class BaseDatastore {
361
381
  return properties;
362
382
  }
363
383
  getModelPropertyNames(model) {
364
- return Reflect.getMetadata('AttributeMapping', model);
384
+ return MetadataStorage.getMetadata('AttributeMapping', model);
365
385
  }
366
386
  buildHeaders(customHeaders) {
367
387
  const headers = {
@@ -391,7 +411,7 @@ class BaseDatastore {
391
411
  httpParams = httpParams.set(key, params[key]);
392
412
  });
393
413
  }
394
- const modelConfig = Reflect.getMetadata('BaseModelConfig', modelType);
414
+ const modelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);
395
415
  httpParams = httpParams.set('bypassCache', modelConfig.bypassCache || false);
396
416
  return httpParams;
397
417
  }
@@ -421,7 +441,7 @@ class BaseDatastore {
421
441
  return attributes;
422
442
  }
423
443
  _toQueryString(params) {
424
- return qs.stringify(params, { arrayFormat: 'brackets' });
444
+ return queryString.stringify(params, { arrayFormat: 'bracket' });
425
445
  }
426
446
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: BaseDatastore, deps: [{ token: i1.HttpClient }, { token: CacheService }], target: i0.ɵɵFactoryTarget.Injectable }); }
427
447
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.3", ngImport: i0, type: BaseDatastore }); }
@@ -825,27 +845,27 @@ function Attribute(options = {}) {
825
845
  return value;
826
846
  };
827
847
  const saveAnnotations = () => {
828
- const metadata = Reflect.getMetadata('Attribute', target) || {};
848
+ const metadata = MetadataStorage.getMetadata('Attribute', target) || {};
829
849
  metadata[propertyName] = {
830
850
  marked: true
831
851
  };
832
- Reflect.defineMetadata('Attribute', metadata, target);
833
- const mappingMetadata = Reflect.getMetadata('AttributeMapping', target) || {};
852
+ MetadataStorage.setMetadata('Attribute', metadata, target);
853
+ const mappingMetadata = MetadataStorage.getMetadata('AttributeMapping', target) || {};
834
854
  const serializedPropertyName = options.serializedName !== undefined ? options.serializedName : propertyName;
835
855
  mappingMetadata[serializedPropertyName] = propertyName;
836
- Reflect.defineMetadata('AttributeMapping', mappingMetadata, target);
837
- const requiredMetadata = Reflect.getMetadata('AttributeRequired', target) || {};
856
+ MetadataStorage.setMetadata('AttributeMapping', mappingMetadata, target);
857
+ const requiredMetadata = MetadataStorage.getMetadata('AttributeRequired', target) || {};
838
858
  requiredMetadata[serializedPropertyName] = options.required !== undefined ? options.required : false;
839
- Reflect.defineMetadata('AttributeRequired', requiredMetadata, target);
840
- const defaultMetadata = Reflect.getMetadata('AttributedefaultValue', target) || {};
859
+ MetadataStorage.setMetadata('AttributeRequired', requiredMetadata, target);
860
+ const defaultMetadata = MetadataStorage.getMetadata('AttributedefaultValue', target) || {};
841
861
  defaultMetadata[serializedPropertyName] = options.defaultValue !== undefined ? options.defaultValue : null;
842
- Reflect.defineMetadata('AttributedefaultValue', defaultMetadata, target);
843
- const formSubGroupMetadata = Reflect.getMetadata('AttributeformSubGroup', target) || {};
862
+ MetadataStorage.setMetadata('AttributedefaultValue', defaultMetadata, target);
863
+ const formSubGroupMetadata = MetadataStorage.getMetadata('AttributeformSubGroup', target) || {};
844
864
  formSubGroupMetadata[serializedPropertyName] = options.formSubGroup !== undefined ? options.formSubGroup : null;
845
- Reflect.defineMetadata('AttributeformSubGroup', formSubGroupMetadata, target);
865
+ MetadataStorage.setMetadata('AttributeformSubGroup', formSubGroupMetadata, target);
846
866
  };
847
867
  const setMetadata = (hasDirtyAttributes, instance, oldValue, newValue, isNew) => {
848
- const targetType = Reflect.getMetadata('design:type', target, propertyName);
868
+ const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);
849
869
  if (!instance[AttributeMetadata]) {
850
870
  instance[AttributeMetadata] = {};
851
871
  }
@@ -862,7 +882,7 @@ function Attribute(options = {}) {
862
882
  return this['_' + propertyName];
863
883
  };
864
884
  const setter = function (newVal) {
865
- const targetType = Reflect.getMetadata('design:type', target, propertyName);
885
+ const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);
866
886
  const convertedValue = converter(targetType, newVal);
867
887
  if (convertedValue !== this['_' + propertyName]) {
868
888
  setMetadata(true, this, this['_' + propertyName], newVal, !this.id);
@@ -884,7 +904,7 @@ function Attribute(options = {}) {
884
904
  function BaseDatastoreConfig(config = {}) {
885
905
  // tslint:disable-next-line:only-arrow-functions
886
906
  return (target) => {
887
- Reflect.defineMetadata('BaseDatastoreConfig', config, target);
907
+ MetadataStorage.setMetadata('BaseDatastoreConfig', config, target);
888
908
  };
889
909
  }
890
910
 
@@ -900,18 +920,18 @@ function BaseModelConfig(config = {}) {
900
920
  if (typeof config['meta'] === 'undefined' || config['meta'] == null) {
901
921
  config['meta'] = BaseMetaModel;
902
922
  }
903
- Reflect.defineMetadata('BaseModelConfig', config, target);
923
+ MetadataStorage.setMetadata('BaseModelConfig', config, target);
904
924
  };
905
925
  }
906
926
 
907
927
  function CustomType(config = {}) {
908
928
  return (target, propertyName) => {
909
- const annotations = Reflect.getMetadata('CustomType', target) || [];
929
+ const annotations = MetadataStorage.getMetadata('CustomType', target) || [];
910
930
  annotations.push({
911
931
  propertyName,
912
932
  relationship: config.key || propertyName
913
933
  });
914
- Reflect.defineMetadata('CustomType', annotations, target);
934
+ MetadataStorage.setMetadata('CustomType', annotations, target);
915
935
  };
916
936
  }
917
937
 
@@ -1023,7 +1043,7 @@ class BaseModel {
1023
1043
  this[AttributeMetadata] = attributesMetadata;
1024
1044
  }
1025
1045
  get modelConfig() {
1026
- return Reflect.getMetadata('BaseModelConfig', this.constructor);
1046
+ return MetadataStorage.getMetadata('BaseModelConfig', this.constructor);
1027
1047
  }
1028
1048
  deserializeModel(modelType, data) {
1029
1049
  data = this.transformSerializedNamesToPropertyNames(modelType, data);
@@ -1040,16 +1060,16 @@ class BaseModel {
1040
1060
  return properties;
1041
1061
  }
1042
1062
  getModelPropertyNames(model) {
1043
- return Reflect.getMetadata('AttributeMapping', model);
1063
+ return MetadataStorage.getMetadata('AttributeMapping', model);
1044
1064
  }
1045
1065
  getModelRequiredPropertyNames(model) {
1046
- return Reflect.getMetadata('AttributeRequired', model);
1066
+ return MetadataStorage.getMetadata('AttributeRequired', model);
1047
1067
  }
1048
1068
  getModelDefaultPropertyValues(model) {
1049
- return Reflect.getMetadata('AttributedefaultValue', model);
1069
+ return MetadataStorage.getMetadata('AttributedefaultValue', model);
1050
1070
  }
1051
1071
  getModelSubGroupPropertyNames(model) {
1052
- return Reflect.getMetadata('AttributeformSubGroup', model);
1072
+ return MetadataStorage.getMetadata('AttributeformSubGroup', model);
1053
1073
  }
1054
1074
  getFromGroup(fb) {
1055
1075
  const props = Object.keys(this.getModelPropertyNames(this));
@@ -1390,5 +1410,5 @@ function getValueFromJsonData(jsonData, key) {
1390
1410
  * Generated bundle index. Do not edit.
1391
1411
  */
1392
1412
 
1393
- export { Attribute, BaseDatastore, BaseDatastoreConfig, BaseFormEditComponent, BaseMetaModel, BaseModel, BaseModelConfig, BaseQueryData, BaseService, CacheInterceptor, CacheService, CellTextAlign, Configurations, CustomType, CustomValidators, DatastoreCore, DynamicallyModelResolver, DynamicallyServiceResolver, ErrorResponse, FieldErrorDisplayComponent, GridLayoutFormat, InputErrorPipe, Nl2brPipe, PROVIDERS, PageNotFoundComponent, RslBaseModule, Rule, TranslateloaderService, UnderConstructionComponent, getValueFromJsonData, readFileAsync };
1413
+ export { Attribute, BaseDatastore, BaseDatastoreConfig, BaseFormEditComponent, BaseMetaModel, BaseModel, BaseModelConfig, BaseQueryData, BaseService, CacheInterceptor, CacheService, CellTextAlign, Configurations, CustomType, CustomValidators, DatastoreCore, DynamicallyModelResolver, DynamicallyServiceResolver, ErrorResponse, FieldErrorDisplayComponent, GridLayoutFormat, InputErrorPipe, MetadataStorage, Nl2brPipe, PROVIDERS, PageNotFoundComponent, RslBaseModule, Rule, TranslateloaderService, UnderConstructionComponent, getValueFromJsonData, readFileAsync };
1394
1414
  //# sourceMappingURL=rosoftlab-core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rosoftlab-core.mjs","sources":["../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.html","../../../../projects/rosoftlab/core/src/lib/models/base-query-data.ts","../../../../projects/rosoftlab/core/src/lib/services/cache.service.ts","../../../../projects/rosoftlab/core/src/lib/services/base-datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/services/base.service.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-form-edit.component.ts","../../../../projects/rosoftlab/core/src/lib/configurations.ts","../../../../projects/rosoftlab/core/src/lib/grid-layout-format.enum.ts","../../../../projects/rosoftlab/core/src/lib/constants/symbols.ts","../../../../projects/rosoftlab/core/src/lib/converters/date/date.converter.ts","../../../../projects/rosoftlab/core/src/lib/decorators/attribute.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-datastore-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/models/base-meta.model.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-model-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/custom.type.decorator.ts","../../../../projects/rosoftlab/core/src/lib/interceptors/cache.interceptor.ts","../../../../projects/rosoftlab/core/src/lib/models/base.model.ts","../../../../projects/rosoftlab/core/src/lib/models/error-response.model.ts","../../../../projects/rosoftlab/core/src/lib/models/rule.ts","../../../../projects/rosoftlab/core/src/lib/pipes/Nl2brPipe.pipe.ts","../../../../projects/rosoftlab/core/src/lib/pipes/input-error.pipe.ts","../../../../projects/rosoftlab/core/src/lib/services/datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/services/translate-loader.service.ts","../../../../projects/rosoftlab/core/src/lib/providers.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-class-resolver.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-service-resolver.ts","../../../../projects/rosoftlab/core/src/lib/rsl-base-module.ts","../../../../projects/rosoftlab/core/src/lib/validators/pattern-validator.ts","../../../../projects/rosoftlab/core/src/lib/utils.ts","../../../../projects/rosoftlab/core/src/public-api.ts","../../../../projects/rosoftlab/core/src/rosoftlab-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n selector: 'rsl-field-error-display',\n templateUrl: './field-error-display.component.html',\n styleUrls: ['./field-error-display.component.scss'],\n standalone: false\n})\r\nexport class FieldErrorDisplayComponent {\r\n\r\n @Input() errorMsg: string;\r\n @Input() displayError: boolean;\r\n\r\n}\r\n","<div *ngIf=\"displayError\" >\n <!-- <span class=\"glyphicon glyphicon-remove form-control-feedback fix-error-icon\"></span> -->\n <span class=\"sr-only\">(error)</span>\n <div class=\"error-msg\">\n {{ errorMsg }}\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'rsl-page-not-found',\n templateUrl: './page-not-found.component.html',\n styleUrls: ['./page-not-found.component.scss'],\n standalone: false\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page not found\n </div>\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'rsl-under-construction',\n templateUrl: './under-construction.component.html',\n styleUrls: ['./under-construction.component.scss'],\n standalone: false\n})\r\nexport class UnderConstructionComponent {\r\n\r\n constructor() { }\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page under construction\n </div>\n</div>","\r\nexport class BaseQueryData<T> {\r\n constructor(protected jsonApiModels: Array<T>, protected metaData?: any) { }\r\n\r\n public getModels(): T[] {\r\n return this.jsonApiModels;\r\n }\r\n\r\n public getMeta(): any {\r\n return this.metaData;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheService {\r\n private cache: { [key: string]: { data: any, expiration: number } } = {};\r\n\r\n constructor() {}\r\n\r\n get(key: string): any {\r\n const cachedItem = this.cache[key];\r\n if (cachedItem && cachedItem.expiration > Date.now()) {\r\n return cachedItem.data;\r\n }\r\n this.delete(key);\r\n return null;\r\n }\r\n\r\n set(key: string, data: any, expiresInMs: number): void {\r\n const expiration = Date.now() + expiresInMs;\r\n this.cache[key] = { data, expiration };\r\n }\r\n\r\n delete(key: string): void {\r\n delete this.cache[key];\r\n }\r\n\r\n clearCacheContainingKeyword(keyword: string): void {\r\n const keysToDelete = Object.keys(this.cache).filter(key => key.includes(keyword));\r\n keysToDelete.forEach(key => this.delete(key));\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { compare } from 'fast-json-patch';\r\nimport * as qs from 'qs';\r\nimport { Observable, Observer, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { DatastoreConfig } from '../interfaces/datastore-config.interface';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport { BaseQueryData } from '../models/base-query-data';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { CacheService } from './cache.service';\r\nexport type ModelType<T extends BaseModel> = new (datastore: BaseDatastore, data: any) => T;\r\n\r\n@Injectable()\r\nexport class BaseDatastore {\r\n protected config!: DatastoreConfig;\r\n // tslint:disable-next-line:variable-name\r\n private _store: { [type: string]: { [id: string]: BaseModel } } = {};\r\n // tslint:enable:max-line-length\r\n // tslint:disable-next-line:ban-types\r\n private toQueryString: Function = this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.toQueryString ?\r\n this.datastoreConfig.overrides.toQueryString : this._toQueryString;\r\n // tslint:enable:max-line-length\r\n\r\n private get getDirtyAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getDirtyAttributes) {\r\n return this.datastoreConfig.overrides.getDirtyAttributes;\r\n } else {\r\n return BaseDatastore.getDirtyAttributes;\r\n }\r\n }\r\n\r\n public get getAllAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getAllAttributes) {\r\n return this.datastoreConfig.overrides.getAllAttributes;\r\n } else {\r\n return BaseDatastore.getAllAttributes;\r\n }\r\n }\r\n\r\n // protected config: DatastoreConfig;\r\n\r\n private static getDirtyAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n private static getAllAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n constructor(\r\n protected httpClient: HttpClient,\r\n protected cacheService: CacheService\r\n ) {\r\n }\r\n\r\n findAll<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<BaseQueryData<T>> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const htmlParams = this.buildParams(modelType, params);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n\r\n const response = this.httpClient.get(url,\r\n { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(\r\n map(res => this.extractQueryData(res, modelType)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n\r\n findRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id?: string,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<T> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (id) {\r\n url += '/' + id;\r\n }\r\n\r\n const htmlParams = this.buildParams(modelType, params);\r\n const response = this.httpClient.get(url, { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(map(res => this.entityToModel(res, modelType, undefined)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n getCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n if (!customResponseType)\r\n customResponseType = 'json';\r\n return this.httpClient.get<U>(url, { headers: customHeadhers, params: htmlParams, withCredentials: true, responseType: customResponseType });\r\n }\r\n\r\n postCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.post<U>(url, body, { headers: customHeadhers, params: htmlParams, reportProgress: true, withCredentials: true });\r\n }\r\n\r\n patchCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.patch<U>(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n createRecord<T extends BaseModel>(modelType: ModelType<T>, data?: any): T {\r\n return new modelType(this, data);\r\n }\r\n\r\n saveRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata);\r\n\r\n if (model.id) {\r\n // tslint:disable-next-line:max-line-length\r\n httpCall = this.httpClient.patch(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n patchRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n origModel: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n let origData = { id: '' };\r\n if (origModel)\r\n origData = this.modelToEntity(origModel, origModel.attributeMetadata, true);\r\n const newData = this.modelToEntity(model, attributesMetadata, true);\r\n newData.id = origData.id;\r\n const patch = compare(origData, newData);\r\n if (patch.length > 0) {\r\n httpCall = this.httpClient.patch(url + '/' + model.id, patch, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n return new Observable((observer: Observer<T>) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n }\r\n // getPatch<T extends BaseModel>(\r\n // model: T,\r\n // origModel: T): any {\r\n\r\n // }\r\n replaceRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata, true);\r\n\r\n if (model.id) {\r\n httpCall = this.httpClient.put(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n deleteRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id: string,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<{}> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (!url.includes('share')) {\r\n url = url + '/' + id;\r\n }\r\n // const idParam = new HttpParams().set('id', id);\r\n return this.httpClient.delete(url, { headers: customHeadhers, withCredentials: true })\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n return res;\r\n }\r\n ),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n public buildUrl<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n customUrl?: string\r\n ): string {\r\n\r\n if (customUrl) {\r\n return customUrl;\r\n }\r\n\r\n const modelConfig: ModelConfig = Reflect.getMetadata('BaseModelConfig', modelType);\r\n\r\n const baseUrl = modelConfig.baseUrl || this.datastoreConfig.baseUrl;\r\n const apiVersion = modelConfig.apiVersion || this.datastoreConfig.apiVersion;\r\n const modelEndpointUrl: string = modelConfig.modelEndpointUrl || modelConfig.type;\r\n\r\n const url: string = [baseUrl, apiVersion, modelEndpointUrl].filter((x) => x).join('/');\r\n\r\n return url;\r\n }\r\n\r\n protected extractQueryData<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>\r\n ): BaseQueryData<T> {\r\n let result;\r\n const body: any = res;\r\n const models: T[] = [];\r\n\r\n for (const data of body.data) {\r\n const model = this.entityToModel(data, modelType, undefined);\r\n models.push(model);\r\n }\r\n\r\n result = new BaseQueryData(models, this.parseMeta(body, modelType));\r\n return result;\r\n }\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\r\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\r\n return new modelType(this, data);\r\n }\r\n\r\n protected handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n // console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n // console.error(\r\n // 'Backend returned code ${error.status}, ' +\r\n // 'body was: ${error.error}');\r\n }\r\n // return an observable with a user-facing error message\r\n return throwError(error);\r\n }\r\n\r\n protected parseMeta(body: any, modelType: ModelType<BaseModel>): any {\r\n const metaModel: any = Reflect.getMetadata('BaseModelConfig', modelType).meta;\r\n return new metaModel(body);\r\n }\r\n\r\n protected resetMetadataAttributes<T extends BaseModel>(res: T, attributesMetadata: any, modelType: ModelType<T>) {\r\n // TODO check why is attributesMetadata from the arguments never used\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n metadata.hasDirtyAttributes = false;\r\n }\r\n }\r\n }\r\n\r\n if (res) {\r\n res.attributeMetadata = attributesMetadata;\r\n }\r\n return res;\r\n }\r\n\r\n public get datastoreConfig(): DatastoreConfig {\r\n const configFromDecorator: DatastoreConfig = Reflect.getMetadata('BaseDatastoreConfig', this.constructor);\r\n return Object.assign(configFromDecorator, this.config);\r\n }\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\r\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\r\n const properties: any = {};\r\n\r\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\r\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\r\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\r\n }\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n protected getModelPropertyNames(model: BaseModel) {\r\n return Reflect.getMetadata('AttributeMapping', model);\r\n }\r\n\r\n public buildHeaders(customHeaders?: HttpHeaders): HttpHeaders {\r\n const headers: any = {\r\n Accept: 'application/json-patch+json',\r\n // 'Content-Type': 'application/vnd.api+json',\r\n 'Content-Type': 'application/json-patch+json'\r\n };\r\n if (customHeaders && customHeaders.keys().length) {\r\n // tslint:disable-next-line:variable-name\r\n Object.assign({}, headers, customHeaders.keys().map(header_name => {\r\n headers['' + header_name] = customHeaders.get(header_name);\r\n }));\r\n }\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n public buildParams<T extends BaseModel>(modelType: ModelType<T>,\r\n params: any): HttpParams {\r\n let httpParams = new HttpParams();\r\n if (params) {\r\n Object.keys(params)\r\n .filter(key => {\r\n const v = params[key];\r\n return (Array.isArray(v) || typeof v === 'string') ?\r\n (v.length > 0) :\r\n (v !== null && v !== undefined);\r\n })\r\n .forEach(key => {\r\n httpParams = httpParams.set(key, params[key]);\r\n });\r\n }\r\n const modelConfig: ModelConfig = Reflect.getMetadata('BaseModelConfig', modelType);\r\n httpParams = httpParams.set('bypassCache', modelConfig.bypassCache || false);\r\n return httpParams;\r\n }\r\n\r\n\r\n protected entityToModel<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ) {\r\n return this.extractRecordDataJson(res, modelType, model);\r\n }\r\n\r\n\r\n private extractRecordDataJson<T extends BaseModel>(\r\n res: Response,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ): T {\r\n const body: any = res;\r\n if (!body) {\r\n throw new Error('no body in response');\r\n }\r\n if (model) {\r\n Object.assign(model, body);\r\n }\r\n const deserializedModel = model || this.deserializeModel(modelType, body.data || body);\r\n return deserializedModel;\r\n }\r\n\r\n public modelToEntity<T extends BaseModel>(\r\n model: T,\r\n attributesMetadata: any,\r\n allAttributes: boolean = false\r\n ): any {\r\n let attributes;\r\n if (allAttributes) {\r\n attributes = this.getAllAttributes(attributesMetadata, model);\r\n } else {\r\n attributes = this.getDirtyAttributes(attributesMetadata, model);\r\n }\r\n // this.getRelationships(model, attributes);\r\n return attributes;\r\n }\r\n private _toQueryString(params: any): string {\r\n return qs.stringify(params, { arrayFormat: 'brackets' });\r\n }\r\n\r\n\r\n}\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseQueryData } from '../models/base-query-data';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseDatastore, ModelType } from './base-datastore.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BaseService<T extends BaseModel> {\r\n public modelType: ModelType<T>;\r\n constructor(public datastore: BaseDatastore) {\r\n }\r\n setModelType(modelType: ModelType<T>) {\r\n this.modelType = modelType;\r\n }\r\n\r\n get(id?: any, customInclude: string = ''): Observable<T> {\r\n const response = this.datastore.findRecord(this.modelType, id, { customInclude });\r\n return response;\r\n }\r\n\r\n getAll(page: number,\r\n pageSize: number,\r\n sort: string = '',\r\n filters: string = '',\r\n customInclude: string = ''): Observable<BaseQueryData<T>> {\r\n const response = this.datastore.findAll(this.modelType,\r\n {\r\n Page: page,\r\n PageSize: pageSize,\r\n Sorts: sort,\r\n Filters: filters,\r\n customInclude\r\n });\r\n return response;\r\n }\r\n delete(id: any): Observable<{}> {\r\n const response = this.datastore.deleteRecord(this.modelType, id);\r\n return response;\r\n }\r\n getCustom<U>(params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n return this.datastore.getCustom<U, T>(this.modelType, params, headers, customUrl, customResponseType);\r\n }\r\n postCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.postCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n patchCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.patchCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n // checkIfPropertyUnique(property: string, value: any): Observable<boolean> {\r\n\r\n // }\r\n\r\n save(docTypeOrFormGroup: T | UntypedFormGroup, id?: any, origModel?: T): Observable<T> {\r\n if (id == null) {\r\n let fromModel: T;\r\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\r\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\r\n } else {\r\n fromModel = docTypeOrFormGroup;\r\n }\r\n const data = this.datastore.createRecord(this.modelType, fromModel);\r\n return data.save();\r\n } else {\r\n return this.patch(docTypeOrFormGroup, origModel, id);\r\n }\r\n }\r\n\r\n patch(docTypeOrFormGroup: T | UntypedFormGroup, origModel: T, id?: any): Observable<T> {\r\n let fromModel: T;\r\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\r\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\r\n } else {\r\n fromModel = docTypeOrFormGroup;\r\n }\r\n const data = this.datastore.createRecord(this.modelType, fromModel);\r\n return data.patch(origModel);\r\n }\r\n\r\n newModel(data?: any): T {\r\n return new this.modelType(this.datastore, data);\r\n }\r\n\r\n toFormGroup(fb: UntypedFormBuilder, fromModel?: T): UntypedFormGroup {\r\n if (fromModel === undefined) {\r\n fromModel = this.newModel();\r\n }\r\n return fromModel.getFromGroup(fb);\r\n }\r\n\r\n fromFormGroup(formGroup: UntypedFormGroup, id?: any): T {\r\n // const saveModel = this.newModel(formGroup.getRawValue());\r\n // saveModel.id = id ? id : null;\r\n // return saveModel;\r\n const saveModel = this.newModel();\r\n saveModel.getModelFromFormGroup(formGroup)\r\n saveModel.id = id ? id : null;\r\n return saveModel;\r\n }\r\n getSelectValues(property: string): Observable<any[]> {\r\n return null;\r\n }\r\n}","import { Location } from '@angular/common';\r\nimport { Component, Inject, InjectionToken, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseService } from '../services/base.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nconst DialogSERVICE = new InjectionToken<string>('DialogService');\r\n@Component({\n selector: 'app-base.form.edit',\n template: '',\n standalone: false\n})\r\nexport abstract class BaseFormEditComponent<T extends BaseModel> implements OnInit {\r\n baseForm: UntypedFormGroup;\r\n modelId: string;\r\n model: T;\r\n isEdit: boolean;\r\n isLoading = true;\r\n cancelRoute: string;\r\n editRoute: string;\r\n public changeUrlRoute: boolean = true;\r\n constructor(\r\n protected fb: UntypedFormBuilder,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected modelService: BaseService<T>,\r\n @Inject(DialogSERVICE) protected dialogService: DialogService,\r\n protected translate: TranslateService,\r\n protected location: Location\r\n ) {\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n\r\n public afterSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n public beforeSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initForm();\r\n }\r\n initForm(customInclude: string = '', newModelId: string = null, model: T = null) {\r\n if (model === null) {\r\n this.modelId = this.route.snapshot.paramMap.get('id') ?? newModelId;\r\n this.isEdit = false;\r\n if (this.modelId) {\r\n this.modelService.get(this.modelId, customInclude).subscribe((value: T) => {\r\n this.isEdit = true;\r\n this.generateForm(value)\r\n }\r\n );\r\n } else {\r\n if (this.changeUrlRoute) {\r\n const addUrl = this.router.createUrlTree([]).toString();\r\n this.editRoute = this.router.createUrlTree([addUrl.replace('add', 'edit')]).toString();\r\n }\r\n // }\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n } else {\r\n this.modelId = model.id;\r\n this.isEdit = true;\r\n this.generateForm(model)\r\n }\r\n }\r\n generateForm(model?: T) {\r\n this.isLoading = false;\r\n this.modelId = model.id;\r\n this.model = model;\r\n this.baseForm = this.modelService.toFormGroup(this.fb, model);\r\n this.afterFormGenerated();\r\n }\r\n public afterFormGenerated() {\r\n\r\n }\r\n private getFromGroup(formGroup: UntypedFormGroup | string = null): UntypedFormGroup {\r\n if (!formGroup)\r\n return this.baseForm;\r\n if (formGroup instanceof UntypedFormGroup)\r\n return formGroup;\r\n return this.baseForm.controls[formGroup] as UntypedFormGroup;\r\n }\r\n validateAllFormFields(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n Object.keys(fg.controls).forEach(field => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n isFieldValid(field: string, formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const filedControl = fg.get(field)\r\n return !filedControl.valid && filedControl.touched;\r\n }\r\n\r\n isFieldValidFromArray(arrayIndex: number, field: string, arrayName: string = 'formArray') {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return !fieldControl.valid && fieldControl.touched;\r\n }\r\n\r\n displayFieldCss(field: string) {\r\n return {\r\n 'has-error': this.isFieldValid(field),\r\n 'has-feedback': this.isFieldValid(field)\r\n };\r\n }\r\n onCancel() {\r\n this.router.navigate([this.cancelRoute]);\r\n }\r\n onSave() {\r\n this.saveModel(this.baseForm)\r\n }\r\n saveModel(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const that = this;\r\n if (fg) {\r\n if (fg.valid) {\r\n this.beforeSave(this.model).subscribe(_ => {\r\n this.modelService.save(this.baseForm, this.modelId, this.model).subscribe(\r\n (newModel: T) => {\r\n this.model = newModel;\r\n this.modelId = newModel.id;\r\n if (this.editRoute) {\r\n this.isEdit = true;\r\n if (this.changeUrlRoute) {\r\n const url = this.router.createUrlTree([this.editRoute, this.modelId]).toString();\r\n this.location.replaceState(url);\r\n }\r\n }\r\n this.afterSave(newModel).subscribe((val: T) => {\r\n this.dialogService.showSaveMessage('Your changes were saved successfully.').subscribe(d => {\r\n fg.markAsPristine();\r\n });\r\n });\r\n },\r\n err => {\r\n this.serverErrors(err)\r\n });\r\n });\r\n } else {\r\n this.validateAllFormFields(formGroup);\r\n }\r\n }\r\n }\r\n serverErrors(err: any) {\r\n if (err.error) {\r\n if (err.error.errors) {\r\n const validationErrors = err.error.errors;\r\n if (Array.isArray(validationErrors)) {\r\n validationErrors.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n } else {\r\n const keys = Object.keys(validationErrors);\r\n keys.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n canDeactivate(): Observable<boolean> | boolean {\r\n // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged\r\n if (!this.baseForm.dirty) {\r\n return true;\r\n }\r\n // Otherwise ask the user with the dialog service and return its\r\n // observable which resolves to true or false when the user decides\r\n return this.dialogService.confirm('Discard changes ?', null, 'Discard');\r\n }\r\n getFiledName(filedTranslationKey: string) {\r\n return { field: this.translate.instant(filedTranslationKey) };\r\n }\r\n getCustomErrorMessage(error: any, fieldLabel: string): string {\r\n return '';\r\n }\r\n getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName: string = 'formArray'): string {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return this.getErrorMessageForField(fieldControl, filedTranslationKey)\r\n }\r\n getErrorMessage(field: string, filedTranslationKey: string, formGroup: UntypedFormGroup | string = null): string {\r\n const fg = this.getFromGroup(formGroup)\r\n return this.getErrorMessageForField(fg.get(field), filedTranslationKey)\r\n }\r\n getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string {\r\n const error = fieldControl.errors;\r\n const fieldLabel = this.translate.instant(filedTranslationKey);\r\n let rvalue = '';\r\n if (error !== null) {\r\n if (error['required'] === true) {\r\n rvalue = this.translate.instant('General.Field.Required', { field: fieldLabel });\r\n }\r\n if (error['minlength']) {\r\n rvalue = this.translate.instant('General.Field.MinLength', { field: fieldLabel, requiredLength: error.minlength.requiredLength });\r\n }\r\n if (error['email'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidEmail');\r\n }\r\n if (error['url'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidUrl');\r\n }\r\n if (error['serverError']) {\r\n rvalue = error['serverError'];\r\n }\r\n if (rvalue === '') {\r\n rvalue = this.getCustomErrorMessage(error, fieldLabel);\r\n }\r\n }\r\n return rvalue;\r\n }\r\n}\r\n","export class Configurations {\r\n public baseUrl: string;\r\n public authUrl: string;\r\n public apiVersion: string;\r\n\r\n constructor() {\r\n this.baseUrl = '';\r\n this.authUrl = '';\r\n this.apiVersion = 'api/v1';\r\n }\r\n\r\n}","export enum GridLayoutFormat {\r\n none,\r\n date,\r\n number,\r\n percent,\r\n picture\r\n}\r\n\r\nexport enum CellTextAlign {\r\n left = 'left',\r\n center = 'center',\r\n right = 'right',\r\n}","// tslint:disable-next-line:variable-name\nexport const AttributeMetadata: any = Symbol('AttributeMetadata');\n","import { parseISO } from 'date-fns';\r\nimport { PropertyConverter } from '../../interfaces/property-converter.interface';\r\n\r\nexport class DateConverter implements PropertyConverter {\r\n mask(value: any) {\r\n if (value instanceof Date && !isNaN(value.getTime())) {\r\n return value;\r\n }\r\n const d = parseISO(value);\r\n if (d instanceof Date && !isNaN(d.getTime())) {\r\n return d\r\n } else {\r\n return value;\r\n }\r\n }\r\n unmask(value: any) {\r\n // const result = format(value, 'YYYY-MM-DDTHH:mm:ssZ');\r\n return value;\r\n }\r\n}\r\n","import 'reflect-metadata';\r\n// import * as Reflect from 'reflect-metadata';\r\nimport { AttributeMetadata } from '../constants/symbols';\r\nimport { DateConverter } from '../converters/date/date.converter';\r\nimport { AttributeDecoratorOptions } from '../interfaces/attribute-decorator-options.interface';\r\n\r\nexport function Attribute(options: AttributeDecoratorOptions = {}): PropertyDecorator {\r\n return (target: any, propertyName: string) => {\r\n\r\n const converter = (dataType: any, value: any, forSerialisation = false): any => {\r\n let attrConverter;\r\n if (dataType) {\r\n if (options.converter) {\r\n attrConverter = options.converter;\r\n } else if (dataType === Date) {\r\n attrConverter = new DateConverter();\r\n } else {\r\n const datatype = new dataType();\r\n\r\n if (datatype.mask && datatype.unmask) {\r\n attrConverter = datatype;\r\n }\r\n }\r\n\r\n if (attrConverter) {\r\n if (!forSerialisation) {\r\n return attrConverter.mask(value);\r\n }\r\n return attrConverter.unmask(value);\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n const saveAnnotations = () => {\r\n const metadata = Reflect.getMetadata('Attribute', target) || {};\r\n\r\n metadata[propertyName] = {\r\n marked: true\r\n };\r\n\r\n Reflect.defineMetadata('Attribute', metadata, target);\r\n\r\n const mappingMetadata = Reflect.getMetadata('AttributeMapping', target) || {};\r\n const serializedPropertyName = options.serializedName !== undefined ? options.serializedName : propertyName;\r\n mappingMetadata[serializedPropertyName] = propertyName;\r\n Reflect.defineMetadata('AttributeMapping', mappingMetadata, target);\r\n\r\n const requiredMetadata = Reflect.getMetadata('AttributeRequired', target) || {};\r\n requiredMetadata[serializedPropertyName] = options.required !== undefined ? options.required : false;\r\n Reflect.defineMetadata('AttributeRequired', requiredMetadata, target);\r\n\r\n const defaultMetadata = Reflect.getMetadata('AttributedefaultValue', target) || {};\r\n defaultMetadata[serializedPropertyName] = options.defaultValue !== undefined ? options.defaultValue : null;\r\n Reflect.defineMetadata('AttributedefaultValue', defaultMetadata, target);\r\n\r\n const formSubGroupMetadata = Reflect.getMetadata('AttributeformSubGroup', target) || {};\r\n formSubGroupMetadata[serializedPropertyName] = options.formSubGroup !== undefined ? options.formSubGroup : null;\r\n Reflect.defineMetadata('AttributeformSubGroup', formSubGroupMetadata, target);\r\n\r\n };\r\n\r\n const setMetadata = (\r\n hasDirtyAttributes: boolean,\r\n instance: any,\r\n oldValue: any,\r\n newValue: any,\r\n isNew: boolean\r\n ) => {\r\n const targetType = Reflect.getMetadata('design:type', target, propertyName);\r\n\r\n if (!instance[AttributeMetadata]) {\r\n instance[AttributeMetadata] = {};\r\n }\r\n\r\n const propertyHasDirtyAttributes = typeof oldValue === 'undefined' && !isNew ? false : hasDirtyAttributes;\r\n\r\n instance[AttributeMetadata][propertyName] = {\r\n newValue,\r\n oldValue,\r\n serializedName: options.serializedName,\r\n hasDirtyAttributes: propertyHasDirtyAttributes,\r\n serialisationValue: converter(targetType, newValue, true)\r\n };\r\n };\r\n\r\n const getter = function () {\r\n return this['_' + (propertyName as string)];\r\n };\r\n\r\n const setter = function (newVal: any) {\r\n const targetType = Reflect.getMetadata('design:type', target, propertyName);\r\n const convertedValue = converter(targetType, newVal);\r\n\r\n if (convertedValue !== this['_' + (propertyName as string)]) {\r\n setMetadata(true, this, this['_' + (propertyName as string)], newVal, !this.id);\r\n this['_' + (propertyName as string)] = convertedValue;\r\n }\r\n };\r\n\r\n if (delete target[propertyName]) {\r\n saveAnnotations();\r\n Object.defineProperty(target, propertyName, {\r\n get: getter,\r\n set: setter,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n };\r\n}\r\n","export function BaseDatastoreConfig(config: any = {}) {\r\n // tslint:disable-next-line:only-arrow-functions\r\n return (target: any) => {\r\n Reflect.defineMetadata('BaseDatastoreConfig', config, target);\r\n };\r\n}\r\n","export class BaseMetaModel {\r\n public links: Array<any>;\r\n public meta: any;\r\n\r\n constructor(response: any) {\r\n this.links = response.links || [];\r\n this.meta = response.meta;\r\n }\r\n}\r\n","import { BaseMetaModel } from '../models/base-meta.model';\r\n\r\nexport function BaseModelConfig(config: any = {}) {\r\n return (target: any) => {\r\n if (typeof config['meta'] === 'undefined' || config['meta'] == null) {\r\n config['meta'] = BaseMetaModel;\r\n }\r\n\r\n Reflect.defineMetadata('BaseModelConfig', config, target);\r\n };\r\n}\r\n","export function CustomType(config: any = {}) {\r\n return (target: any, propertyName: string | symbol) => {\r\n const annotations = Reflect.getMetadata('CustomType', target) || [];\r\n\r\n annotations.push({\r\n propertyName,\r\n relationship: config.key || propertyName\r\n });\r\n\r\n Reflect.defineMetadata('CustomType', annotations, target);\r\n };\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { CacheService } from '../services/cache.service';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n private cache: Map<string, { response: HttpResponse<any>, expiration: number }> = new Map();\r\n\r\n constructor(@Inject('CACHE_EXPIRATION_TIME') private expirationTime: number,\r\n private cacheService: CacheService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const bypassCache = request.params.get('bypassCache') || false;\r\n\r\n if (bypassCache || request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n if (!bypassCache) {\r\n const cachedResponse = this.cacheService.get(request.urlWithParams);\r\n if (cachedResponse) {\r\n return of(cachedResponse.clone());\r\n //return cachedResponse;\r\n }\r\n }\r\n\r\n return next.handle(request).pipe(\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n this.cacheService.set(request.urlWithParams, event.clone(), this.expirationTime);\r\n }\r\n })\r\n );\r\n\r\n // const cachedItem = this.cache.get(request.url);\r\n\r\n // if (cachedItem && cachedItem.expiration > Date.now()) {\r\n // return of(cachedItem.response.clone());\r\n // }\r\n\r\n // return next.handle(request).pipe(\r\n // tap(event => {\r\n // if (event instanceof HttpResponse) {\r\n // this.cache.set(request.url, { response: event.clone(), expiration: Date.now() + this.expirationTime });\r\n // }\r\n // })\r\n // );\r\n }\r\n}","import { HttpHeaders } from '@angular/common/http';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { AttributeMetadata } from '../constants/symbols';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport { BaseDatastore, ModelType } from '../services/base-datastore.service';\r\nexport class BaseModel {\r\n public highlighted: boolean;\r\n public id: any;\r\n [key: string]: any;\r\n\r\n // tslint:disable-next-line:variable-name\r\n constructor(protected _datastore: BaseDatastore, data?: any) {\r\n if (data) {\r\n if (data.id) {\r\n this.id = data.id;\r\n }\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n save(\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any): Observable<this> {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.saveRecord(attributesMetadata, this, params, headers, customUrl, customBody);\r\n }\r\n\r\n patch(\r\n origModel: this,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<this> {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.patchRecord(attributesMetadata, this, origModel, params, headers, customUrl);\r\n }\r\n\r\n replace(\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any): Observable<this> {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.replaceRecord(attributesMetadata, this, params, headers, customUrl, customBody);\r\n }\r\n get attributeMetadata(): any {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return attributesMetadata;\r\n }\r\n set attributeMetadata(val: any) {\r\n this[AttributeMetadata] = val;\r\n }\r\n get hasDirtyAttributes() {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let hasDirtyAttributes = false;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n hasDirtyAttributes = true;\r\n break;\r\n }\r\n }\r\n }\r\n return hasDirtyAttributes;\r\n }\r\n\r\n rollbackAttributes(): void {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let metadata: any;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n if (attributesMetadata[propertyName].hasDirtyAttributes) {\r\n this[propertyName] = attributesMetadata[propertyName].oldValue;\r\n metadata = {\r\n hasDirtyAttributes: false,\r\n newValue: attributesMetadata[propertyName].oldValue,\r\n oldValue: undefined\r\n };\r\n attributesMetadata[propertyName] = metadata;\r\n }\r\n }\r\n }\r\n\r\n this[AttributeMetadata] = attributesMetadata;\r\n }\r\n\r\n get modelConfig(): ModelConfig {\r\n return Reflect.getMetadata('BaseModelConfig', this.constructor);\r\n }\r\n\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\r\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\r\n return new modelType(this._datastore, data);\r\n }\r\n\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\r\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\r\n const properties: any = {};\r\n\r\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\r\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\r\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\r\n }\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n public getModelPropertyNames(model: BaseModel) {\r\n return Reflect.getMetadata('AttributeMapping', model);\r\n }\r\n public getModelRequiredPropertyNames(model: BaseModel) {\r\n return Reflect.getMetadata('AttributeRequired', model);\r\n }\r\n public getModelDefaultPropertyValues(model: BaseModel) {\r\n return Reflect.getMetadata('AttributedefaultValue', model);\r\n }\r\n\r\n public getModelSubGroupPropertyNames(model: BaseModel) {\r\n return Reflect.getMetadata('AttributeformSubGroup', model);\r\n }\r\n\r\n public getFromGroup(fb: UntypedFormBuilder): UntypedFormGroup {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const requiredProps = this.getModelRequiredPropertyNames(this);\r\n const defaultValues = this.getModelDefaultPropertyValues(this);\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const controlsConfig: any = {};\r\n const that = this;\r\n if (props) {\r\n props.forEach(property => {\r\n const value = that[property] !== undefined ? that[property] : defaultValues[property];\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (requiredProps[property]) {\r\n if (formSubGroup)\r\n this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value, Validators.required));\r\n else\r\n controlsConfig[property] = [value, Validators.required];\r\n } else {\r\n if (formSubGroup)\r\n this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value));\r\n else\r\n controlsConfig[property] = value;\r\n }\r\n });\r\n\r\n }\r\n return fb.group(controlsConfig);\r\n }\r\n private getSubFromGroup(fb: UntypedFormBuilder, controlsConfig: any, subGroup: string): UntypedFormGroup {\r\n if (!controlsConfig[subGroup])\r\n controlsConfig[subGroup] = fb.group({});\r\n return controlsConfig[subGroup];\r\n }\r\n\r\n public getModelFromFormGroup(formGroup: UntypedFormGroup, id?: any) {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const data: any = {};\r\n if (id) {\r\n data.id = id;\r\n }\r\n const that = this;\r\n if (props) {\r\n props.forEach(property => {\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (!formSubGroup)\r\n data[property] = formGroup.controls[property].value ?? null;\r\n else\r\n data[property] = (formGroup.controls[formSubGroup] as UntypedFormGroup).controls[property].value ?? null;\r\n });\r\n }\r\n if (data) {\r\n if (id) {\r\n this.id = id;\r\n }\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n \r\n\r\n public getSerializedModel() {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.modelToEntity(this, attributesMetadata, true);\r\n }\r\n getCellClass(property: string) {\r\n return '';\r\n }\r\n}\r\n","export interface JsonBaseError {\r\n id?: string;\r\n links ?: Array<any>;\r\n status ?: string;\r\n code ?: string;\r\n title ?: string;\r\n detail ?: string;\r\n source ?: {\r\n pointer ?: string;\r\n parameter ?: string\r\n };\r\n meta ?: any;\r\n}\r\n\r\nexport class ErrorResponse {\r\n errors?: JsonBaseError[] = [];\r\n\r\n constructor(errors ?: JsonBaseError[]) {\r\n if (errors) {\r\n this.errors = errors;\r\n }\r\n }\r\n}\r\n","export class Rule {\n rule: any;\n order: number;\n parameters: string[] = [];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n name: 'nl2br',\n standalone: false\n})\r\nexport class Nl2brPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n // return value.replace(/\\n/g, '<br />');\r\n if (value) {\r\n value = value.replace(/(?:\\r\\n\\r\\n|\\r\\r|\\n\\n)/g, '</p><p>');\r\n return '<p>' + value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>') + '</p>';\r\n }\r\n return value;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\n name: 'inputError',\n standalone: false\n})\r\nexport class InputErrorPipe implements PipeTransform {\r\n constructor(protected translate: TranslateService) {\r\n\r\n }\r\n transform(value: any, filedTranslationKey: any): string {\r\n let rvalue = '';\r\n if (value !== null) {\r\n if (value['invalid'] === true) {\r\n rvalue = 'ERROR.INVALID';\r\n }\r\n if (value['mustMatch'] === true) {\r\n rvalue = 'Account.Password.MustMach';\r\n }\r\n if (value['required'] === true) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.Required', { field });\r\n }\r\n if (value['minlength']) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.MinLength', { field, requiredLength: value.minlength.requiredLength });\r\n }\r\n }\r\n return rvalue;\r\n }\r\n\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Configurations } from '../configurations';\r\nimport { BaseDatastoreConfig, DatastoreConfig } from '../core';\r\nimport { BaseDatastore } from './base-datastore.service';\r\nimport { CacheService } from './cache.service';\r\n\r\n\r\n@Injectable()\r\n@BaseDatastoreConfig({ apiVersion: '', baseUrl: '' })\r\nexport class DatastoreCore extends BaseDatastore {\r\n private customConfig: DatastoreConfig\r\n constructor(http: HttpClient, cacheService: CacheService, private configExt: Configurations) {\r\n super(http, cacheService);\r\n this.customConfig = {\r\n apiVersion: this.configExt.apiVersion,\r\n baseUrl: this.configExt.baseUrl\r\n };\r\n this.config = this.customConfig;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Configurations } from '../configurations';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslateloaderService implements TranslateLoader {\r\n private _apiUrl = '';\r\n private headers: any = new HttpHeaders({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n constructor(private httpClient: HttpClient,\r\n config: Configurations) {\r\n console.log(config)\r\n if (config) {\r\n this._apiUrl = config.baseUrl;\r\n }\r\n }\r\n getTranslation(lang: string): Observable<any> {\r\n const url = this._apiUrl + '/api/v1/language/' + lang + '/translationlist';\r\n return this.httpClient.get(url, { headers: this.headers });\r\n }\r\n\r\n}\r\n","import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\r\nimport { BaseDatastore } from './services/base-datastore.service';\r\nimport { DatastoreCore } from './services/datastore.service';\r\nexport * from './services';\r\nexport const PROVIDERS: any[] = [\r\n BaseDatastore,\r\n DatastoreCore,\r\n DatePipe,\r\n DecimalPipe,\r\n PercentPipe\r\n];\r\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel } from '../core';\r\n\r\nexport function DynamicallyModelResolver<T extends BaseModel>(modelsImport: any, className: string | undefined = undefined): ResolveFn<T> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n if (className == undefined)\r\n className = route.paramMap.get('className');\r\n const instance = getInstance<T>(className, modelsImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${className}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<T>(className: string, modelsImport: any): Promise<T> {\r\n return modelsImport.then((module) => module[toProperCase(className)]);\r\n // return modelsImport.then((module) => ({ modelInstance: module[toProperCase(className)] })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel, BaseService } from '../core';\r\n\r\nexport function DynamicallyServiceResolver<T extends BaseModel, U extends BaseService<T>>(serviceImport: any, serviceName: string): ResolveFn<U> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const instance = getInstance<U>(serviceName, serviceImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${serviceName}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<U>(serviceName: string, serviceImport: any): Promise<U> {\r\n return serviceImport.then((module) => module[toProperCase(serviceName)]); // return Promise.all([serviceImport]).then(\r\n // (module) => ({\r\n // serviceInstance: module[toProperCase(serviceName)],\r\n // })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { Configurations } from './configurations';\r\nimport { PROVIDERS } from './providers';\r\nimport { TranslateloaderService } from './services/translate-loader.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useClass: TranslateloaderService,\r\n deps: [HttpClient]\r\n },\r\n // missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler },\r\n useDefaultLang: false,\r\n }),\r\n ReactiveFormsModule\r\n ],\r\n providers: [\r\n PROVIDERS\r\n ],\r\n exports: [\r\n HttpClientModule,\r\n TranslateModule,\r\n ]\r\n})\r\nexport class RslBaseModule {\r\n public static forRoot(config: Configurations): ModuleWithProviders<RslBaseModule> {\r\n return {\r\n ngModule: RslBaseModule,\r\n providers: [\r\n PROVIDERS,\r\n { provide: Configurations, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class CustomValidators {\n static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n if (!control.value) {\n // if control is empty return no error\n return null;\n }\n\n // test the value of the control against the regexp supplied\n const valid = regex.test(control.value);\n\n // if true, return no error (no error), else return error passed in the second parameter\n return valid ? null : error;\n };\n }\n}\n","export function 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\r\nexport function 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 * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CacheService","i1.BaseDatastore","i4","i1.CacheService","i1","i3.Configurations","i2.Configurations","getInstance","toProperCase"],"mappings":"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"}
1
+ {"version":3,"file":"rosoftlab-core.mjs","sources":["../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/field-error-display/field-error-display.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/page-not-found/page-not-found.component.html","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.ts","../../../../projects/rosoftlab/core/src/lib/base-components/under-construction/under-construction.component.html","../../../../projects/rosoftlab/core/src/lib/models/base-query-data.ts","../../../../projects/rosoftlab/core/src/lib/models/metadata-storage.ts","../../../../projects/rosoftlab/core/src/lib/services/cache.service.ts","../../../../projects/rosoftlab/core/src/lib/services/base-datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/services/base.service.ts","../../../../projects/rosoftlab/core/src/lib/base-components/base-form-edit.component.ts","../../../../projects/rosoftlab/core/src/lib/configurations.ts","../../../../projects/rosoftlab/core/src/lib/grid-layout-format.enum.ts","../../../../projects/rosoftlab/core/src/lib/constants/symbols.ts","../../../../projects/rosoftlab/core/src/lib/converters/date/date.converter.ts","../../../../projects/rosoftlab/core/src/lib/decorators/attribute.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-datastore-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/models/base-meta.model.ts","../../../../projects/rosoftlab/core/src/lib/decorators/base-model-config.decorator.ts","../../../../projects/rosoftlab/core/src/lib/decorators/custom.type.decorator.ts","../../../../projects/rosoftlab/core/src/lib/interceptors/cache.interceptor.ts","../../../../projects/rosoftlab/core/src/lib/models/base.model.ts","../../../../projects/rosoftlab/core/src/lib/models/error-response.model.ts","../../../../projects/rosoftlab/core/src/lib/models/rule.ts","../../../../projects/rosoftlab/core/src/lib/pipes/Nl2brPipe.pipe.ts","../../../../projects/rosoftlab/core/src/lib/pipes/input-error.pipe.ts","../../../../projects/rosoftlab/core/src/lib/services/datastore.service.ts","../../../../projects/rosoftlab/core/src/lib/services/translate-loader.service.ts","../../../../projects/rosoftlab/core/src/lib/providers.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-class-resolver.ts","../../../../projects/rosoftlab/core/src/lib/resolvers/dynamically-service-resolver.ts","../../../../projects/rosoftlab/core/src/lib/rsl-base-module.ts","../../../../projects/rosoftlab/core/src/lib/validators/pattern-validator.ts","../../../../projects/rosoftlab/core/src/lib/utils.ts","../../../../projects/rosoftlab/core/src/public-api.ts","../../../../projects/rosoftlab/core/src/rosoftlab-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\r\n\r\n@Component({\n selector: 'rsl-field-error-display',\n templateUrl: './field-error-display.component.html',\n styleUrls: ['./field-error-display.component.scss'],\n standalone: false\n})\r\nexport class FieldErrorDisplayComponent {\r\n\r\n @Input() errorMsg: string;\r\n @Input() displayError: boolean;\r\n\r\n}\r\n","<div *ngIf=\"displayError\" >\n <!-- <span class=\"glyphicon glyphicon-remove form-control-feedback fix-error-icon\"></span> -->\n <span class=\"sr-only\">(error)</span>\n <div class=\"error-msg\">\n {{ errorMsg }}\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'rsl-page-not-found',\n templateUrl: './page-not-found.component.html',\n styleUrls: ['./page-not-found.component.scss'],\n standalone: false\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { \r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page not found\n </div>\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'rsl-under-construction',\n templateUrl: './under-construction.component.html',\n styleUrls: ['./under-construction.component.scss'],\n standalone: false\n})\r\nexport class UnderConstructionComponent {\r\n\r\n constructor() { }\r\n}\r\n","<div class=\"forms-view-container\">\n <div class=\"under-construction-view-container\">\n Page under construction\n </div>\n</div>","\r\nexport class BaseQueryData<T> {\r\n constructor(protected jsonApiModels: Array<T>, protected metaData?: any) { }\r\n\r\n public getModels(): T[] {\r\n return this.jsonApiModels;\r\n }\r\n\r\n public getMeta(): any {\r\n return this.metaData;\r\n }\r\n}\r\n","export class MetadataStorage {\n private static metadataMap = new WeakMap<object, Record<string, any>>();\n \n static getMetadata(key: string, target: object, propertyKey?: string): any {\n const metadata = this.metadataMap.get(target) || {};\n return propertyKey ? metadata[`${key}:${propertyKey}`] : metadata[key];\n }\n \n static setMetadata(key: string, value: any, target: object, propertyKey?: string): void {\n let metadata = this.metadataMap.get(target);\n if (!metadata) {\n metadata = {};\n this.metadataMap.set(target, metadata);\n }\n if (propertyKey) {\n metadata[`${key}:${propertyKey}`] = value;\n } else {\n metadata[key] = value;\n }\n }\n }","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CacheService {\r\n private cache: { [key: string]: { data: any, expiration: number } } = {};\r\n\r\n constructor() {}\r\n\r\n get(key: string): any {\r\n const cachedItem = this.cache[key];\r\n if (cachedItem && cachedItem.expiration > Date.now()) {\r\n return cachedItem.data;\r\n }\r\n this.delete(key);\r\n return null;\r\n }\r\n\r\n set(key: string, data: any, expiresInMs: number): void {\r\n const expiration = Date.now() + expiresInMs;\r\n this.cache[key] = { data, expiration };\r\n }\r\n\r\n delete(key: string): void {\r\n delete this.cache[key];\r\n }\r\n\r\n clearCacheContainingKeyword(keyword: string): void {\r\n const keysToDelete = Object.keys(this.cache).filter(key => key.includes(keyword));\r\n keysToDelete.forEach(key => this.delete(key));\r\n }\r\n}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { compare } from 'fast-json-patch';\r\nimport queryString from 'query-string';\r\nimport { Observable, Observer, throwError } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { DatastoreConfig } from '../interfaces/datastore-config.interface';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport { BaseQueryData } from '../models/base-query-data';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\nimport { CacheService } from './cache.service';\r\nexport type ModelType<T extends BaseModel> = new (datastore: BaseDatastore, data: any) => T;\r\n\r\n@Injectable()\r\nexport class BaseDatastore {\r\n protected config!: DatastoreConfig;\r\n // tslint:disable-next-line:variable-name\r\n private _store: { [type: string]: { [id: string]: BaseModel } } = {};\r\n // tslint:enable:max-line-length\r\n // tslint:disable-next-line:ban-types\r\n private toQueryString: Function = this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.toQueryString ?\r\n this.datastoreConfig.overrides.toQueryString : this._toQueryString;\r\n // tslint:enable:max-line-length\r\n\r\n private get getDirtyAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getDirtyAttributes) {\r\n return this.datastoreConfig.overrides.getDirtyAttributes;\r\n } else {\r\n return BaseDatastore.getDirtyAttributes;\r\n }\r\n }\r\n\r\n public get getAllAttributes() {\r\n if (this.datastoreConfig.overrides\r\n && this.datastoreConfig.overrides.getAllAttributes) {\r\n return this.datastoreConfig.overrides.getAllAttributes;\r\n } else {\r\n return BaseDatastore.getAllAttributes;\r\n }\r\n }\r\n\r\n // protected config: DatastoreConfig;\r\n\r\n private static getDirtyAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n private static getAllAttributes(attributesMetadata: any): { string: any } {\r\n const dirtyData: any = {};\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n const attributeName = metadata.serializedName != null ? metadata.serializedName : propertyName;\r\n dirtyData[attributeName] = metadata.serialisationValue ? metadata.serialisationValue : metadata.newValue;\r\n }\r\n }\r\n return dirtyData;\r\n }\r\n\r\n constructor(\r\n protected httpClient: HttpClient,\r\n protected cacheService: CacheService\r\n ) {\r\n }\r\n\r\n findAll<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<BaseQueryData<T>> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const htmlParams = this.buildParams(modelType, params);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n\r\n const response = this.httpClient.get(url,\r\n { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(\r\n map(res => this.extractQueryData(res, modelType)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n\r\n findRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id?: string,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<T> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (id) {\r\n url += '/' + id;\r\n }\r\n\r\n const htmlParams = this.buildParams(modelType, params);\r\n const response = this.httpClient.get(url, { headers: customHeadhers, params: htmlParams, withCredentials: true })\r\n .pipe(map(res => this.entityToModel(res, modelType, undefined)),\r\n catchError(this.handleError)\r\n );\r\n return response;\r\n\r\n }\r\n getCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n if (!customResponseType)\r\n customResponseType = 'json';\r\n return this.httpClient.get<U>(url, { headers: customHeadhers, params: htmlParams, withCredentials: true, responseType: customResponseType });\r\n }\r\n\r\n postCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.post<U>(url, body, { headers: customHeadhers, params: htmlParams, reportProgress: true, withCredentials: true });\r\n }\r\n\r\n patchCustom<U, T extends BaseModel>(modelType: ModelType<T>,\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n return this.httpClient.patch<U>(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n createRecord<T extends BaseModel>(modelType: ModelType<T>, data?: any): T {\r\n return new modelType(this, data);\r\n }\r\n\r\n saveRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata);\r\n\r\n if (model.id) {\r\n // tslint:disable-next-line:max-line-length\r\n httpCall = this.httpClient.patch(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n patchRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n origModel: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n let origData = { id: '' };\r\n if (origModel)\r\n origData = this.modelToEntity(origModel, origModel.attributeMetadata, true);\r\n const newData = this.modelToEntity(model, attributesMetadata, true);\r\n newData.id = origData.id;\r\n const patch = compare(origData, newData);\r\n if (patch.length > 0) {\r\n httpCall = this.httpClient.patch(url + '/' + model.id, patch, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n return new Observable((observer: Observer<T>) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n }\r\n // getPatch<T extends BaseModel>(\r\n // model: T,\r\n // origModel: T): any {\r\n\r\n // }\r\n replaceRecord<T extends BaseModel>(\r\n attributesMetadata: any, model: T,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any\r\n ): Observable<T> {\r\n const modelType = model.constructor as ModelType<T>;\r\n const modelConfig: ModelConfig = model.modelConfig;\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n const url: string = this.buildUrl(modelType, customUrl);\r\n const htmlParams = this.buildParams(modelType, params);\r\n\r\n let httpCall: Observable<any>;\r\n\r\n const body = customBody || this.modelToEntity(model, attributesMetadata, true);\r\n\r\n if (model.id) {\r\n httpCall = this.httpClient.put(url + '/' + model.id, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n } else {\r\n httpCall = this.httpClient.post(url, body, { headers: customHeadhers, params: htmlParams, withCredentials: true });\r\n }\r\n\r\n return httpCall\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n const data = this.resetMetadataAttributes(res, attributesMetadata, modelType);\r\n return this.entityToModel(data, modelType);\r\n }),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n\r\n deleteRecord<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n id: string,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<{}> {\r\n const customHeadhers: HttpHeaders = this.buildHeaders(headers);\r\n let url: string = this.buildUrl(modelType, customUrl);\r\n if (!url.includes('share')) {\r\n url = url + '/' + id;\r\n }\r\n // const idParam = new HttpParams().set('id', id);\r\n return this.httpClient.delete(url, { headers: customHeadhers, withCredentials: true })\r\n .pipe(\r\n map(res => {\r\n this.cacheService.clearCacheContainingKeyword(url);\r\n return res;\r\n }\r\n ),\r\n catchError(this.handleError)\r\n );\r\n }\r\n\r\n public buildUrl<T extends BaseModel>(\r\n modelType: ModelType<T>,\r\n customUrl?: string\r\n ): string {\r\n\r\n if (customUrl) {\r\n return customUrl;\r\n }\r\n\r\n const modelConfig: ModelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);\r\n\r\n const baseUrl = modelConfig.baseUrl || this.datastoreConfig.baseUrl;\r\n const apiVersion = modelConfig.apiVersion || this.datastoreConfig.apiVersion;\r\n const modelEndpointUrl: string = modelConfig.modelEndpointUrl || modelConfig.type;\r\n\r\n const url: string = [baseUrl, apiVersion, modelEndpointUrl].filter((x) => x).join('/');\r\n\r\n return url;\r\n }\r\n\r\n protected extractQueryData<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>\r\n ): BaseQueryData<T> {\r\n let result;\r\n const body: any = res;\r\n const models: T[] = [];\r\n\r\n for (const data of body.data) {\r\n const model = this.entityToModel(data, modelType, undefined);\r\n models.push(model);\r\n }\r\n\r\n result = new BaseQueryData(models, this.parseMeta(body, modelType));\r\n return result;\r\n }\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\r\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\r\n return new modelType(this, data);\r\n }\r\n\r\n protected handleError(error: HttpErrorResponse) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n // console.error('An error occurred:', error.error.message);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n // console.error(\r\n // 'Backend returned code ${error.status}, ' +\r\n // 'body was: ${error.error}');\r\n }\r\n // return an observable with a user-facing error message\r\n return throwError(error);\r\n }\r\n\r\n protected parseMeta(body: any, modelType: ModelType<BaseModel>): any {\r\n const metaModel: any = MetadataStorage.getMetadata('BaseModelConfig', modelType).meta;\r\n return new metaModel(body);\r\n }\r\n\r\n protected resetMetadataAttributes<T extends BaseModel>(res: T, attributesMetadata: any, modelType: ModelType<T>) {\r\n // TODO check why is attributesMetadata from the arguments never used\r\n\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n metadata.hasDirtyAttributes = false;\r\n }\r\n }\r\n }\r\n\r\n if (res) {\r\n res.attributeMetadata = attributesMetadata;\r\n }\r\n return res;\r\n }\r\n\r\n public get datastoreConfig(): DatastoreConfig {\r\n const configFromDecorator: DatastoreConfig = MetadataStorage.getMetadata('BaseDatastoreConfig', this.constructor);\r\n return Object.assign(configFromDecorator, this.config);\r\n }\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\r\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\r\n const properties: any = {};\r\n\r\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\r\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\r\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\r\n }\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n protected getModelPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeMapping', model);\r\n }\r\n\r\n public buildHeaders(customHeaders?: HttpHeaders): HttpHeaders {\r\n const headers: any = {\r\n Accept: 'application/json-patch+json',\r\n // 'Content-Type': 'application/vnd.api+json',\r\n 'Content-Type': 'application/json-patch+json'\r\n };\r\n if (customHeaders && customHeaders.keys().length) {\r\n // tslint:disable-next-line:variable-name\r\n Object.assign({}, headers, customHeaders.keys().map(header_name => {\r\n headers['' + header_name] = customHeaders.get(header_name);\r\n }));\r\n }\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n public buildParams<T extends BaseModel>(modelType: ModelType<T>,\r\n params: any): HttpParams {\r\n let httpParams = new HttpParams();\r\n if (params) {\r\n Object.keys(params)\r\n .filter(key => {\r\n const v = params[key];\r\n return (Array.isArray(v) || typeof v === 'string') ?\r\n (v.length > 0) :\r\n (v !== null && v !== undefined);\r\n })\r\n .forEach(key => {\r\n httpParams = httpParams.set(key, params[key]);\r\n });\r\n }\r\n const modelConfig: ModelConfig = MetadataStorage.getMetadata('BaseModelConfig', modelType);\r\n httpParams = httpParams.set('bypassCache', modelConfig.bypassCache || false);\r\n return httpParams;\r\n }\r\n\r\n\r\n protected entityToModel<T extends BaseModel>(\r\n res: any,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ) {\r\n return this.extractRecordDataJson(res, modelType, model);\r\n }\r\n\r\n\r\n private extractRecordDataJson<T extends BaseModel>(\r\n res: Response,\r\n modelType: ModelType<T>,\r\n model?: T\r\n ): T {\r\n const body: any = res;\r\n if (!body) {\r\n throw new Error('no body in response');\r\n }\r\n if (model) {\r\n Object.assign(model, body);\r\n }\r\n const deserializedModel = model || this.deserializeModel(modelType, body.data || body);\r\n return deserializedModel;\r\n }\r\n\r\n public modelToEntity<T extends BaseModel>(\r\n model: T,\r\n attributesMetadata: any,\r\n allAttributes: boolean = false\r\n ): any {\r\n let attributes;\r\n if (allAttributes) {\r\n attributes = this.getAllAttributes(attributesMetadata, model);\r\n } else {\r\n attributes = this.getDirtyAttributes(attributesMetadata, model);\r\n }\r\n // this.getRelationships(model, attributes);\r\n return attributes;\r\n }\r\n private _toQueryString(params: any): string {\r\n return queryString.stringify(params, { arrayFormat: 'bracket' });\r\n }\r\n\r\n\r\n}\r\n","import { HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseQueryData } from '../models/base-query-data';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseDatastore, ModelType } from './base-datastore.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BaseService<T extends BaseModel> {\r\n public modelType: ModelType<T>;\r\n constructor(public datastore: BaseDatastore) {\r\n }\r\n setModelType(modelType: ModelType<T>) {\r\n this.modelType = modelType;\r\n }\r\n\r\n get(id?: any, customInclude: string = ''): Observable<T> {\r\n const response = this.datastore.findRecord(this.modelType, id, { customInclude });\r\n return response;\r\n }\r\n\r\n getAll(page: number,\r\n pageSize: number,\r\n sort: string = '',\r\n filters: string = '',\r\n customInclude: string = ''): Observable<BaseQueryData<T>> {\r\n const response = this.datastore.findAll(this.modelType,\r\n {\r\n Page: page,\r\n PageSize: pageSize,\r\n Sorts: sort,\r\n Filters: filters,\r\n customInclude\r\n });\r\n return response;\r\n }\r\n delete(id: any): Observable<{}> {\r\n const response = this.datastore.deleteRecord(this.modelType, id);\r\n return response;\r\n }\r\n getCustom<U>(params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customResponseType?: any): Observable<U> {\r\n return this.datastore.getCustom<U, T>(this.modelType, params, headers, customUrl, customResponseType);\r\n }\r\n postCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.postCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n patchCustom<U>(\r\n body: any,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string): Observable<U> {\r\n return this.datastore.patchCustom<U, T>(this.modelType, body, params, headers, customUrl);\r\n }\r\n // checkIfPropertyUnique(property: string, value: any): Observable<boolean> {\r\n\r\n // }\r\n\r\n save(docTypeOrFormGroup: T | UntypedFormGroup, id?: any, origModel?: T): Observable<T> {\r\n if (id == null) {\r\n let fromModel: T;\r\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\r\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\r\n } else {\r\n fromModel = docTypeOrFormGroup;\r\n }\r\n const data = this.datastore.createRecord(this.modelType, fromModel);\r\n return data.save();\r\n } else {\r\n return this.patch(docTypeOrFormGroup, origModel, id);\r\n }\r\n }\r\n\r\n patch(docTypeOrFormGroup: T | UntypedFormGroup, origModel: T, id?: any): Observable<T> {\r\n let fromModel: T;\r\n if (docTypeOrFormGroup instanceof UntypedFormGroup) {\r\n fromModel = this.fromFormGroup(docTypeOrFormGroup, id);\r\n } else {\r\n fromModel = docTypeOrFormGroup;\r\n }\r\n const data = this.datastore.createRecord(this.modelType, fromModel);\r\n return data.patch(origModel);\r\n }\r\n\r\n newModel(data?: any): T {\r\n return new this.modelType(this.datastore, data);\r\n }\r\n\r\n toFormGroup(fb: UntypedFormBuilder, fromModel?: T): UntypedFormGroup {\r\n if (fromModel === undefined) {\r\n fromModel = this.newModel();\r\n }\r\n return fromModel.getFromGroup(fb);\r\n }\r\n\r\n fromFormGroup(formGroup: UntypedFormGroup, id?: any): T {\r\n // const saveModel = this.newModel(formGroup.getRawValue());\r\n // saveModel.id = id ? id : null;\r\n // return saveModel;\r\n const saveModel = this.newModel();\r\n saveModel.getModelFromFormGroup(formGroup)\r\n saveModel.id = id ? id : null;\r\n return saveModel;\r\n }\r\n getSelectValues(property: string): Observable<any[]> {\r\n return null;\r\n }\r\n}","import { Location } from '@angular/common';\r\nimport { Component, Inject, InjectionToken, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BaseModel } from '../models/base.model';\r\nimport { BaseService } from '../services/base.service';\r\nimport { DialogService } from '../services/dialog.service';\r\nconst DialogSERVICE = new InjectionToken<string>('DialogService');\r\n@Component({\n selector: 'app-base.form.edit',\n template: '',\n standalone: false\n})\r\nexport abstract class BaseFormEditComponent<T extends BaseModel> implements OnInit {\r\n baseForm: UntypedFormGroup;\r\n modelId: string;\r\n model: T;\r\n isEdit: boolean;\r\n isLoading = true;\r\n cancelRoute: string;\r\n editRoute: string;\r\n public changeUrlRoute: boolean = true;\r\n constructor(\r\n protected fb: UntypedFormBuilder,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected modelService: BaseService<T>,\r\n @Inject(DialogSERVICE) protected dialogService: DialogService,\r\n protected translate: TranslateService,\r\n protected location: Location\r\n ) {\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n\r\n public afterSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n public beforeSave(model: T): Observable<T> {\r\n return new Observable((observer) => {\r\n observer.next(model);\r\n observer.complete();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.initForm();\r\n }\r\n initForm(customInclude: string = '', newModelId: string = null, model: T = null) {\r\n if (model === null) {\r\n this.modelId = this.route.snapshot.paramMap.get('id') ?? newModelId;\r\n this.isEdit = false;\r\n if (this.modelId) {\r\n this.modelService.get(this.modelId, customInclude).subscribe((value: T) => {\r\n this.isEdit = true;\r\n this.generateForm(value)\r\n }\r\n );\r\n } else {\r\n if (this.changeUrlRoute) {\r\n const addUrl = this.router.createUrlTree([]).toString();\r\n this.editRoute = this.router.createUrlTree([addUrl.replace('add', 'edit')]).toString();\r\n }\r\n // }\r\n this.generateForm(this.modelService.newModel());\r\n }\r\n } else {\r\n this.modelId = model.id;\r\n this.isEdit = true;\r\n this.generateForm(model)\r\n }\r\n }\r\n generateForm(model?: T) {\r\n this.isLoading = false;\r\n this.modelId = model.id;\r\n this.model = model;\r\n this.baseForm = this.modelService.toFormGroup(this.fb, model);\r\n this.afterFormGenerated();\r\n }\r\n public afterFormGenerated() {\r\n\r\n }\r\n private getFromGroup(formGroup: UntypedFormGroup | string = null): UntypedFormGroup {\r\n if (!formGroup)\r\n return this.baseForm;\r\n if (formGroup instanceof UntypedFormGroup)\r\n return formGroup;\r\n return this.baseForm.controls[formGroup] as UntypedFormGroup;\r\n }\r\n validateAllFormFields(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n Object.keys(fg.controls).forEach(field => {\r\n // console.log(field);\r\n const control = fg.get(field);\r\n if (control instanceof UntypedFormControl) {\r\n control.markAsTouched({ onlySelf: true });\r\n } else if (control instanceof UntypedFormGroup) {\r\n this.validateAllFormFields(control);\r\n }\r\n });\r\n }\r\n isFieldValid(field: string, formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const filedControl = fg.get(field)\r\n return !filedControl.valid && filedControl.touched;\r\n }\r\n\r\n isFieldValidFromArray(arrayIndex: number, field: string, arrayName: string = 'formArray') {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return !fieldControl.valid && fieldControl.touched;\r\n }\r\n\r\n displayFieldCss(field: string) {\r\n return {\r\n 'has-error': this.isFieldValid(field),\r\n 'has-feedback': this.isFieldValid(field)\r\n };\r\n }\r\n onCancel() {\r\n this.router.navigate([this.cancelRoute]);\r\n }\r\n onSave() {\r\n this.saveModel(this.baseForm)\r\n }\r\n saveModel(formGroup: UntypedFormGroup | string = null) {\r\n const fg = this.getFromGroup(formGroup)\r\n const that = this;\r\n if (fg) {\r\n if (fg.valid) {\r\n this.beforeSave(this.model).subscribe(_ => {\r\n this.modelService.save(this.baseForm, this.modelId, this.model).subscribe(\r\n (newModel: T) => {\r\n this.model = newModel;\r\n this.modelId = newModel.id;\r\n if (this.editRoute) {\r\n this.isEdit = true;\r\n if (this.changeUrlRoute) {\r\n const url = this.router.createUrlTree([this.editRoute, this.modelId]).toString();\r\n this.location.replaceState(url);\r\n }\r\n }\r\n this.afterSave(newModel).subscribe((val: T) => {\r\n this.dialogService.showSaveMessage('Your changes were saved successfully.').subscribe(d => {\r\n fg.markAsPristine();\r\n });\r\n });\r\n },\r\n err => {\r\n this.serverErrors(err)\r\n });\r\n });\r\n } else {\r\n this.validateAllFormFields(formGroup);\r\n }\r\n }\r\n }\r\n serverErrors(err: any) {\r\n if (err.error) {\r\n if (err.error.errors) {\r\n const validationErrors = err.error.errors;\r\n if (Array.isArray(validationErrors)) {\r\n validationErrors.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n } else {\r\n const keys = Object.keys(validationErrors);\r\n keys.forEach(prop => {\r\n const formControl = this.baseForm.get(prop);\r\n if (formControl) {\r\n // activate the error message\r\n formControl.setErrors({\r\n serverError: validationErrors[prop].join('\\n')\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n canDeactivate(): Observable<boolean> | boolean {\r\n // Allow synchronous navigation (`true`) if no crisis or the crisis is unchanged\r\n if (!this.baseForm.dirty) {\r\n return true;\r\n }\r\n // Otherwise ask the user with the dialog service and return its\r\n // observable which resolves to true or false when the user decides\r\n return this.dialogService.confirm('Discard changes ?', null, 'Discard');\r\n }\r\n getFiledName(filedTranslationKey: string) {\r\n return { field: this.translate.instant(filedTranslationKey) };\r\n }\r\n getCustomErrorMessage(error: any, fieldLabel: string): string {\r\n return '';\r\n }\r\n getErrorMessageFromArray(arrayIndex: number, field: string, filedTranslationKey: string, arrayName: string = 'formArray'): string {\r\n const fieldControl = this.baseForm.get(arrayName).get([arrayIndex]).get(field)\r\n return this.getErrorMessageForField(fieldControl, filedTranslationKey)\r\n }\r\n getErrorMessage(field: string, filedTranslationKey: string, formGroup: UntypedFormGroup | string = null): string {\r\n const fg = this.getFromGroup(formGroup)\r\n return this.getErrorMessageForField(fg.get(field), filedTranslationKey)\r\n }\r\n getErrorMessageForField(fieldControl: any, filedTranslationKey: string): string {\r\n const error = fieldControl.errors;\r\n const fieldLabel = this.translate.instant(filedTranslationKey);\r\n let rvalue = '';\r\n if (error !== null) {\r\n if (error['required'] === true) {\r\n rvalue = this.translate.instant('General.Field.Required', { field: fieldLabel });\r\n }\r\n if (error['minlength']) {\r\n rvalue = this.translate.instant('General.Field.MinLength', { field: fieldLabel, requiredLength: error.minlength.requiredLength });\r\n }\r\n if (error['email'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidEmail');\r\n }\r\n if (error['url'] === true) {\r\n rvalue = this.translate.instant('General.Field.InvalidUrl');\r\n }\r\n if (error['serverError']) {\r\n rvalue = error['serverError'];\r\n }\r\n if (rvalue === '') {\r\n rvalue = this.getCustomErrorMessage(error, fieldLabel);\r\n }\r\n }\r\n return rvalue;\r\n }\r\n}\r\n","export class Configurations {\r\n public baseUrl: string;\r\n public authUrl: string;\r\n public apiVersion: string;\r\n\r\n constructor() {\r\n this.baseUrl = '';\r\n this.authUrl = '';\r\n this.apiVersion = 'api/v1';\r\n }\r\n\r\n}","export enum GridLayoutFormat {\r\n none,\r\n date,\r\n number,\r\n percent,\r\n picture\r\n}\r\n\r\nexport enum CellTextAlign {\r\n left = 'left',\r\n center = 'center',\r\n right = 'right',\r\n}","// tslint:disable-next-line:variable-name\nexport const AttributeMetadata: any = Symbol('AttributeMetadata');\n","import { parseISO } from 'date-fns';\r\nimport { PropertyConverter } from '../../interfaces/property-converter.interface';\r\n\r\nexport class DateConverter implements PropertyConverter {\r\n mask(value: any) {\r\n if (value instanceof Date && !isNaN(value.getTime())) {\r\n return value;\r\n }\r\n const d = parseISO(value);\r\n if (d instanceof Date && !isNaN(d.getTime())) {\r\n return d\r\n } else {\r\n return value;\r\n }\r\n }\r\n unmask(value: any) {\r\n // const result = format(value, 'YYYY-MM-DDTHH:mm:ssZ');\r\n return value;\r\n }\r\n}\r\n","import { AttributeMetadata } from '../constants/symbols';\r\nimport { DateConverter } from '../converters/date/date.converter';\r\nimport { AttributeDecoratorOptions } from '../interfaces/attribute-decorator-options.interface';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\n\r\nexport function Attribute(options: AttributeDecoratorOptions = {}): PropertyDecorator {\r\n return (target: any, propertyName: string) => {\r\n\r\n const converter = (dataType: any, value: any, forSerialisation = false): any => {\r\n let attrConverter;\r\n if (dataType) {\r\n if (options.converter) {\r\n attrConverter = options.converter;\r\n } else if (dataType === Date) {\r\n attrConverter = new DateConverter();\r\n } else {\r\n const datatype = new dataType();\r\n\r\n if (datatype.mask && datatype.unmask) {\r\n attrConverter = datatype;\r\n }\r\n }\r\n\r\n if (attrConverter) {\r\n if (!forSerialisation) {\r\n return attrConverter.mask(value);\r\n }\r\n return attrConverter.unmask(value);\r\n }\r\n }\r\n return value;\r\n };\r\n\r\n const saveAnnotations = () => {\r\n const metadata = MetadataStorage.getMetadata('Attribute', target) || {};\r\n\r\n metadata[propertyName] = {\r\n marked: true\r\n };\r\n\r\n MetadataStorage.setMetadata('Attribute', metadata, target);\r\n\r\n const mappingMetadata = MetadataStorage.getMetadata('AttributeMapping', target) || {};\r\n const serializedPropertyName = options.serializedName !== undefined ? options.serializedName : propertyName;\r\n mappingMetadata[serializedPropertyName] = propertyName;\r\n MetadataStorage.setMetadata('AttributeMapping', mappingMetadata, target);\r\n\r\n const requiredMetadata = MetadataStorage.getMetadata('AttributeRequired', target) || {};\r\n requiredMetadata[serializedPropertyName] = options.required !== undefined ? options.required : false;\r\n MetadataStorage.setMetadata('AttributeRequired', requiredMetadata, target);\r\n\r\n const defaultMetadata = MetadataStorage.getMetadata('AttributedefaultValue', target) || {};\r\n defaultMetadata[serializedPropertyName] = options.defaultValue !== undefined ? options.defaultValue : null;\r\n MetadataStorage.setMetadata('AttributedefaultValue', defaultMetadata, target);\r\n\r\n const formSubGroupMetadata = MetadataStorage.getMetadata('AttributeformSubGroup', target) || {};\r\n formSubGroupMetadata[serializedPropertyName] = options.formSubGroup !== undefined ? options.formSubGroup : null;\r\n MetadataStorage.setMetadata('AttributeformSubGroup', formSubGroupMetadata, target);\r\n\r\n };\r\n\r\n const setMetadata = (\r\n hasDirtyAttributes: boolean,\r\n instance: any,\r\n oldValue: any,\r\n newValue: any,\r\n isNew: boolean\r\n ) => {\r\n const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);\r\n\r\n if (!instance[AttributeMetadata]) {\r\n instance[AttributeMetadata] = {};\r\n }\r\n\r\n const propertyHasDirtyAttributes = typeof oldValue === 'undefined' && !isNew ? false : hasDirtyAttributes;\r\n\r\n instance[AttributeMetadata][propertyName] = {\r\n newValue,\r\n oldValue,\r\n serializedName: options.serializedName,\r\n hasDirtyAttributes: propertyHasDirtyAttributes,\r\n serialisationValue: converter(targetType, newValue, true)\r\n };\r\n };\r\n\r\n const getter = function () {\r\n return this['_' + (propertyName as string)];\r\n };\r\n\r\n const setter = function (newVal: any) {\r\n const targetType = MetadataStorage.getMetadata('design:type', target, propertyName);\r\n const convertedValue = converter(targetType, newVal);\r\n\r\n if (convertedValue !== this['_' + (propertyName as string)]) {\r\n setMetadata(true, this, this['_' + (propertyName as string)], newVal, !this.id);\r\n this['_' + (propertyName as string)] = convertedValue;\r\n }\r\n };\r\n\r\n if (delete target[propertyName]) {\r\n saveAnnotations();\r\n Object.defineProperty(target, propertyName, {\r\n get: getter,\r\n set: setter,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n }\r\n };\r\n}\r\n","import { MetadataStorage } from \"../models/metadata-storage\";\r\n\r\nexport function BaseDatastoreConfig(config: any = {}) {\r\n // tslint:disable-next-line:only-arrow-functions\r\n return (target: any) => {\r\n MetadataStorage.setMetadata('BaseDatastoreConfig', config, target);\r\n };\r\n}\r\n","export class BaseMetaModel {\r\n public links: Array<any>;\r\n public meta: any;\r\n\r\n constructor(response: any) {\r\n this.links = response.links || [];\r\n this.meta = response.meta;\r\n }\r\n}\r\n","import { BaseMetaModel } from '../models/base-meta.model';\r\nimport { MetadataStorage } from '../models/metadata-storage';\r\n\r\nexport function BaseModelConfig(config: any = {}) {\r\n return (target: any) => {\r\n if (typeof config['meta'] === 'undefined' || config['meta'] == null) {\r\n config['meta'] = BaseMetaModel;\r\n }\r\n\r\n MetadataStorage.setMetadata('BaseModelConfig', config, target);\r\n };\r\n}\r\n","import { MetadataStorage } from \"../models/metadata-storage\";\r\n\r\nexport function CustomType(config: any = {}) {\r\n return (target: any, propertyName: string | symbol) => {\r\n const annotations = MetadataStorage.getMetadata('CustomType', target) || [];\r\n\r\n annotations.push({\r\n propertyName,\r\n relationship: config.key || propertyName\r\n });\r\n\r\n MetadataStorage.setMetadata('CustomType', annotations, target);\r\n };\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { CacheService } from '../services/cache.service';\r\n\r\n@Injectable()\r\nexport class CacheInterceptor implements HttpInterceptor {\r\n private cache: Map<string, { response: HttpResponse<any>, expiration: number }> = new Map();\r\n\r\n constructor(@Inject('CACHE_EXPIRATION_TIME') private expirationTime: number,\r\n private cacheService: CacheService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const bypassCache = request.params.get('bypassCache') || false;\r\n\r\n if (bypassCache || request.method !== 'GET') {\r\n return next.handle(request);\r\n }\r\n\r\n if (!bypassCache) {\r\n const cachedResponse = this.cacheService.get(request.urlWithParams);\r\n if (cachedResponse) {\r\n return of(cachedResponse.clone());\r\n //return cachedResponse;\r\n }\r\n }\r\n\r\n return next.handle(request).pipe(\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n this.cacheService.set(request.urlWithParams, event.clone(), this.expirationTime);\r\n }\r\n })\r\n );\r\n\r\n // const cachedItem = this.cache.get(request.url);\r\n\r\n // if (cachedItem && cachedItem.expiration > Date.now()) {\r\n // return of(cachedItem.response.clone());\r\n // }\r\n\r\n // return next.handle(request).pipe(\r\n // tap(event => {\r\n // if (event instanceof HttpResponse) {\r\n // this.cache.set(request.url, { response: event.clone(), expiration: Date.now() + this.expirationTime });\r\n // }\r\n // })\r\n // );\r\n }\r\n}","import { HttpHeaders } from '@angular/common/http';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { AttributeMetadata } from '../constants/symbols';\r\nimport { ModelConfig } from '../interfaces/model-config.interface';\r\nimport { BaseDatastore, ModelType } from '../services/base-datastore.service';\r\nimport { MetadataStorage } from './metadata-storage';\r\nexport class BaseModel {\r\n public highlighted: boolean;\r\n public id: any;\r\n [key: string]: any;\r\n\r\n // tslint:disable-next-line:variable-name\r\n constructor(protected _datastore: BaseDatastore, data?: any) {\r\n if (data) {\r\n if (data.id) {\r\n this.id = data.id;\r\n }\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n save(\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any): Observable<this> {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.saveRecord(attributesMetadata, this, params, headers, customUrl, customBody);\r\n }\r\n\r\n patch(\r\n origModel: this,\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string\r\n ): Observable<this> {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.patchRecord(attributesMetadata, this, origModel, params, headers, customUrl);\r\n }\r\n\r\n replace(\r\n params?: any,\r\n headers?: HttpHeaders,\r\n customUrl?: string,\r\n customBody?: any): Observable<this> {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.replaceRecord(attributesMetadata, this, params, headers, customUrl, customBody);\r\n }\r\n get attributeMetadata(): any {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return attributesMetadata;\r\n }\r\n set attributeMetadata(val: any) {\r\n this[AttributeMetadata] = val;\r\n }\r\n get hasDirtyAttributes() {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let hasDirtyAttributes = false;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n const metadata: any = attributesMetadata[propertyName];\r\n\r\n if (metadata.hasDirtyAttributes) {\r\n hasDirtyAttributes = true;\r\n break;\r\n }\r\n }\r\n }\r\n return hasDirtyAttributes;\r\n }\r\n\r\n rollbackAttributes(): void {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n let metadata: any;\r\n for (const propertyName in attributesMetadata) {\r\n if (attributesMetadata.hasOwnProperty(propertyName)) {\r\n if (attributesMetadata[propertyName].hasDirtyAttributes) {\r\n this[propertyName] = attributesMetadata[propertyName].oldValue;\r\n metadata = {\r\n hasDirtyAttributes: false,\r\n newValue: attributesMetadata[propertyName].oldValue,\r\n oldValue: undefined\r\n };\r\n attributesMetadata[propertyName] = metadata;\r\n }\r\n }\r\n }\r\n\r\n this[AttributeMetadata] = attributesMetadata;\r\n }\r\n\r\n get modelConfig(): ModelConfig {\r\n return MetadataStorage.getMetadata('BaseModelConfig', this.constructor);\r\n }\r\n\r\n\r\n protected deserializeModel<T extends BaseModel>(modelType: ModelType<T>, data: any) {\r\n data = this.transformSerializedNamesToPropertyNames(modelType, data);\r\n return new modelType(this._datastore, data);\r\n }\r\n\r\n\r\n protected transformSerializedNamesToPropertyNames<T extends BaseModel>(modelType: ModelType<T>, attributes: any) {\r\n const serializedNameToPropertyName = this.getModelPropertyNames(modelType.prototype);\r\n const properties: any = {};\r\n\r\n Object.keys(serializedNameToPropertyName).forEach((serializedName) => {\r\n if (attributes[serializedName] !== null && attributes[serializedName] !== undefined) {\r\n properties[serializedNameToPropertyName[serializedName]] = attributes[serializedName];\r\n }\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n public getModelPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeMapping', model);\r\n }\r\n public getModelRequiredPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeRequired', model);\r\n }\r\n public getModelDefaultPropertyValues(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributedefaultValue', model);\r\n }\r\n\r\n public getModelSubGroupPropertyNames(model: BaseModel) {\r\n return MetadataStorage.getMetadata('AttributeformSubGroup', model);\r\n }\r\n\r\n public getFromGroup(fb: UntypedFormBuilder): UntypedFormGroup {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const requiredProps = this.getModelRequiredPropertyNames(this);\r\n const defaultValues = this.getModelDefaultPropertyValues(this);\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const controlsConfig: any = {};\r\n const that = this;\r\n if (props) {\r\n props.forEach(property => {\r\n const value = that[property] !== undefined ? that[property] : defaultValues[property];\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (requiredProps[property]) {\r\n if (formSubGroup)\r\n this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value, Validators.required));\r\n else\r\n controlsConfig[property] = [value, Validators.required];\r\n } else {\r\n if (formSubGroup)\r\n this.getSubFromGroup(fb, controlsConfig, formSubGroup).addControl(property, fb.control(value));\r\n else\r\n controlsConfig[property] = value;\r\n }\r\n });\r\n\r\n }\r\n return fb.group(controlsConfig);\r\n }\r\n private getSubFromGroup(fb: UntypedFormBuilder, controlsConfig: any, subGroup: string): UntypedFormGroup {\r\n if (!controlsConfig[subGroup])\r\n controlsConfig[subGroup] = fb.group({});\r\n return controlsConfig[subGroup];\r\n }\r\n\r\n public getModelFromFormGroup(formGroup: UntypedFormGroup, id?: any) {\r\n const props = Object.keys(this.getModelPropertyNames(this));\r\n const formSubGroupsValues = this.getModelSubGroupPropertyNames(this);\r\n const data: any = {};\r\n if (id) {\r\n data.id = id;\r\n }\r\n const that = this;\r\n if (props) {\r\n props.forEach(property => {\r\n const formSubGroup = formSubGroupsValues[property] ?? null;\r\n if (!formSubGroup)\r\n data[property] = formGroup.controls[property].value ?? null;\r\n else\r\n data[property] = (formGroup.controls[formSubGroup] as UntypedFormGroup).controls[property].value ?? null;\r\n });\r\n }\r\n if (data) {\r\n if (id) {\r\n this.id = id;\r\n }\r\n Object.assign(this, data);\r\n }\r\n }\r\n\r\n\r\n\r\n public getSerializedModel() {\r\n const attributesMetadata: any = this[AttributeMetadata];\r\n return this._datastore.modelToEntity(this, attributesMetadata, true);\r\n }\r\n getCellClass(property: string) {\r\n return '';\r\n }\r\n}\r\n","export interface JsonBaseError {\r\n id?: string;\r\n links ?: Array<any>;\r\n status ?: string;\r\n code ?: string;\r\n title ?: string;\r\n detail ?: string;\r\n source ?: {\r\n pointer ?: string;\r\n parameter ?: string\r\n };\r\n meta ?: any;\r\n}\r\n\r\nexport class ErrorResponse {\r\n errors?: JsonBaseError[] = [];\r\n\r\n constructor(errors ?: JsonBaseError[]) {\r\n if (errors) {\r\n this.errors = errors;\r\n }\r\n }\r\n}\r\n","export class Rule {\n rule: any;\n order: number;\n parameters: string[] = [];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\n name: 'nl2br',\n standalone: false\n})\r\nexport class Nl2brPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): any {\r\n // return value.replace(/\\n/g, '<br />');\r\n if (value) {\r\n value = value.replace(/(?:\\r\\n\\r\\n|\\r\\r|\\n\\n)/g, '</p><p>');\r\n return '<p>' + value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>') + '</p>';\r\n }\r\n return value;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Pipe({\n name: 'inputError',\n standalone: false\n})\r\nexport class InputErrorPipe implements PipeTransform {\r\n constructor(protected translate: TranslateService) {\r\n\r\n }\r\n transform(value: any, filedTranslationKey: any): string {\r\n let rvalue = '';\r\n if (value !== null) {\r\n if (value['invalid'] === true) {\r\n rvalue = 'ERROR.INVALID';\r\n }\r\n if (value['mustMatch'] === true) {\r\n rvalue = 'Account.Password.MustMach';\r\n }\r\n if (value['required'] === true) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.Required', { field });\r\n }\r\n if (value['minlength']) {\r\n const field = this.translate.instant(filedTranslationKey.field);\r\n rvalue = this.translate.instant('General.Field.MinLength', { field, requiredLength: value.minlength.requiredLength });\r\n }\r\n }\r\n return rvalue;\r\n }\r\n\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Configurations } from '../configurations';\r\nimport { BaseDatastoreConfig, DatastoreConfig } from '../core';\r\nimport { BaseDatastore } from './base-datastore.service';\r\nimport { CacheService } from './cache.service';\r\n\r\n\r\n@Injectable()\r\n@BaseDatastoreConfig({ apiVersion: '', baseUrl: '' })\r\nexport class DatastoreCore extends BaseDatastore {\r\n private customConfig: DatastoreConfig\r\n constructor(http: HttpClient, cacheService: CacheService, private configExt: Configurations) {\r\n super(http, cacheService);\r\n this.customConfig = {\r\n apiVersion: this.configExt.apiVersion,\r\n baseUrl: this.configExt.baseUrl\r\n };\r\n this.config = this.customConfig;\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateLoader } from '@ngx-translate/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Configurations } from '../configurations';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TranslateloaderService implements TranslateLoader {\r\n private _apiUrl = '';\r\n private headers: any = new HttpHeaders({\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json'\r\n });\r\n constructor(private httpClient: HttpClient,\r\n config: Configurations) {\r\n console.log(config)\r\n if (config) {\r\n this._apiUrl = config.baseUrl;\r\n }\r\n }\r\n getTranslation(lang: string): Observable<any> {\r\n const url = this._apiUrl + '/api/v1/language/' + lang + '/translationlist';\r\n return this.httpClient.get(url, { headers: this.headers });\r\n }\r\n\r\n}\r\n","import { DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\r\nimport { BaseDatastore } from './services/base-datastore.service';\r\nimport { DatastoreCore } from './services/datastore.service';\r\nexport * from './services';\r\nexport const PROVIDERS: any[] = [\r\n BaseDatastore,\r\n DatastoreCore,\r\n DatePipe,\r\n DecimalPipe,\r\n PercentPipe\r\n];\r\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel } from '../core';\r\n\r\nexport function DynamicallyModelResolver<T extends BaseModel>(modelsImport: any, className: string | undefined = undefined): ResolveFn<T> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n if (className == undefined)\r\n className = route.paramMap.get('className');\r\n const instance = getInstance<T>(className, modelsImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${className}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<T>(className: string, modelsImport: any): Promise<T> {\r\n return modelsImport.then((module) => module[toProperCase(className)]);\r\n // return modelsImport.then((module) => ({ modelInstance: module[toProperCase(className)] })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { ActivatedRouteSnapshot, ResolveFn, RouterStateSnapshot } from '@angular/router';\r\nimport { BaseModel, BaseService } from '../core';\r\n\r\nexport function DynamicallyServiceResolver<T extends BaseModel, U extends BaseService<T>>(serviceImport: any, serviceName: string): ResolveFn<U> {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const instance = getInstance<U>(serviceName, serviceImport);\r\n if (!instance) {\r\n throw new Error(`Invalid className: ${serviceName}`);\r\n }\r\n return instance;\r\n };\r\n}\r\n\r\nfunction getInstance<U>(serviceName: string, serviceImport: any): Promise<U> {\r\n return serviceImport.then((module) => module[toProperCase(serviceName)]); // return Promise.all([serviceImport]).then(\r\n // (module) => ({\r\n // serviceInstance: module[toProperCase(serviceName)],\r\n // })\r\n // );\r\n}\r\n\r\nfunction toProperCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt: string) => {\r\n return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\r\n });\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { Configurations } from './configurations';\r\nimport { PROVIDERS } from './providers';\r\nimport { TranslateloaderService } from './services/translate-loader.service';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useClass: TranslateloaderService,\r\n deps: [HttpClient]\r\n },\r\n // missingTranslationHandler: { provide: MissingTranslationHandler, useClass: MyMissingTranslationHandler },\r\n useDefaultLang: false,\r\n }),\r\n ReactiveFormsModule\r\n ],\r\n providers: [\r\n PROVIDERS\r\n ],\r\n exports: [\r\n HttpClientModule,\r\n TranslateModule,\r\n ]\r\n})\r\nexport class RslBaseModule {\r\n public static forRoot(config: Configurations): ModuleWithProviders<RslBaseModule> {\r\n return {\r\n ngModule: RslBaseModule,\r\n providers: [\r\n PROVIDERS,\r\n { provide: Configurations, useValue: config }\r\n ]\r\n };\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class CustomValidators {\n static patternValidator(regex: RegExp, error: ValidationErrors): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n if (!control.value) {\n // if control is empty return no error\n return null;\n }\n\n // test the value of the control against the regexp supplied\n const valid = regex.test(control.value);\n\n // if true, return no error (no error), else return error passed in the second parameter\n return valid ? null : error;\n };\n }\n}\n","export function 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\r\nexport function 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 * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.CacheService","i1.BaseDatastore","i4","i1.CacheService","i1","i3.Configurations","i2.Configurations","getInstance","toProperCase"],"mappings":"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"}
package/lib/core.d.ts CHANGED
@@ -3,6 +3,7 @@ export { BaseFormEditComponent } from './base-components/base-form-edit.componen
3
3
  export * from './configurations';
4
4
  export * from './grid-layout-format.enum';
5
5
  export * from './index';
6
+ export * from './models/metadata-storage';
6
7
  export * from './providers';
7
8
  export * from './rsl-base-module';
8
9
  export * from './utils';
@@ -1,3 +1,2 @@
1
- import 'reflect-metadata';
2
1
  import { AttributeDecoratorOptions } from '../interfaces/attribute-decorator-options.interface';
3
2
  export declare function Attribute(options?: AttributeDecoratorOptions): PropertyDecorator;
@@ -0,0 +1,5 @@
1
+ export declare class MetadataStorage {
2
+ private static metadataMap;
3
+ static getMetadata(key: string, target: object, propertyKey?: string): any;
4
+ static setMetadata(key: string, value: any, target: object, propertyKey?: string): void;
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosoftlab/core",
3
- "version": "1.0.1-alpha-3",
3
+ "version": "1.0.1-alpha-5",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.1.3",
6
6
  "@angular/core": "^19.1.3",