sf-crud 13.0.9 → 13.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sf-crud.mjs","sources":["../../../projects/sf-crud/src/lib/shared/models/crud-config.model.ts","../../../projects/sf-crud/src/lib/shared/services/general.service.ts","../../../projects/sf-crud/src/lib/shared/models/Conditions.model.ts","../../../projects/sf-crud/src/lib/sf-crud.service.ts","../../../projects/sf-crud/src/lib/shared/services/step.service.ts","../../../projects/sf-crud/src/lib/shared/injections/token.ts","../../../projects/sf-crud/src/lib/shared/services/dialog.service.ts","../../../projects/sf-crud/src/lib/components/tablero/tablero.component.ts","../../../projects/sf-crud/src/lib/components/tablero/tablero.component.html","../../../projects/sf-crud/src/lib/shared/services/notification.service.ts","../../../projects/sf-crud/src/lib/components/step/step.component.ts","../../../projects/sf-crud/src/lib/components/step/step.component.html","../../../projects/sf-crud/src/lib/shared/models/shema.model.ts","../../../projects/sf-crud/src/lib/components/file-upload/file-upload.component.ts","../../../projects/sf-crud/src/lib/components/file-upload/file-upload.component.html","../../../projects/sf-crud/src/lib/directives/format-address.pipe.ts","../../../projects/sf-crud/src/lib/components/control/control.component.ts","../../../projects/sf-crud/src/lib/components/control/control.component.html","../../../projects/sf-crud/src/lib/components/form/form.component.ts","../../../projects/sf-crud/src/lib/components/form/form.component.html","../../../projects/sf-crud/src/lib/components/registro/registro.component.ts","../../../projects/sf-crud/src/lib/components/registro/registro.component.html","../../../projects/sf-crud/src/lib/sf-crud.component.ts","../../../projects/sf-crud/src/lib/sf-crud.routing.module.ts","../../../projects/sf-crud/src/lib/sf-crud.module.ts","../../../projects/sf-crud/src/public-api.ts","../../../projects/sf-crud/src/sf-crud.ts"],"sourcesContent":["// import { Message } from \"primeng/api\"; // Removed in PrimeNG 18\r\nimport { Shema } from \"./shema.model\";\r\nimport { Condition } from \"./Conditions.model\";\r\n\r\nexport class CrudConfig {\r\n idEntidad: string = '';\r\n uiEsquemas: any[] = [];\r\n esquemas: Shema[] = [];\r\n registros: ConfigRegistro[] = [];\r\n tablero: ConfigTablero | undefined;\r\n}\r\n\r\n\r\nexport class ConfigTablero {\r\n columns: any[] = [];\r\n endpoint: string = '';\r\n method: string = '';\r\n server: string = '';\r\n filters: string[] = [];\r\n keys: { key: string, scope?: string }[] = [];\r\n createButton?: any;\r\n dialog: any;\r\n}\r\n\r\nexport class ConfigRegistro {\r\n operations: Operation[] = [];\r\n btnBack: string = '';\r\n label?: string;\r\n canBack: boolean = false;\r\n constructionId?: ConstructionId;\r\n keys?: Key[];\r\n conditions?: Condition[]= [];\r\n}\r\n\r\nexport class Operation {\r\n type!: \"update\" | \"create\" | \"read\" | \"ado\" | \"ServerSc\";\r\n server?: string;\r\n endpoint?: string;\r\n method: string = '';\r\n validations?: Validations;\r\n url?: string;\r\n changeTrx: {index: number, trx: string}[] = [];\r\n errorChecking?: RequestChecking;\r\n answerChecking?: RequestChecking;\r\n keysEsquema?: keyEsquema[];\r\n keys?: Key[]\r\n\r\n}\r\n\r\nexport class ConstructionId {\r\n indexStep!: number;\r\n path!: string;\r\n keys?: Key[]\r\n}\r\n\r\nexport class Validations {\r\n type: string = '';\r\n required?: ValidationRequired[] = [];\r\n equals?: ValidationEqual[] = [];\r\n different?: ValidationDifferent[] = [];\r\n server: string = '';\r\n endpoint: string = '';\r\n operations: any;\r\n}\r\n\r\nclass ValidationRequired{\r\n field!: string;\r\n message!: string;\r\n conditions?: number[];\r\n validation?: string;\r\n}\r\nclass ValidationEqual extends ValidationRequired{\r\n constructor(\r\n public value: any\r\n ){\r\n super()\r\n }\r\n}\r\n\r\nclass ValidationDifferent extends ValidationRequired{\r\n constructor(\r\n public value: any\r\n ){\r\n super()\r\n }\r\n}\r\n\r\nexport class RequestChecking {\r\n constructor(\r\n public dynamics: any | undefined,\r\n public statics: any | undefined,\r\n public useSwal: boolean,\r\n public redirect: string | undefined,\r\n public cancelRedirect: string | undefined,\r\n public allowContinue: boolean,\r\n public parse: string | undefined\r\n ){}\r\n}\r\n\r\n\r\nexport class Key{\r\n key!: string;\r\n scope!: string;\r\n indexAnswer?: number;\r\n indexData?: number;\r\n indexId?: number;\r\n data?: string;\r\n overrideControl?: OverrideConfig;\r\n}\r\n\r\nexport class OverrideConfig {\r\n property!: string;\r\n value: any;\r\n elseValue?: any;\r\n conditions?: number[];\r\n newPropertyValue?: any;\r\n elseNewPropertyValue?: any;\r\n}\r\n\r\nexport class keyEsquema{\r\n key?: string;\r\n scope!: string;\r\n indexData?: number;\r\n indexId?: number;\r\n isArray?: boolean;\r\n indexKey?: number;\r\n canBeValueUndefined?: boolean;\r\n}\r\n\r\n\r\n\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CrudConfig } from '../models/crud-config.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GeneralService {\r\n public generales: string = '';\r\n public jsonConfig: any;\r\n private _idKatios!: string;\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {\r\n }\r\n\r\n set environment(val){\r\n this.jsonConfig = val \r\n this.generales = this.jsonConfig?.ServidorGenerales;\r\n }\r\n\r\n get environment(){\r\n if (!this.jsonConfig) this.environment = JSON.parse(sessionStorage.getItem('ConfigJSON') || '{}');\r\n return this.jsonConfig\r\n }\r\n\r\n \r\n get idKatios(){\r\n return this._idKatios\r\n }\r\n\r\n set idKatios(value: string){\r\n this._idKatios = value\r\n }\r\n\r\n\r\n async getCrudByEntidad(idKatios: string, idEntidad: string): Promise<CrudConfig | undefined> {\r\n return this.http.get<CrudConfig>(`${this.generales}crud/forms/${idKatios}/${idEntidad}`).toPromise();\r\n }\r\n\r\n async getFiles(urls: string[], names: string[]): Promise<File[]> {\r\n\treturn Promise.all(\r\n\t\turls.map(async (url, i) => {\r\n\t\t\tconst response = await this.http.get(url, { responseType: 'blob' }).toPromise();\r\n\t\t\tconst arrayBuffer = await response!.arrayBuffer();\r\n\r\n\t\t\tconst tipo = names[i].includes(\".pdf\") ? 'application/pdf' : \"image/\" + this.getExt(names[i]);\r\n\t\t\treturn new File([new Uint8Array(arrayBuffer)], names[i], { type: tipo });\r\n\t\t})\r\n\t);\r\n\t}\r\n\r\n getExt(name: string) {\r\n let ext = undefined\r\n let aux = name.split('.')\r\n if (aux.length > 0) ext = aux[aux.length - 1]\r\n return ext\r\n }\r\n\r\n async genericRequest(method: string, url: string, data?: any) {\r\n switch (method) {\r\n case 'GET':\r\n return this.http.get(url).toPromise()\r\n case 'POST':\r\n return this.http.post(url, data).toPromise()\r\n case 'PUT':\r\n return this.http.put(url, data).toPromise()\r\n case 'DELETE':\r\n return this.http.delete(url, data).toPromise()\r\n default:\r\n throw new Error(\"Invalid method\")\r\n }\r\n }\r\n}\r\n","import * as jsonpath from \"jsonpath\";\r\n\r\nexport abstract class Condition {\r\n\r\n constructor(\r\n public type: \"equal\" | \"different\" | \"or\" | \"and\",\r\n public attrs: any,\r\n public indexData: number | undefined\r\n ){\r\n }\r\n\r\n\r\n static instanceContidion(index: number, allConditions: Condition[]): Condition{\r\n let c: Condition;\r\n switch (allConditions[index].type) {\r\n case \"different\":\r\n c = new ConditionDifferent(allConditions[index].attrs.field, allConditions[index].attrs.value, allConditions[index].attrs.grado || 2, allConditions[index].indexData)\r\n break;\r\n case \"or\":\r\n const subconditions = (allConditions[index].attrs.conditions as number[]).map(i => this.instanceContidion(i, allConditions))\r\n c = new ConditionOr(subconditions, allConditions[index].indexData)\r\n break;\r\n case \"and\":\r\n const subconditions2 = (allConditions[index].attrs.conditions as number[]).map(i => this.instanceContidion(i, allConditions))\r\n c = new ConditionAnd(subconditions2, allConditions[index].indexData)\r\n break;\r\n case \"equal\":\r\n c = new ConditionEqual(allConditions[index].attrs.field, allConditions[index].attrs.value, allConditions[index].attrs.grado || 2, allConditions[index].indexData)\r\n break;\r\n }\r\n return c;\r\n }\r\n\r\n abstract isValid(data: any): boolean;\r\n}\r\n\r\nexport class ConditionEqual extends Condition{\r\n constructor(\r\n public field: string,\r\n public value: any,\r\n public grado: number,\r\n indexData: number | undefined){\r\n super(\"equal\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n let cumple = true\r\n const res = jsonpath.query(data, this.field)\r\n if (res.length > 0 && this.grado == 2) cumple = this.value == res[0]\r\n else if (res.length > 0 && this.grado == 3) cumple = this.value === res[0]\r\n return cumple;\r\n }\r\n\r\n}\r\n\r\nexport class ConditionDifferent extends Condition{\r\n constructor(\r\n public field: string,\r\n public value: any,\r\n public grado: number,\r\n indexData: number | undefined\r\n ){\r\n super(\"different\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n let cumple = true\r\n const res = jsonpath.query(data, this.field)\r\n if (res.length > 0 && this.grado == 2) cumple = this.value != res[0]\r\n else if (res.length > 0 && this.grado == 3) cumple = this.value !== res[0]\r\n return cumple;\r\n }\r\n}\r\n\r\nexport class ConditionOr extends Condition{\r\n constructor(\r\n public conditions: Condition[],\r\n indexData: number | undefined\r\n ){\r\n super(\"or\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n return this.conditions.some(c => c.isValid(data));\r\n }\r\n}\r\n\r\nexport class ConditionAnd extends Condition{\r\n constructor(\r\n public conditions: Condition[],\r\n indexData: number | undefined){\r\n super(\"and\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n return this.conditions.every(c => c.isValid(data));\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Shema } from './shared/models/shema.model';\r\nimport { ConfigRegistro, Key, Operation, keyEsquema } from './shared/models/crud-config.model';\r\nimport { Empresa } from './shared/models/Empresa.model';\r\nimport { Condition } from './shared/models/Conditions.model';\r\nimport { Reason } from './shared/models/Reason.model';\r\nimport moment from 'moment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SfCrudService {\r\n private _esquemas: Shema[] = [];\r\n private _uiEsquemas: any[] = []\r\n private _registros: ConfigRegistro[] = [];\r\n private _answers: any[] = [];\r\n private _dataSet :any[] = [];\r\n private _ids :string[] = [];\r\n private __index: number = 0;\r\n private _idKatios!: string;\r\n private _configEmpresa: Empresa | undefined = undefined;\r\n private _trx: string[] = [];\r\n private jsonConfig: any;\r\n private _changeData = new BehaviorSubject<ChangeData | undefined>(undefined);\r\n private __formLoading = new BehaviorSubject<Loading>({inProgress: false, target: undefined});\r\n private _dataExt: any;\r\n private _tfmUser: any;\r\n private _crudLoaded = new BehaviorSubject(false);\r\n private _mascaras: Mascara[] = []\r\n private _disabledFields = new BehaviorSubject<{fields: string[], disabled: boolean}>({fields: [], disabled: false});\r\n private _operation = new BehaviorSubject<any>({});\r\n \r\n disabledFields$ = this._disabledFields.asObservable();\r\n operation$ = this._operation.asObservable();\r\n\r\n\r\n notifyFieldsToDisable(fields: string[], disabled: boolean = true) {\r\n this._disabledFields.next({fields, disabled});\r\n }\r\n\r\n notifyChangeOperation(object: any){\r\n this._operation.next(object);\r\n }\r\n\r\n get user(){\r\n if (!this._tfmUser) this._tfmUser = JSON.parse(localStorage.getItem(\"oSessionTFM\")!)\r\n return this._tfmUser\r\n }\r\n\r\n get currentOperation(){\r\n return this.registros[this.index].operations.find(x => x.type.startsWith(this._trx[this.index]))\r\n }\r\n\r\n set environment(val: any){\r\n this.jsonConfig = val\r\n }\r\n\r\n get environment(){\r\n return this.jsonConfig\r\n }\r\n\r\n get onCrudLoaded$(){\r\n return this._crudLoaded.asObservable()\r\n }\r\n\r\n set crudLoaded(value: boolean){\r\n this._crudLoaded.next(value)\r\n }\r\n\r\n get dataExt(){\r\n return this._dataExt\r\n }\r\n\r\n set dataExt(val){\r\n this._dataExt = val\r\n }\r\n\r\n get index(){\r\n return this.__index\r\n }\r\n\r\n set index(value: number){\r\n this.__index = value\r\n }\r\n\r\n get idKatios(){\r\n return this._idKatios\r\n }\r\n\r\n set idKatios(value: string){\r\n this._idKatios = value?.trim()?.toUpperCase()\r\n }\r\n\r\n get configEmpresa(): Empresa | undefined{\r\n return this._configEmpresa\r\n }\r\n\r\n set configEmpresa(value: Empresa | undefined){\r\n this._configEmpresa = value\r\n }\r\n\r\n get mascaras(){\r\n return this._mascaras\r\n }\r\n\r\n set mascaras(mascaras: Mascara[]){\r\n this._mascaras = mascaras\r\n }\r\n\r\n getURL(operation: Operation, index: number | undefined = undefined, id: any=undefined){\r\n\r\n let url = operation.url || `${this.jsonConfig[operation.server!]}${operation.endpoint}`\r\n url = url.replace('@idKatios', this.idKatios)\r\n if (id) url = url.replace('@id', id)\r\n\r\n url = this.applyStringKeys(url, index)\r\n return url\r\n }\r\n\r\n getRegistro(index: number){\r\n return this._registros[index];\r\n }\r\n\r\n getId(index: number): string {\r\n return this._ids.length == 1 ? this._ids[0] : this._ids[index];\r\n }\r\n\r\n get dataset(){\r\n return this._dataSet\r\n }\r\n getData(index: number){\r\n return this._dataSet.length == 1 ? this._dataSet[0] : this._dataSet[index];\r\n }\r\n\r\n\r\n getTrx(index: number): string {\r\n return this._trx[index]\r\n }\r\n\r\n get totalData(){\r\n return this._dataSet.length\r\n }\r\n\r\n get totalRegistros(){\r\n return this._registros.length\r\n }\r\n\r\n get uiEsquemas(){\r\n return this._uiEsquemas\r\n }\r\n\r\n getEsquema(index: number){\r\n return this._esquemas.length == 1 ? this._esquemas[0] : this._esquemas[index];\r\n }\r\n\r\n reset(){\r\n this._ids = []\r\n this._dataSet = []\r\n }\r\n\r\n getURLRedirect(initialURL: string){\r\n let finalUrl = this.applyStringKeys(initialURL, undefined)\r\n finalUrl = finalUrl.replace(\"@URLBASE\", window.location.href.split('?')[0])\r\n return finalUrl\r\n }\r\n\r\n getUIEsquema(index: number){\r\n return this._uiEsquemas[index];\r\n }\r\n\r\n\r\n /**\r\n * using data, apply each keyEsquema over each dataset indicated on indexData of each key\r\n * @param data\r\n * @param content\r\n * @returns\r\n */\r\n applyObjectKeys(data: any, keysEsquema: keyEsquema[], registro: ConfigRegistro): any{\r\n if (!data || typeof data !== 'object') {\r\n console.warn('applyObjectKeys received invalid data:', data);\r\n return data;\r\n }\r\n\r\n for (let i = 0; i < keysEsquema.length; i++) {\r\n const opt = keysEsquema[i];\r\n let value = undefined;\r\n if (opt.indexKey){\r\n let keyFound = (registro.keys ?? [undefined])[opt.indexKey]\r\n this.applyKey(keyFound, registro, data)\r\n }\r\n else if (opt.indexData !== undefined && opt.scope) {\r\n try {\r\n if (opt.isArray){\r\n value = jsonpath.query(data, opt.scope)\r\n } else {\r\n const result = jsonpath.query(data, opt.scope);\r\n value = result.length > 0 ? result[0] : undefined;\r\n }\r\n } catch (err) {\r\n console.warn('Error querying jsonpath:', opt.scope, err);\r\n continue;\r\n }\r\n }\r\n if (opt.key == \"$\" && value && typeof value === 'object') {\r\n Object.assign(this._dataSet[opt.indexData!], value)\r\n }\r\n else if (opt.key && ((value !== undefined && value !== null) || (opt.canBeValueUndefined === undefined || opt.canBeValueUndefined === true))) {\r\n try {\r\n jsonpath.value(this._dataSet[opt.indexData!], opt.key, value)\r\n } catch (err) {\r\n console.warn('Error setting jsonpath value:', opt.key, err);\r\n }\r\n }\r\n }\r\n return data\r\n }\r\n\r\n\r\n applyKey(key: Key | undefined, registro: ConfigRegistro, data: any){\r\n if (key?.overrideControl){\r\n let newVal = undefined;\r\n let esquemaToSet = this.getControl(key.scope, this.esquemas[key.indexData ?? this.index])\r\n if (!esquemaToSet) {\r\n console.error({message: \"la key esta mal configurada\", data: key})\r\n return;\r\n }\r\n let completed = this.isConditionsCompleted(key.overrideControl.conditions ?? [], registro.conditions || [], data)\r\n if (key.overrideControl?.property) jsonpath.value(esquemaToSet, key.overrideControl.property, completed ? key.overrideControl.value : key.overrideControl.elseValue)\r\n\r\n if (completed && key.overrideControl.newPropertyValue !== undefined){\r\n if (key.overrideControl.newPropertyValue == 'RESETOBJECT') newVal = this.createObject(esquemaToSet, this.currentOperation)\r\n else newVal = key.overrideControl.newPropertyValue\r\n }else if (!completed && key.overrideControl.elseNewPropertyValue !== undefined){\r\n if (key.overrideControl.elseNewPropertyValue == 'RESETOBJECT') newVal = this.createObject(esquemaToSet, this.currentOperation)\r\n else newVal = key.overrideControl.elseNewPropertyValue\r\n }\r\n if (newVal !== undefined) jsonpath.value(this._dataSet[key.indexData ?? this.index], key.scope.replaceAll('..properties', ''), newVal)\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Validate conditions on datas\r\n * @param conditions\r\n * @param index\r\n */\r\n isConditionsCompleted(iConditions: number[], conditions: Condition[], data: any): boolean {\r\n let cumple = true\r\n iConditions.forEach( iCond => {\r\n const c = Condition.instanceContidion(iCond, conditions)\r\n let dataToEvaluate = c.indexData !== undefined ? this._dataSet[c.indexData] : data\r\n if (!c.isValid(dataToEvaluate)) cumple = false\r\n })\r\n return cumple\r\n }\r\n /**\r\n * Apply each key from register over string content\r\n * @param indexRegistro\r\n * @param content\r\n * @returns\r\n */\r\n applyStringKeys(content: string, index: number | undefined = undefined): string{\r\n let indexRegistro = index || this.__index\r\n this._registros[indexRegistro].keys?.forEach((opt) => {\r\n let value;\r\n if (opt.indexId !== undefined && opt.indexId < this._ids.length) value = this._ids[opt.indexId]\r\n else if (opt.indexAnswer !== undefined && opt.indexAnswer < this._answers.length) value = jsonpath.query(this._answers[opt.indexAnswer], opt.scope)[0]\r\n else if (opt.indexData !== undefined) value = jsonpath.query(this._dataSet[opt.indexData], opt.scope)[0]\r\n if (value === null) value = ''\r\n content = content.replace(opt.key, value)\r\n })\r\n return content\r\n }\r\n\r\n validateDataLocal(operation: Operation, data: any, conditions: Condition[]) {\r\n const err: string[] = []\r\n //Solo si se cumple la condicion, se valida\r\n operation.validations?.required?.forEach(x => {\r\n const cumpleCond = x.conditions ? this.isConditionsCompleted(x.conditions, conditions, data): (x.validation ? this.isValidationSuccess(x.validation,data) : true);\r\n if (cumpleCond && (!jsonpath.query(data, x.field)[0] ||\r\n (Array.isArray(jsonpath.query(data, x.field)[0]) && jsonpath.query(data, x.field)[0].length == 0))) err.push(x.message);\r\n })\r\n\r\n operation.validations?.different?.forEach(x =>{\r\n const cumpleCond = x.conditions ? this.isConditionsCompleted(x.conditions, conditions, data): true;\r\n if (cumpleCond && jsonpath.query(data, x.field)[0] === x.value) err.push(x.message);\r\n })\r\n\r\n operation.validations?.equals?.forEach(x =>{\r\n const cumpleCond = x.conditions ? this.isConditionsCompleted(x.conditions, conditions, data): true;\r\n if (cumpleCond && jsonpath.query(data, x.field)[0] != x.value) err.push(x.message);\r\n })\r\n operation.validations?.operations?.forEach((op: any) => {\r\n switch (op.action) {\r\n case 'sumArray':\r\n const var1 = jsonpath.query(data, op.scope[0]).reduce((acc, cur) => acc += cur[op.key], 0);\r\n const var2 = jsonpath.query(data, op.scope[1]).reduce((acc, cur) => acc += cur[op.key], 0);\r\n if (var1 != var2) err.push(op.message)\r\n break;\r\n default:\r\n break;\r\n }\r\n })\r\n return err;\r\n }\r\n\r\n /**\r\n * Removes fields marked with uiOnly: true and empty/null values from the data object\r\n * @param data The data object to clean\r\n * @param schema The schema that describes the data structure\r\n * @returns A new object without uiOnly fields and empty values\r\n */\r\n removeUiOnlyFields(data: any, schema: Shema): any {\r\n if (!data || !schema || !schema.properties) return data;\r\n \r\n const result = { ...data };\r\n \r\n Object.entries(schema.properties).forEach(([key, property]) => {\r\n const propertySchema = property as Shema;\r\n const value = result[key];\r\n \r\n const shouldRemove = \r\n (propertySchema && propertySchema.uiOnly === true) ||\r\n value === null || value === undefined ||\r\n (typeof value === 'string' && value.trim() === '')\r\n \r\n if (shouldRemove) {\r\n delete result[key];\r\n } else if (propertySchema && propertySchema.type === 'object' && propertySchema.properties) {\r\n const cleanedNestedObject = this.removeUiOnlyFields(result[key], propertySchema);\r\n if (Object.keys(cleanedNestedObject).length > 0) {\r\n result[key] = cleanedNestedObject;\r\n } else {\r\n delete result[key];\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n isValidationSuccess(validation: string, data: any){\r\n const value = jsonpath.query(data, validation);\r\n if(value.length == 0) return false\r\n return !value[0];\r\n }\r\n\r\n set esquemas(esquemas: Shema[]){\r\n this._esquemas = esquemas\r\n }\r\n\r\n get esquemas(){\r\n return this._esquemas\r\n }\r\n\r\n set ids(ids: string[]){\r\n this._ids = ids\r\n }\r\n\r\n set uiEsquemas(uiEsquemas: any[]){\r\n this._uiEsquemas = uiEsquemas\r\n }\r\n\r\n get registros(){\r\n return this._registros\r\n }\r\n\r\n set registros(registros: ConfigRegistro[]){\r\n this._registros = registros\r\n }\r\n\r\n setDataSet(data: any, index: number | undefined = undefined){\r\n index = index ? index : this.__index\r\n if (index >= this.totalData) {\r\n this._dataSet.push(data)\r\n }\r\n }\r\n\r\n\r\n setTrx(trx: any, index: number){\r\n if (Array.isArray(trx)) this._trx = trx;\r\n else if (index >= this._trx.length) this._trx.push(trx)\r\n else this._trx[index] = trx\r\n }\r\n\r\n setAnswers(answer: any, index: number){\r\n if (Array.isArray(answer)) this._answers = answer;\r\n else {\r\n if (index >= this._answers.length) this._answers.push(answer);\r\n else this._answers[index] = answer;\r\n }\r\n }\r\n\r\n getControl(scope: string, esquema: Shema) {\r\n return jsonpath.query(esquema, scope)[0];\r\n }\r\n\r\n\r\n getValue(scope: any, data: any) {\r\n return jsonpath.query(data, scope.replaceAll('.properties', ''))[0];\r\n }\r\n\r\n createObject(esquema: Shema, operation: Operation | undefined) {\r\n const object: any = {};\r\n switch (esquema.type) {\r\n case 'numeric':\r\n case 'string':\r\n case 'date':\r\n if (esquema.default && operation){\r\n return this.setDefaultValue(esquema.default, operation)\r\n }\r\n else return esquema.default ?? null;\r\n case 'boolean':\r\n return esquema?.default || false;\r\n case 'array':\r\n return [];\r\n case 'file':\r\n return null;\r\n case 'object':\r\n Object.getOwnPropertyNames(esquema?.properties).forEach(key => {\r\n let aux = esquema?.properties[key]\r\n if (aux) object[key] = this.createObject(aux, operation)\r\n });\r\n return object;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getValueKey(key: Key | undefined): any {\r\n let data;\r\n switch (key?.data || 'externa') {\r\n case \"user\":\r\n data = this.user\r\n break;\r\n default:\r\n data = this.dataExt\r\n break;\r\n }\r\n if (data && key){\r\n const aux = jsonpath.query(data, key.scope)\r\n if (aux.length == 0) return undefined\r\n if (aux.length == 1) return aux[0]\r\n else return aux\r\n }\r\n return undefined\r\n }\r\n\r\n\r\n setDefaultValue(value: any, operation: Operation) {\r\n let data = null;\r\n if (value.key && operation.keys){\r\n data = this.getValueKey(operation.keys.find(k => k.key == value.key)!)\r\n value = data\r\n }\r\n switch (value) {\r\n case '@uactivo':\r\n data = `${this.user.UsuarioSistema.TDOC}-${this.user.UsuarioSistema.NDOC}`\r\n break;\r\n case '@tdocactivo':\r\n data = this.user.UsuarioSistema.TDOC\r\n break;\r\n case '@ndocactivo':\r\n data = this.user.UsuarioSistema.NDOC\r\n break;\r\n case '@hoy':\r\n data = new Date();\r\n break;\r\n default:\r\n data = value;\r\n break;\r\n }\r\n return data\r\n }\r\n\r\n /**\r\n * Validate if schema has pdfsign and it's signed, else return false\r\n * @param index\r\n * @returns\r\n */\r\n isSignedPDF(index: number){\r\n return this._dataSet[index].signed\r\n }\r\n\r\n get changeData$(){\r\n return this._changeData.asObservable()\r\n }\r\n\r\n set changeData(value: ChangeData){\r\n this._changeData.next(value)\r\n }\r\n\r\n get formLoading$(){\r\n return this.__formLoading.asObservable()\r\n }\r\n\r\n set formLoading(value: Loading){\r\n this.__formLoading.next(value)\r\n }\r\n\r\n loadSession() {\r\n const existSession = localStorage.getItem(\"esquemas\") !== null\r\n if (existSession){\r\n this._esquemas = JSON.parse(localStorage.getItem(\"esquemas\")!)\r\n this._uiEsquemas = JSON.parse(localStorage.getItem(\"uiEsquemas\")!)\r\n this._registros = JSON.parse(localStorage.getItem(\"registros\")!)\r\n this._dataSet = JSON.parse(localStorage.getItem(\"dataSet\")!)\r\n this._answers = JSON.parse(localStorage.getItem(\"answers\")!)\r\n this._trx = JSON.parse(localStorage.getItem(\"trx\")!)\r\n this.__index = +localStorage.getItem(\"index\")!\r\n localStorage.clear()\r\n }\r\n return existSession\r\n }\r\n\r\n get reasons(): Reason[]{\r\n const reasonsStorage =localStorage.getItem(\"reasons\")\r\n if (reasonsStorage) return <Reason[]>JSON.parse(reasonsStorage)\r\n return []\r\n }\r\n\r\n saveProgress(reasons: Reason[]){\r\n localStorage.setItem(\"reasons\", JSON.stringify(reasons))\r\n localStorage.setItem(\"esquemas\", JSON.stringify(this._esquemas))\r\n localStorage.setItem(\"trx\", JSON.stringify(this._trx))\r\n localStorage.setItem(\"uiEsquemas\", JSON.stringify(this._uiEsquemas))\r\n localStorage.setItem(\"registros\", JSON.stringify(this._registros))\r\n localStorage.setItem(\"dataSet\", JSON.stringify(this._dataSet))\r\n localStorage.setItem(\"answers\", JSON.stringify(this._answers))\r\n localStorage.setItem(\"index\", this.__index.toString())\r\n }\r\n\r\n public redirectToInicio(){\r\n window.location.href = window.location.href.split('?')[0]\r\n window.location.reload()\r\n }\r\n\r\n\r\napplyValuesOnEvent(event: string, esquema: Shema, key: string | undefined, data: any) {\r\n if (key) {\r\n if (esquema.properties[key][event]) {\r\n esquema.properties[key][event].forEach((value: { scope: string[], op: string, key?: string }) => {\r\n this.setValueEvent(data, value, esquema);\r\n })\r\n }\r\n } else {\r\n for (const key in esquema.properties) {\r\n if (esquema.properties[key][event]) {\r\n esquema.properties[key][event].forEach((value: any) => {\r\n this.setValueEvent(data, value, esquema);\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n setValueEvent(data: any, params: { scope: string[], op: string, key?: any, separator?: string }, esquema: Shema) {\r\n let date = moment(new Date());\r\n switch (params.op) {\r\n case 'sum':\r\n jsonpath.value(data, params.scope[1], jsonpath.query(data, params.scope[0]).reduce((acc, cur) => acc += params?.key ? cur[params.key] : cur, 0))\r\n break;\r\n case 'concat':\r\n let array: string[] = []\r\n params?.key?.reduce((acc: any[], cur: string) => {\r\n array.push(jsonpath.query(data, cur)[0])\r\n }, [])\r\n if (params?.separator) jsonpath.value(data, params.scope[0], array.join(params?.separator || ' '))\r\n break;\r\n case 'enable':\r\n jsonpath.value(esquema, params.scope[0], false)\r\n break;\r\n case 'disabled':\r\n jsonpath.value(esquema, params.scope[0], true)\r\n break;\r\n case 'replace:endpoint':\r\n jsonpath.value(esquema, params.scope[0], esquema.config.endpointtemp.replace(params.scope[1], jsonpath.query(data, `$..${params.key}`)))\r\n break;\r\n case 'setNull':\r\n jsonpath.value(data, `$.${params.key}`, null);\r\n break;\r\n case 'datediff:years':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'years'))\r\n break;\r\n case 'datediff:months':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'months'))\r\n break;\r\n case 'datediff:weeks':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'weeks'))\r\n break;\r\n case 'datediff:days':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'days'))\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n armarNuevaDireccion(tipo: \"string\", dataDireccion: any, separador?: string){\r\n let resultado: any;\r\n if (tipo == \"string\"){\r\n resultado = \"\"\r\n this.mascaras.forEach(mascara => {\r\n mascara.Campo.forEach((campo, i) => {\r\n let valor =jsonpath.query(dataDireccion, `$.${campo.Id}`)[0]\r\n if (valor && i -1 >= 0 && mascara.Campo[i-1].Tipo.toLocaleLowerCase() == \"label\"){\r\n valor = mascara.Campo[i-1].Valor + valor\r\n }\r\n\r\n if (valor && !separador) resultado += valor + \" \"\r\n else if (separador) resultado += (valor ?? \"\") + separador\r\n })\r\n })\r\n }else {\r\n throw new Error(\"flujo sin realizar\");\r\n }\r\n\r\n return resultado;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n export class ChangeData {\r\n constructor(\r\n public value: string,\r\n public scope: string,\r\n public index: number\r\n ){}\r\n }\r\n\r\n\r\n export interface Loading {\r\n target: HTMLElement | undefined,\r\n inProgress: boolean\r\n }\r\n\r\n\r\n export interface Mascara {\r\n linea: string,\r\n Campo: Campo[]\r\n }\r\n\r\n export interface Campo {\r\n Id: string,\r\n Tipo: string,\r\n Tamaño: string,\r\n Valores: string,\r\n Valor?: string //usado cuando el Tipo es Label\r\n }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StepService {\r\n\r\n\r\n private _requestApproval: Subject<{current: number, desired: any}> = new Subject();\r\n private _desiredIndex: number | undefined;\r\n private _customChildrenEvents: Subject<any> = new Subject();\r\n private _currentPosition = new BehaviorSubject(0);\r\n private _requestApproved = new BehaviorSubject(true);\r\n\r\n get currentIndex(){\r\n return this._currentPosition.getValue()\r\n }\r\n\r\n set currentIndex(value: number){\r\n this._currentPosition.next(value)\r\n }\r\n\r\n get currentIndex$(){\r\n return this._currentPosition.asObservable()\r\n }\r\n\r\n /*\r\n Envia una peticion para que se envie el formulario\r\n */\r\n set requestApproval(newPos: number){\r\n this._desiredIndex = newPos\r\n this._requestApproval.next({current: this.currentIndex, desired: newPos})\r\n }\r\n\r\n get requestApproval$(){\r\n return this._requestApproval.asObservable()\r\n }\r\n\r\n get requestApproved$(){\r\n return this._requestApproved.asObservable()\r\n }\r\n\r\n /**\r\n * Useful to deny or approve request made by requestAprroval\r\n */\r\n set requestApproved(approved: boolean){\r\n if (approved && this._desiredIndex !== undefined) this._currentPosition.next(this._desiredIndex)\r\n this._requestApproved.next(approved)\r\n }\r\n\r\n set desiredIndex(index:number | undefined){\r\n this._desiredIndex = index\r\n }\r\n\r\n addCustomChildrenEvent(name: string, data: any){\r\n this._customChildrenEvents.next({name, data})\r\n }\r\n\r\n reset(){\r\n //this._requestApproval = new BehaviorSubject({current:0, desired: undefined});\r\n //this._customChildrenEvents = new BehaviorSubject(undefined);\r\n }\r\n\r\n get customChildrenEvents$(){\r\n return this._customChildrenEvents.asObservable()\r\n }\r\n\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { DialogEntry } from \"../models/dialog.model\";\r\n\r\nexport const APP_DIALOG_COMPONENT = new InjectionToken<DialogEntry[]>('APP_DIALOG_COMPONENT');","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { APP_DIALOG_COMPONENT } from '../injections/token';\r\nimport { DialogEntry } from '../models/dialog.model';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CrudDialogService {\r\n private dialogMap = new Map<string, any>();\r\n\r\n constructor( \r\n @Optional() @Inject(APP_DIALOG_COMPONENT) dialogs: DialogEntry[] | undefined,\r\n public dialogService: DialogService\r\n) { \r\n (dialogs ?? []).forEach(e => this.dialogMap.set(e.key, e.component));\r\n}\r\n showDialog(key: string, config?: any){\r\n if(config) {\r\n const dialogKey = config[key];\r\n const dialogComponent = this.dialogMap.get(key);\r\n if(!dialogKey && !dialogComponent) return;\r\n this.dialogService.open(dialogComponent, {\r\n header: dialogKey.header || null,\r\n width: dialogKey.width || '30vw',\r\n breakpoints: dialogKey.breakpoints || { '1199px': '75vw', '575px': '90vw' },\r\n modal: dialogKey.modal || true,\r\n dismissableMask: dialogKey.dismissableMask || true,\r\n data: dialogKey.data || null\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, HostBinding, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { CrudConfig } from '../../shared/models/crud-config.model';\r\nimport { GeneralService } from '../../shared/services/general.service';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from \"lodash\";\r\nimport * as jsonpath from 'jsonpath';\r\nimport { Loading, SfCrudService } from '../../sf-crud.service';\r\nimport { StepService } from '../../shared/services/step.service';\r\nimport { CrudDialogService } from '../../shared/services/dialog.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'sf-crudtablero',\r\n templateUrl: './tablero.component.html',\r\n styleUrls: ['./tablero.component.css'],\r\n standalone: false,\r\n})\r\nexport class TableroComponent implements OnInit, OnChanges {\r\n\r\n @Input() opciones: any[] = [];\r\n @Input() idEntidad: string = '';\r\n @Input() idKatios: string = '';\r\n @Input() environment?: any; // Hacer opcional el environment\r\n @Input() user: any;\r\n @Input() dataExt: any;\r\n @Input() showCreateButton: boolean = false;\r\n @Output() onSelectAction: EventEmitter<any> = new EventEmitter<any>();\r\n @HostBinding(\"style.--secondary-color\") color2!: string;\r\n @HostBinding(\"style.--button-color\") colorButtons!: string;\r\n\r\n public items: MenuItem[] = [];\r\n public crudConfig: CrudConfig = new CrudConfig();\r\n public data: any[] = [];\r\n public initialData: any[] = [];\r\n public btn: { create: any, read: any, update: any, delete: any } = { create: undefined, read: undefined, update: undefined, delete: undefined }\r\n public itemSelected: any;\r\n private loading!:Loading;\r\n optionsMap = new Map<string, any>();\r\n constructor(\r\n private generalService: GeneralService,\r\n private router: Router,\r\n private sfCrudService: SfCrudService,\r\n private stepService: StepService,\r\n private dialogService: CrudDialogService\r\n ) \r\n {\r\n this.loading = {inProgress: false, target: undefined};\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.environment) {\r\n this.environment = JSON.parse(sessionStorage.getItem('ConfigJSON') || '{}');\r\n }\r\n this.generalService.environment = this.environment\r\n this.loadConfigCrud()\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes['dataExt'] && !changes['dataExt'].firstChange) {\r\n this.optionsMap.clear();\r\n this.showCreateButton = false;\r\n this.getInfoTablero();\r\n }\r\n }\r\n\r\n loadConfigCrud() {\r\n this.loading.inProgress = true;\r\n this.sfCrudService.formLoading = this.loading;\r\n this.generalService.getCrudByEntidad(this.idKatios, this.idEntidad)\r\n .then((res: CrudConfig | undefined)=> {\r\n if(res){\r\n this.crudConfig = res;\r\n this.getInfoTablero();\r\n }\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n })\r\n }\r\n\r\n customizeCompany(uiEsquemas: any[]) {\r\n this.sfCrudService.configEmpresa = uiEsquemas.find(ui => ui.general)?.general\r\n if(this.sfCrudService.configEmpresa){\r\n if (this.sfCrudService.configEmpresa.colors?.secondary) this.color2 = this.sfCrudService.configEmpresa.colors.secondary\r\n if (this.sfCrudService.configEmpresa.colors?.button) this.colorButtons = this.sfCrudService.configEmpresa.colors.secondary\r\n }\r\n\r\n if (!this.color2) this.color2 = this.colorButtons = \"blue\";\r\n }\r\n// submit(index: number) {\r\n// let registro = this.sfCrudService.getRegistro(index)\r\n// let operation = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(0)))!\r\n// console.log(operation)\r\n// let url = this.sfCrudService.getURL(operation, index)\r\n// return this.generalService.genericRequest(operation.method, url, this.sfCrudService.getData(index))\r\n// .then((res) => {\r\n// if (res === null) res = {}\r\n// res = this.sfCrudService.applyObjectKeys(res, operation.keysEsquema || [], registro)\r\n// console.log(res)\r\n// this.sfCrudService.setAnswers(res, 0)\r\n\r\n// if (operation.changeTrx) operation.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))\r\n// // this.notificationService.generateMessage(this.notificationService.genDefaultMessage(\"success\", undefined, \"Información subida correctamente\", operation.answerChecking), res, operation.answerChecking)\r\n// // return res;\r\n// })\r\n// .catch(err => {\r\n// // const operation = this.sfCrudService.getRegistro(this.indexCrud).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(index)))!\r\n// // this.notificationService.generateMessage(this.notificationService.genDefaultMessage(\"error\", \"Error no controlado\", \"Por favor comunicarse con el admin\",operation.errorChecking), err.error, operation.errorChecking)\r\n// // throw new Error(err)\r\n// })\r\n// }\r\n\r\n getInfoTablero() {\r\n //this.submit(0)\r\n this.data = []\r\n this.initialData = []\r\n this.loading.inProgress = true;\r\n this.sfCrudService.formLoading = this.loading;\r\n let url = this.aplyKeys(this.crudConfig.tablero!.keys, `${this.generalService.jsonConfig[this.crudConfig.tablero!.server]}${this.crudConfig.tablero!.endpoint}`, this.dataExt)\r\n this.generalService.genericRequest(this.crudConfig.tablero!.method, url, this.dataExt)\r\n .then((res: any) => {\r\n let aux;\r\n if (!Array.isArray(res)) aux = res.data; else aux = res;\r\n this.initialData = _.cloneDeep(aux);\r\n this.generateData(aux);\r\n this.loadOptions();\r\n this.initFilterOptions();\r\n })\r\n .finally(() => {\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n })\r\n }\r\n\r\n\r\n\r\n generateData(data: any[]) {\r\n data.forEach((item: any) => {\r\n let newItem: any = {};\r\n this.crudConfig.tablero!.columns.forEach(col => {\r\n newItem[col.col] = this.getValue(col.col, item)\r\n })\r\n this.data.push(newItem)\r\n })\r\n }\r\n\r\n initFilterOptions(){\r\n this.crudConfig.tablero?.columns.filter(col => col.filter?.config).forEach(col => this.generateFilterOptions(col));\r\n }\r\n\r\n verifyCreateButton() {\r\n if (this.crudConfig.tablero?.createButton && this.crudConfig.tablero?.createButton?.verify === 'filterList') {\r\n this.showCreateButton = this.optionsMap.get(this.crudConfig.tablero.createButton.column)?.length > 0;\r\n }\r\n }\r\n\r\n generateFilterOptions(col: any) {\r\n const url = this.aplyKeys(this.crudConfig.tablero!.keys, `${this.generalService.jsonConfig[col.filter.config.server]}${col.filter.config.endpoint}`, this.dataExt)\r\n this.generalService.genericRequest(col.filter.config.method, url, this.dataExt)\r\n .then((res: any) => {\r\n if(!Array.isArray(res) && res.data) res = res.data\r\n this.optionsMap.set(col.col, res);\r\n })\r\n .catch((error) => { \r\n this.optionsMap.set(col.col, []);\r\n console.error('Error fetching filter options:', error);\r\n });\r\n }\r\n \r\n getValue(path: string, item: any): any {\r\n if (path.includes(\".\")) return jsonpath.query(item, path)[0]\r\n return item[path]\r\n }\r\n\r\n externalLinkAction(){\r\n this.opciones.filter((opc: any) => opc.valor.action).forEach(opc => this.execAction(opc.valor))\r\n }\r\n\r\n loadOptions() {\r\n this.items = [];\r\n this.btn.create = this.opciones.find(x => x.label == 'Crear');\r\n this.opciones.filter((opc: any) => opc.valor.action).forEach(opc => {\r\n this.items.push({ label: opc.label, icon: opc.icon, command: () => this.execAction(opc.valor) })\r\n })\r\n }\r\n\r\n redirect(accion: string, data?: any) {\r\n this.stepService.reset();\r\n this.sfCrudService.reset();\r\n switch (accion) {\r\n case 'create':\r\n this.router.navigateByUrl(this.btn.create?.valor?.redirect || '');\r\n break;\r\n case 'read':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, this.btn.read.valor.redirect, data));\r\n break\r\n case 'update':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, this.btn.update.valor.redirect, data));\r\n break\r\n case 'delete':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, this.btn.delete.valor.redirect, data));\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n aplyKeys(keys: { key: string, scope?: string }[], endpoint: string, data?: any) {\r\n keys.forEach(key => {\r\n switch (key.key) {\r\n case '@ndoc':\r\n endpoint = endpoint.replace(key.key, this.user?.UsuarioSistema?.NDOC || '')\r\n break;\r\n case '@tdoc':\r\n endpoint = endpoint.replace(key.key, this.user?.UsuarioSistema?.TDOC || '')\r\n break;\r\n case '@idKatios':\r\n endpoint = endpoint.replace(key.key, this.idKatios)\r\n break;\r\n default:\r\n if (endpoint.includes(key.key) && data) endpoint = endpoint.replace(key.key, jsonpath.query(data, key?.scope || '')[0]);\r\n break;\r\n }\r\n });\r\n return endpoint;\r\n }\r\n\r\n execAction(params: any) {\r\n switch (params.action) {\r\n case 'redirect':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, params.link, this.itemSelected)).then(()=>{\r\n if (params.reload)\r\n window.location.reload()}\r\n )\r\n break;\r\n default:\r\n this.onSelectAction.emit({ data: _.cloneDeep(this.itemSelected), params })\r\n break;\r\n }\r\n }\r\n\r\n onGlobalFilter(event: Event, dt: any) {\r\n const target = event.target as HTMLInputElement;\r\n dt.filterGlobal(target.value, 'contains');\r\n }\r\n\r\n showAddDialog() {\r\n this.verifyCreateButton();\r\n if(!this.showCreateButton && this.crudConfig.tablero?.dialog) {\r\n this.dialogService.showDialog('create', this.crudConfig.tablero.dialog);\r\n }else{\r\n this.redirect('create')\r\n }\r\n }\r\n \r\n}\r\n","<p-card>\r\n <p-toolbar styleClass=\"mb-4 gap-2\" *ngIf=\"btn.create\">\r\n <ng-template #start>\r\n <button pButton pRipple [label]=\"btn.create.label\" [icon]=\"btn.create.icon\"\r\n class=\"p-button-success mr-2\" (click)=\"showAddDialog()\"></button>\r\n </ng-template>\r\n </p-toolbar>\r\n <p-table *ngIf=\"crudConfig?.tablero?.columns\" #dt [columns]=\"crudConfig.tablero.columns\" [value]=\"data\" [rowHover]=\"true\" [rows]=\"10\" [paginator]=\"true\"\r\n [totalRecords]=\"data.length\" [globalFilterFields]=\"crudConfig.tablero?.filters || []\" [tableStyle]=\"{'min-width': '75rem'}\"\r\n currentPageReportTemplate=\"Registro {first} al {last} de {totalRecords}\" [showCurrentPageReport]=\"true\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <h5 class=\"m-0\">{{crudConfig.tablero?.label || idEntidad}}</h5>\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-search\" />\r\n <input pInputText type=\"text\" (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\r\n placeholder=\"Buscar...\" />\r\n </p-iconfield>\r\n <!-- <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\r\n placeholder=\"Buscar...\" />\r\n </span> -->\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n <div class=\"flex align-items-center justify-between\">\r\n {{col.label}}\r\n <ng-container *ngIf=\"col.filter\" [ngSwitch] = \"col.filter.type\">\r\n <p-columnFilter *ngSwitchCase=\"'text'\" type=\"text\" [field]=\"col.filter.field\" [display]=\"col.filter.display\" [showMatchModes]=\"col.filter.showMatchModes || false\" [showOperator]=\"col.filter.showOperator || false\" [showAddButton]=\"col.filter.showAddButton || false\"/>\r\n <p-columnFilter *ngSwitchCase=\"'list'\" [field]=\"col.filter.field\" [display]=\"col.filter.display\" [matchMode]=\"col.filter.matchMode || 'equals'\"\r\n [showMatchModes]=\"col.filter.showMatchModes || false\" [showOperator]=\"col.filter.showOperator || false\" [showAddButton]=\"col.filter.showAddButton || false\">\r\n <ng-template #filter let-value let-filter=\"filterCallback\">\r\n <p-select [(ngModel)]=\"value\" [options]=\"optionsMap.get(col.col) ?? []\" (onChange)=\"filter($event.value)\" placeholder=\"Seleccione\" class=\"w-full\" \r\n [optionLabel]=\"col.filter?.config?.optionLabel\" [optionValue]=\"col.filter?.config?.optionValue\"/>\r\n </ng-template>\r\n </p-columnFilter>\r\n <p-columnFilter *ngSwitchCase=\"'multiselect'\" [field]=\"col.filter.field\" [display]=\"col.filter.display\" [matchMode]=\"col.filter.matchMode || 'equals'\"\r\n [showMatchModes]=\"col.filter.showMatchModes || false\" [showOperator]=\"col.filter.showOperator || false\" [showAddButton]=\"col.filter.showAddButton || false\">\r\n <ng-template #filter let-value let-filter=\"filterCallback\">\r\n <p-multiselect [(ngModel)]=\"value\" [options]=\"optionsMap.get(col.col) ?? []\" (onChange)=\"filter($event.value)\" placeholder=\"Seleccione\" class=\"w-full\" \r\n [optionLabel]=\"col.filter?.config?.optionLabel\" [optionValue]=\"col.filter?.config?.optionValue\" [panelStyle]=\"{ minWidth: '16rem' }\">\r\n </p-multiselect>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n </div>\r\n </th>\r\n <th>Acción</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-index=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <td *ngSwitchCase=\"'text'\">{{rowData[col.col]}}</td>\r\n <td *ngSwitchCase=\"'date:yyyy-mm-dd'\">{{rowData[col.col] | date: 'yyyy-MM-dd'}}</td>\r\n <td *ngSwitchCase=\"'currency:USD'\">{{rowData[col.col] | currency: 'USD'}}</td>\r\n <td *ngSwitchCase=\"'tag'\">\r\n <p-tag [value]=\"rowData[col.col]\" [ngClass]=\"rowData[col.col] ? (col.class || '') : 'hidden'\" />\r\n </td>\r\n </ng-container>\r\n <td>\r\n <p-splitButton *ngIf=\"items.length > 1\" icon=\"pi pi-align-justify\" [model]=\"items\" appendTo=\"body\"\r\n (onDropdownClick)=\"itemSelected = rowData\"></p-splitButton>\r\n <div *ngIf=\"items.length <= 1\">\r\n <button *ngFor=\"let item of items\" pButton pRipple [icon]=\"item.icon\" class=\"mr-2\"\r\n (click)=\"itemSelected = initialData[index]; item.command()\"></button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</p-card>\r\n","import { Injectable, OnDestroy} from '@angular/core';\r\n// import { Message } from 'primeng/message'; // Removed in PrimeNG 18\r\nimport { BehaviorSubject, Subject} from 'rxjs';\r\nimport { SweetAlertOptions } from 'sweetalert2';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { RequestChecking } from '../models/crud-config.model';\r\nimport { SfCrudService } from '../../sf-crud.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService{\r\n\r\n private _notificationAdded = new BehaviorSubject<Notification | undefined>(undefined);\r\n\r\n constructor(private sfCrudService: SfCrudService) {}\r\n\r\n addNotification(msg: any | SweetAlertOptions, requestChecking?: RequestChecking){\r\n this._notificationAdded.next({msg, requestChecking})\r\n }\r\n\r\n notificationAdded$(){\r\n return this._notificationAdded.asObservable()\r\n }\r\n\r\n /**\r\n * Generates message using answerchecking\r\n * @param currentMsg Default message: Message | SweetAlertOptions\r\n * @param rta Resquest's response\r\n * @param answerChecking\r\n */\r\n generateMessage(currentMsg: any | SweetAlertOptions | any, rta: any, requestChecking?: RequestChecking){\r\n if (requestChecking){\r\n if (requestChecking.statics) Object.assign(currentMsg, requestChecking.statics)\r\n //mapear los dinamicos\r\n if (requestChecking.dynamics){\r\n const dynamics: any = requestChecking.dynamics\r\n try{\r\n if (dynamics && typeof(rta) == \"string\") rta = JSON.parse(rta)\r\n if (requestChecking.parse) {\r\n let valueParsed = JSON.parse(jsonpath.query(rta, requestChecking.parse)[0])\r\n jsonpath.value(rta, requestChecking.parse, valueParsed)\r\n }\r\n if (dynamics) {\r\n for (const property in dynamics) {\r\n let errors = jsonpath.query(rta, dynamics[property])[0];\r\n if(typeof(errors) === \"object\" && errors != null) errors = this.concatenateErrors(errors);\r\n currentMsg[property] = errors;\r\n }\r\n }\r\n }catch(error){//es una respuesta sin JSON\r\n if (dynamics) currentMsg.detail = rta\r\n }\r\n }\r\n }\r\n\r\n return currentMsg;\r\n }\r\n\r\n /**\r\n * Concatena todos los errores de un objeto de errores del backend\r\n * @param errors Objeto de errores recibido del backend\r\n * @param separator Separador entre errores (por defecto '\\n')\r\n * @returns String con todos los errores concatenados\r\n */\r\n concatenateErrors(errors: any, separator: string = '\\n'): string {\r\n if (!errors || typeof errors !== 'object') {\r\n return '';\r\n }\r\n\r\n const errorMessages: string[] = [];\r\n Object.keys(errors).forEach(field => {\r\n const fieldErrors = errors[field];\r\n if (Array.isArray(fieldErrors)) {\r\n fieldErrors.forEach(errorMsg => {\r\n errorMessages.push(errorMsg);\r\n });\r\n } \r\n else if (typeof fieldErrors === 'string') {\r\n errorMessages.push(fieldErrors);\r\n }\r\n else if (typeof fieldErrors === 'object') {\r\n const nestedErrors = this.concatenateErrors(fieldErrors, separator);\r\n if (nestedErrors) {\r\n errorMessages.push(nestedErrors);\r\n }\r\n }\r\n });\r\n\r\n return errorMessages.join(separator);\r\n }\r\n\r\n genDefaultMessage(severity: \"success\" | \"error\", title: string | undefined, detail: string, requestChecking: RequestChecking | undefined): any | SweetAlertOptions{\r\n let obj: any | SweetAlertOptions = {title, text: detail, icon: severity,\r\n confirmButtonColor: this.sfCrudService.configEmpresa?.colors ? this.sfCrudService.configEmpresa?.colors?.button : \"#3085d6\",\r\n cancelButtonColor: this.sfCrudService.configEmpresa?.colors ? this.sfCrudService.configEmpresa?.colors?.button : \"#d33\"}\r\n\r\n if (requestChecking && requestChecking.useSwal && severity == \"error\")\r\n {\r\n obj.showCancelButton = true\r\n obj.confirmButtonText ='<i class=\"pi pi-check\"></i> Continuar'\r\n obj.cancelButtonText = '<i class=\"pi pi-times\"></i> Terminar'\r\n }\r\n\r\n if (!requestChecking || !requestChecking.useSwal){\r\n (obj as any).severity = severity;\r\n (obj as any).summary = title;\r\n (obj as any).detail = detail;\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport class Notification{\r\n constructor(\r\n public msg: any | SweetAlertOptions,\r\n public requestChecking: RequestChecking| undefined\r\n ){}\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { StepService } from '../../shared/services/step.service';\r\n\r\n@Component({\r\n selector: 'app-step',\r\n templateUrl: './step.component.html',\r\n styleUrls: ['./step.component.css'],\r\n standalone: false\r\n})\r\nexport class StepComponent implements OnInit, AfterViewInit {\r\n\r\n\r\n @Input() items!: MenuItem[];\r\n activeIndex = 0;\r\n loading = false;\r\n nextMovement = 0;\r\n\r\n constructor(\r\n private router: Router,\r\n private stepService: StepService,\r\n private activatedRoute: ActivatedRoute,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.stepService.currentIndex$.subscribe((result) => {\r\n this.nextMovement = result\r\n this.router.navigate([this.items[result].routerLink], { relativeTo: this.activatedRoute, queryParamsHandling: \"preserve\" });\r\n this.moveScroll(this.nextMovement)\r\n this.activeIndex = result\r\n })\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.stepService.requestApproved$.subscribe((result) => {\r\n if (result){\r\n this.navigate()\r\n }\r\n this.loading = false;\r\n })\r\n this.moveScroll(this.nextMovement)\r\n }\r\n\r\n onactiveIndexChange($event: number){\r\n this.requestNaviagtion($event-this.activeIndex);\r\n }\r\n\r\n /**\r\n * Button solicitates permissions to change tab.\r\n * @param add steps to advance. If negative will go back\r\n */\r\n requestNaviagtion(add: number){\r\n this.loading = true;\r\n this.nextMovement = this.activeIndex + add;\r\n this.stepService.requestApproval = this.nextMovement;\r\n }\r\n\r\n private navigate(){\r\n if (this.nextMovement < this.items.length){\r\n this.activeIndex = this.nextMovement;\r\n this.router.navigate([this.items[this.nextMovement].routerLink], { relativeTo: this.activatedRoute, queryParamsHandling: \"preserve\" });\r\n }\r\n }\r\n\r\n\r\n moveScroll(nextIndex: number){\r\n let miDiv = document.getElementById(\"step-container\")!\r\n const steps = document.querySelector(\".p-steps ul[role='tablist']\");\r\n\r\n if (steps !== null){\r\n let i = 0\r\n let value = 0\r\n while (i < nextIndex) {\r\n const child = steps.children[i]\r\n value += child.clientWidth\r\n i++\r\n }\r\n miDiv.scrollLeft = value\r\n }\r\n }\r\n}\r\n","<div>\r\n <div id=\"step-container\">\r\n <p-steps #stepsComponent [model]=\"items\" [readonly]=\"false\" [activeIndex]=\"activeIndex\" (activeIndexChange)=\"onactiveIndexChange($event)\"></p-steps>\r\n </div>\r\n\r\n <div class=\"content\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <div class=\"buttons-step\">\r\n <div >\r\n <button pButton *ngIf=\"activeIndex != 0\" icon=\"pi pi-arrow-left\" [disabled]=\"loading\"\r\n (click)=\"requestNaviagtion(-1)\"></button>\r\n </div>\r\n <span >\r\n <button pButton *ngIf=\"!(activeIndex + 1 >= items.length)\" icon=\"pi pi-arrow-right\" [disabled]=\"loading\"\r\n (click)=\"requestNaviagtion(1)\"></button>\r\n </span>\r\n <button pButton *ngIf=\"activeIndex >= items.length - 1\" label=\"Finalizar\" [disabled]=\"loading\" (click)=\"requestNaviagtion(0)\"\r\n [style]=\"{'margin-left': '10px'}\"></button>\r\n </div>\r\n</div>\r\n","import { Calendar } from \"primeng/calendar\";\r\n\r\nexport class Shema {\r\n type: string = '';\r\n subtype: string = '';\r\n config?: any;\r\n tooltip?: string;\r\n tooltipPosition?: string;\r\n properties?: any;\r\n enum?: any[];\r\n default?:any;\r\n validations?: any\r\n disabled?: boolean\r\n field?: any\r\n placeholder?: any\r\n unmask?: boolean\r\n autocomplete?: string\r\n showIcon?: boolean\r\n hide?: any\r\n locale?: string\r\n configuration = new ShemaConfig()\r\n touchUI: any\r\n format: any\r\n formatMoment?: string\r\n useGrouping?: boolean\r\n max: any\r\n min: any\r\n currency: any\r\n minFractionDigits: any\r\n trueValue: any\r\n falseValue: any\r\n allowCustomOption: boolean = false\r\n separador?: string\r\n labelPosition?: string\r\n reverse?: boolean\r\n scope?: string\r\n optional?: any;\r\n uiOnly?: boolean;\r\n defaultValue?: any;\r\n eraseOnDisable?: boolean;\r\n}\r\n\r\n\r\nclass ShemaConfig {\r\n calendar?: Calendar\r\n}\r\n\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'sf-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.css'],\r\n standalone: false\r\n})\r\nexport class FileUploadComponent implements OnInit, OnChanges {\r\n\r\n\r\n @Input() limit!: number;\r\n @Input() files: Archivo[] = [];\r\n @Input() loading = false;\r\n @Input() configName: string | undefined;\r\n @Input() accept: string = \"image/*,application/pdf\";\r\n @Output() onUpload = new EventEmitter<File[]>();\r\n @Output() onDeleteFile = new EventEmitter<number>();\r\n @ViewChild('fileUpload') fileUploader!: ElementRef;\r\n\r\n newFiles: File[] = [];\r\n private animationInterval: any;\r\n\r\n constructor(\r\n private messageSerice: MessageService) {\r\n window.addEventListener(\"paste\", (e: any) =>{\r\n if (e.clipboardData?.files && e.clipboardData.files.length > 0){\r\n this.appendFile(e.clipboardData.files[0]);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n appendFile(file: File){\r\n const allowedTypes = this.accept.split(\",\");\r\n const allowedFile = allowedTypes.some(pattern => {\r\n const regexObj = new RegExp(pattern);\r\n const match = regexObj.exec(file.type);\r\n return match ? match?.length > 0: false\r\n })\r\n\r\n if (allowedFile){\r\n const newFile = new File([file], this.getName(file), {type: file.type})\r\n if (this.limit == 1){\r\n this.newFiles = [newFile]\r\n }else this.newFiles.push(newFile)\r\n this.files.push({name: newFile.name, url: window.URL.createObjectURL(newFile)})\r\n }else{\r\n this.messageSerice.add({severity: \"warn\", detail: \"Tipo de archivo no válido\"})\r\n }\r\n\r\n }\r\n\r\n emitFiles(){\r\n this.loading = true;\r\n this.onUpload.emit(this.newFiles)\r\n }\r\n\r\n getName(file: File){\r\n let sName = \"\"\r\n\r\n let date: Date = new Date();\r\n if(this.configName !== undefined){\r\n let name = this.configName.split('|');\r\n name.forEach(item => {\r\n if (item.indexOf(\"DATE@\") != -1)\r\n sName += (moment(date)).format(item.split('@')[1]);\r\n else if(item.indexOf(\"@\") == -1)\r\n sName += item\r\n })\r\n let ext = this.getExt(file)\r\n sName += ext ? \".\" + ext: \"\"\r\n }\r\n else sName = file.name;\r\n return sName\r\n }\r\n getExt(file: File) {\r\n let ext = undefined\r\n let aux = file.name.split('.')\r\n if (aux.length > 0) ext = aux[aux.length - 1]\r\n return ext\r\n }\r\n\r\n appendFiles($event: any){\r\n if($event.target.files.length > 0){\r\n this.appendFile($event.target.files[0]);\r\n }\r\n if (this.limit == this.files.length) {\r\n this.stopAnimation()\r\n this.emitFiles()\r\n }\r\n else this.startAnimation()\r\n this.fileUploader.nativeElement.value = \"\";\r\n }\r\n\r\n dropFile(archivo: Archivo){\r\n this.files.forEach((f, index) => {\r\n if(f == archivo){\r\n this.files.splice(index, 1);\r\n this.onDeleteFile.emit(index)\r\n }\r\n });\r\n }\r\n\r\n\r\n openFile(archivo: Archivo) {\r\n window.open(archivo.url, '_blank');\r\n window.addEventListener('focus', () => URL.revokeObjectURL(archivo.url));\r\n }\r\n\r\n startAnimation() {\r\n const button = document.querySelector('.button-upload');\r\n if (button) {\r\n button.classList.add('animate-pulse');\r\n }\r\n }\r\n\r\n stopAnimation() {\r\n const button = document.querySelector('.button-upload');\r\n if (button) {\r\n button.classList.remove('animate-pulse');\r\n }\r\n }\r\n}\r\n\r\nexport class Archivo {\r\n public url! : string\r\n public name! : string\r\n}\r\n","<div id=\"screen\" #screen>\r\n <div class=\"fileUp\">\r\n <div class=\"botones\">\r\n <input type=\"file\" (change)=\"appendFiles($event)\" class=\"file-input\" #fileUpload multiple>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-plus\" class=\"p-button-info\" (click)=\"fileUpload.click()\"\r\n [disabled]=\"limit == files.length || loading\"></button>\r\n <button *ngIf=\"limit != 1\" pButton pRipple type=\"button\" icon=\"pi pi-upload\" class=\"button-upload p-button-info\"\r\n (click)=\"emitFiles()\" [disabled]=\"files.length == 0 || loading\"></button>\r\n </div>\r\n\r\n <hr>\r\n <div class=\"imgs\">\r\n <ul>\r\n <li *ngFor=\"let file of files; let i = index\" [ngSwitch]=\"file.type\">\r\n <p>{{i+1}}. {{files[i].name}}</p>\r\n <div>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-external-link\" class=\"p-button-rounded\"\r\n (click)=\"openFile(file)\"></button>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-times\" class=\"p-button-rounded p-button-danger\"\r\n (click)=\"dropFile(file)\"></button>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'formatAddress',\r\n standalone: false\r\n})\r\nexport class FormatAddressPipe implements PipeTransform {\r\n\r\n transform(address: string | undefined, separator?: string): string | undefined {\r\n if (!address) {\r\n return address;\r\n }\r\n\r\n if (separator) {\r\n return address.replaceAll(separator, ' ').replaceAll(' ', ' ');\r\n }\r\n\r\n return address;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewChildren, QueryList, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { GeneralService } from '../../shared/services/general.service';\r\nimport { Shema } from '../../shared/models/shema.model';\r\nimport { Operation, OverrideConfig, RequestChecking } from '../../shared/models/crud-config.model';\r\nimport { SfCrudService } from '../../sf-crud.service';\r\nimport { Tooltip } from 'primeng/tooltip';\r\nimport moment from 'moment';\r\nimport { Archivo } from '../file-upload/file-upload.component';\r\nimport { NotificationService } from '../../shared/services/notification.service';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sf-control',\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class ControlComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() showTempValue:Boolean = false;\r\n @Input() control: Shema = new Shema();\r\n @Input() label: string = '';\r\n @Input() value: any;\r\n @Input() appendTo: any;\r\n @Output() setValue: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() sendObject: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() addressClicked: EventEmitter<any> = new EventEmitter<any>();\r\n @ViewChildren(Tooltip) tooltips!: QueryList <Tooltip>;\r\n\r\n private lenghtWord!: number;\r\n public isLoading: boolean = false;\r\n public dataFromService: any[] = [];\r\n public uploadedFiles: Archivo[] = [];\r\n public displayAdd: boolean = false;\r\n public tempValue: any;\r\n public clicked = false;\r\n public maskDate = \"99/99/9999\"\r\n\r\n public tempCheckVal = false;\r\n\r\n public uploadingFiles = false;\r\n\r\n public subscription: Subscription | undefined= undefined;\r\n\r\n constructor(\r\n private generalService: GeneralService,\r\n private crudService: SfCrudService,\r\n private cdr: ChangeDetectorRef,\r\n private notificationService: NotificationService\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n ngOnInit() {\r\n this.loadDefaultValues()\r\n this.control.disabled = this.control.disabled || false;\r\n \r\n this.subscription = this.crudService.disabledFields$.subscribe(({fields, disabled}) => {\r\n const scope = this.control.scope?.replace(\"$..properties.\", \"\");\r\n if(this.control.scope && scope && fields.includes(scope)) {\r\n this.control.disabled = disabled;\r\n if (disabled) {\r\n this.value = \"\";\r\n this.sendValue();\r\n }\r\n }\r\n this.cdr.detectChanges();\r\n });\r\n\r\n if (this.control?.config?.depends){\r\n this.crudService.changeData$.subscribe(res => {\r\n if (res){\r\n let registro = this.crudService.getRegistro(this.crudService.index)\r\n let keyFound = registro.keys?.find(k => k.scope === res.scope\r\n && (this.control.config.depends as string[]).includes(k.key) &&\r\n (res.index === k.indexData || res.index === k.indexAnswer))\r\n if (keyFound?.overrideControl){\r\n let override = keyFound.overrideControl\r\n let completed = this.crudService.isConditionsCompleted(override.conditions ?? [], registro.conditions || [], this.crudService.getData(this.crudService.index))\r\n jsonpath.value(this.control, override.property, completed ? override.value : override.elseValue)\r\n this.value = this.getNewValue(override, completed);\r\n this.tempValue = null\r\n this.sendValue()\r\n if (this.control.subtype == 'dropdown' || this.control.subtype == 'multiselect') this.loadDataFromService()\r\n //this.cdr.detectChanges()\r\n }\r\n else if (keyFound) {\r\n this.value = null\r\n this.sendValue()\r\n this.loadDefaultValues()\r\n //this.cdr.detectChanges()\r\n }\r\n\r\n }\r\n })\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n console.log(\"Destroy control\");\r\n if(this.subscription) {\r\n this.subscription.unsubscribe();\r\n // Limpiar el estado del campo cuando se destruye el componente\r\n if(this.control.scope) {\r\n const scope = this.control.scope.replace(\"$..properties.\", \"\");\r\n this.crudService.notifyFieldsToDisable([scope], false);\r\n }\r\n }\r\n }\r\n\r\n private getNewValue(override: OverrideConfig, completed: boolean): any {\r\n const newValue = completed ? override.newPropertyValue: override.elseNewPropertyValue;\r\n if (newValue && typeof(newValue) == \"string\"){\r\n if (!newValue.startsWith('$') && !newValue.startsWith('@')){\r\n return newValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n loadDefaultValues(){\r\n if (this.control?.config && this.control.subtype == 'dropdown' || this.control.subtype == 'multiselect') this.loadDataFromService();\r\n if (this.control?.subtype == 'autocomplete' || this.control?.subtype === 'autocompleteCustom') this.extracValueFromControlBusqueda();\r\n if (this.value && this.control.type == 'date') {\r\n this.instanceDate();\r\n }\r\n if (this.control?.subtype == \"file\") {\r\n this.loadFiles();\r\n }\r\n if (this.control?.type == 'string') this.lenghtWord = this.value ? this.value.length : 0\r\n if (this.control?.subtype == 'switch') this.instanceBoolField()\r\n if (this.control?.config && this.control.subtype == 'checkbox') this.setCheckboxValues();\r\n }\r\n setCheckboxValues(){\r\n this.tempCheckVal = this.value || false; \r\n this.onCheckboxChange();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.value = this.tempCheckVal;\r\n if(this.control.config?.disables) {\r\n this.crudService.notifyFieldsToDisable(this.control.config.disables, this.tempCheckVal);\r\n }\r\n if(this.tempCheckVal && this.control.config?.operationTrue){\r\n this.crudService.notifyChangeOperation(this.control.config.operationTrue);\r\n }\r\n if(!this.tempCheckVal && this.control.config?.operationFalse){\r\n this.crudService.notifyChangeOperation(this.control.config.operationFalse);\r\n }\r\n this.sendValue();\r\n }\r\n instanceBoolField() {\r\n this.tempValue = this.value\r\n if (this.value == true && this.control.trueValue !== undefined) {\r\n this.value = this.control.trueValue\r\n this.sendValue()\r\n }\r\n else if (this.value == false && this.control.falseValue !== undefined) {\r\n this.value = this.control.falseValue\r\n this.sendValue()\r\n }\r\n }\r\n\r\n onChangeSwitch(){\r\n this.value = this.tempValue\r\n this.sendValue()\r\n }\r\n\r\n loadFiles(){\r\n this.isLoading = true\r\n this.uploadedFiles = []\r\n if (!this.value) {\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n }\r\n else if (this.control.config.namePattern && this.control.type == \"string\") {\r\n let urls: string[] = this.control.config.separator ? this.value.split(\",\") : [this.value]\r\n urls.forEach(url => this.uploadedFiles.push({url:url, name:this.getNameFile(this.control.config.namePattern, url)}))\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n }\r\n else if (this.control.config.namePattern && this.control.type == \"array\") {\r\n this.value.forEach((url:string) => this.uploadedFiles.push({url:url, name:this.getNameFile(this.control.config.namePattern, url)}))\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n }\r\n }\r\n\r\n onDeleteFile(index: number){\r\n if ((!this.control.config?.limit || this.control.config?.limit == 1) && this.control.type == \"string\") this.value = null\r\n else if (this.control.type == \"array\") this.value.splice(index, 1)\r\n }\r\n\r\n getNameFile(namePattern: string, url: string): string {\r\n const regexObj = new RegExp(namePattern);\r\n const match = regexObj.exec(url);\r\n if (!match) throw new Error(\"El pattern no coincide con la url. \" + url);\r\n return match[0];\r\n }\r\n\r\n sendValue() {\r\n if (this.control.type == \"string\" && this.value == \"\" && this.control.config?.allowEmpty == false) this.value = null\r\n this.setValue.emit(this.value);\r\n }\r\n\r\n sendNumberValue($event: any){\r\n this.value = $event.value\r\n this.sendValue()\r\n }\r\n\r\n onInputEmail(force:boolean){\r\n const aux = Math.abs(this.lenghtWord - this.value.length)\r\n this.lenghtWord = this.value.length\r\n if (aux > 1 || force){\r\n const regex: RegExp = new RegExp(/([\\w\\.\\-_]+)?\\w+@[\\w-_]+(\\.\\w+){1,}/igm);\r\n if (regex.test(this.value)) this.sendValue();\r\n else {\r\n this.value = null;\r\n this.sendValue()\r\n this.notificationService.addNotification({ severity: 'warn', detail: 'El correo no es válido' }, this.primeChecking());\r\n }\r\n }\r\n }\r\n\r\n sendValueFromObject(event: any) {\r\n switch (typeof (this.control.config.optionValue)) {\r\n case 'object':\r\n this.control.config.optionValue.forEach((op: any) => op['value'] = event[op.key])\r\n this.setValue.emit(this.control.config.optionValue);\r\n break;\r\n default:\r\n if(event.value) this.setValue.emit(event.value[this.control.config.optionValue]);\r\n else this.setValue.emit(event[this.control.config.optionValue]);\r\n break;\r\n }\r\n }\r\n\r\n loadDataFromService() {\r\n this.isLoading = true;\r\n this.dataFromService = [];\r\n const op: Operation = this.control.config\r\n const url = this.crudService.getURL(op, undefined, undefined)\r\n if (this.control.config?.customOptions){\r\n this.dataFromService = this.control.config.customOptions\r\n }else{\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n this.dataFromService = res.data;\r\n }).finally(() => {\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n })\r\n }\r\n }\r\n\r\n loadDataFromControlBusquedaService(event: any) {\r\n this.isLoading = true;\r\n const op: Operation = this.control.config\r\n let url = this.crudService.getURL(op)\r\n url = url.replace('@query', event?.query || '')\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n this.dataFromService = res.data;\r\n if (this.dataFromService?.length == 0 && this.control.allowCustomOption) {\r\n //agregar un campo que el usuario haya digitado\r\n let newItem: any = {}\r\n newItem[this.control.field] = this.tempValue\r\n newItem[this.control.config.optionValue] = this.tempValue\r\n this.dataFromService.push(newItem)\r\n }\r\n }).finally(() => {\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n })\r\n }\r\n\r\n extracValueFromControlBusqueda(){\r\n const op: Operation = this.control.config\r\n let url = this.crudService.getURL(op)\r\n url = url.replace('@query', this.value)\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n if (res.data?.length == 1 && res.data[0][this.control.field]){\r\n this.tempValue = res.data[0]\r\n this.value = res.data[0][this.control.field]\r\n }\r\n else this.setDefaultValue()\r\n }).finally(() => {\r\n this.cdr.detectChanges()\r\n }).catch(() => {\r\n this.setDefaultValue()\r\n })\r\n }\r\n\r\n\r\n onUpload(event: File[]) {\r\n this.uploadingFiles = true\r\n const formData = new FormData();\r\n const path = this.control.config.path || 'Imagenes/CRUD/temp';\r\n formData.append('Ruta', `/${path}`);\r\n\r\n for (let i = 0; i < event.length; i++) formData.append(`uploadFile_${i}`, event[i]);\r\n const op: Operation = this.control.config\r\n const url = this.crudService.getURL(op)\r\n this.generalService.genericRequest(this.control.config.method, url, formData)\r\n .then(() => {\r\n let separator = this.control.config?.separator || \",\"\r\n //se asume que viene namePattern\r\n if (this.control.type == \"string\") this.value = event.map(f => `${this.generalService.jsonConfig.Server}${path}/${f.name}`).join(separator)\r\n else if (this.control.type == \"array\") this.value = event.map(f => `${this.generalService.jsonConfig.Server}${path}/${f.name}`)\r\n // SI NO TRAE namePattern, debe retornar un objeto con el nombre y href\r\n //else if (this.control.config.namePattern && this.control.type == \"array\") this.value = event.map(x => x.name)\r\n //else if (!this.control.config.namePattern && this.control.type == \"array\") this.value = event.map(f => `${this.generalService.jsonConfig.Server}${path}/${f.name}`)\r\n this.sendValue()\r\n let msg = !this.control.config.limit || this.control.config.limit == 1 ? \"Archivo cargado correctamente!\": \"Archivos cargados correctamente!\"\r\n this.notificationService.addNotification({ severity: 'info', detail: msg }, this.primeChecking())\r\n })\r\n .catch(() => this.notificationService.addNotification({ severity: 'error', detail: `Error al cargar el archivo!` }, this.primeChecking()))\r\n .finally(() => this.uploadingFiles = false)\r\n\r\n }\r\n\r\n refresData() {\r\n if (this.control?.config?.endpointtemp) this.loadDataFromService();\r\n }\r\n setDefaultValue(){\r\n this.tempValue = {}\r\n if (!this.control.config.optionLabel) console.error(\"No esta bien configurado el control \", this.control)\r\n else {\r\n this.tempValue[this.control.config.optionLabel] = this.value[this.control.config.optionLabel] ? this.value[this.control.config.optionLabel]: \"\"\r\n this.tempValue[this.control.config.optionValue] = this.value[this.control.config.optionValue] ? this.value[this.control.config.optionValue]: \"\"\r\n }\r\n }\r\n\r\n searchValue(value: string){\r\n const op: Operation = this.control.config\r\n let url = this.crudService.getURL(op, undefined, undefined)\r\n url = url.replace('@id', value)\r\n\r\n\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n if (res?.data?.length > 0){\r\n this.sendObject.emit({ data: res.data[0], optionValue: this.control.config.optionValue } )\r\n }else{\r\n this.notificationService.addNotification({severity: 'warn', detail:`Valor no encontrado.`}, this.primeChecking())\r\n this.sendObject.emit({ data: null, optionValue: this.control.config.optionValue } )\r\n }\r\n })\r\n .catch(err=> {\r\n this.notificationService.addNotification({severity: 'error', detail:`Error al consumir el servicio.`},this.primeChecking())\r\n })\r\n }\r\n\r\n primeChecking(){\r\n return new RequestChecking(undefined, undefined, false, undefined, undefined, false, undefined)\r\n }\r\n\r\n instanceDate(){\r\n const format = (this.control as any).formatMoment\r\n\r\n if (this.value){\r\n if (typeof(this.value) == \"string\" && (this.value as string).includes(\"T\")) this.value = new Date(this.value)\r\n else if (typeof(this.value) == \"string\") this.value = moment(this.value, format).toDate();\r\n this.tempValue = moment(this.value).format(\"DD/MM/YYYY\")\r\n }else {\r\n this.tempValue = null\r\n this.value = null\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Cast tempValue to date\r\n */\r\n onChangeSDate($event: any){\r\n // console.log($event)\r\n // console.log(this.tempValue)\r\n // console.log(this.value)\r\n const aux = moment(this.tempValue, \"DD/MM/YYYY\")\r\n if (this.tempValue == this.maskDate.replaceAll(\"9\", \"_\")){\r\n this.value = null\r\n this.sendValue()\r\n }\r\n else if (aux.isValid()){\r\n this.value = aux.toDate();\r\n this.sendValue()\r\n }\r\n else {\r\n this.tempValue = null;\r\n this.notificationService.addNotification({ severity: 'warn', detail: 'La fecha no es válida' }, this.primeChecking())\r\n }\r\n this.cdr.detectChanges()\r\n }\r\n\r\n\r\n onChangeDate(){\r\n this.tempValue = moment(this.value).format(\"DD/MM/YYYY\")\r\n this.sendValue()\r\n }\r\n\r\n onTouchDescription() {\r\n try{\r\n this.tooltips.get(0)?.activate()\r\n }catch(ex){}\r\n\r\n }\r\n\r\n onUnTouchDescription() {\r\n try{\r\n this.tooltips.get(0)?.deactivate()\r\n }catch(ex){}\r\n}\r\n\r\n doFocusOut(){\r\n if (document.activeElement) {\r\n (document.activeElement as HTMLElement).blur();\r\n }\r\n this.cdr.detectChanges()\r\n }\r\n\r\n onClickedAddres(){\r\n this.addressClicked.emit()\r\n }\r\n}\r\n","<ng-container *ngIf=\"showTempValue\"><p *ngIf=\"tempValue\">{{tempValue[control.field]}}</p></ng-container>\r\n\r\n<div *ngIf=\"!showTempValue\" [ngSwitch]=\"control.type\" #cc class=\"control-container ml-0\" \r\n[ngClass]=\"control.labelPosition === 'horizontal' ? (control.reverse ? 'flex gap-2 flex-row-reverse items-left' : 'flex gap-2 items-left') : (control.reverse ? 'flex flex-column flex-column-reverse' : 'flex flex-column')\">\r\n <div class=\"label-container\">\r\n <label [for]=\"label\">{{label}}</label>\r\n <i #tooltip *ngIf=\"control.tooltip\" class=\"pi pi-question-circle\"\r\n [tooltipPosition]=\"control.tooltipPosition || 'top'\" [pTooltip]=\"control.tooltip\"\r\n (touchstart)=\"onTouchDescription()\" (touchend)=\"onUnTouchDescription()\"></i>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'string'\" >\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <input pInputText [name]=\"label\" type=\"text\" [(ngModel)]=\"value\" (input)=\"sendValue()\"\r\n [disabled]=\"control.disabled || false\" [autocomplete]=\"control.autocomplete || 'off'\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [rows]=\"control.config?.rows ? control.config.rows : 4\" [(ngModel)]=\"value\"\r\n (input)=\"sendValue()\" pInputTextarea [disabled]=\"control.config?.disabled || false\"\r\n [autoResize]=\"control.config?.autoresize || false\"></textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <input pInputText type=\"password\" [(ngModel)]=\"value\" (input)=\"sendValue()\"\r\n [disabled]=\"control.disabled || false\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <input pInputText type=\"text\" [(ngModel)]=\"value\" placeholder=\"email@example.com\"\r\n [disabled]=\"control.disabled || false\" autocomplete=\"email\" (input)=\"onInputEmail(false)\"\r\n (focusout)=\"onInputEmail(true)\" (keyup.enter)=\"doFocusOut()\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <p-inputMask mask=\"(999) 999-9999\" [(ngModel)]=\"value\" placeholder=\"(999) 999-9999\"\r\n [disabled]=\"control.disabled || false\" autocomplete=\"tel-national\"\r\n [unmask]=\"control.unmask || false\" (onComplete)=\"sendValue()\"></p-inputMask>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <input pInputText type=\"text\" [value]=\"value | formatAddress: control.separador\" autocomplete=\"off\" [disabled]=\"clicked\" (keydown)=\"onClickedAddres()\" (focus)=\"onClickedAddres()\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'enum'\">\r\n <p-select [options]=\"control.enum\" [(ngModel)]=\"value\" (onChange)=\"sendValue()\" appendTo=\"body\"\r\n placeholder=\"Seleccione una opción\" [disabled]=\"control.disabled || false\"></p-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <p-select [lazy]=\"isLoading\" [options]=\"dataFromService\" [(ngModel)]=\"value\" (onChange)=\"sendValue()\"\r\n [optionLabel]=\"control.config.optionLabel\" [showClear]=\"control.config.showClear\"\r\n [optionValue]=\"control.field || control.config.optionValue\" appendTo=\"body\"\r\n placeholder=\"Seleccione una opción\" [disabled]=\"control.disabled || false\"></p-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown:replace'\">\r\n <p-select [lazy]=\"isLoading\" [options]=\"dataFromService\"\r\n (onChange)=\"sendValueFromObject($event)\" [optionLabel]=\"control.config.optionLabel\"\r\n appendTo=\"body\" placeholder=\"Seleccione una opción\"\r\n [disabled]=\"control.disabled || false\"></p-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n <p-autoComplete [showEmptyMessage]=\"true\" [suggestions]=\"dataFromService\" appendTo=\"body\"\r\n (completeMethod)=\"loadDataFromControlBusquedaService($event)\" [field]=\"control.field\"\r\n [minLength]=\"1\" (onSelect)=\"sendValueFromObject($event)\" [(ngModel)]=\"tempValue\"\r\n [disabled]=\"control.disabled || false\"></p-autoComplete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocompleteCustom'\">\r\n <p-autoComplete [showEmptyMessage]=\"true\" [suggestions]=\"dataFromService\" appendTo=\"body\"\r\n (completeMethod)=\"loadDataFromControlBusquedaService($event)\" \r\n [minLength]=\"1\" (onSelect)=\"sendValueFromObject($event)\" [(ngModel)]=\"tempValue\"\r\n [disabled]=\"control.disabled || false\"\r\n [field]=\"control.field\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex align-items-center gap-2\">\r\n <div>{{ item[control.config.optionValue] }} - {{ item[control.config.optionLabel] }}</div>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input:search'\">\r\n <div class=\"p-inputgroup\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"value\" (focusout)=\"sendValue()\"\r\n (keyup.enter)=\"doFocusOut()\" />\r\n <button type=\"button\" pButton icon=\"pi pi-search\" (click)=\"searchValue(value)\"></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <sf-file-upload *ngIf=\"!isLoading\" [accept]=\"control.config?.accept || 'image/*,application/pdf'\"\r\n [loading]=\"uploadingFiles\" [files]=\"uploadedFiles\" [configName]=\"control.config?.configName\"\r\n [limit]=\"control.config?.limit || 1\" (onUpload)=\"onUpload($event)\"\r\n (onDeleteFile)=\"onDeleteFile($event)\"></sf-file-upload>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'calendar'\">\r\n <!-- <div class=\"p-col-12\">\r\n <p-inputgroup>\r\n <p-inputMask [(ngModel)]=\"tempValue\" [mask]=\"maskDate\" [placeholder]=\"control.placeholder\"\r\n (onBlur)=\"onChangeSDate($event)\" [disabled]=\"control.disabled || false\"></p-inputMask>\r\n <p-calendar\r\n [(ngModel)]=\"value\" class=\"only-icon\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1900:2035\"\r\n [dateFormat]=\"control.format || 'yy-mm-dd'\" appendTo=\"body\" [disabled]=\"control.disabled || false\"\r\n [showOnFocus]=\"!control.hide\" [placeholder]=\"control.placeholder || 'aaaa-mm-dd'\"\r\n [touchUI]=\"control.touchUI || false\" [showIcon]=\"control.showIcon || false\" (onSelect)=\"onChangeDate()\"\r\n (onBlur)=\"onChangeDate()\"\r\n ></p-calendar>\r\n </p-inputgroup>\r\n \r\n </div> -->\r\n <p-datepicker\r\n [(ngModel)]=\"value\" inputId=\"icondisplay\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1900:2035\"\r\n [dateFormat]=\"control.format || 'yy-mm-dd'\" appendTo=\"body\" [disabled]=\"control.disabled || false\"\r\n [showOnFocus]=\"control.hide\" [placeholder]=\"control.placeholder || 'aaaa-mm-dd'\"\r\n [showIcon]=\"control.showIcon || false\" (onSelect)=\"onChangeDate()\"\r\n (onBlur)=\"onChangeDate()\" [iconDisplay]=\"'input'\" class=\"p-0\"\r\n ></p-datepicker>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'numeric'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <p-inputNumber [ngModel]=\"value\" (ngModelChange)=\"value = $event; sendValue()\" mode=\"decimal\" [minFractionDigits]=\"control.minFractionDigits || 0\"\r\n [min]=\"control.min || null\" [max]=\"control.max || null\" (onInput)=\"sendNumberValue($event)\"\r\n [prefix]=\"control.currency || '$ '\" [disabled]=\"control.disabled || false\"></p-inputNumber>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'decimal'\">\r\n <p-inputNumber [ngModel]=\"value\" mode=\"decimal\" (ngModelChange)=\"value = $event; sendValue()\" [min]=\"control.min || null\"\r\n [max]=\"control.max || null\" [minFractionDigits]=\"control.minFractionDigits || 0\"\r\n [locale]=\"control.locale || undefined\" [useGrouping]=\"control.useGrouping || false\"\r\n [disabled]=\"control.disabled || false\"></p-inputNumber>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'percentage'\">\r\n <p-inputNumber [ngModel]=\"value\" suffix=\" %\" (ngModelChange)=\"value = $event; sendValue()\" (onInput)=\"sendValue()\" [min]=\"control.min || null\"\r\n [max]=\"control.max || null\" [minFractionDigits]=\"control.minFractionDigits || 2\"\r\n [locale]=\"control.locale || undefined\" [disabled]=\"control.disabled || false\"></p-inputNumber>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'decimal:search'\">\r\n <div class=\"p-inputgroup\">\r\n <input type=\"number\" pInputText [(ngModel)]=\"value\" (focusout)=\"sendValue()\"\r\n (keyup.enter)=\"doFocusOut()\" />\r\n <button type=\"button\" pButton icon=\"pi pi-search\" (click)=\"searchValue(value)\"></button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'array'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <sf-file-upload *ngIf=\"!isLoading\" [loading]=\"uploadingFiles\" [files]=\"uploadedFiles\"\r\n [configName]=\"control.config?.configName\" [limit]=\"control.config?.limit || 1\"\r\n [accept]=\"control.config?.accept || 'image/*,application/pdf'\" (onUpload)=\"onUpload($event)\"\r\n (onDeleteFile)=\"onDeleteFile($event)\"></sf-file-upload>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'multiselect'\">\r\n <p-multiSelect [options]=\"dataFromService\" [(ngModel)]=\"value\" (onChange)=\"sendValue()\"\r\n [optionLabel]=\"control.config?.optionLabel\" [optionValue]=\"control.config?.optionValue\"\r\n [placeholder]=\"control.config?.placeholder\"\r\n [display]=\"control.config?.display || 'chip'\"></p-multiSelect>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <p-inputSwitch [(ngModel)]=\"tempValue\" (onChange)=\"onChangeSwitch()\" [id]=\"label\"\r\n [trueValue]=\"control?.trueValue !== undefined ? control?.trueValue: null\"\r\n [falseValue]=\"control?.falseValue !== undefined ? control?.falseValue: null\"></p-inputSwitch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <p-checkbox [(ngModel)]=\"tempCheckVal\" [binary]=\"control?.binary !== undefined ? control?.binary: true\" (onChange)=\"onCheckboxChange()\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewChildren, HostBinding } from '@angular/core';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n// import { Message } from 'primeng/message'; // Removed in PrimeNG 18\r\nimport * as jsonpath from 'jsonpath';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Shema } from '../../shared/models/shema.model';\r\nimport { ChangeData, Loading, SfCrudService } from '../../sf-crud.service';\r\nimport { ConfigRegistro } from '../../shared/models/crud-config.model';\r\nimport { StepService } from '../../shared/services/step.service';\r\nimport { Simulador } from 'sf-simulador';\r\nimport * as _ from \"lodash\";\r\nimport { AdoService, JWTService, ProcesoADO } from 'sf-ado';\r\nimport { Tooltip } from 'primeng/tooltip';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.css'],\r\n standalone: false\r\n})\r\nexport class FormComponent implements OnChanges, OnInit, OnDestroy{\r\n @HostBinding(\"style.--primary-color\") color!: string;\r\n @HostBinding(\"style.--secondary-color\") color2!: string;\r\n @HostBinding(\"style.--button-color\") colorButton!: string;\r\n @Input() uiEsquema: any;\r\n @Input() esquema!: Shema;\r\n @Input() data: any;\r\n @Input() isDialog= false;\r\n @Input() isAddressDialog= false;\r\n @Input() separador?: string;\r\n newAddress?: string;\r\n currentAddress?: string;\r\n registro!: ConfigRegistro;\r\n values!: any[][];\r\n controls!: any[][];\r\n controlsLoaded = false;\r\n idKatios!: string;\r\n visible!: boolean[][];\r\n isMobile = false;\r\n urlADO?: string;\r\n proceso: ProcesoADO | undefined;\r\n private loading!:Loading;\r\n public subscription: Subscription | undefined= undefined;\r\n \r\n\r\n @ViewChildren(Tooltip) tooltips!: QueryList <Tooltip>;\r\n\r\n\r\n constructor(\r\n private messageService: MessageService,\r\n private crudService: SfCrudService,\r\n private domSanitizer: DomSanitizer,\r\n private stepService: StepService,\r\n private adoService: AdoService,\r\n private jwtService: JWTService\r\n ) {\r\n this.loading = {inProgress: true, target: undefined};\r\n if (window.innerWidth <= 768) this.isMobile = true\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth <= 768) this.isMobile = true\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.buildControls()\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n try {\r\n if (this.isAddressDialog) this.currentAddress = this.data.currentValue\r\n this.jwtService.idKatios = this.crudService.idKatios\r\n this.jwtService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones\r\n this.adoService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones\r\n this.idKatios = this.crudService.idKatios\r\n this.stepService.requestApproved$.subscribe((approved) => {\r\n if (!this.isDialog && approved){\r\n this.uiEsquema = this.crudService.getUIEsquema(this.stepService.currentIndex)\r\n this.esquema = this.crudService.getEsquema(this.stepService.currentIndex)\r\n this.data = this.crudService.getData(this.stepService.currentIndex);\r\n this.registro = this.crudService.getRegistro(this.stepService.currentIndex)\r\n this.buildControls();\r\n }\r\n })\r\n this.defaultField();\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if(this.subscription) this.subscription.unsubscribe();\r\n }\r\n\r\n emitLoadingForm($event: boolean){\r\n this.loading.inProgress = $event\r\n Promise.resolve().then(() => this.crudService.formLoading = this.loading)//si no se usa asi el enproceso totea con el simulador\r\n }\r\n\r\n\r\n\r\n buildControls(){\r\n this.visible = []\r\n this.controlsLoaded = false;\r\n this.controls = []\r\n this.values = []\r\n\r\n //address\r\n if (this.isAddressDialog) this.newAddress = this.crudService.armarNuevaDireccion(\"string\", this.data, this.crudService.getValue(\"$..separador\", this.data))\r\n\r\n this.uiEsquema.elements.forEach((layout: any, i: number) => {\r\n let isVisible = layout.conditions ? this.crudService.isConditionsCompleted(layout.conditions, this.registro.conditions || [], this.data): true\r\n this.visible.push(layout.elements? layout.elements.map(() => isVisible): [isVisible])\r\n this.controls.push([])\r\n this.values.push([])\r\n\r\n layout.elements?.forEach((element: any, j: number) => {\r\n if (element.conditions) this.visible[i][j] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data)\r\n\r\n if (element.ngStyle && typeof(element.ngStyle) == \"string\") element.ngStyle = JSON.parse(element.ngStyle)\r\n if (element.url){\r\n this.controls[i].push(undefined)\r\n let url = this.crudService.applyStringKeys(element.url)\r\n this.values[i].push(this.domSanitizer.bypassSecurityTrustResourceUrl(url))\r\n }\r\n else if (!element.scope){\r\n this.controls[i].push(undefined)\r\n this.values[i].push(undefined)\r\n }else{\r\n try{\r\n this.controls[i].push(this.crudService.getControl(element.scope, this.esquema))\r\n this.controls[i][j].scope = element.scope\r\n this.controls[i][j].labelPosition = element.labelPosition\r\n this.controls[i][j].reverse = element.reverse\r\n this.values[i].push(this.crudService.getValue(element.scope, this.data))\r\n }catch(e){\r\n console.log(element)\r\n console.error(e)\r\n console.log(this.controls[i])\r\n console.log(this.values[i])\r\n }\r\n\r\n }\r\n });\r\n });\r\n this.controlsLoaded = true;\r\n let idProceso = this.data.ADO?.dataProceso?.idProceso\r\n if (idProceso && this.proceso?.id != idProceso) this.refreshIntegracion(idProceso)\r\n }\r\n\r\n refreshIntegracion(idProceso: number){\r\n this.emitLoadingForm(true)\r\n return Promise.all([\r\n this.adoService.getProceso(idProceso).then((proceso) => {\r\n this.proceso = proceso\r\n this.data.ADO.proceso = this.proceso\r\n })\r\n ])\r\n .finally(() => this.emitLoadingForm(false))\r\n }\r\n\r\n extracControlFromTableElements(i:any, j:any, col:any){\r\n const property = this.controls[i][j].properties[col.col];\r\n return property\r\n }\r\n\r\n extracValueFromTableElements(i:any, j:any, k:any, col:any){\r\n const value = this.values[i][j][k][col.col];\r\n return value\r\n }\r\n\r\n setValue(value: any, scope: any, i: number, j: number, k: number) {\r\n let transformedScope = scope;\r\n if (scope.includes('.items.properties.')) {\r\n const parts = scope.split('.items.properties.');\r\n const basePath = parts[0]; \r\n const property = parts[1]; \r\n transformedScope = `${basePath}[${k}].${property}`;\r\n } else {\r\n transformedScope = scope.replaceAll('..properties', '');\r\n }\r\n\r\n if (transformedScope) {\r\n let control = this.controls[i][j];\r\n if(control.convert) value = this.getDefaultValueForType(control.convert, value);\r\n this.values[i][j] = value;\r\n jsonpath.value(this.data, transformedScope, value);\r\n\r\n this.crudService.changeData = new ChangeData(value, transformedScope, this.crudService.index)\r\n this.uiEsquema.elements.forEach((layout: any, iLayout: number) => {\r\n if (layout.conditions){\r\n let isVisible = this.crudService.isConditionsCompleted(layout.conditions, this.crudService.getRegistro(this.crudService.index).conditions || [], this.data)\r\n if(layout.elements) this.visible[iLayout] = layout.elements.map(() => isVisible)\r\n else this.visible[iLayout][0] = isVisible\r\n }\r\n\r\n layout.elements?.forEach((element: any, indexEl: number) => {\r\n if (element.conditions){\r\n this.visible[iLayout][indexEl] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data)\r\n }\r\n })\r\n })\r\n control.applyKeys?.forEach((i: number) => {\r\n let key = this.registro.keys ? this.registro.keys[i] : undefined\r\n if (key) this.crudService.applyKey(key, this.registro, key.indexData ? this.crudService.getData(key.indexData) : this.data)\r\n });\r\n this.buildControls()\r\n }\r\n this.crudService.applyValuesOnEvent('onChange', this.esquema, undefined, this.data);\r\n }\r\n\r\n\r\n sendNotification(message: any) {\r\n this.messageService.add(message)\r\n }\r\n\r\n applyValuesFromObject(event: any) {\r\n if (event.optionValue){\r\n for (let i = 0; i < event.optionValue.length; i++) {\r\n const optionVal = event.optionValue[i];\r\n const newVal = event.data ? this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]): null;\r\n jsonpath.value(this.data, optionVal.scope.replace('.properties',''), this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]))\r\n this.setValueByScope(optionVal.scope, newVal)\r\n }\r\n }\r\n }\r\n\r\n setValueByScope(scope: string, newVal: any){\r\n for (let i = 0; i < this.controls.length; i++) {\r\n const row = this.controls[i];\r\n row.forEach((el, j) => {\r\n if (el.scope && el.scope.replace('.properties','')== scope.replace('.properties','')){\r\n this.values[i][j] = newVal\r\n }\r\n })\r\n }\r\n }\r\n\r\n aplyFormatValue(scope: string, value: any) {\r\n const control = jsonpath.query(this.esquema, scope)[0]\r\n let resp;\r\n switch (control.type) {\r\n case 'date':\r\n resp = new Date(`${value}`)\r\n break;\r\n case 'numeric':\r\n resp = +value\r\n break;\r\n default:\r\n resp = value\r\n break;\r\n }\r\n return resp\r\n }\r\n\r\n editRow(element: any, data: any, index: number) {\r\n this.stepService.addCustomChildrenEvent(\"onClickedEditButton\", {element, data, index})\r\n }\r\n\r\n deleteRow(element: any, index: number) {\r\n this.stepService.addCustomChildrenEvent(\"onClickedDeleteButton\", {element, index})\r\n }\r\n\r\n addObjectArray(element: any) {\r\n this.stepService.addCustomChildrenEvent(\"onClickedAddButton\", {element})\r\n }\r\n\r\n openPopUpDireccion(scope: string){\r\n this.stepService.addCustomChildrenEvent(\"onClickedAddress\", {scope})\r\n }\r\n\r\n onStateDocument(state: string){\r\n this.data.pdf.signed = state.toUpperCase() == \"FIRMADO\"\r\n }\r\n\r\n onSimuladorChange($event: Simulador) {\r\n Promise.resolve().then(() => Object.assign(this.data, $event))\r\n }\r\n\r\n goToADO(){\r\n let url = window.location.href;\r\n let callback = url.split('?')[0] + `?id=${this.data.idForm}`;\r\n let idProceso = this.data.ADO.dataProceso?.idProceso\r\n let dataProceso = this.data.ADO.dataProceso\r\n dataProceso.ctivo = this.data.idForm\r\n //this.data.ADO.idTransaction = null\r\n //this.data.ADO.idProceso = null\r\n if (idProceso){\r\n window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`\r\n window.location.reload();\r\n }\r\n else if (dataProceso){\r\n window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?dataProceso=${btoa(JSON.stringify(dataProceso))}&callback=${encodeURIComponent(callback)}`\r\n window.location.reload();\r\n }\r\n }\r\n onTouchDescription(id: string, alignRight=true) {\r\n const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === id)!;\r\n try{\r\n foundTooltip.activate();\r\n alignRight ? foundTooltip.alignRight(): foundTooltip.alignTop();\r\n }catch(ex){}\r\n }\r\n\r\n onUnTouchDescription(descripcion: string) {\r\n const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === descripcion)!;\r\n try{\r\n foundTooltip.deactivate();\r\n }catch(ex){}\r\n }\r\n\r\n copyToClipboard(idProceso: string){\r\n let url = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`\r\n navigator.clipboard.writeText(url)\r\n }\r\n\r\n // Array Layout methods\r\n getArrayItems(scope: string): any[] {\r\n if (!scope) return [];\r\n const arrayData = jsonpath.value(this.data, scope.replace(\"..properties\",\"\"));\r\n return Array.isArray(arrayData) ? arrayData : [];\r\n }\r\n\r\n private updateScopesForArrayItem(schema: any, arrayIndex: number): void {\r\n if (schema.scope) {\r\n schema.scope = schema.scope.replace(/(\\$\\.\\.[^.\\[]+)/, `$1[${arrayIndex}]`);\r\n }\r\n \r\n if (schema.elements && Array.isArray(schema.elements)) {\r\n schema.elements.forEach((element: any) => {\r\n this.updateScopesForArrayItem(element, arrayIndex);\r\n });\r\n }\r\n }\r\n\r\n addArrayItem(element: any, layoutIndex: number): void {\r\n if (!element.scope) return;\r\n let arrayData = jsonpath.value(this.data, element.scope.replace(\"..properties\",\"\"));\r\n if (!Array.isArray(arrayData)) {\r\n arrayData = [];\r\n jsonpath.value(this.data, element.scope, arrayData);\r\n }\r\n const newItem = this.createEmptyArrayItem(element);\r\n arrayData.push(newItem);\r\n }\r\n\r\n removeArrayItem(element: any, layoutIndex: number, arrayIndex: number): void {\r\n if (!element.scope) return;\r\n \r\n const arrayData = jsonpath.value(this.data, element.scope.replace(\"..properties\",\"\"));\r\n if (Array.isArray(arrayData) && arrayIndex >= 0 && arrayIndex < arrayData.length) {\r\n arrayData.splice(arrayIndex, 1);\r\n }\r\n }\r\n\r\n private createEmptyArrayItem(element: any): any {\r\n const newItem: any = {};\r\n if (element.elements && Array.isArray(element.elements)) {\r\n this.extractDefaultValues(element.elements, newItem);\r\n }\r\n return newItem;\r\n }\r\n\r\n private extractDefaultValues(elements: any[], target: any): void {\r\n elements.forEach(element => {\r\n if (element.scope) {\r\n const propertyMatch = element.scope.split('.').pop();\r\n if (propertyMatch) {\r\n target[propertyMatch] = null;\r\n }\r\n } \r\n if (element.elements && Array.isArray(element.elements)) {\r\n this.extractDefaultValues(element.elements, target);\r\n }\r\n });\r\n }\r\n\r\n private getDefaultValueForType(type: any,value:any): any {\r\n if (!type) return '';\r\n try{\r\n switch (type) {\r\n case 'numeric':\r\n return parseFloat(value) || 0;\r\n case 'integer':\r\n return parseInt(value) || 0;\r\n case 'boolean':\r\n return Boolean(value);\r\n case 'array':\r\n return JSON.parse(value) || [];\r\n case 'object':\r\n return JSON.parse(value) || {};\r\n default:\r\n return '';\r\n }\r\n }\r\n catch(e){\r\n return '';\r\n }\r\n \r\n }\r\n getControl(sub:any, index: number): any {\r\n const control = this.crudService.getControl(sub.scope, this.esquema);\r\n if(sub.default?.index === index) {\r\n control.disabled = true;\r\n }else{\r\n control.disabled = false;\r\n }\r\n return control;\r\n }\r\n\r\n defaultField(): void {\r\n this.uiEsquema.elements.forEach((layout: any, i: number) => {\r\n if (layout.type=='ArrayLayout' && this.getArrayItems(layout.scope).length==0){\r\n const target: any = {};\r\n let arrayData = jsonpath.value(this.data, layout.scope.replace(\"..properties\",\"\"));\r\n if (!Array.isArray(arrayData)) {\r\n arrayData = [];\r\n jsonpath.value(this.data, layout.scope, arrayData);\r\n }\r\n layout.elements?.forEach((el: any, j: number) => {\r\n const propertyMatch = el.scope.split('.').pop();\r\n if (el.default) {\r\n target[propertyMatch] = el.default.value;\r\n }else{\r\n target[propertyMatch] = null;\r\n }\r\n });\r\n arrayData.push(target);\r\n }\r\n });\r\n }\r\n getValueFromData(el:any,subEl:any,k:number): any{\r\n const arrayData = jsonpath.value(this.data, el.scope.replace(\"..properties\",\"\"));\r\n const property = subEl.scope.split('.').pop();\r\n return arrayData && arrayData[k] && subEl.default ? arrayData[k][property] : null;\r\n }\r\n}\r\n","<div *ngIf=\"controlsLoaded\" class=\"frm-container\">\r\n <ng-container *ngIf=\"isAddressDialog && currentAddress\">\r\n Dirección actual: {{currentAddress | formatAddress: separador}}\r\n <br>\r\n </ng-container>\r\n <br>\r\n <ng-container *ngIf=\"isAddressDialog\">\r\n Dirección nueva: {{newAddress | formatAddress: separador}}\r\n </ng-container>\r\n <p-fluid>\r\n <div *ngFor=\"let element of uiEsquema.elements; let i = index\" [class]=\"element?.class\" #a>\r\n <ng-container [ngSwitch]=\"element.type\" *ngIf=\"visible[i][0]\">\r\n <div class=\"label\" *ngSwitchCase=\"'Label'\" [style]=\"element?.style\">\r\n {{element?.label}}\r\n </div>\r\n <ng-container *ngSwitchCase=\"'HorizontalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n <div *ngSwitchCase=\"'Texto'\" [ngStyle]=\"{'height': '100%', 'margin-block': 'auto'}\">\r\n <p>{{el.label}}</p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'VerticalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n <div *ngSwitchCase=\"'PDF'\" class=\"pdf\">\r\n <iframe [src]=\"values[i][j]\" frameborder=\"0\" allow=\"geolocation *; camera *;\"></iframe>\r\n </div>\r\n <div *ngSwitchCase=\"'PDF-SIGN'\">\r\n <sf-sign [allowDownload]=\"true\" [idkatios]=\"idKatios\" [tdoc]=\"data.pdf.tdoc\" [ndoc]=\"data.pdf.ndoc\"\r\n [idDocument]=\"data.pdf.id\" [typeDocument]=\"data.pdf.idDoc\"\r\n (stateDocument)=\"onStateDocument($event)\"></sf-sign>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'SIMULADOR'\">\r\n <sf-simulador [simulador]=\"data\" [otherToolTips]=\"data.otherTooltips\"\r\n (simuladorChange)=\"onSimuladorChange($event)\" (enProceso)=\"emitLoadingForm($event)\"></sf-simulador>\r\n </ng-container>\r\n <div *ngSwitchCase=\"'ADO'\" class=\"buttons\">\r\n <p-button *ngIf=\"!data?.ADO?.dataProceso?.idProceso\" [ngStyle]=\"el?.ngStyle\" (click)=\"goToADO()\" label=\"Validar identidad\"></p-button>\r\n </div>\r\n <div *ngSwitchCase=\"'ADO'\">\r\n <div *ngIf=\"data?.ADO?.dataProceso?.idProceso\">\r\n <div class=\"data-ado-container\">\r\n <ng-container *ngIf=\"proceso\">\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === true\" pTooltip=\"Validado\" tooltipPosition=\"top\" id=\"Validado\" class=\"pi pi-user\" style=\"color: green\"\r\n (touchstart)=\"onTouchDescription('Validado', false)\" (touchend)=\"onUnTouchDescription('Validado')\"></i>\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === false\" pTooltip=\"No validado\" tooltipPosition=\"top\" id=\"No-Validado\" class=\"pi pi-user\" style=\"color: red\"\r\n (touchstart)=\"onTouchDescription('No-Validado', false)\" (touchend)=\"onUnTouchDescription('No-Validado')\"></i>\r\n <i *ngIf=\"!proceso?.respuestaProceso\" pTooltip=\"Sin validar\" tooltipPosition=\"top\" class=\"pi pi-user\" id=\"Sin-Validar\" style=\"color: gray\"\r\n (touchstart)=\"onTouchDescription('Sin-Validar', false)\" (touchend)=\"onUnTouchDescription('Sin-Validar')\"></i>\r\n </ng-container>\r\n <div class=\"buttons\">\r\n <button pButton icon=\"pi pi-external-link\" (click)=\"goToADO()\" pTooltip=\"Abrir\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-copy\" (click)=\"copyToClipboard(proceso.id)\" pTooltip=\"Copiar\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-refresh\" (click)=\"refreshIntegracion(proceso.id)\" pTooltip=\"Refrescar\" [disabled]=\"!proceso\"></button>\r\n </div>\r\n </div>\r\n <p class=\"result-ado\" *ngIf=\"proceso && !proceso.respuestaProceso && proceso.estado == 'PROCESANDO'\">Procesando</p>\r\n <p class=\"result-ado\" *ngIf=\"proceso && proceso.respuestaProceso && proceso.estado == 'TERMINADO'\">{{proceso.respuestaProceso.Detalle ?? proceso.respuestaProceso.Mensaje}}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'Table'\">\r\n <p-table [value]=\"values[i][j]\" [columns]=\"controls[i][j].config.columns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <button pButton pRipple icon=\"pi pi-plus\" (click)=\"addObjectArray(el)\"\r\n class=\"p-button-success\" [disabled]=\"controls[i][j].disabled === true\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{col.label}}\r\n </th>\r\n <ng-container>\r\n <th></th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <ng-container *ngSwitchCase=\"'control'\">\r\n <sf-control [control]=\"extracControlFromTableElements(i, j, col)\" [label]=\"\"\r\n [value]=\"extracValueFromTableElements(i, j, rowIndex, col)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (setValue)=\"setValue($event, extracValueFromTableElements(i, j, rowIndex, col).scope, i, j)\"\r\n [showTempValue]=\"true\"\r\n >\r\n </sf-control>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <td>{{rowData[col.col]}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <td>{{rowData[col.col] | formatAddress: extracControlFromTableElements(i, j, col).separador }}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency:USD'\">\r\n <td>{{rowData[col.col] | currency: 'USD'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:yyyy-mm-dd'\">\r\n <td>{{rowData[col.col] | date: 'yyyy-mm-dd'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:dd/mm/yyyy'\">\r\n <td>{{rowData[col.col] | date: 'dd/MM/yyyy'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <td>\r\n <i *ngIf=\"rowData[col.col]\" class=\"pi pi-check\"></i>\r\n <i *ngIf=\"!rowData[col.col]\" class=\"pi pi-times\"></i>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container>\r\n <td>\r\n <button pButton pRipple type=\"button\"\r\n (click)=\"editRow(el, rowData, rowIndex)\" icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-info mr-1\"></button>\r\n <button pButton pRipple type=\"button\" (click)=\"deleteRow(el, rowIndex)\" [disabled]=\"controls[i][j].disabled === true\"\r\n icon=\"pi pi-trash\" class=\"p-button-rounded p-button-danger\"></button>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'ArrayLayout'\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"element.addButton\" class=\"flex items-center justify-content-between mb-2\">\r\n <p-button [icon]=\"element.addButton.icon\" [label]=\"element.addButton.label\" (click)=\"addArrayItem(element, i)\" [severity]=\"element.addButton.severity || 'primary'\"/>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let arrayItem of getArrayItems(element.scope); let arrayIndex = index\" [ngClass]=\"element.classElements || 'flex align-items-center w-full'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"getControl(el,arrayIndex)\" [label]=\"el.label\"\r\n [value]=\"values[i][j] || getValueFromData(element,el,arrayIndex)\" (setValue)=\"setValue($event, el.scope, i, j,arrayIndex)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n </ng-container>\r\n </div>\r\n <p-button *ngIf=\"element.deleteButton && !(element.deleteButton.hide?.index === arrayIndex)\" [icon]=\"element.deleteButton.icon\" [rounded]=\"element.deleteButton.rounded || false\" [text]=\"element.deleteButton.text || true\" [severity]=\"element.deleteButton.severity || 'danger'\" (click)=\"removeArrayItem(element, i, arrayIndex)\" \r\n [label]=\"element.deleteButton.label\" />\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </p-fluid>\r\n</div>\r\n\r\n<p-toast *ngIf=\"isDialog\"></p-toast>\r\n","import { Component, HostBinding, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef, Output, EventEmitter } from '@angular/core';\r\n//import { ConfigRegistro, Operation, RequestChecking } from '../../shared/models/crud-config.model';\r\n//import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigRegistro, CrudConfig, Key, Operation, RequestChecking } from '../../shared/models/crud-config.model';\r\n//import { DialogService, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { GeneralService } from '../../shared/services/general.service';\r\nimport { MenuItem, MessageService } from 'primeng/api';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Shema } from '../../shared/models/shema.model';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { Loading, SfCrudService } from '../../sf-crud.service';\r\nimport { SfPdfsignService } from 'sf-pdfsign';\r\nimport { SfSimuladorService } from 'sf-simulador';\r\nimport { Condition } from '../../shared/models/Conditions.model';\r\nimport { StepService } from '../../shared/services/step.service';\r\nimport * as _ from \"lodash\";\r\nimport Swal, { SweetAlertOptions } from 'sweetalert2';\r\nimport { NotificationService } from '../../shared/services/notification.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sf-registro',\r\n templateUrl: './registro.component.html',\r\n providers: [MessageService],\r\n styleUrls: ['./registro.component.css'],\r\n standalone: false\r\n})\r\nexport class RegistroComponent implements OnChanges, OnInit, OnDestroy{\r\n @HostBinding(\"style.--primary-color\") color!: string;\r\n @HostBinding(\"style.--secondary-color\") color2!: string;\r\n @HostBinding(\"style.--button-color\") colorButton!: string;\r\n @Input() idKatios: string = '';\r\n @Input() trx: string = '';\r\n @Input() id: string = '';\r\n @Input() user: any;\r\n @Input() dataExt: any;\r\n @Input() ids: string[] = [];\r\n @Input() environment?: any; \r\n @Input() buttonsFooterTemplate!: TemplateRef<any>;\r\n @Input() back_route: string = \"\";\r\n @Output() sendData: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() onSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() onLoaded: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public btnSubmit: any;\r\n notificationSubscription: any;\r\n subsToKillOnDestroy: Subscription[] = [];\r\n\r\n @Input() set idEntidad(value: string) {\r\n this.idForm = value\r\n }\r\n\r\n public idForm!: string;\r\n public isLocal: boolean = false;\r\n public displays: boolean[]=[];\r\n public firstLoad = true;\r\n public logo: string | undefined;\r\n public dialogElements: DialogElement[]=[];\r\n private loading!:Loading;\r\n items: MenuItem[] = [];\r\n\r\n constructor(\r\n private generalService: GeneralService,\r\n private activeRoute: ActivatedRoute,\r\n private messageService: MessageService,\r\n public sfCrudService: SfCrudService,\r\n private stepService: StepService,\r\n private sfPdfSignService: SfPdfsignService,\r\n private sfSimuladorService: SfSimuladorService,\r\n private notificationService: NotificationService,\r\n private router: Router\r\n ) {\r\n this.loading = {inProgress: true, target: undefined};\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.environment) {\r\n this.environment = JSON.parse(sessionStorage.getItem('ConfigJSON') || '{}');\r\n }\r\n\r\n if (this.idKatios && this.idForm && this.environment && (changes[\"idKatios\"] || changes[\"idEntidad\"])) {\r\n this.sfCrudService.ids = this.ids\r\n this.sfCrudService.idKatios = this.idKatios\r\n this.sfCrudService.environment = this.environment\r\n this.generalService.idKatios = this.idKatios\r\n this.generalService.environment = this.environment\r\n this.sfPdfSignService.setEnviroments(this.environment)\r\n this.sfSimuladorService.environments = this.environment\r\n this.sfSimuladorService.idKatios = this.idKatios\r\n this.loadConfigCrud();\r\n }\r\n if(this.onLoaded) this.onLoaded.emit();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.cargarMascarasDirecciones()\r\n this.instanceSubsStepService();\r\n this.notificationSubscription = this.notificationService.notificationAdded$().subscribe(notification => {\r\n if(notification?.requestChecking?.useSwal){\r\n Swal.fire(notification.msg as SweetAlertOptions).then((res) => {\r\n if ((notification.msg as SweetAlertOptions).showCancelButton && res.isDismissed && notification.requestChecking?.cancelRedirect) {\r\n if (notification.requestChecking.cancelRedirect.toUpperCase() == \"INICIO\") this.sfCrudService.redirectToInicio()\r\n else window.location.href = notification.requestChecking.cancelRedirect\r\n } else if (res.isConfirmed && notification.requestChecking?.redirect) {\r\n if (notification.requestChecking.redirect.toUpperCase() == \"INICIO\") this.sfCrudService.redirectToInicio()\r\n else window.location.href = notification.requestChecking.redirect\r\n }\r\n })\r\n }\r\n else if (notification?.msg && notification.requestChecking?.redirect){\r\n this.messageService.add(notification.msg);\r\n if (notification.requestChecking.redirect.toUpperCase() == \"INICIO\") this.sfCrudService.redirectToInicio()\r\n else {\r\n let newURL = this.sfCrudService.getURLRedirect(notification.requestChecking.redirect)\r\n window.location.href = newURL\r\n window.location.reload()\r\n }\r\n }\r\n else if (notification?.msg){\r\n this.messageService.add(notification.msg);\r\n }\r\n });\r\n this.subsToKillOnDestroy.push(\r\n this.sfCrudService.operation$.subscribe((op) => {\r\n if(op) {\r\n this.stepService.currentIndex = op.index;\r\n this.sfCrudService.setTrx(op.trx, op.index);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.notificationSubscription) {\r\n this.notificationSubscription.unsubscribe();\r\n }\r\n this.subsToKillOnDestroy.forEach(sub => sub.unsubscribe())\r\n this.stepService.reset()\r\n this.sfCrudService.reset()\r\n }\r\n\r\n instanceSubsStepService(){\r\n this.subsToKillOnDestroy.push(this.stepService.customChildrenEvents$.subscribe((event: {name: string, data: any}) => {\r\n if (!event) return;\r\n switch (event.name.toUpperCase()) {\r\n case \"ONCLICKEDEDITBUTTON\":\r\n this.onClickedEditButton(event.data.element, event.data.data, event.data.index)\r\n break;\r\n case \"ONCLICKEDDELETEBUTTON\":\r\n this.deleteRow(event.data.element, event.data.index)\r\n break;\r\n case \"ONCLICKEDADDBUTTON\":\r\n this.onClickedAddButton(event.data.element)\r\n break;\r\n case \"ONCLICKEDADDRESS\":\r\n this.onClickedAddress(event.data.scope)\r\n break;\r\n }\r\n }))\r\n\r\n this.subsToKillOnDestroy.push(this.stepService.requestApproval$.subscribe((value) =>{\r\n if (value?.desired != undefined) {\r\n if (value.desired < value.current) {\r\n this.stepService.requestApproved = true;\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n this.scrollTop()\r\n }\r\n else{\r\n const operation =this.sfCrudService.getRegistro(this.indexCrud).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))!\r\n if (!this.validateData(operation, this.sfCrudService.getData(this.indexCrud), this.sfCrudService.getRegistro(this.indexCrud).conditions || [])) this.stepService.requestApproved = false;\r\n else if(operation?.method != null) this.uploadInfoStep(value)\r\n else if (operation?.answerChecking){ //no tiene request, solo un mensaje\r\n this.stepService.requestApproved = true\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n this.notificationService.addNotification(this.notificationService.generateMessage(\r\n this.notificationService.genDefaultMessage(\"success\", undefined, \"Información subida correctamente\", operation.answerChecking), {}, operation.answerChecking),\r\n operation.answerChecking\r\n );\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n this.scrollTop()\r\n }else{//no tiene nada configurado\r\n this.stepService.requestApproved = true\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n this.scrollTop()\r\n }\r\n }\r\n }\r\n }))\r\n }\r\n\r\n uploadInfoStep(position: {current: number, desired: number}){\r\n this.loading.inProgress = true\r\n this.sfCrudService.formLoading = this.loading\r\n this.submit(position.current).then(() => {\r\n let tieneRedirect = this.sfCrudService.currentOperation?.answerChecking !== undefined && this.sfCrudService.currentOperation?.answerChecking?.redirect !== undefined\r\n if (this.items.length == 1) {\r\n this.stepService.requestApproved = false\r\n //this.stepService.desiredIndex = undefined\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n }\r\n else if (!tieneRedirect){\r\n this.advance(position.current, position.desired, false)\r\n }\r\n this.scrollTop()\r\n })\r\n .catch(() => {\r\n this.stepService.requestApproved = false\r\n\r\n }).finally(() => {\r\n this.loading.inProgress = false\r\n this.sfCrudService.formLoading = this.loading})\r\n }\r\n\r\n onClickBtnSubmit() {\r\n this.stepService.requestApproval = this.indexCrud\r\n }\r\n\r\n loadConfigCrud() {\r\n this.loading.inProgress = true\r\n this.sfCrudService.formLoading = this.loading;\r\n this.sfCrudService.dataExt = this.dataExt\r\n this.sfCrudService.crudLoaded = false;\r\n if (this.loadSession()) {\r\n this.sfCrudService.crudLoaded = true;\r\n return;\r\n }\r\n\r\n this.generalService.getCrudByEntidad(this.idKatios, this.idForm)\r\n .then((res: any) => {\r\n this.sfCrudService.uiEsquemas = res.uiEsquemas\r\n this.sfCrudService.esquemas = res.esquemas\r\n this.sfCrudService.registros = res.registros\r\n this.customizeCompany(res.uiEsquemas)\r\n this.sfCrudService.registros.forEach((_, i) => this.sfCrudService.setTrx(\"c\", i))\r\n this.loadData()\r\n .then(() => {\r\n this.setLabelSumbit()\r\n this.sfCrudService.dataset.forEach((data, i) => {\r\n if (this.activeRoute.snapshot.queryParams[\"_idGWVADO\"] && data.ADO?.dataProceso){\r\n data.ADO.dataProceso.idProceso = this.activeRoute.snapshot.queryParams[\"_idGWVADO\"]\r\n }\r\n if (this.activeRoute.snapshot.queryParams[\"_idADO\"] && data.ADO){\r\n data.ADO.idTransaction = this.activeRoute.snapshot.queryParams[\"_idADO\"]\r\n }\r\n this.sfCrudService.setDataSet(data, i)\r\n })\r\n })\r\n .finally(() => {\r\n let willExecuteRequest = this.advance(0, this.sfCrudService.uiEsquemas.length - 1, true)\r\n this.createSteps(res.uiEsquemas)\r\n this.sfCrudService.crudLoaded = true\r\n if (!willExecuteRequest){\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n }\r\n })\r\n }).catch((ex) => {\r\n console.error(ex)\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading\r\n })\r\n\r\n }\r\n\r\n /**\r\n * Step will advance until esquema is not completed\r\n */\r\n advance(start: number, limit: number, executeRequest: boolean) {\r\n let i = start\r\n let op;\r\n let willExecuteRequest = false;\r\n let registro;\r\n while (i < limit){\r\n registro =this.sfCrudService.getRegistro(i)\r\n op = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(i)))!\r\n if (!this.validateData(op, this.sfCrudService.getData(i), registro.conditions || [], false)) break;\r\n i++;\r\n }\r\n\r\n this.sfCrudService.index = i\r\n this.stepService.currentIndex = i\r\n this.stepService.desiredIndex = i\r\n this.stepService.requestApproved = true\r\n registro =this.sfCrudService.getRegistro(i)\r\n let dataCurrentStep = this.sfCrudService.getData(i)\r\n op = this.sfCrudService.getRegistro(i).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(i)))!\r\n if (executeRequest && (this.activeRoute.snapshot.queryParams[\"_idGWVADO\"] || this.activeRoute.snapshot.queryParams[\"_idADO\"]) //Viene de ADO\r\n && dataCurrentStep.ADO && this.validateData(op, dataCurrentStep, registro.conditions ?? [], false) //El step esta completo\r\n ) {\r\n this.stepService.requestApproval = i\r\n willExecuteRequest = true\r\n }\r\n return willExecuteRequest;\r\n }\r\n loadSession() {\r\n const wasLoaded = this.sfCrudService.loadSession()\r\n if (wasLoaded){\r\n this.customizeCompany(this.sfCrudService.uiEsquemas)\r\n this.stepService.currentIndex = this.sfCrudService.index\r\n this.createSteps(this.sfCrudService.uiEsquemas)\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading\r\n }\r\n return wasLoaded\r\n }\r\n\r\n customizeCompany(uiEsquemas: any[]) {\r\n this.sfCrudService.configEmpresa = uiEsquemas.find(ui => ui.general)?.general\r\n this.logo = this.sfCrudService.configEmpresa?.icons?.carga;\r\n if(this.sfCrudService.configEmpresa){\r\n if (this.sfCrudService.configEmpresa.colors?.main) this.color = this.sfCrudService.configEmpresa.colors.main\r\n if (this.sfCrudService.configEmpresa.colors?.secondary) this.color2 = this.sfCrudService.configEmpresa.colors.secondary\r\n if (this.sfCrudService.configEmpresa.colors?.button) this.colorButton = this.sfCrudService.configEmpresa.colors.button\r\n }\r\n if (!this.colorButton) this.colorButton = \"blue\";\r\n if (!this.color2) this.color2 = \"blue\";\r\n if (!this.color) this.color = \"blue\";\r\n }\r\n\r\n scrollTop(){\r\n window.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n createSteps(uiEsquemas: any[]){\r\n this.items = []\r\n uiEsquemas.forEach((uiEsq, index) => {\r\n if (uiEsq.step) this.items.push({label: uiEsq.step, routerLink: index, queryParamsHandling: \"preserve\"})\r\n else this.items.push({label: `paso ${index}`, routerLink: index})\r\n this.sfCrudService.getRegistro(index) //ver si tiene un change\r\n })\r\n }\r\n\r\n /**\r\n * Instancia todos los esquemas, y realiza los requests para traer la data de todos los step.\r\n * @param esquema\r\n * @param registro\r\n * @returns\r\n */\r\n loadData(){\r\n this.sfCrudService.esquemas.forEach((esquema, i) => {\r\n const op = this.sfCrudService.registros[i].operations.find(x => x.type.startsWith(this.sfCrudService.getTrx(i)))\r\n this.sfCrudService.setDataSet(this.sfCrudService.createObject(esquema, op), i)\r\n //this.sfCrudService.setOptionalDataSet(this.sfCrudService.createOptionalObject(esquema, op), i);\r\n })\r\n \r\n return Promise.all(this.sfCrudService.registros.map((registro, i) => this.ids.length > 0 ? this.getInfoRegistro(registro, i, this.ids[i]): Promise.resolve()))\r\n }\r\n\r\n getInfoRegistro(configRegistro: ConfigRegistro, index: number, id: any) {\r\n const op = configRegistro.operations.find(x => x.type == 'read');\r\n if (!op) return;\r\n const url = this.sfCrudService.getURL(op, index, id)\r\n return this.generalService.genericRequest(op.method, url)\r\n .then((res: any) => {\r\n let value = undefined\r\n if (res?.data){\r\n value = Array.isArray(res.data) ? res.data[0] : res.data\r\n }\r\n else value = Array.isArray(res) ? res[0]: res\r\n\r\n this.sfCrudService.applyObjectKeys(value, op.keysEsquema || [], configRegistro)\r\n if (op.changeTrx) op.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n let errorChecking;\r\n if (Array.isArray(op.errorChecking)) errorChecking = op.errorChecking[0]\r\n else errorChecking = op.errorChecking\r\n\r\n this.notificationService.addNotification(this.notificationService.generateMessage(\r\n this.notificationService.genDefaultMessage(\"error\", \"Formulario no cargado correctamente\", \"\", errorChecking), error.error, errorChecking),\r\n errorChecking\r\n );\r\n throw error\r\n })\r\n }\r\n\r\n\r\n setDefaultValue(value: any) {\r\n let data = null;\r\n if (value.key && this.sfCrudService.currentOperation?.keys){\r\n data = this.sfCrudService.getValueKey(this.sfCrudService.currentOperation.keys.find(k => k.key == value.key))\r\n value = data\r\n }else{\r\n switch (value) {\r\n case '@uactivo':\r\n data = `${this.user.UsuarioSistema.TDOC}-${this.user.UsuarioSistema.NDOC}`\r\n break;\r\n case '@tdocactivo':\r\n data = this.user.UsuarioSistema.TDOC\r\n break;\r\n case '@ndocactivo':\r\n data = this.user.UsuarioSistema.NDOC\r\n break;\r\n case '@hoy':\r\n data = new Date();\r\n break;\r\n default:\r\n data = value;\r\n break;\r\n }\r\n return data\r\n }\r\n\r\n }\r\n get indexCrud(){\r\n return this.stepService.currentIndex;\r\n }\r\n\r\n primeChecking(){\r\n return new RequestChecking(undefined, undefined, false, undefined, undefined, false, undefined)\r\n }\r\n\r\n submit(index: number) {\r\n if(!index) index = this.indexCrud\r\n this.sfCrudService.applyValuesOnEvent('onSubmit', this.sfCrudService.getEsquema(index), undefined, this.sfCrudService.getData(index))\r\n let registro = this.sfCrudService.getRegistro(index)\r\n const operation = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))!\r\n let url = this.sfCrudService.getURL(operation, index)\r\n const dataToSend = this.sfCrudService.removeUiOnlyFields(this.sfCrudService.getData(index), this.sfCrudService.getEsquema(index))\r\n return this.generalService.genericRequest(operation.method, url, dataToSend)\r\n .then((res: any) => {\r\n if (res === null) res = {}\r\n res = this.sfCrudService.applyObjectKeys(res, operation.keysEsquema || [], registro)\r\n this.sfCrudService.setAnswers(res, this.indexCrud)\r\n if (operation.changeTrx && Array.isArray(operation.changeTrx)) operation.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))\r\n this.notificationService.addNotification(this.notificationService.generateMessage(\r\n this.notificationService.genDefaultMessage(\"success\", undefined, \"Información subida correctamente\", operation.answerChecking), res, operation.answerChecking),\r\n operation.answerChecking\r\n );\r\n return res;\r\n })\r\n .catch(err => {\r\n console.error(err)\r\n this.notificationService.addNotification(\r\n this.notificationService.generateMessage(this.notificationService.genDefaultMessage(\"error\", \"Error no controlado\", \"Por favor comunicarse con el admin\",operation.errorChecking), err.error, operation.errorChecking)\r\n , operation.errorChecking\r\n )\r\n throw new Error(err)\r\n })\r\n // return Promise.resolve({})\r\n }\r\n\r\n onCloseAddItem(index: number) {\r\n const scope = (this.dialogElements[index].scope as any).replaceAll('.properties', '')\r\n const item = _.cloneDeep(this.dialogElements[index].data);\r\n if (index == 0) {\r\n jsonpath.query(this.sfCrudService.getData(this.indexCrud), scope)[0].push(item)\r\n }\r\n else jsonpath.query(this.dialogElements[index - 1].data, scope)[0].push(item)\r\n }\r\n\r\n deleteRow(element: any, indexElement: number) {\r\n const scope = element.scope.replaceAll('.properties', '')\r\n let indexDialog = this.dialogElements.length - 1\r\n\r\n if (indexDialog == -1) (jsonpath.query(this.sfCrudService.getData(this.indexCrud), scope)[0] as any[]).splice(indexElement, 1)\r\n else {\r\n indexDialog = indexDialog == 0 ? 1: indexDialog;\r\n (jsonpath.query(this.dialogElements[indexDialog - 1].data, scope)[0] as any[]).splice(indexElement, 1)\r\n }\r\n this.sfCrudService.applyValuesOnEvent('onChange', this.sfCrudService.getEsquema(this.indexCrud), element.scope.replace('$..properties.', ''), this.sfCrudService.getData(this.indexCrud))\r\n }\r\n\r\n onCloseEditRow(index: number) {\r\n let scope = undefined\r\n try{\r\n const iArray = this.dialogElements[index].index\r\n scope = (this.dialogElements[index].scope as any).replaceAll('.properties', '')\r\n const item = _.cloneDeep(this.dialogElements[index].data);\r\n if (index == 0) {\r\n jsonpath.query(this.sfCrudService.getData(this.indexCrud), scope)[0][iArray] = item\r\n }\r\n else {\r\n jsonpath.query(this.dialogElements[index - 1].data, scope)[0][iArray] = item\r\n }\r\n }catch (error){\r\n console.error(error)\r\n console.log(this.dialogElements)\r\n console.log(index)\r\n console.log(scope)\r\n console.log(this.indexCrud)\r\n console.log(this.sfCrudService.getData(this.indexCrud))\r\n throw error\r\n }\r\n\r\n }\r\n\r\n validateData(operation: Operation, data: any, conditions: Condition[], printErrors:boolean=true) {\r\n if (operation?.validations?.type == 'local') {\r\n let err = this.sfCrudService.validateDataLocal(operation, data, conditions);\r\n if (err.length != 0 && printErrors) this.notificationService.addNotification({ severity: 'warn', detail: err.slice(0, 5).join('. ')}, this.primeChecking())\r\n return err.length == 0;\r\n }\r\n return true;\r\n }\r\n\r\n onConfirm() {\r\n this.messageService.clear('c');\r\n }\r\n\r\n onReject() {\r\n this.messageService.clear('c');\r\n }\r\n\r\n onClickedAddress(scope: string) {\r\n let j = 1, k = 0;\r\n let separador = jsonpath.query(this.sfCrudService.esquemas[this.indexCrud], scope)[0]?.separador\r\n let dataPadre = this.dialogElements.length > 0 ? this.dialogElements[this.dialogElements.length - 1].data : this.sfCrudService.dataset[this.indexCrud];\r\n let currentValue = jsonpath.query(dataPadre, scope.replaceAll('.properties', ''))[0]\r\n let currentValues = currentValue?.split(separador)\r\n let esquema: any = {\r\n type: \"object\",\r\n validations: {\r\n type: \"local\",\r\n required: [\r\n ]\r\n },\r\n properties: {\r\n currentValue: {\r\n type: \"string\",\r\n default: currentValue\r\n },\r\n separador: {\r\n type: \"string\",\r\n default: separador\r\n }\r\n }\r\n }\r\n\r\n let uiesquema: {elements: any[]} ={elements: []}\r\n\r\n let traductorTamaniosMascaras: any = {\r\n \"grande\": \"field col-12 md:col-4\",\r\n \"pequeño\": \"field col-12 md:col-2\",\r\n \"mediano\": \"field col-12 md:col-3\",\r\n }\r\n\r\n\r\n this.cargarMascarasDirecciones().then(() => {\r\n const op = this.sfCrudService.registros[this.indexCrud].operations.find(x => x.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))\r\n this.sfCrudService.mascaras.forEach(mascara => {\r\n //generar el uiesquema de las direcciones\r\n uiesquema.elements.push({\r\n \"type\": \"Label\",\r\n \"class\": \"col-12 md:col-12\",\r\n \"style\": `font-size: medium; color:white; background: var(--primary-color) !important; border-radius: 10px; text-align: center;`,\r\n \"label\": `Línea ${mascara.linea}`\r\n })\r\n uiesquema.elements.push({\r\n \"type\": \"HorizontalLayout\",\r\n \"class\": \"p-fluid p-formgrid grid\",\r\n \"elements\": []\r\n })\r\n mascara.Campo.forEach(campo => {\r\n if (campo.Tipo.toLocaleLowerCase() == \"label\"){\r\n uiesquema.elements[j].elements.push({\r\n \"type\": \"Texto\",\r\n \"class\": \"my-auto\",\r\n \"label\": campo.Valor,\r\n \"scope\": `$..properties.${campo.Id}`,\r\n \"ngStyle\": {\r\n \"font-size\": \"1.5rem\"\r\n }\r\n })\r\n }else {\r\n uiesquema.elements[j].elements.push({\r\n \"type\": \"Control\",\r\n \"class\": campo.Tamaño ? traductorTamaniosMascaras[campo.Tamaño.toLocaleLowerCase()]: traductorTamaniosMascaras.mediano,\r\n \"scope\": `$..properties.${campo.Id}`\r\n })\r\n }\r\n\r\n //generar el esquema de las direcciones\r\n if (campo.Tipo.toLocaleLowerCase() == \"combo\"){\r\n let customOptions: any[] = []\r\n let valores = campo.Valores.split(\",\")\r\n valores.forEach(valor => customOptions.push({label: valor.split(\"-\")[0], value: valor.split(\"-\")[1]}))\r\n\r\n esquema.properties[campo.Id] = {\r\n type: \"string\",\r\n subtype: \"dropdown\",\r\n default: this.getDefaultValueDireccion(k, currentValues),\r\n config: {\r\n optionLabel: \"label\",\r\n optionValue: \"value\",\r\n customOptions: customOptions,\r\n showClear: k >= 2\r\n }\r\n }\r\n }\r\n else if (campo.Tipo.toLocaleLowerCase() == \"text\"|| campo.Tipo.toLocaleLowerCase() == \"label\"){\r\n esquema.properties[campo.Id] = {\r\n type: \"string\",\r\n subtype: \"input\",\r\n default: this.getDefaultValueDireccion(k, currentValues)\r\n }\r\n }\r\n else if (campo.Tipo.toLocaleLowerCase() == \"numeric\"){\r\n esquema.properties[campo.Id] = {\r\n type: \"numeric\",\r\n\t\t\t\t subtype: \"decimal\",\r\n default: this.getDefaultValueDireccion(k, currentValues)\r\n }\r\n }\r\n\r\n if (esquema.validations.required.length < 2){//validar los primeros 2 campos\r\n esquema.validations.required.push({\r\n \"field\": `$..${campo.Id}`,\r\n \"message\": `Por favor digite el campo N° ${esquema.validations.required.length + 1}`\r\n })\r\n }\r\n k += 1\r\n })\r\n j += 2\r\n })\r\n\r\n const currentElement = {\r\n data: this.sfCrudService.createObject(esquema, op),\r\n uiEsquema: uiesquema,\r\n esquema: esquema,\r\n scope: scope,\r\n index: 0,\r\n isAddressDialog: true,\r\n separador: separador,\r\n operation: \"address\"\r\n }\r\n this.displays.push(true)\r\n this.dialogElements.push(currentElement)\r\n })\r\n }\r\n\r\n private getDefaultValueDireccion(index: number, currentValues?: string[]){\r\n let valoresLiterales: string[] = []\r\n this.sfCrudService.mascaras.forEach(mascara => {\r\n mascara.Campo.forEach(campo => {\r\n if (campo.Valor && campo.Tipo.toLocaleLowerCase() == \"label\") valoresLiterales.push(campo.Valor)\r\n })\r\n })\r\n let invalidCurrentValues = [\"\", null, undefined]\r\n let temporalValue: string | null = currentValues && index < currentValues.length && currentValues.length > 1 && !invalidCurrentValues.includes(currentValues[index]) ? currentValues[index]: null\r\n valoresLiterales.forEach(valor => {\r\n if (temporalValue?.startsWith(valor)) temporalValue = temporalValue.replace(valor, \"\")\r\n })\r\n return temporalValue\r\n }\r\n\r\n onClickedEditButton(element: any, data: any, index:number){\r\n const esquema = _.cloneDeep(this.sfCrudService.getControl(element.scope, this.sfCrudService.getEsquema(this.indexCrud)));\r\n esquema.type = \"object\"\r\n const currentElement = {\r\n data: _.cloneDeep(data),\r\n uiEsquema: _.cloneDeep(element.elements[0]),\r\n esquema: esquema,\r\n scope: element.scope,\r\n index: index,\r\n operation: \"u\"\r\n }\r\n this.displays.push(true)\r\n this.dialogElements.push(currentElement)\r\n }\r\n\r\n onClickedAddButton(element: any){\r\n const esquema = _.cloneDeep(this.sfCrudService.getControl(element.scope, this.sfCrudService.getEsquema(this.indexCrud)));\r\n const op = this.sfCrudService.registros[this.indexCrud].operations.find(x => x.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))\r\n esquema.type = \"object\"\r\n const currentElement = {\r\n data: this.sfCrudService.createObject(esquema, op),\r\n uiEsquema: _.cloneDeep(element.elements[0]),\r\n esquema: esquema,\r\n scope: element.scope,\r\n index: 0,\r\n operation: \"c\"\r\n }\r\n try{\r\n currentElement.data.id = this.sfCrudService.getValue(element.scope, this.sfCrudService.getData(this.indexCrud)).length + 1\r\n }catch(error){\r\n console.error(error)\r\n }\r\n this.displays.push(true)\r\n this.dialogElements.push(currentElement)\r\n }\r\n\r\n onCloseAddress(index: number){\r\n let separador = jsonpath.query(this.sfCrudService.esquemas[this.indexCrud], this.dialogElements[index].scope)[0]?.separador\r\n //leer los campos de las mascaras, setear el string\r\n let newValue = this.sfCrudService.armarNuevaDireccion(\"string\", this.dialogElements[index].data, separador)\r\n let scope = this.dialogElements[index].scope.replaceAll('.properties', '')\r\n if (index == 0) {\r\n jsonpath.value(this.sfCrudService.getData(this.indexCrud), scope, newValue)\r\n }\r\n else {\r\n //Actualizarlo en un dialog anterior. Se crea una nueva referencia para que el compilador detecte cambios en el objeto data y lo recargue\r\n let newDataPreviousDialog = _.cloneDeep(this.dialogElements[index - 1].data);\r\n jsonpath.value(newDataPreviousDialog, scope, newValue)\r\n this.dialogElements[index - 1].data = newDataPreviousDialog;\r\n }\r\n this.stepService.desiredIndex = undefined\r\n this.stepService.requestApproved =true\r\n }\r\n\r\n onCloseDialog(index: number){\r\n let validated = true;\r\n if (this.dialogElements[index].esquema.validations){\r\n const op = new Operation()\r\n op.validations = this.dialogElements[index].esquema.validations\r\n validated = this.validateData(op, this.dialogElements[index].data, this.sfCrudService.getRegistro(this.indexCrud).conditions || [])\r\n }\r\n if (validated){\r\n switch (this.dialogElements[index].operation) {\r\n case \"c\":\r\n this.onCloseAddItem(index)\r\n break;\r\n case \"u\":\r\n this.onCloseEditRow(index)\r\n break;\r\n case \"address\":\r\n this.onCloseAddress(index)\r\n break;\r\n }\r\n this.removeDialogItem()\r\n }\r\n\r\n }\r\n\r\n removeDialogItem(){\r\n this.dialogElements.pop()\r\n this.displays.pop()\r\n }\r\n\r\n setLabelSumbit() {\r\n let x: any = {\"c\": { label: 'Guardar', icon: 'pi pi-save' },\r\n \"u\": { label: 'Actualizar', icon: 'pi pi-sync' },\r\n \"d\": { label: 'Eliminar', icon: 'pi pi-trash' }\r\n }\r\n\r\n this.btnSubmit = x[this.sfCrudService.getTrx(0)]\r\n }\r\n\r\n back() {\r\n let back = \"\";\r\n if (this.back_route && this.back_route != \"\") {\r\n back = this.back_route;\r\n }\r\n else{\r\n back = this.sfCrudService.registros[0].btnBack;\r\n }\r\n console.log(\"Back to: \", back)\r\n this.router.navigateByUrl(back);\r\n }\r\n\r\n private cargarMascarasDirecciones(){\r\n if (this.sfCrudService.mascaras.length == 0){\r\n return this.generalService.genericRequest(\"GET\", `${this.generalService.generales}/General/getConfiguracionKatios/${this.idKatios}`).then((res: any) => {\r\n this.sfCrudService.mascaras = JSON.parse(res).RESPUESTA.MascarasDirecciones.Mascaras.Mascara\r\n })\r\n }\r\n return Promise.resolve(this.sfCrudService.mascaras)\r\n }\r\n}\r\n\r\n\r\ninterface DialogElement{data: any\r\n uiEsquema: any,\r\n esquema: Shema,\r\n scope: string, index: number,\r\n operation: string,//\"c\" | \"u\" | \"address\"\r\n isAddressDialog?: boolean\r\n }\r\n","<div class=\"card\">\r\n <!--TODO convertir en template y editarla en -->\r\n <h5 *ngIf=\"sfCrudService.registros.length >= 1\" class=\"card-header mb-2\" style=\"display: flex; justify-content: space-between;align-items: center;\">\r\n <span>{{sfCrudService.registros[0]?.label || idForm.replaceAll('_', ' ')}} {{ids.length > 0 ? '-' + ids[0] : ''}}</span>\r\n <button *ngIf=\"sfCrudService.registros[0]?.canBack\" pButton pRipple type=\"button\" icon=\"pi pi-arrow-left\" (click)=\"back()\"></button>\r\n </h5>\r\n <div *ngIf=\"items.length > 1\">\r\n <app-step [items]=\"items\"></app-step>\r\n </div>\r\n <div *ngIf=\"items.length == 1\">\r\n <app-form [data]=\"sfCrudService.dataset[0]\" [esquema]=\"sfCrudService.esquemas[0]\"\r\n [uiEsquema]=\"sfCrudService.uiEsquemas[0]\" [isDialog]=\"false\"></app-form>\r\n\r\n <!--renderizar un codigo personalizado desde el componente padre o renderizar el que se tiene por defecto-->\r\n <ng-container *ngTemplateOutlet=\"buttonsFooterTemplate || defaultButtonsFooterTemplate\"></ng-container>\r\n <ng-template #defaultButtonsFooterTemplate>\r\n <div class=\"card-footer mt-2\" *ngIf=\"btnSubmit\">\r\n <button pButton pRipple type=\"button\" [icon]=\"btnSubmit.icon\" [label]=\"btnSubmit.label\" (click)=\"onClickBtnSubmit()\"></button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<span *ngFor=\"let item of dialogElements; let $index=index\">\r\n <p-dialog [(visible)]=\"displays[$index]\" [modal]=\"true\" [header]=\"'Detalle'\" [closable]=\"false\">\r\n <!-- TODO header = currentElement.element.label ? currentElement.element.label: -->\r\n <app-form [data]=\"item.data\" [esquema]=\"item.esquema\" [uiEsquema]=\"item.uiEsquema\" [isDialog]=\"true\"\r\n [id]=\"ids[indexCrud]\" [isAddressDialog]=\"item.isAddressDialog === true\" [separador]=\"item.separador\"></app-form>\r\n <ng-template pTemplate=\"footer\">\r\n <p-button icon=\"pi pi-times\" (onClick)=\"removeDialogItem()\" label=\"Cancelar\" ></p-button>\r\n <p-button icon=\"pi pi-check\" [disabled]=\"item.esquema.disabled === true\" (onClick)=\"onCloseDialog($index)\" label=\"Ok\" pAutoFocus\r\n [autofocus]=\"true\"></p-button>\r\n </ng-template>\r\n </p-dialog>\r\n</span>\r\n\r\n<p-toast *ngIf=\"dialogElements.length == 0\">\r\n <ng-template let-message pTemplate=\"message\">\r\n <div class=\"custom-toast\">\r\n <i class=\"pi\" [ngClass]=\"{\r\n 'pi-check-circle': message.severity === 'success',\r\n 'pi-info-circle': message.severity === 'info',\r\n 'pi-exclamation-triangle': message.severity === 'warn',\r\n 'pi-times-circle': message.severity === 'error'\r\n }\"></i>\r\n <div class=\"custom-toast-content\">\r\n <span class=\"custom-toast-detail\">{{message.detail}}</span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</p-toast>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-sf-crud',\r\n template: `\r\n <p>\r\n sf-crud works!\r\n </p>\r\n `,\r\n styles: [\r\n ],\r\n standalone: false\r\n})\r\nexport class SfCrudComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { FormComponent } from './components/form/form.component';\r\nimport { RegistroComponent } from './components/registro/registro.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {path: ':idStep',\r\n component: FormComponent\r\n }\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class SfCrudRoutingModule { }","import { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n//=========================================================\r\n// PrimeNG Modules\r\n//=========================================================\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AvatarGroupModule } from 'primeng/avatargroup';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { BlockUIModule } from 'primeng/blockui';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { CarouselModule } from 'primeng/carousel';\r\nimport { CascadeSelectModule } from 'primeng/cascadeselect';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { ContextMenuModule } from 'primeng/contextmenu';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { GalleriaModule } from 'primeng/galleria';\r\nimport { InplaceModule } from 'primeng/inplace';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { KnobModule } from 'primeng/knob';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { MegaMenuModule } from 'primeng/megamenu';\r\nimport { MenubarModule } from 'primeng/menubar';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport {MessageModule} from 'primeng/message';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { OrganizationChartModule } from 'primeng/organizationchart';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { ProgressBarModule } from 'primeng/progressbar';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { RatingModule } from 'primeng/rating';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { ScrollTopModule } from 'primeng/scrolltop';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n// SlideMenuModule removed in PrimeNG 18\r\nimport { SliderModule } from 'primeng/slider';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { SplitterModule } from 'primeng/splitter';\r\nimport { StepsModule } from 'primeng/steps';\r\nimport { TableModule } from 'primeng/table';\r\nimport { TabMenuModule } from 'primeng/tabmenu';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { TerminalModule } from 'primeng/terminal';\r\nimport { TieredMenuModule } from 'primeng/tieredmenu';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { DatePickerModule } from 'primeng/datepicker'; \r\nimport { FluidModule } from 'primeng/fluid';\r\n\r\n//=========================================================\r\n// Componets\r\n//=========================================================\r\nimport { SfCrudComponent } from './sf-crud.component';\r\nimport { TableroComponent } from './components/tablero/tablero.component';\r\nimport { RegistroComponent } from './components/registro/registro.component';\r\nimport { ControlComponent } from './components/control/control.component';\r\nimport {FormComponent} from './components/form/form.component';\r\n\r\nimport { StepComponent } from './components/step/step.component';\r\nimport { SfCrudRoutingModule } from './sf-crud.routing.module';\r\nimport { SfPdfsignModule } from 'sf-pdfsign';\r\nimport { SfSimuladorModule } from 'sf-simulador';\r\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\r\nimport { SfAdoModule } from \"sf-ado\";\r\nimport { FormatAddressPipe } from './directives/format-address.pipe';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { SelectModule } from 'primeng/select';\r\n\r\n@NgModule({\r\n declarations: [\r\n SfCrudComponent,\r\n TableroComponent,\r\n RegistroComponent,\r\n ControlComponent,\r\n StepComponent,\r\n FormComponent,\r\n FileUploadComponent,\r\n FormatAddressPipe\r\n ],\r\n imports: [\r\n SfCrudRoutingModule,\r\n SfPdfsignModule,\r\n SfSimuladorModule,\r\n AccordionModule,\r\n AutoCompleteModule,\r\n AvatarGroupModule,\r\n AvatarModule,\r\n BadgeModule,\r\n BlockUIModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n CardModule,\r\n CarouselModule,\r\n CascadeSelectModule,\r\n CheckboxModule,\r\n ChipModule,\r\n ChipModule,\r\n ColorPickerModule,\r\n ConfirmDialogModule,\r\n ConfirmPopupModule,\r\n ContextMenuModule,\r\n DialogModule,\r\n DividerModule,\r\n DropdownModule,\r\n DatePickerModule,\r\n FieldsetModule,\r\n FileUploadModule,\r\n FluidModule,\r\n FormsModule,\r\n GalleriaModule,\r\n HttpClientModule,\r\n RouterModule,\r\n InplaceModule,\r\n InputMaskModule,\r\n InputNumberModule,\r\n InputSwitchModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n IconFieldModule,\r\n InputIconModule,\r\n TextareaModule,\r\n InputTextModule,\r\n KnobModule,\r\n ListboxModule,\r\n MegaMenuModule,\r\n MenubarModule,\r\n MenuModule,\r\n MessageModule,\r\n MultiSelectModule,\r\n OrganizationChartModule,\r\n OverlayPanelModule,\r\n PanelMenuModule,\r\n PanelModule,\r\n PasswordModule,\r\n ProgressBarModule,\r\n RadioButtonModule,\r\n RatingModule,\r\n RippleModule,\r\n ScrollPanelModule,\r\n ScrollTopModule,\r\n SelectButtonModule,\r\n SidebarModule,\r\n SkeletonModule,\r\n SliderModule,\r\n SplitButtonModule,\r\n SplitterModule,\r\n StepsModule,\r\n SelectModule,\r\n TableModule,\r\n TabMenuModule,\r\n TabViewModule,\r\n TagModule,\r\n TerminalModule,\r\n TieredMenuModule,\r\n TimelineModule,\r\n ToastModule,\r\n ToggleButtonModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n TreeModule,\r\n SfAdoModule\r\n],\r\n exports: [\r\n SfCrudComponent,\r\n TableroComponent,\r\n RegistroComponent,\r\n ControlComponent\r\n ]\r\n})\r\nexport class SfCrudModule {}\r\n","/*\r\n * Public API Surface of sf-crud\r\n */\r\n\r\nexport * from './lib/components/tablero/tablero.component';\r\nexport * from './lib/components/registro/registro.component';\r\nexport * from './lib/components/control/control.component';\r\nexport * from './lib/sf-crud.component';\r\nexport * from './lib/components/form/form.component';\r\nexport * from './lib/sf-crud.module';\r\nexport * from './lib/sf-crud.service';\r\nexport * from './lib/shared/services/step.service';\r\nexport * from './lib/shared/services/notification.service';\r\nexport * from './lib/shared/models/crud-config.model';\r\nexport * from './lib/shared/models/Empresa.model';\r\nexport * from './lib/shared/models/shema.model';\r\nexport * from './lib/shared/injections/token';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.GeneralService","i3.SfCrudService","i4.StepService","i5.CrudDialogService","i6","i7","i8","i1.SfCrudService","i2.StepService","i3","i4","i2","i2.SfCrudService","i3.NotificationService","i5","i11","i12","i13","i14","i15","i16","i17","i18.FileUploadComponent","i19.FormatAddressPipe","i9","i15.ControlComponent","i16.FormatAddressPipe","i4.SfCrudService","i5.StepService","i8.NotificationService","i10","i14.StepComponent","i15.FormComponent"],"mappings":"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"}
1
+ {"version":3,"file":"sf-crud.mjs","sources":["../../../projects/sf-crud/src/lib/shared/models/crud-config.model.ts","../../../projects/sf-crud/src/lib/shared/services/general.service.ts","../../../projects/sf-crud/src/lib/shared/models/Conditions.model.ts","../../../projects/sf-crud/src/lib/sf-crud.service.ts","../../../projects/sf-crud/src/lib/shared/services/step.service.ts","../../../projects/sf-crud/src/lib/shared/injections/token.ts","../../../projects/sf-crud/src/lib/shared/services/dialog.service.ts","../../../projects/sf-crud/src/lib/components/tablero/tablero.component.ts","../../../projects/sf-crud/src/lib/components/tablero/tablero.component.html","../../../projects/sf-crud/src/lib/shared/services/notification.service.ts","../../../projects/sf-crud/src/lib/components/step/step.component.ts","../../../projects/sf-crud/src/lib/components/step/step.component.html","../../../projects/sf-crud/src/lib/shared/models/shema.model.ts","../../../projects/sf-crud/src/lib/components/file-upload/file-upload.component.ts","../../../projects/sf-crud/src/lib/components/file-upload/file-upload.component.html","../../../projects/sf-crud/src/lib/directives/format-address.pipe.ts","../../../projects/sf-crud/src/lib/components/control/control.component.ts","../../../projects/sf-crud/src/lib/components/control/control.component.html","../../../projects/sf-crud/src/lib/components/form/form.component.ts","../../../projects/sf-crud/src/lib/components/form/form.component.html","../../../projects/sf-crud/src/lib/components/registro/registro.component.ts","../../../projects/sf-crud/src/lib/components/registro/registro.component.html","../../../projects/sf-crud/src/lib/sf-crud.component.ts","../../../projects/sf-crud/src/lib/sf-crud.routing.module.ts","../../../projects/sf-crud/src/lib/sf-crud.module.ts","../../../projects/sf-crud/src/public-api.ts","../../../projects/sf-crud/src/sf-crud.ts"],"sourcesContent":["// import { Message } from \"primeng/api\"; // Removed in PrimeNG 18\r\nimport { Shema } from \"./shema.model\";\r\nimport { Condition } from \"./Conditions.model\";\r\n\r\nexport class CrudConfig {\r\n idEntidad: string = '';\r\n uiEsquemas: any[] = [];\r\n esquemas: Shema[] = [];\r\n registros: ConfigRegistro[] = [];\r\n tablero: ConfigTablero | undefined;\r\n}\r\n\r\n\r\nexport class ConfigTablero {\r\n columns: any[] = [];\r\n endpoint: string = '';\r\n method: string = '';\r\n server: string = '';\r\n filters: string[] = [];\r\n keys: { key: string, scope?: string }[] = [];\r\n createButton?: any;\r\n dialog: any;\r\n}\r\n\r\nexport class ConfigRegistro {\r\n operations: Operation[] = [];\r\n btnBack: string = '';\r\n label?: string;\r\n canBack: boolean = false;\r\n constructionId?: ConstructionId;\r\n keys?: Key[];\r\n conditions?: Condition[]= [];\r\n backWhenSubmit: boolean = false;\r\n}\r\n\r\nexport class Operation {\r\n type!: \"update\" | \"create\" | \"read\" | \"ado\" | \"ServerSc\";\r\n server?: string;\r\n endpoint?: string;\r\n method: string = '';\r\n validations?: Validations;\r\n url?: string;\r\n changeTrx: {index: number, trx: string}[] = [];\r\n errorChecking?: RequestChecking;\r\n answerChecking?: RequestChecking;\r\n keysEsquema?: keyEsquema[];\r\n keys?: Key[]\r\n\r\n}\r\n\r\nexport class ConstructionId {\r\n indexStep!: number;\r\n path!: string;\r\n keys?: Key[]\r\n}\r\n\r\nexport class Validations {\r\n type: string = '';\r\n required?: ValidationRequired[] = [];\r\n equals?: ValidationEqual[] = [];\r\n different?: ValidationDifferent[] = [];\r\n server: string = '';\r\n endpoint: string = '';\r\n operations: any;\r\n}\r\n\r\nclass ValidationRequired{\r\n field!: string;\r\n message!: string;\r\n conditions?: number[];\r\n validation?: string;\r\n}\r\nclass ValidationEqual extends ValidationRequired{\r\n constructor(\r\n public value: any\r\n ){\r\n super()\r\n }\r\n}\r\n\r\nclass ValidationDifferent extends ValidationRequired{\r\n constructor(\r\n public value: any\r\n ){\r\n super()\r\n }\r\n}\r\n\r\nexport class RequestChecking {\r\n constructor(\r\n public dynamics: any | undefined,\r\n public statics: any | undefined,\r\n public useSwal: boolean,\r\n public redirect: string | undefined,\r\n public cancelRedirect: string | undefined,\r\n public allowContinue: boolean,\r\n public parse: string | undefined\r\n ){}\r\n}\r\n\r\n\r\nexport class Key{\r\n key!: string;\r\n scope!: string;\r\n indexAnswer?: number;\r\n indexData?: number;\r\n indexId?: number;\r\n data?: string;\r\n overrideControl?: OverrideConfig;\r\n}\r\n\r\nexport class OverrideConfig {\r\n property!: string;\r\n value: any;\r\n elseValue?: any;\r\n conditions?: number[];\r\n newPropertyValue?: any;\r\n elseNewPropertyValue?: any;\r\n}\r\n\r\nexport class keyEsquema{\r\n key?: string;\r\n scope!: string;\r\n indexData?: number;\r\n indexId?: number;\r\n isArray?: boolean;\r\n indexKey?: number;\r\n canBeValueUndefined?: boolean;\r\n}\r\n\r\n\r\n\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { CrudConfig } from '../models/crud-config.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GeneralService {\r\n public generales: string = '';\r\n public jsonConfig: any;\r\n private _idKatios!: string;\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {\r\n }\r\n\r\n set environment(val){\r\n this.jsonConfig = val \r\n this.generales = this.jsonConfig?.ServidorGenerales;\r\n }\r\n\r\n get environment(){\r\n if (!this.jsonConfig) this.environment = JSON.parse(sessionStorage.getItem('ConfigJSON') || '{}');\r\n return this.jsonConfig\r\n }\r\n\r\n \r\n get idKatios(){\r\n return this._idKatios\r\n }\r\n\r\n set idKatios(value: string){\r\n this._idKatios = value\r\n }\r\n\r\n\r\n async getCrudByEntidad(idKatios: string, idEntidad: string): Promise<CrudConfig | undefined> {\r\n return this.http.get<CrudConfig>(`${this.generales}crud/forms/${idKatios}/${idEntidad}`).toPromise();\r\n }\r\n\r\n async getFiles(urls: string[], names: string[]): Promise<File[]> {\r\n\treturn Promise.all(\r\n\t\turls.map(async (url, i) => {\r\n\t\t\tconst response = await this.http.get(url, { responseType: 'blob' }).toPromise();\r\n\t\t\tconst arrayBuffer = await response!.arrayBuffer();\r\n\r\n\t\t\tconst tipo = names[i].includes(\".pdf\") ? 'application/pdf' : \"image/\" + this.getExt(names[i]);\r\n\t\t\treturn new File([new Uint8Array(arrayBuffer)], names[i], { type: tipo });\r\n\t\t})\r\n\t);\r\n\t}\r\n\r\n getExt(name: string) {\r\n let ext = undefined\r\n let aux = name.split('.')\r\n if (aux.length > 0) ext = aux[aux.length - 1]\r\n return ext\r\n }\r\n\r\n async genericRequest(method: string, url: string, data?: any) {\r\n switch (method) {\r\n case 'GET':\r\n return this.http.get(url).toPromise()\r\n case 'POST':\r\n return this.http.post(url, data).toPromise()\r\n case 'PUT':\r\n return this.http.put(url, data).toPromise()\r\n case 'DELETE':\r\n return this.http.delete(url, data).toPromise()\r\n default:\r\n throw new Error(\"Invalid method\")\r\n }\r\n }\r\n}\r\n","import * as jsonpath from \"jsonpath\";\r\n\r\nexport abstract class Condition {\r\n\r\n constructor(\r\n public type: \"equal\" | \"different\" | \"or\" | \"and\",\r\n public attrs: any,\r\n public indexData: number | undefined\r\n ){\r\n }\r\n\r\n\r\n static instanceContidion(index: number, allConditions: Condition[]): Condition{\r\n let c: Condition;\r\n switch (allConditions[index].type) {\r\n case \"different\":\r\n c = new ConditionDifferent(allConditions[index].attrs.field, allConditions[index].attrs.value, allConditions[index].attrs.grado || 2, allConditions[index].indexData)\r\n break;\r\n case \"or\":\r\n const subconditions = (allConditions[index].attrs.conditions as number[]).map(i => this.instanceContidion(i, allConditions))\r\n c = new ConditionOr(subconditions, allConditions[index].indexData)\r\n break;\r\n case \"and\":\r\n const subconditions2 = (allConditions[index].attrs.conditions as number[]).map(i => this.instanceContidion(i, allConditions))\r\n c = new ConditionAnd(subconditions2, allConditions[index].indexData)\r\n break;\r\n case \"equal\":\r\n c = new ConditionEqual(allConditions[index].attrs.field, allConditions[index].attrs.value, allConditions[index].attrs.grado || 2, allConditions[index].indexData)\r\n break;\r\n }\r\n return c;\r\n }\r\n\r\n abstract isValid(data: any): boolean;\r\n}\r\n\r\nexport class ConditionEqual extends Condition{\r\n constructor(\r\n public field: string,\r\n public value: any,\r\n public grado: number,\r\n indexData: number | undefined){\r\n super(\"equal\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n let cumple = true\r\n const res = jsonpath.query(data, this.field)\r\n if (res.length > 0 && this.grado == 2) cumple = this.value == res[0]\r\n else if (res.length > 0 && this.grado == 3) cumple = this.value === res[0]\r\n return cumple;\r\n }\r\n\r\n}\r\n\r\nexport class ConditionDifferent extends Condition{\r\n constructor(\r\n public field: string,\r\n public value: any,\r\n public grado: number,\r\n indexData: number | undefined\r\n ){\r\n super(\"different\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n let cumple = true\r\n const res = jsonpath.query(data, this.field)\r\n if (res.length > 0 && this.grado == 2) cumple = this.value != res[0]\r\n else if (res.length > 0 && this.grado == 3) cumple = this.value !== res[0]\r\n return cumple;\r\n }\r\n}\r\n\r\nexport class ConditionOr extends Condition{\r\n constructor(\r\n public conditions: Condition[],\r\n indexData: number | undefined\r\n ){\r\n super(\"or\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n return this.conditions.some(c => c.isValid(data));\r\n }\r\n}\r\n\r\nexport class ConditionAnd extends Condition{\r\n constructor(\r\n public conditions: Condition[],\r\n indexData: number | undefined){\r\n super(\"and\", {}, indexData)\r\n }\r\n\r\n override isValid(data: any): boolean {\r\n return this.conditions.every(c => c.isValid(data));\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Shema } from './shared/models/shema.model';\r\nimport { ConfigRegistro, Key, Operation, keyEsquema } from './shared/models/crud-config.model';\r\nimport { Empresa } from './shared/models/Empresa.model';\r\nimport { Condition } from './shared/models/Conditions.model';\r\nimport { Reason } from './shared/models/Reason.model';\r\nimport moment from 'moment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SfCrudService {\r\n private _esquemas: Shema[] = [];\r\n private _uiEsquemas: any[] = []\r\n private _registros: ConfigRegistro[] = [];\r\n private _answers: any[] = [];\r\n private _dataSet :any[] = [];\r\n private _ids :string[] = [];\r\n private __index: number = 0;\r\n private _idKatios!: string;\r\n private _configEmpresa: Empresa | undefined = undefined;\r\n private _trx: string[] = [];\r\n private jsonConfig: any;\r\n private _changeData = new BehaviorSubject<ChangeData | undefined>(undefined);\r\n private __formLoading = new BehaviorSubject<Loading>({inProgress: false, target: undefined});\r\n private _dataExt: any;\r\n private _tfmUser: any;\r\n private _crudLoaded = new BehaviorSubject(false);\r\n private _mascaras: Mascara[] = []\r\n private _disabledFields = new BehaviorSubject<{fields: string[], disabled: boolean}>({fields: [], disabled: false});\r\n private _operation = new BehaviorSubject<any>({});\r\n \r\n disabledFields$ = this._disabledFields.asObservable();\r\n operation$ = this._operation.asObservable();\r\n\r\n\r\n notifyFieldsToDisable(fields: string[], disabled: boolean = true) {\r\n this._disabledFields.next({fields, disabled});\r\n }\r\n\r\n notifyChangeOperation(object: any){\r\n this._operation.next(object);\r\n }\r\n\r\n get user(){\r\n if (!this._tfmUser) this._tfmUser = JSON.parse(localStorage.getItem(\"oSessionTFM\")!)\r\n return this._tfmUser\r\n }\r\n\r\n get currentOperation(){\r\n return this.registros[this.index].operations.find(x => x.type.startsWith(this._trx[this.index]))\r\n }\r\n\r\n set environment(val: any){\r\n this.jsonConfig = val\r\n }\r\n\r\n get environment(){\r\n return this.jsonConfig\r\n }\r\n\r\n get onCrudLoaded$(){\r\n return this._crudLoaded.asObservable()\r\n }\r\n\r\n set crudLoaded(value: boolean){\r\n this._crudLoaded.next(value)\r\n }\r\n\r\n get dataExt(){\r\n return this._dataExt\r\n }\r\n\r\n set dataExt(val){\r\n this._dataExt = val\r\n }\r\n\r\n get index(){\r\n return this.__index\r\n }\r\n\r\n set index(value: number){\r\n this.__index = value\r\n }\r\n\r\n get idKatios(){\r\n return this._idKatios\r\n }\r\n\r\n set idKatios(value: string){\r\n this._idKatios = value?.trim()?.toUpperCase()\r\n }\r\n\r\n get configEmpresa(): Empresa | undefined{\r\n return this._configEmpresa\r\n }\r\n\r\n set configEmpresa(value: Empresa | undefined){\r\n this._configEmpresa = value\r\n }\r\n\r\n get mascaras(){\r\n return this._mascaras\r\n }\r\n\r\n set mascaras(mascaras: Mascara[]){\r\n this._mascaras = mascaras\r\n }\r\n\r\n getURL(operation: Operation, index: number | undefined = undefined, id: any=undefined){\r\n\r\n let url = operation.url || `${this.jsonConfig[operation.server!]}${operation.endpoint}`\r\n url = url.replace('@idKatios', this.idKatios)\r\n if (id) url = url.replace('@id', id)\r\n\r\n url = this.applyStringKeys(url, index)\r\n return url\r\n }\r\n\r\n getRegistro(index: number){\r\n return this._registros[index];\r\n }\r\n\r\n getId(index: number): string {\r\n return this._ids.length == 1 ? this._ids[0] : this._ids[index];\r\n }\r\n\r\n get dataset(){\r\n return this._dataSet\r\n }\r\n getData(index: number){\r\n return this._dataSet.length == 1 ? this._dataSet[0] : this._dataSet[index];\r\n }\r\n\r\n\r\n getTrx(index: number): string {\r\n return this._trx[index]\r\n }\r\n\r\n get totalData(){\r\n return this._dataSet.length\r\n }\r\n\r\n get totalRegistros(){\r\n return this._registros.length\r\n }\r\n\r\n get uiEsquemas(){\r\n return this._uiEsquemas\r\n }\r\n\r\n getEsquema(index: number){\r\n return this._esquemas.length == 1 ? this._esquemas[0] : this._esquemas[index];\r\n }\r\n\r\n reset(){\r\n this._ids = []\r\n this._dataSet = []\r\n }\r\n\r\n getURLRedirect(initialURL: string){\r\n let finalUrl = this.applyStringKeys(initialURL, undefined)\r\n finalUrl = finalUrl.replace(\"@URLBASE\", window.location.href.split('?')[0])\r\n return finalUrl\r\n }\r\n\r\n getUIEsquema(index: number){\r\n return this._uiEsquemas[index];\r\n }\r\n\r\n\r\n /**\r\n * using data, apply each keyEsquema over each dataset indicated on indexData of each key\r\n * @param data\r\n * @param content\r\n * @returns\r\n */\r\n applyObjectKeys(data: any, keysEsquema: keyEsquema[], registro: ConfigRegistro): any{\r\n if (!data || typeof data !== 'object') {\r\n console.warn('applyObjectKeys received invalid data:', data);\r\n return data;\r\n }\r\n\r\n for (let i = 0; i < keysEsquema.length; i++) {\r\n const opt = keysEsquema[i];\r\n let value = undefined;\r\n if (opt.indexKey){\r\n let keyFound = (registro.keys ?? [undefined])[opt.indexKey]\r\n this.applyKey(keyFound, registro, data)\r\n }\r\n else if (opt.indexData !== undefined && opt.scope) {\r\n try {\r\n if (opt.isArray){\r\n value = jsonpath.query(data, opt.scope)\r\n } else {\r\n const result = jsonpath.query(data, opt.scope);\r\n value = result.length > 0 ? result[0] : undefined;\r\n }\r\n } catch (err) {\r\n console.warn('Error querying jsonpath:', opt.scope, err);\r\n continue;\r\n }\r\n }\r\n if (opt.key == \"$\" && value && typeof value === 'object') {\r\n Object.assign(this._dataSet[opt.indexData!], value)\r\n }\r\n else if (opt.key && ((value !== undefined && value !== null) || (opt.canBeValueUndefined === undefined || opt.canBeValueUndefined === true))) {\r\n try {\r\n jsonpath.value(this._dataSet[opt.indexData!], opt.key, value)\r\n } catch (err) {\r\n console.warn('Error setting jsonpath value:', opt.key, err);\r\n }\r\n }\r\n }\r\n return data\r\n }\r\n\r\n\r\n applyKey(key: Key | undefined, registro: ConfigRegistro, data: any){\r\n if (key?.overrideControl){\r\n let newVal = undefined;\r\n let esquemaToSet = this.getControl(key.scope, this.esquemas[key.indexData ?? this.index])\r\n if (!esquemaToSet) {\r\n console.error({message: \"la key esta mal configurada\", data: key})\r\n return;\r\n }\r\n let completed = this.isConditionsCompleted(key.overrideControl.conditions ?? [], registro.conditions || [], data)\r\n if (key.overrideControl?.property) jsonpath.value(esquemaToSet, key.overrideControl.property, completed ? key.overrideControl.value : key.overrideControl.elseValue)\r\n\r\n if (completed && key.overrideControl.newPropertyValue !== undefined){\r\n if (key.overrideControl.newPropertyValue == 'RESETOBJECT') newVal = this.createObject(esquemaToSet, this.currentOperation)\r\n else newVal = key.overrideControl.newPropertyValue\r\n }else if (!completed && key.overrideControl.elseNewPropertyValue !== undefined){\r\n if (key.overrideControl.elseNewPropertyValue == 'RESETOBJECT') newVal = this.createObject(esquemaToSet, this.currentOperation)\r\n else newVal = key.overrideControl.elseNewPropertyValue\r\n }\r\n if (newVal !== undefined) jsonpath.value(this._dataSet[key.indexData ?? this.index], key.scope.replaceAll('..properties', ''), newVal)\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Validate conditions on datas\r\n * @param conditions\r\n * @param index\r\n */\r\n isConditionsCompleted(iConditions: number[], conditions: Condition[], data: any): boolean {\r\n let cumple = true\r\n iConditions.forEach( iCond => {\r\n const c = Condition.instanceContidion(iCond, conditions)\r\n let dataToEvaluate = c.indexData !== undefined ? this._dataSet[c.indexData] : data\r\n if (!c.isValid(dataToEvaluate)) cumple = false\r\n })\r\n return cumple\r\n }\r\n /**\r\n * Apply each key from register over string content\r\n * @param indexRegistro\r\n * @param content\r\n * @returns\r\n */\r\n applyStringKeys(content: string, index: number | undefined = undefined): string{\r\n let indexRegistro = index || this.__index\r\n this._registros[indexRegistro].keys?.forEach((opt) => {\r\n let value;\r\n if (opt.indexId !== undefined && opt.indexId < this._ids.length) value = this._ids[opt.indexId]\r\n else if (opt.indexAnswer !== undefined && opt.indexAnswer < this._answers.length) value = jsonpath.query(this._answers[opt.indexAnswer], opt.scope)[0]\r\n else if (opt.indexData !== undefined) value = jsonpath.query(this._dataSet[opt.indexData], opt.scope)[0]\r\n if (value === null) value = ''\r\n content = content.replace(opt.key, value)\r\n })\r\n return content\r\n }\r\n\r\n validateDataLocal(operation: Operation, data: any, conditions: Condition[]) {\r\n const err: string[] = []\r\n //Solo si se cumple la condicion, se valida\r\n operation.validations?.required?.forEach(x => {\r\n const cumpleCond = x.conditions ? this.isConditionsCompleted(x.conditions, conditions, data): (x.validation ? this.isValidationSuccess(x.validation,data) : true);\r\n if (cumpleCond && (!jsonpath.query(data, x.field)[0] ||\r\n (Array.isArray(jsonpath.query(data, x.field)[0]) && jsonpath.query(data, x.field)[0].length == 0))) err.push(x.message);\r\n })\r\n\r\n operation.validations?.different?.forEach(x =>{\r\n const cumpleCond = x.conditions ? this.isConditionsCompleted(x.conditions, conditions, data): true;\r\n if (cumpleCond && jsonpath.query(data, x.field)[0] === x.value) err.push(x.message);\r\n })\r\n\r\n operation.validations?.equals?.forEach(x =>{\r\n const cumpleCond = x.conditions ? this.isConditionsCompleted(x.conditions, conditions, data): true;\r\n if (cumpleCond && jsonpath.query(data, x.field)[0] != x.value) err.push(x.message);\r\n })\r\n operation.validations?.operations?.forEach((op: any) => {\r\n switch (op.action) {\r\n case 'sumArray':\r\n const var1 = jsonpath.query(data, op.scope[0]).reduce((acc, cur) => acc += cur[op.key], 0);\r\n const var2 = jsonpath.query(data, op.scope[1]).reduce((acc, cur) => acc += cur[op.key], 0);\r\n if (var1 != var2) err.push(op.message)\r\n break;\r\n default:\r\n break;\r\n }\r\n })\r\n return err;\r\n }\r\n\r\n /**\r\n * Removes fields marked with uiOnly: true and empty/null values from the data object\r\n * @param data The data object to clean\r\n * @param schema The schema that describes the data structure\r\n * @returns A new object without uiOnly fields and empty values\r\n */\r\n removeUiOnlyFields(data: any, schema: Shema): any {\r\n if (!data || !schema || !schema.properties) return data;\r\n \r\n const result = { ...data };\r\n \r\n Object.entries(schema.properties).forEach(([key, property]) => {\r\n const propertySchema = property as Shema;\r\n const value = result[key];\r\n \r\n const shouldRemove = \r\n (propertySchema && propertySchema.uiOnly === true) ||\r\n value === null || value === undefined ||\r\n (typeof value === 'string' && value.trim() === '')\r\n \r\n if (shouldRemove) {\r\n delete result[key];\r\n } else if (propertySchema && propertySchema.type === 'object' && propertySchema.properties) {\r\n const cleanedNestedObject = this.removeUiOnlyFields(result[key], propertySchema);\r\n if (Object.keys(cleanedNestedObject).length > 0) {\r\n result[key] = cleanedNestedObject;\r\n } else {\r\n delete result[key];\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n isValidationSuccess(validation: string, data: any){\r\n const value = jsonpath.query(data, validation);\r\n if(value.length == 0) return false\r\n return !value[0];\r\n }\r\n\r\n set esquemas(esquemas: Shema[]){\r\n this._esquemas = esquemas\r\n }\r\n\r\n get esquemas(){\r\n return this._esquemas\r\n }\r\n\r\n set ids(ids: string[]){\r\n this._ids = ids\r\n }\r\n\r\n set uiEsquemas(uiEsquemas: any[]){\r\n this._uiEsquemas = uiEsquemas\r\n }\r\n\r\n get registros(){\r\n return this._registros\r\n }\r\n\r\n set registros(registros: ConfigRegistro[]){\r\n this._registros = registros\r\n }\r\n\r\n setDataSet(data: any, index: number | undefined = undefined){\r\n index = index ? index : this.__index\r\n if (index >= this.totalData) {\r\n this._dataSet.push(data)\r\n }\r\n }\r\n\r\n\r\n setTrx(trx: any, index: number){\r\n if (Array.isArray(trx)) this._trx = trx;\r\n else if (index >= this._trx.length) this._trx.push(trx)\r\n else this._trx[index] = trx\r\n }\r\n\r\n setAnswers(answer: any, index: number){\r\n if (Array.isArray(answer)) this._answers = answer;\r\n else {\r\n if (index >= this._answers.length) this._answers.push(answer);\r\n else this._answers[index] = answer;\r\n }\r\n }\r\n\r\n getControl(scope: string, esquema: Shema) {\r\n return jsonpath.query(esquema, scope)[0];\r\n }\r\n\r\n\r\n getValue(scope: any, data: any) {\r\n return jsonpath.query(data, scope.replaceAll('.properties', ''))[0];\r\n }\r\n\r\n createObject(esquema: Shema, operation: Operation | undefined) {\r\n const object: any = {};\r\n switch (esquema.type) {\r\n case 'numeric':\r\n case 'string':\r\n case 'date':\r\n if (esquema.default && operation){\r\n return this.setDefaultValue(esquema.default, operation)\r\n }\r\n else return esquema.default ?? null;\r\n case 'boolean':\r\n return esquema?.default || false;\r\n case 'array':\r\n return [];\r\n case 'file':\r\n return null;\r\n case 'object':\r\n Object.getOwnPropertyNames(esquema?.properties).forEach(key => {\r\n let aux = esquema?.properties[key]\r\n if (aux) object[key] = this.createObject(aux, operation)\r\n });\r\n return object;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n getValueKey(key: Key | undefined): any {\r\n let data;\r\n switch (key?.data || 'externa') {\r\n case \"user\":\r\n data = this.user\r\n break;\r\n default:\r\n data = this.dataExt\r\n break;\r\n }\r\n if (data && key){\r\n const aux = jsonpath.query(data, key.scope)\r\n if (aux.length == 0) return undefined\r\n if (aux.length == 1) return aux[0]\r\n else return aux\r\n }\r\n return undefined\r\n }\r\n\r\n\r\n setDefaultValue(value: any, operation: Operation) {\r\n let data = null;\r\n if (value.key && operation.keys){\r\n data = this.getValueKey(operation.keys.find(k => k.key == value.key)!)\r\n value = data\r\n }\r\n switch (value) {\r\n case '@uactivo':\r\n data = `${this.user.UsuarioSistema.TDOC}-${this.user.UsuarioSistema.NDOC}`\r\n break;\r\n case '@tdocactivo':\r\n data = this.user.UsuarioSistema.TDOC\r\n break;\r\n case '@ndocactivo':\r\n data = this.user.UsuarioSistema.NDOC\r\n break;\r\n case '@hoy':\r\n data = new Date();\r\n break;\r\n default:\r\n data = value;\r\n break;\r\n }\r\n return data\r\n }\r\n\r\n /**\r\n * Validate if schema has pdfsign and it's signed, else return false\r\n * @param index\r\n * @returns\r\n */\r\n isSignedPDF(index: number){\r\n return this._dataSet[index].signed\r\n }\r\n\r\n get changeData$(){\r\n return this._changeData.asObservable()\r\n }\r\n\r\n set changeData(value: ChangeData){\r\n this._changeData.next(value)\r\n }\r\n\r\n get formLoading$(){\r\n return this.__formLoading.asObservable()\r\n }\r\n\r\n set formLoading(value: Loading){\r\n this.__formLoading.next(value)\r\n }\r\n\r\n loadSession() {\r\n const existSession = localStorage.getItem(\"esquemas\") !== null\r\n if (existSession){\r\n this._esquemas = JSON.parse(localStorage.getItem(\"esquemas\")!)\r\n this._uiEsquemas = JSON.parse(localStorage.getItem(\"uiEsquemas\")!)\r\n this._registros = JSON.parse(localStorage.getItem(\"registros\")!)\r\n this._dataSet = JSON.parse(localStorage.getItem(\"dataSet\")!)\r\n this._answers = JSON.parse(localStorage.getItem(\"answers\")!)\r\n this._trx = JSON.parse(localStorage.getItem(\"trx\")!)\r\n this.__index = +localStorage.getItem(\"index\")!\r\n localStorage.clear()\r\n }\r\n return existSession\r\n }\r\n\r\n get reasons(): Reason[]{\r\n const reasonsStorage =localStorage.getItem(\"reasons\")\r\n if (reasonsStorage) return <Reason[]>JSON.parse(reasonsStorage)\r\n return []\r\n }\r\n\r\n saveProgress(reasons: Reason[]){\r\n localStorage.setItem(\"reasons\", JSON.stringify(reasons))\r\n localStorage.setItem(\"esquemas\", JSON.stringify(this._esquemas))\r\n localStorage.setItem(\"trx\", JSON.stringify(this._trx))\r\n localStorage.setItem(\"uiEsquemas\", JSON.stringify(this._uiEsquemas))\r\n localStorage.setItem(\"registros\", JSON.stringify(this._registros))\r\n localStorage.setItem(\"dataSet\", JSON.stringify(this._dataSet))\r\n localStorage.setItem(\"answers\", JSON.stringify(this._answers))\r\n localStorage.setItem(\"index\", this.__index.toString())\r\n }\r\n\r\n public redirectToInicio(){\r\n window.location.href = window.location.href.split('?')[0]\r\n window.location.reload()\r\n }\r\n\r\n\r\napplyValuesOnEvent(event: string, esquema: Shema, key: string | undefined, data: any) {\r\n if (key) {\r\n if (esquema.properties[key][event]) {\r\n esquema.properties[key][event].forEach((value: { scope: string[], op: string, key?: string }) => {\r\n this.setValueEvent(data, value, esquema);\r\n })\r\n }\r\n } else {\r\n for (const key in esquema.properties) {\r\n if (esquema.properties[key][event]) {\r\n esquema.properties[key][event].forEach((value: any) => {\r\n this.setValueEvent(data, value, esquema);\r\n })\r\n }\r\n }\r\n }\r\n }\r\n\r\n setValueEvent(data: any, params: { scope: string[], op: string, key?: any, separator?: string }, esquema: Shema) {\r\n let date = moment(new Date());\r\n switch (params.op) {\r\n case 'sum':\r\n jsonpath.value(data, params.scope[1], jsonpath.query(data, params.scope[0]).reduce((acc, cur) => acc += params?.key ? cur[params.key] : cur, 0))\r\n break;\r\n case 'concat':\r\n let array: string[] = []\r\n params?.key?.reduce((acc: any[], cur: string) => {\r\n array.push(jsonpath.query(data, cur)[0])\r\n }, [])\r\n if (params?.separator) jsonpath.value(data, params.scope[0], array.join(params?.separator || ' '))\r\n break;\r\n case 'enable':\r\n jsonpath.value(esquema, params.scope[0], false)\r\n break;\r\n case 'disabled':\r\n jsonpath.value(esquema, params.scope[0], true)\r\n break;\r\n case 'replace:endpoint':\r\n jsonpath.value(esquema, params.scope[0], esquema.config.endpointtemp.replace(params.scope[1], jsonpath.query(data, `$..${params.key}`)))\r\n break;\r\n case 'setNull':\r\n jsonpath.value(data, `$.${params.key}`, null);\r\n break;\r\n case 'datediff:years':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'years'))\r\n break;\r\n case 'datediff:months':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'months'))\r\n break;\r\n case 'datediff:weeks':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'weeks'))\r\n break;\r\n case 'datediff:days':\r\n jsonpath.value(data, params.scope[0], date.diff(moment(jsonpath.query(data, params.scope[1])[0]), 'days'))\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n }\r\n\r\n armarNuevaDireccion(tipo: \"string\", dataDireccion: any, separador?: string){\r\n let resultado: any;\r\n if (tipo == \"string\"){\r\n resultado = \"\"\r\n this.mascaras.forEach(mascara => {\r\n mascara.Campo.forEach((campo, i) => {\r\n let valor =jsonpath.query(dataDireccion, `$.${campo.Id}`)[0]\r\n if (valor && i -1 >= 0 && mascara.Campo[i-1].Tipo.toLocaleLowerCase() == \"label\"){\r\n valor = mascara.Campo[i-1].Valor + valor\r\n }\r\n\r\n if (valor && !separador) resultado += valor + \" \"\r\n else if (separador) resultado += (valor ?? \"\") + separador\r\n })\r\n })\r\n }else {\r\n throw new Error(\"flujo sin realizar\");\r\n }\r\n\r\n return resultado;\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n export class ChangeData {\r\n constructor(\r\n public value: string,\r\n public scope: string,\r\n public index: number\r\n ){}\r\n }\r\n\r\n\r\n export interface Loading {\r\n target: HTMLElement | undefined,\r\n inProgress: boolean\r\n }\r\n\r\n\r\n export interface Mascara {\r\n linea: string,\r\n Campo: Campo[]\r\n }\r\n\r\n export interface Campo {\r\n Id: string,\r\n Tipo: string,\r\n Tamaño: string,\r\n Valores: string,\r\n Valor?: string //usado cuando el Tipo es Label\r\n }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StepService {\r\n\r\n\r\n private _requestApproval: Subject<{current: number, desired: any}> = new Subject();\r\n private _desiredIndex: number | undefined;\r\n private _customChildrenEvents: Subject<any> = new Subject();\r\n private _currentPosition = new BehaviorSubject(0);\r\n private _requestApproved = new BehaviorSubject(true);\r\n\r\n get currentIndex(){\r\n return this._currentPosition.getValue()\r\n }\r\n\r\n set currentIndex(value: number){\r\n this._currentPosition.next(value)\r\n }\r\n\r\n get currentIndex$(){\r\n return this._currentPosition.asObservable()\r\n }\r\n\r\n /*\r\n Envia una peticion para que se envie el formulario\r\n */\r\n set requestApproval(newPos: number){\r\n this._desiredIndex = newPos\r\n this._requestApproval.next({current: this.currentIndex, desired: newPos})\r\n }\r\n\r\n get requestApproval$(){\r\n return this._requestApproval.asObservable()\r\n }\r\n\r\n get requestApproved$(){\r\n return this._requestApproved.asObservable()\r\n }\r\n\r\n /**\r\n * Useful to deny or approve request made by requestAprroval\r\n */\r\n set requestApproved(approved: boolean){\r\n if (approved && this._desiredIndex !== undefined) this._currentPosition.next(this._desiredIndex)\r\n this._requestApproved.next(approved)\r\n }\r\n\r\n set desiredIndex(index:number | undefined){\r\n this._desiredIndex = index\r\n }\r\n\r\n addCustomChildrenEvent(name: string, data: any){\r\n this._customChildrenEvents.next({name, data})\r\n }\r\n\r\n reset(){\r\n //this._requestApproval = new BehaviorSubject({current:0, desired: undefined});\r\n //this._customChildrenEvents = new BehaviorSubject(undefined);\r\n }\r\n\r\n get customChildrenEvents$(){\r\n return this._customChildrenEvents.asObservable()\r\n }\r\n\r\n}\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { DialogEntry } from \"../models/dialog.model\";\r\n\r\nexport const APP_DIALOG_COMPONENT = new InjectionToken<DialogEntry[]>('APP_DIALOG_COMPONENT');","import { Inject, Injectable, Optional } from '@angular/core';\r\nimport { APP_DIALOG_COMPONENT } from '../injections/token';\r\nimport { DialogEntry } from '../models/dialog.model';\r\nimport { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CrudDialogService {\r\n private dialogMap = new Map<string, any>();\r\n\r\n constructor( \r\n @Optional() @Inject(APP_DIALOG_COMPONENT) dialogs: DialogEntry[] | undefined,\r\n public dialogService: DialogService\r\n) { \r\n (dialogs ?? []).forEach(e => this.dialogMap.set(e.key, e.component));\r\n}\r\n showDialog(key: string, config?: any){\r\n if(config) {\r\n const dialogKey = config[key];\r\n const dialogComponent = this.dialogMap.get(key);\r\n if(!dialogKey && !dialogComponent) return;\r\n this.dialogService.open(dialogComponent, {\r\n header: dialogKey.header || null,\r\n width: dialogKey.width || '30vw',\r\n breakpoints: dialogKey.breakpoints || { '1199px': '75vw', '575px': '90vw' },\r\n modal: dialogKey.modal || true,\r\n dismissableMask: dialogKey.dismissableMask || true,\r\n data: dialogKey.data || null\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, HostBinding, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { CrudConfig } from '../../shared/models/crud-config.model';\r\nimport { GeneralService } from '../../shared/services/general.service';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { Router } from '@angular/router';\r\nimport * as _ from \"lodash\";\r\nimport * as jsonpath from 'jsonpath';\r\nimport { Loading, SfCrudService } from '../../sf-crud.service';\r\nimport { StepService } from '../../shared/services/step.service';\r\nimport { CrudDialogService } from '../../shared/services/dialog.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'sf-crudtablero',\r\n templateUrl: './tablero.component.html',\r\n styleUrls: ['./tablero.component.css'],\r\n standalone: false,\r\n})\r\nexport class TableroComponent implements OnInit, OnChanges {\r\n\r\n @Input() opciones: any[] = [];\r\n @Input() idEntidad: string = '';\r\n @Input() idKatios: string = '';\r\n @Input() environment?: any; // Hacer opcional el environment\r\n @Input() user: any;\r\n @Input() dataExt: any;\r\n @Input() showCreateButton: boolean = false;\r\n @Output() onSelectAction: EventEmitter<any> = new EventEmitter<any>();\r\n @HostBinding(\"style.--secondary-color\") color2!: string;\r\n @HostBinding(\"style.--button-color\") colorButtons!: string;\r\n\r\n public items: MenuItem[] = [];\r\n public crudConfig: CrudConfig = new CrudConfig();\r\n public data: any[] = [];\r\n public initialData: any[] = [];\r\n public btn: { create: any, read: any, update: any, delete: any } = { create: undefined, read: undefined, update: undefined, delete: undefined }\r\n public itemSelected: any;\r\n private loading!:Loading;\r\n optionsMap = new Map<string, any>();\r\n constructor(\r\n private generalService: GeneralService,\r\n private router: Router,\r\n private sfCrudService: SfCrudService,\r\n private stepService: StepService,\r\n private dialogService: CrudDialogService\r\n ) \r\n {\r\n this.loading = {inProgress: false, target: undefined};\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.environment) {\r\n this.environment = JSON.parse(sessionStorage.getItem('ConfigJSON') || '{}');\r\n }\r\n this.generalService.environment = this.environment\r\n this.loadConfigCrud()\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes['dataExt'] && !changes['dataExt'].firstChange) {\r\n this.optionsMap.clear();\r\n this.showCreateButton = false;\r\n this.getInfoTablero();\r\n }\r\n }\r\n\r\n loadConfigCrud() {\r\n this.loading.inProgress = true;\r\n this.sfCrudService.formLoading = this.loading;\r\n this.generalService.getCrudByEntidad(this.idKatios, this.idEntidad)\r\n .then((res: CrudConfig | undefined)=> {\r\n if(res){\r\n this.crudConfig = res;\r\n this.getInfoTablero();\r\n }\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n })\r\n }\r\n\r\n customizeCompany(uiEsquemas: any[]) {\r\n this.sfCrudService.configEmpresa = uiEsquemas.find(ui => ui.general)?.general\r\n if(this.sfCrudService.configEmpresa){\r\n if (this.sfCrudService.configEmpresa.colors?.secondary) this.color2 = this.sfCrudService.configEmpresa.colors.secondary\r\n if (this.sfCrudService.configEmpresa.colors?.button) this.colorButtons = this.sfCrudService.configEmpresa.colors.secondary\r\n }\r\n\r\n if (!this.color2) this.color2 = this.colorButtons = \"blue\";\r\n }\r\n// submit(index: number) {\r\n// let registro = this.sfCrudService.getRegistro(index)\r\n// let operation = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(0)))!\r\n// console.log(operation)\r\n// let url = this.sfCrudService.getURL(operation, index)\r\n// return this.generalService.genericRequest(operation.method, url, this.sfCrudService.getData(index))\r\n// .then((res) => {\r\n// if (res === null) res = {}\r\n// res = this.sfCrudService.applyObjectKeys(res, operation.keysEsquema || [], registro)\r\n// console.log(res)\r\n// this.sfCrudService.setAnswers(res, 0)\r\n\r\n// if (operation.changeTrx) operation.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))\r\n// // this.notificationService.generateMessage(this.notificationService.genDefaultMessage(\"success\", undefined, \"Información subida correctamente\", operation.answerChecking), res, operation.answerChecking)\r\n// // return res;\r\n// })\r\n// .catch(err => {\r\n// // const operation = this.sfCrudService.getRegistro(this.indexCrud).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(index)))!\r\n// // this.notificationService.generateMessage(this.notificationService.genDefaultMessage(\"error\", \"Error no controlado\", \"Por favor comunicarse con el admin\",operation.errorChecking), err.error, operation.errorChecking)\r\n// // throw new Error(err)\r\n// })\r\n// }\r\n\r\n getInfoTablero() {\r\n //this.submit(0)\r\n this.data = []\r\n this.initialData = []\r\n this.loading.inProgress = true;\r\n this.sfCrudService.formLoading = this.loading;\r\n let url = this.aplyKeys(this.crudConfig.tablero!.keys, `${this.generalService.jsonConfig[this.crudConfig.tablero!.server]}${this.crudConfig.tablero!.endpoint}`, this.dataExt)\r\n this.generalService.genericRequest(this.crudConfig.tablero!.method, url, this.dataExt)\r\n .then((res: any) => {\r\n let aux;\r\n if (!Array.isArray(res)) aux = res.data; else aux = res;\r\n this.initialData = _.cloneDeep(aux);\r\n this.generateData(aux);\r\n this.loadOptions();\r\n this.initFilterOptions();\r\n })\r\n .finally(() => {\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n })\r\n }\r\n\r\n\r\n\r\n generateData(data: any[]) {\r\n data.forEach((item: any) => {\r\n let newItem: any = {};\r\n this.crudConfig.tablero!.columns.forEach(col => {\r\n newItem[col.col] = this.getValue(col.col, item)\r\n })\r\n this.data.push(newItem)\r\n })\r\n }\r\n\r\n initFilterOptions(){\r\n this.crudConfig.tablero?.columns.filter(col => col.filter?.config).forEach(col => this.generateFilterOptions(col));\r\n }\r\n\r\n verifyCreateButton() {\r\n if (this.crudConfig.tablero?.createButton && this.crudConfig.tablero?.createButton?.verify === 'filterList') {\r\n this.showCreateButton = this.optionsMap.get(this.crudConfig.tablero.createButton.column)?.length > 0;\r\n }\r\n }\r\n\r\n generateFilterOptions(col: any) {\r\n const url = this.aplyKeys(this.crudConfig.tablero!.keys, `${this.generalService.jsonConfig[col.filter.config.server]}${col.filter.config.endpoint}`, this.dataExt)\r\n this.generalService.genericRequest(col.filter.config.method, url, this.dataExt)\r\n .then((res: any) => {\r\n if(!Array.isArray(res) && res.data) res = res.data\r\n this.optionsMap.set(col.col, res);\r\n })\r\n .catch((error) => { \r\n this.optionsMap.set(col.col, []);\r\n console.error('Error fetching filter options:', error);\r\n });\r\n }\r\n \r\n getValue(path: string, item: any): any {\r\n if (path.includes(\".\")) return jsonpath.query(item, path)[0]\r\n return item[path]\r\n }\r\n\r\n externalLinkAction(){\r\n this.opciones.filter((opc: any) => opc.valor.action).forEach(opc => this.execAction(opc.valor))\r\n }\r\n\r\n loadOptions() {\r\n this.items = [];\r\n this.btn.create = this.opciones.find(x => x.label == 'Crear');\r\n this.opciones.filter((opc: any) => opc.valor.action).forEach(opc => {\r\n this.items.push({ label: opc.label, icon: opc.icon, command: () => this.execAction(opc.valor) })\r\n })\r\n }\r\n\r\n redirect(accion: string, data?: any) {\r\n this.stepService.reset();\r\n this.sfCrudService.reset();\r\n switch (accion) {\r\n case 'create':\r\n this.router.navigateByUrl(this.btn.create?.valor?.redirect || '');\r\n break;\r\n case 'read':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, this.btn.read.valor.redirect, data));\r\n break\r\n case 'update':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, this.btn.update.valor.redirect, data));\r\n break\r\n case 'delete':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, this.btn.delete.valor.redirect, data));\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n aplyKeys(keys: { key: string, scope?: string }[], endpoint: string, data?: any) {\r\n keys.forEach(key => {\r\n switch (key.key) {\r\n case '@ndoc':\r\n endpoint = endpoint.replace(key.key, this.user?.UsuarioSistema?.NDOC || '')\r\n break;\r\n case '@tdoc':\r\n endpoint = endpoint.replace(key.key, this.user?.UsuarioSistema?.TDOC || '')\r\n break;\r\n case '@idKatios':\r\n endpoint = endpoint.replace(key.key, this.idKatios)\r\n break;\r\n default:\r\n if (endpoint.includes(key.key) && data) endpoint = endpoint.replace(key.key, jsonpath.query(data, key?.scope || '')[0]);\r\n break;\r\n }\r\n });\r\n return endpoint;\r\n }\r\n\r\n execAction(params: any) {\r\n switch (params.action) {\r\n case 'redirect':\r\n this.router.navigateByUrl(this.aplyKeys(this.crudConfig.tablero!.keys, params.link, this.itemSelected)).then(()=>{\r\n if (params.reload)\r\n window.location.reload()}\r\n )\r\n break;\r\n default:\r\n this.onSelectAction.emit({ data: _.cloneDeep(this.itemSelected), params })\r\n break;\r\n }\r\n }\r\n\r\n onGlobalFilter(event: Event, dt: any) {\r\n const target = event.target as HTMLInputElement;\r\n dt.filterGlobal(target.value, 'contains');\r\n }\r\n\r\n showAddDialog() {\r\n this.verifyCreateButton();\r\n if(!this.showCreateButton && this.crudConfig.tablero?.dialog) {\r\n this.dialogService.showDialog('create', this.crudConfig.tablero.dialog);\r\n }else{\r\n this.redirect('create')\r\n }\r\n }\r\n \r\n}\r\n","<p-card>\r\n <p-toolbar styleClass=\"mb-4 gap-2\" *ngIf=\"btn.create\">\r\n <ng-template #start>\r\n <button pButton pRipple [label]=\"btn.create.label\" [icon]=\"btn.create.icon\"\r\n class=\"p-button-success mr-2\" (click)=\"showAddDialog()\"></button>\r\n </ng-template>\r\n </p-toolbar>\r\n <p-table *ngIf=\"crudConfig?.tablero?.columns\" #dt [columns]=\"crudConfig.tablero.columns\" [value]=\"data\" [rowHover]=\"true\" [rows]=\"10\" [paginator]=\"true\"\r\n [totalRecords]=\"data.length\" [globalFilterFields]=\"crudConfig.tablero?.filters || []\" [tableStyle]=\"{'min-width': '75rem'}\"\r\n currentPageReportTemplate=\"Registro {first} al {last} de {totalRecords}\" [showCurrentPageReport]=\"true\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <h5 class=\"m-0\">{{crudConfig.tablero?.label || idEntidad}}</h5>\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-search\" />\r\n <input pInputText type=\"text\" (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\r\n placeholder=\"Buscar...\" />\r\n </p-iconfield>\r\n <!-- <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\r\n placeholder=\"Buscar...\" />\r\n </span> -->\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n <div class=\"flex align-items-center justify-between\">\r\n {{col.label}}\r\n <ng-container *ngIf=\"col.filter\" [ngSwitch] = \"col.filter.type\">\r\n <p-columnFilter *ngSwitchCase=\"'text'\" type=\"text\" [field]=\"col.filter.field\" [display]=\"col.filter.display\" [showMatchModes]=\"col.filter.showMatchModes || false\" [showOperator]=\"col.filter.showOperator || false\" [showAddButton]=\"col.filter.showAddButton || false\"/>\r\n <p-columnFilter *ngSwitchCase=\"'list'\" [field]=\"col.filter.field\" [display]=\"col.filter.display\" [matchMode]=\"col.filter.matchMode || 'equals'\"\r\n [showMatchModes]=\"col.filter.showMatchModes || false\" [showOperator]=\"col.filter.showOperator || false\" [showAddButton]=\"col.filter.showAddButton || false\">\r\n <ng-template #filter let-value let-filter=\"filterCallback\">\r\n <p-select [(ngModel)]=\"value\" [options]=\"optionsMap.get(col.col) ?? []\" (onChange)=\"filter($event.value)\" placeholder=\"Seleccione\" class=\"w-full\" \r\n [optionLabel]=\"col.filter?.config?.optionLabel\" [optionValue]=\"col.filter?.config?.optionValue\"/>\r\n </ng-template>\r\n </p-columnFilter>\r\n <p-columnFilter *ngSwitchCase=\"'multiselect'\" [field]=\"col.filter.field\" [display]=\"col.filter.display\" [matchMode]=\"col.filter.matchMode || 'equals'\"\r\n [showMatchModes]=\"col.filter.showMatchModes || false\" [showOperator]=\"col.filter.showOperator || false\" [showAddButton]=\"col.filter.showAddButton || false\">\r\n <ng-template #filter let-value let-filter=\"filterCallback\">\r\n <p-multiselect [(ngModel)]=\"value\" [options]=\"optionsMap.get(col.col) ?? []\" (onChange)=\"filter($event.value)\" placeholder=\"Seleccione\" class=\"w-full\" \r\n [optionLabel]=\"col.filter?.config?.optionLabel\" [optionValue]=\"col.filter?.config?.optionValue\" [panelStyle]=\"{ minWidth: '16rem' }\">\r\n </p-multiselect>\r\n </ng-template>\r\n </p-columnFilter>\r\n </ng-container>\r\n </div>\r\n </th>\r\n <th>Acción</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-index=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <td *ngSwitchCase=\"'text'\">{{rowData[col.col]}}</td>\r\n <td *ngSwitchCase=\"'date:yyyy-mm-dd'\">{{rowData[col.col] | date: 'yyyy-MM-dd'}}</td>\r\n <td *ngSwitchCase=\"'currency:USD'\">{{rowData[col.col] | currency: 'USD'}}</td>\r\n <td *ngSwitchCase=\"'tag'\">\r\n <p-tag [value]=\"rowData[col.col]\" [ngClass]=\"rowData[col.col] ? (col.class || '') : 'hidden'\" />\r\n </td>\r\n </ng-container>\r\n <td>\r\n <p-splitButton *ngIf=\"items.length > 1\" icon=\"pi pi-align-justify\" [model]=\"items\" appendTo=\"body\"\r\n (onDropdownClick)=\"itemSelected = rowData\"></p-splitButton>\r\n <div *ngIf=\"items.length <= 1\">\r\n <button *ngFor=\"let item of items\" pButton pRipple [icon]=\"item.icon\" class=\"mr-2\"\r\n (click)=\"itemSelected = initialData[index]; item.command()\"></button>\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</p-card>\r\n","import { Injectable, OnDestroy} from '@angular/core';\r\nimport { BehaviorSubject, Subject} from 'rxjs';\r\nimport { SweetAlertOptions } from 'sweetalert2';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { RequestChecking } from '../models/crud-config.model';\r\nimport { SfCrudService } from '../../sf-crud.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService{\r\n\r\n private _notificationAdded = new BehaviorSubject<Notification | undefined>(undefined);\r\n\r\n constructor(private sfCrudService: SfCrudService) {}\r\n\r\n addNotification(msg: any | SweetAlertOptions, requestChecking?: RequestChecking){\r\n this._notificationAdded.next({msg, requestChecking})\r\n }\r\n\r\n notificationAdded$(){\r\n return this._notificationAdded.asObservable()\r\n }\r\n\r\n /**\r\n * Generates message using answerchecking\r\n * @param currentMsg Default message: Message | SweetAlertOptions\r\n * @param rta Resquest's response\r\n * @param answerChecking\r\n */\r\n generateMessage(currentMsg: any | SweetAlertOptions | any, rta: any, requestChecking?: RequestChecking){\r\n if (requestChecking){\r\n if (requestChecking.statics) Object.assign(currentMsg, requestChecking.statics)\r\n //mapear los dinamicos\r\n if (requestChecking.dynamics){\r\n const dynamics: any = requestChecking.dynamics\r\n try{\r\n if (dynamics && typeof(rta) == \"string\") rta = JSON.parse(rta)\r\n if (requestChecking.parse) {\r\n let valueParsed = JSON.parse(jsonpath.query(rta, requestChecking.parse)[0])\r\n jsonpath.value(rta, requestChecking.parse, valueParsed)\r\n }\r\n if (dynamics) {\r\n for (const property in dynamics) {\r\n let errors = jsonpath.query(rta, dynamics[property])[0];\r\n if(typeof(errors) === \"object\" && errors != null) errors = this.concatenateErrors(errors);\r\n currentMsg[property] = errors;\r\n }\r\n }\r\n }catch(error){//es una respuesta sin JSON\r\n if (dynamics) currentMsg.detail = rta\r\n }\r\n }\r\n }\r\n\r\n return currentMsg;\r\n }\r\n\r\n /**\r\n * Concatena todos los errores de un objeto de errores del backend\r\n * @param errors Objeto de errores recibido del backend\r\n * @param separator Separador entre errores (por defecto '\\n')\r\n * @returns String con todos los errores concatenados\r\n */\r\n concatenateErrors(errors: any, separator: string = '\\n'): string {\r\n if (!errors || typeof errors !== 'object') {\r\n return '';\r\n }\r\n\r\n const errorMessages: string[] = [];\r\n Object.keys(errors).forEach(field => {\r\n const fieldErrors = errors[field];\r\n if (Array.isArray(fieldErrors)) {\r\n fieldErrors.forEach(errorMsg => {\r\n errorMessages.push(errorMsg);\r\n });\r\n } \r\n else if (typeof fieldErrors === 'string') {\r\n errorMessages.push(fieldErrors);\r\n }\r\n else if (typeof fieldErrors === 'object') {\r\n const nestedErrors = this.concatenateErrors(fieldErrors, separator);\r\n if (nestedErrors) {\r\n errorMessages.push(nestedErrors);\r\n }\r\n }\r\n });\r\n\r\n return errorMessages.join(separator);\r\n }\r\n\r\n genDefaultMessage(severity: \"success\" | \"error\", title: string | undefined, detail: string, requestChecking: RequestChecking | undefined): any | SweetAlertOptions{\r\n let obj: any | SweetAlertOptions = {title, text: detail, icon: severity,\r\n confirmButtonColor: this.sfCrudService.configEmpresa?.colors ? this.sfCrudService.configEmpresa?.colors?.button : \"#3085d6\",\r\n cancelButtonColor: this.sfCrudService.configEmpresa?.colors ? this.sfCrudService.configEmpresa?.colors?.button : \"#d33\"}\r\n\r\n if (requestChecking && requestChecking.useSwal && severity == \"error\")\r\n {\r\n obj.showCancelButton = true\r\n obj.confirmButtonText ='<i class=\"pi pi-check\"></i> Continuar'\r\n obj.cancelButtonText = '<i class=\"pi pi-times\"></i> Terminar'\r\n }\r\n\r\n if (!requestChecking || !requestChecking.useSwal){\r\n (obj as any).severity = severity;\r\n (obj as any).summary = title;\r\n (obj as any).detail = detail;\r\n }\r\n return obj;\r\n }\r\n}\r\n\r\nexport class Notification{\r\n constructor(\r\n public msg: any | SweetAlertOptions,\r\n public requestChecking: RequestChecking| undefined\r\n ){}\r\n}\r\n","import { AfterViewInit, Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { StepService } from '../../shared/services/step.service';\r\n\r\n@Component({\r\n selector: 'app-step',\r\n templateUrl: './step.component.html',\r\n styleUrls: ['./step.component.css'],\r\n standalone: false\r\n})\r\nexport class StepComponent implements OnInit, AfterViewInit {\r\n\r\n\r\n @Input() items!: MenuItem[];\r\n activeIndex = 0;\r\n loading = false;\r\n nextMovement = 0;\r\n\r\n constructor(\r\n private router: Router,\r\n private stepService: StepService,\r\n private activatedRoute: ActivatedRoute,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.stepService.currentIndex$.subscribe((result) => {\r\n this.nextMovement = result\r\n this.router.navigate([this.items[result].routerLink], { relativeTo: this.activatedRoute, queryParamsHandling: \"preserve\" });\r\n this.moveScroll(this.nextMovement)\r\n this.activeIndex = result\r\n })\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.stepService.requestApproved$.subscribe((result) => {\r\n if (result){\r\n this.navigate()\r\n }\r\n this.loading = false;\r\n })\r\n this.moveScroll(this.nextMovement)\r\n }\r\n\r\n onactiveIndexChange($event: number){\r\n this.requestNaviagtion($event-this.activeIndex);\r\n }\r\n\r\n /**\r\n * Button solicitates permissions to change tab.\r\n * @param add steps to advance. If negative will go back\r\n */\r\n requestNaviagtion(add: number){\r\n this.loading = true;\r\n this.nextMovement = this.activeIndex + add;\r\n this.stepService.requestApproval = this.nextMovement;\r\n }\r\n\r\n private navigate(){\r\n if (this.nextMovement < this.items.length){\r\n this.activeIndex = this.nextMovement;\r\n this.router.navigate([this.items[this.nextMovement].routerLink], { relativeTo: this.activatedRoute, queryParamsHandling: \"preserve\" });\r\n }\r\n }\r\n\r\n\r\n moveScroll(nextIndex: number){\r\n let miDiv = document.getElementById(\"step-container\")!\r\n const steps = document.querySelector(\".p-steps ul[role='tablist']\");\r\n\r\n if (steps !== null){\r\n let i = 0\r\n let value = 0\r\n while (i < nextIndex) {\r\n const child = steps.children[i]\r\n value += child.clientWidth\r\n i++\r\n }\r\n miDiv.scrollLeft = value\r\n }\r\n }\r\n}\r\n","<div>\r\n <div id=\"step-container\">\r\n <p-steps #stepsComponent [model]=\"items\" [readonly]=\"false\" [activeIndex]=\"activeIndex\" (activeIndexChange)=\"onactiveIndexChange($event)\"></p-steps>\r\n </div>\r\n\r\n <div class=\"content\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <div class=\"buttons-step\">\r\n <div >\r\n <button pButton *ngIf=\"activeIndex != 0\" icon=\"pi pi-arrow-left\" [disabled]=\"loading\"\r\n (click)=\"requestNaviagtion(-1)\"></button>\r\n </div>\r\n <span >\r\n <button pButton *ngIf=\"!(activeIndex + 1 >= items.length)\" icon=\"pi pi-arrow-right\" [disabled]=\"loading\"\r\n (click)=\"requestNaviagtion(1)\"></button>\r\n </span>\r\n <button pButton *ngIf=\"activeIndex >= items.length - 1\" label=\"Finalizar\" [disabled]=\"loading\" (click)=\"requestNaviagtion(0)\"\r\n [style]=\"{'margin-left': '10px'}\"></button>\r\n </div>\r\n</div>\r\n","import { Calendar } from \"primeng/calendar\";\r\n\r\nexport class Shema {\r\n type: string = '';\r\n subtype: string = '';\r\n config?: any;\r\n tooltip?: string;\r\n tooltipPosition?: string;\r\n properties?: any;\r\n enum?: any[];\r\n default?:any;\r\n validations?: any\r\n disabled?: boolean\r\n field?: any\r\n placeholder?: any\r\n unmask?: boolean\r\n autocomplete?: string\r\n showIcon?: boolean\r\n hide?: any\r\n locale?: string\r\n configuration = new ShemaConfig()\r\n touchUI: any\r\n format: any\r\n formatMoment?: string\r\n useGrouping?: boolean\r\n max: any\r\n min: any\r\n currency: any\r\n minFractionDigits: any\r\n trueValue: any\r\n falseValue: any\r\n allowCustomOption: boolean = false\r\n separador?: string\r\n labelPosition?: string\r\n reverse?: boolean\r\n scope?: string\r\n optional?: any;\r\n uiOnly?: boolean;\r\n defaultValue?: any;\r\n eraseOnDisable?: boolean;\r\n dependency?: { scope: string, value: any };\r\n}\r\n\r\n\r\nclass ShemaConfig {\r\n calendar?: Calendar\r\n}\r\n\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'sf-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.css'],\r\n standalone: false\r\n})\r\nexport class FileUploadComponent implements OnInit, OnChanges {\r\n\r\n\r\n @Input() limit!: number;\r\n @Input() files: Archivo[] = [];\r\n @Input() loading = false;\r\n @Input() configName: string | undefined;\r\n @Input() accept: string = \"image/*,application/pdf\";\r\n @Output() onUpload = new EventEmitter<File[]>();\r\n @Output() onDeleteFile = new EventEmitter<number>();\r\n @ViewChild('fileUpload') fileUploader!: ElementRef;\r\n\r\n newFiles: File[] = [];\r\n private animationInterval: any;\r\n\r\n constructor(\r\n private messageSerice: MessageService) {\r\n window.addEventListener(\"paste\", (e: any) =>{\r\n if (e.clipboardData?.files && e.clipboardData.files.length > 0){\r\n this.appendFile(e.clipboardData.files[0]);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n appendFile(file: File){\r\n const allowedTypes = this.accept.split(\",\");\r\n const allowedFile = allowedTypes.some(pattern => {\r\n const regexObj = new RegExp(pattern);\r\n const match = regexObj.exec(file.type);\r\n return match ? match?.length > 0: false\r\n })\r\n\r\n if (allowedFile){\r\n const newFile = new File([file], this.getName(file), {type: file.type})\r\n if (this.limit == 1){\r\n this.newFiles = [newFile]\r\n }else this.newFiles.push(newFile)\r\n this.files.push({name: newFile.name, url: window.URL.createObjectURL(newFile)})\r\n }else{\r\n this.messageSerice.add({severity: \"warn\", detail: \"Tipo de archivo no válido\"})\r\n }\r\n\r\n }\r\n\r\n emitFiles(){\r\n this.loading = true;\r\n this.onUpload.emit(this.newFiles)\r\n }\r\n\r\n getName(file: File){\r\n let sName = \"\"\r\n\r\n let date: Date = new Date();\r\n if(this.configName !== undefined){\r\n let name = this.configName.split('|');\r\n name.forEach(item => {\r\n if (item.indexOf(\"DATE@\") != -1)\r\n sName += (moment(date)).format(item.split('@')[1]);\r\n else if(item.indexOf(\"@\") == -1)\r\n sName += item\r\n })\r\n let ext = this.getExt(file)\r\n sName += ext ? \".\" + ext: \"\"\r\n }\r\n else sName = file.name;\r\n return sName\r\n }\r\n getExt(file: File) {\r\n let ext = undefined\r\n let aux = file.name.split('.')\r\n if (aux.length > 0) ext = aux[aux.length - 1]\r\n return ext\r\n }\r\n\r\n appendFiles($event: any){\r\n if($event.target.files.length > 0){\r\n this.appendFile($event.target.files[0]);\r\n }\r\n if (this.limit == this.files.length) {\r\n this.stopAnimation()\r\n this.emitFiles()\r\n }\r\n else this.startAnimation()\r\n this.fileUploader.nativeElement.value = \"\";\r\n }\r\n\r\n dropFile(archivo: Archivo){\r\n this.files.forEach((f, index) => {\r\n if(f == archivo){\r\n this.files.splice(index, 1);\r\n this.onDeleteFile.emit(index)\r\n }\r\n });\r\n }\r\n\r\n\r\n openFile(archivo: Archivo) {\r\n window.open(archivo.url, '_blank');\r\n window.addEventListener('focus', () => URL.revokeObjectURL(archivo.url));\r\n }\r\n\r\n startAnimation() {\r\n const button = document.querySelector('.button-upload');\r\n if (button) {\r\n button.classList.add('animate-pulse');\r\n }\r\n }\r\n\r\n stopAnimation() {\r\n const button = document.querySelector('.button-upload');\r\n if (button) {\r\n button.classList.remove('animate-pulse');\r\n }\r\n }\r\n}\r\n\r\nexport class Archivo {\r\n public url! : string\r\n public name! : string\r\n}\r\n","<div id=\"screen\" #screen>\r\n <div class=\"fileUp\">\r\n <div class=\"botones\">\r\n <input type=\"file\" (change)=\"appendFiles($event)\" class=\"file-input\" #fileUpload multiple>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-plus\" class=\"p-button-info\" (click)=\"fileUpload.click()\"\r\n [disabled]=\"limit == files.length || loading\"></button>\r\n <button *ngIf=\"limit != 1\" pButton pRipple type=\"button\" icon=\"pi pi-upload\" class=\"button-upload p-button-info\"\r\n (click)=\"emitFiles()\" [disabled]=\"files.length == 0 || loading\"></button>\r\n </div>\r\n\r\n <hr>\r\n <div class=\"imgs\">\r\n <ul>\r\n <li *ngFor=\"let file of files; let i = index\" [ngSwitch]=\"file.type\">\r\n <p>{{i+1}}. {{files[i].name}}</p>\r\n <div>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-external-link\" class=\"p-button-rounded\"\r\n (click)=\"openFile(file)\"></button>\r\n <button pButton pRipple type=\"button\" icon=\"pi pi-times\" class=\"p-button-rounded p-button-danger\"\r\n (click)=\"dropFile(file)\"></button>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'formatAddress',\r\n standalone: false\r\n})\r\nexport class FormatAddressPipe implements PipeTransform {\r\n\r\n transform(address: string | undefined, separator?: string): string | undefined {\r\n if (!address) {\r\n return address;\r\n }\r\n\r\n if (separator) {\r\n return address.replaceAll(separator, ' ').replaceAll(' ', ' ');\r\n }\r\n\r\n return address;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewChildren, QueryList, OnChanges, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { GeneralService } from '../../shared/services/general.service';\r\nimport { Shema } from '../../shared/models/shema.model';\r\nimport { Operation, OverrideConfig, RequestChecking } from '../../shared/models/crud-config.model';\r\nimport { SfCrudService } from '../../sf-crud.service';\r\nimport { Tooltip } from 'primeng/tooltip';\r\nimport moment from 'moment';\r\nimport { Archivo } from '../file-upload/file-upload.component';\r\nimport { NotificationService } from '../../shared/services/notification.service';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sf-control',\r\n templateUrl: './control.component.html',\r\n styleUrls: ['./control.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class ControlComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() showTempValue:Boolean = false;\r\n @Input() control: Shema = new Shema();\r\n @Input() label: string = '';\r\n @Input() value: any;\r\n @Input() appendTo: any;\r\n @Output() setValue: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() sendObject: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() addressClicked: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() setDependencyValue: EventEmitter<any> = new EventEmitter<any>();\r\n @ViewChildren(Tooltip) tooltips!: QueryList <Tooltip>;\r\n\r\n private lenghtWord!: number;\r\n public isLoading: boolean = false;\r\n public dataFromService: any[] = [];\r\n public uploadedFiles: Archivo[] = [];\r\n public displayAdd: boolean = false;\r\n public tempValue: any;\r\n public clicked = false;\r\n public maskDate = \"99/99/9999\"\r\n\r\n public tempCheckVal = false;\r\n\r\n public uploadingFiles = false;\r\n\r\n public subscription: Subscription | undefined= undefined;\r\n\r\n constructor(\r\n private generalService: GeneralService,\r\n private crudService: SfCrudService,\r\n private cdr: ChangeDetectorRef,\r\n private notificationService: NotificationService\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n ngOnInit() {\r\n this.loadDefaultValues()\r\n this.control.disabled = this.control.disabled || false;\r\n \r\n this.subscription = this.crudService.disabledFields$.subscribe(({fields, disabled}) => {\r\n const scope = this.control.scope?.replace(\"$..properties.\", \"\");\r\n if(this.control.scope && scope && fields.includes(scope)) {\r\n this.control.disabled = disabled;\r\n if (disabled) {\r\n this.value = \"\";\r\n this.sendValue();\r\n }\r\n }\r\n this.cdr.detectChanges();\r\n });\r\n\r\n if (this.control?.config?.depends){\r\n this.crudService.changeData$.subscribe(res => {\r\n if (res){\r\n let registro = this.crudService.getRegistro(this.crudService.index)\r\n let keyFound = registro.keys?.find(k => k.scope === res.scope\r\n && (this.control.config.depends as string[]).includes(k.key) &&\r\n (res.index === k.indexData || res.index === k.indexAnswer))\r\n if (keyFound?.overrideControl){\r\n let override = keyFound.overrideControl\r\n let completed = this.crudService.isConditionsCompleted(override.conditions ?? [], registro.conditions || [], this.crudService.getData(this.crudService.index))\r\n jsonpath.value(this.control, override.property, completed ? override.value : override.elseValue)\r\n this.value = this.getNewValue(override, completed);\r\n this.tempValue = null\r\n this.sendValue()\r\n if (this.control.subtype == 'dropdown' || this.control.subtype == 'multiselect') this.loadDataFromService()\r\n //this.cdr.detectChanges()\r\n }\r\n else if (keyFound) {\r\n this.value = null\r\n this.sendValue()\r\n this.loadDefaultValues()\r\n //this.cdr.detectChanges()\r\n }\r\n\r\n }\r\n })\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n console.log(\"Destroy control\");\r\n if(this.subscription) {\r\n this.subscription.unsubscribe();\r\n // Limpiar el estado del campo cuando se destruye el componente\r\n if(this.control.scope) {\r\n const scope = this.control.scope.replace(\"$..properties.\", \"\");\r\n this.crudService.notifyFieldsToDisable([scope], false);\r\n }\r\n }\r\n }\r\n\r\n private getNewValue(override: OverrideConfig, completed: boolean): any {\r\n const newValue = completed ? override.newPropertyValue: override.elseNewPropertyValue;\r\n if (newValue && typeof(newValue) == \"string\"){\r\n if (!newValue.startsWith('$') && !newValue.startsWith('@')){\r\n return newValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n loadDefaultValues(){\r\n if (this.control?.config && this.control.subtype == 'dropdown' || this.control.subtype == 'multiselect') this.loadDataFromService();\r\n if (this.control?.subtype == 'autocomplete' || this.control?.subtype === 'autocompleteCustom') this.extracValueFromControlBusqueda();\r\n if (this.value && this.control.type == 'date') {\r\n this.instanceDate();\r\n }\r\n if (this.control?.subtype == \"file\") {\r\n this.loadFiles();\r\n }\r\n if (this.control?.type == 'string') this.lenghtWord = this.value ? this.value.length : 0\r\n if (this.control?.subtype == 'switch') this.instanceBoolField()\r\n if (this.control?.config && this.control.subtype == 'checkbox') this.setCheckboxValues();\r\n }\r\n setCheckboxValues(){\r\n this.tempCheckVal = this.value || false; \r\n this.onCheckboxChange();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.value = this.tempCheckVal;\r\n if(this.control.config?.disables) {\r\n this.crudService.notifyFieldsToDisable(this.control.config.disables, this.tempCheckVal);\r\n }\r\n if(this.tempCheckVal && this.control.config?.operationTrue){\r\n this.crudService.notifyChangeOperation(this.control.config.operationTrue);\r\n }\r\n if(!this.tempCheckVal && this.control.config?.operationFalse){\r\n this.crudService.notifyChangeOperation(this.control.config.operationFalse);\r\n }\r\n this.sendValue();\r\n }\r\n instanceBoolField() {\r\n this.tempValue = this.value\r\n if (this.value == true && this.control.trueValue !== undefined) {\r\n this.value = this.control.trueValue\r\n this.sendValue()\r\n }\r\n else if (this.value == false && this.control.falseValue !== undefined) {\r\n this.value = this.control.falseValue\r\n this.sendValue()\r\n }\r\n }\r\n\r\n onChangeSwitch(){\r\n this.value = this.tempValue\r\n this.sendValue()\r\n }\r\n\r\n loadFiles(){\r\n this.isLoading = true\r\n this.uploadedFiles = []\r\n if (!this.value) {\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n }\r\n else if (this.control.config.namePattern && this.control.type == \"string\") {\r\n let urls: string[] = this.control.config.separator ? this.value.split(\",\") : [this.value]\r\n urls.forEach(url => this.uploadedFiles.push({url:url, name:this.getNameFile(this.control.config.namePattern, url)}))\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n }\r\n else if (this.control.config.namePattern && this.control.type == \"array\") {\r\n this.value.forEach((url:string) => this.uploadedFiles.push({url:url, name:this.getNameFile(this.control.config.namePattern, url)}))\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n }\r\n }\r\n\r\n onDeleteFile(index: number){\r\n if ((!this.control.config?.limit || this.control.config?.limit == 1) && this.control.type == \"string\") this.value = null\r\n else if (this.control.type == \"array\") this.value.splice(index, 1)\r\n }\r\n\r\n getNameFile(namePattern: string, url: string): string {\r\n const regexObj = new RegExp(namePattern);\r\n const match = regexObj.exec(url);\r\n if (!match) throw new Error(\"El pattern no coincide con la url. \" + url);\r\n return match[0];\r\n }\r\n\r\n sendValue() {\r\n if (this.control.type == \"string\" && this.value == \"\" && this.control.config?.allowEmpty == false) this.value = null\r\n this.setValue.emit(this.value);\r\n }\r\n\r\n sendNumberValue($event: any){\r\n this.value = $event.value\r\n this.sendValue()\r\n }\r\n\r\n onInputEmail(force:boolean){\r\n const aux = Math.abs(this.lenghtWord - this.value.length)\r\n this.lenghtWord = this.value.length\r\n if (aux > 1 || force){\r\n const regex: RegExp = new RegExp(/([\\w\\.\\-_]+)?\\w+@[\\w-_]+(\\.\\w+){1,}/igm);\r\n if (regex.test(this.value)) this.sendValue();\r\n else {\r\n this.value = null;\r\n this.sendValue()\r\n this.notificationService.addNotification({ severity: 'warn', detail: 'El correo no es válido' }, this.primeChecking());\r\n }\r\n }\r\n }\r\n\r\n sendValueFromObject(event: any) {\r\n switch (typeof (this.control.config.optionValue)) {\r\n case 'object':\r\n this.control.config.optionValue.forEach((op: any) => op['value'] = event[op.key])\r\n this.setValue.emit(this.control.config.optionValue);\r\n break;\r\n default:\r\n if(event.value) this.setValue.emit(event.value[this.control.config.optionValue]);\r\n if(this.control.dependency && this.setDependencyValue){\r\n this.setDependencyValue.emit({data: event.value[this.control.dependency.value], scope: this.control.dependency.scope});\r\n }\r\n else this.setValue.emit(event[this.control.config.optionValue]);\r\n break;\r\n }\r\n }\r\n\r\n loadDataFromService() {\r\n this.isLoading = true;\r\n this.dataFromService = [];\r\n const op: Operation = this.control.config\r\n const url = this.crudService.getURL(op, undefined, undefined)\r\n if (this.control.config?.customOptions){\r\n this.dataFromService = this.control.config.customOptions\r\n }else{\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n this.dataFromService = res.data;\r\n if(res.data.length == 1){\r\n this.value = res.data[0][this.control.config.optionValue];\r\n this.sendValue();\r\n }\r\n }).finally(() => {\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n })\r\n }\r\n }\r\n\r\n loadDataFromControlBusquedaService(event: any) {\r\n this.isLoading = true;\r\n const op: Operation = this.control.config\r\n let url = this.crudService.getURL(op)\r\n url = url.replace('@query', event?.query || '')\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n this.dataFromService = (res.data || []).map((r: any) => ({...r, _display: this.formatWithTemplate(r)}));\r\n \r\n if (this.dataFromService?.length == 0 && this.control.allowCustomOption) {\r\n //agregar un campo que el usuario haya digitado\r\n let newItem: any = {}\r\n newItem[this.control.field] = this.tempValue\r\n newItem[this.control.config.optionValue] = this.tempValue\r\n this.dataFromService.push(newItem)\r\n }\r\n }).finally(() => {\r\n this.isLoading = false\r\n this.cdr.detectChanges()\r\n })\r\n }\r\n\r\n extracValueFromControlBusqueda(){\r\n const op: Operation = this.control.config\r\n let url = this.crudService.getURL(op)\r\n url = url.replace('@query', this.value)\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n if (res.data?.length == 1 && res.data[0][this.control.field]){\r\n this.tempValue = res.data[0]\r\n this.value = res.data[0][this.control.field]\r\n }\r\n else this.setDefaultValue()\r\n }).finally(() => {\r\n this.cdr.detectChanges()\r\n }).catch(() => {\r\n this.setDefaultValue()\r\n })\r\n }\r\n\r\n\r\n onUpload(event: File[]) {\r\n this.uploadingFiles = true\r\n const formData = new FormData();\r\n const path = this.control.config.path || 'Imagenes/CRUD/temp';\r\n formData.append('Ruta', `/${path}`);\r\n\r\n for (let i = 0; i < event.length; i++) formData.append(`uploadFile_${i}`, event[i]);\r\n const op: Operation = this.control.config\r\n const url = this.crudService.getURL(op)\r\n this.generalService.genericRequest(this.control.config.method, url, formData)\r\n .then(() => {\r\n let separator = this.control.config?.separator || \",\"\r\n //se asume que viene namePattern\r\n if (this.control.type == \"string\") this.value = event.map(f => `${this.generalService.jsonConfig.Server}${path}/${f.name}`).join(separator)\r\n else if (this.control.type == \"array\") this.value = event.map(f => `${this.generalService.jsonConfig.Server}${path}/${f.name}`)\r\n // SI NO TRAE namePattern, debe retornar un objeto con el nombre y href\r\n //else if (this.control.config.namePattern && this.control.type == \"array\") this.value = event.map(x => x.name)\r\n //else if (!this.control.config.namePattern && this.control.type == \"array\") this.value = event.map(f => `${this.generalService.jsonConfig.Server}${path}/${f.name}`)\r\n this.sendValue()\r\n let msg = !this.control.config.limit || this.control.config.limit == 1 ? \"Archivo cargado correctamente!\": \"Archivos cargados correctamente!\"\r\n this.notificationService.addNotification({ severity: 'info', detail: msg }, this.primeChecking())\r\n })\r\n .catch(() => this.notificationService.addNotification({ severity: 'error', detail: `Error al cargar el archivo!` }, this.primeChecking()))\r\n .finally(() => this.uploadingFiles = false)\r\n\r\n }\r\n\r\n refresData() {\r\n if (this.control?.config?.endpointtemp) this.loadDataFromService();\r\n }\r\n setDefaultValue(){\r\n this.tempValue = {}\r\n if (!this.control.config.optionLabel) console.error(\"No esta bien configurado el control \", this.control)\r\n else {\r\n this.tempValue[this.control.config.optionLabel] = this.value[this.control.config.optionLabel] ? this.value[this.control.config.optionLabel]: \"\"\r\n this.tempValue[this.control.config.optionValue] = this.value[this.control.config.optionValue] ? this.value[this.control.config.optionValue]: \"\"\r\n }\r\n }\r\n\r\n searchValue(value: string){\r\n const op: Operation = this.control.config\r\n let url = this.crudService.getURL(op, undefined, undefined)\r\n url = url.replace('@id', value)\r\n\r\n\r\n this.generalService.genericRequest(this.control.config.method, url)\r\n .then((res: any) => {\r\n if (res?.data?.length > 0){\r\n this.sendObject.emit({ data: res.data[0], optionValue: this.control.config.optionValue } )\r\n }else{\r\n this.notificationService.addNotification({severity: 'warn', detail:`Valor no encontrado.`}, this.primeChecking())\r\n this.sendObject.emit({ data: null, optionValue: this.control.config.optionValue } )\r\n }\r\n })\r\n .catch(err=> {\r\n this.notificationService.addNotification({severity: 'error', detail:`Error al consumir el servicio.`},this.primeChecking())\r\n })\r\n }\r\n\r\n primeChecking(){\r\n return new RequestChecking(undefined, undefined, false, undefined, undefined, false, undefined)\r\n }\r\n\r\n instanceDate(){\r\n const format = (this.control as any).formatMoment\r\n\r\n if (this.value){\r\n if (typeof(this.value) == \"string\" && (this.value as string).includes(\"T\")) this.value = new Date(this.value)\r\n else if (typeof(this.value) == \"string\") this.value = moment(this.value, format).toDate();\r\n this.tempValue = moment(this.value).format(\"DD/MM/YYYY\")\r\n }else {\r\n this.tempValue = null\r\n this.value = null\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Cast tempValue to date\r\n */\r\n onChangeSDate($event: any){\r\n // console.log($event)\r\n // console.log(this.tempValue)\r\n // console.log(this.value)\r\n const aux = moment(this.tempValue, \"DD/MM/YYYY\")\r\n if (this.tempValue == this.maskDate.replaceAll(\"9\", \"_\")){\r\n this.value = null\r\n this.sendValue()\r\n }\r\n else if (aux.isValid()){\r\n this.value = aux.toDate();\r\n this.sendValue()\r\n }\r\n else {\r\n this.tempValue = null;\r\n this.notificationService.addNotification({ severity: 'warn', detail: 'La fecha no es válida' }, this.primeChecking())\r\n }\r\n this.cdr.detectChanges()\r\n }\r\n\r\n\r\n onChangeDate(){\r\n this.tempValue = moment(this.value).format(\"DD/MM/YYYY\")\r\n this.sendValue()\r\n }\r\n\r\n onTouchDescription() {\r\n try{\r\n this.tooltips.get(0)?.activate()\r\n }catch(ex){}\r\n\r\n }\r\n\r\n onUnTouchDescription() {\r\n try{\r\n this.tooltips.get(0)?.deactivate()\r\n }catch(ex){}\r\n}\r\n\r\n doFocusOut(){\r\n if (document.activeElement) {\r\n (document.activeElement as HTMLElement).blur();\r\n }\r\n this.cdr.detectChanges()\r\n }\r\n\r\n onClickedAddres(){\r\n this.addressClicked.emit()\r\n }\r\n\r\n displayTemplate(): string {\r\n const cfg = this.control?.config ?? {};\r\n if (cfg.displayTemplate) return cfg.displayTemplate;\r\n\r\n // fallback: optionValue - optionLabel\r\n if (cfg.optionValue && cfg.optionLabel) {\r\n return `{${cfg.optionValue}} - {${cfg.optionLabel}}`;\r\n }\r\n // último recurso: solo field\r\n return `{${this.control?.field ?? 'value'}}`;\r\n }\r\n\r\n formatWithTemplate(item: any): string {\r\n let template = this.displayTemplate();\r\n return template.replace(/\\{([^}]+)\\}/g, (_, expr: string) => {\r\n return item[expr] !== undefined ? item[expr] : '';\r\n })\r\n }\r\n}\r\n","<ng-container *ngIf=\"showTempValue\"><p *ngIf=\"tempValue\">{{tempValue[control.field]}}</p></ng-container>\r\n\r\n<div *ngIf=\"!showTempValue\" [ngSwitch]=\"control.type\" #cc class=\"control-container ml-0\" \r\n[ngClass]=\"control.labelPosition === 'horizontal' ? (control.reverse ? 'flex gap-2 flex-row-reverse items-left' : 'flex gap-2 items-left') : (control.reverse ? 'flex flex-column flex-column-reverse' : 'flex flex-column')\">\r\n <div class=\"label-container\">\r\n <label [for]=\"label\">{{label}}</label>\r\n <i #tooltip *ngIf=\"control.tooltip\" class=\"pi pi-question-circle\"\r\n [tooltipPosition]=\"control.tooltipPosition || 'top'\" [pTooltip]=\"control.tooltip\"\r\n (touchstart)=\"onTouchDescription()\" (touchend)=\"onUnTouchDescription()\"></i>\r\n </div>\r\n\r\n <ng-container *ngSwitchCase=\"'string'\" >\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'input'\">\r\n <input pInputText [name]=\"label\" type=\"text\" [(ngModel)]=\"value\" (input)=\"sendValue()\"\r\n [disabled]=\"control.disabled || false\" [autocomplete]=\"control.autocomplete || 'off'\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [rows]=\"control.config?.rows ? control.config.rows : 4\" [(ngModel)]=\"value\"\r\n (input)=\"sendValue()\" pInputTextarea [disabled]=\"control.config?.disabled || false\"\r\n [autoResize]=\"control.config?.autoresize || false\"></textarea>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <input pInputText type=\"password\" [(ngModel)]=\"value\" (input)=\"sendValue()\"\r\n [disabled]=\"control.disabled || false\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <input pInputText type=\"text\" [(ngModel)]=\"value\" placeholder=\"email@example.com\"\r\n [disabled]=\"control.disabled || false\" autocomplete=\"email\" (input)=\"onInputEmail(false)\"\r\n (focusout)=\"onInputEmail(true)\" (keyup.enter)=\"doFocusOut()\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <p-inputMask mask=\"(999) 999-9999\" [(ngModel)]=\"value\" placeholder=\"(999) 999-9999\"\r\n [disabled]=\"control.disabled || false\" autocomplete=\"tel-national\"\r\n [unmask]=\"control.unmask || false\" (onComplete)=\"sendValue()\"></p-inputMask>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <input pInputText type=\"text\" [value]=\"value | formatAddress: control.separador\" autocomplete=\"off\" [disabled]=\"clicked\" (keydown)=\"onClickedAddres()\" (focus)=\"onClickedAddres()\">\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'enum'\">\r\n <p-select [options]=\"control.enum\" [(ngModel)]=\"value\" (onChange)=\"sendValue()\" appendTo=\"body\"\r\n placeholder=\"Seleccione una opción\" [disabled]=\"control.disabled || false\"></p-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <p-select [lazy]=\"isLoading\" [options]=\"dataFromService\" [(ngModel)]=\"value\" (onChange)=\"sendValue()\"\r\n [optionLabel]=\"control.config.optionLabel\" [showClear]=\"control.config.showClear\"\r\n [optionValue]=\"control.field || control.config.optionValue\" appendTo=\"body\"\r\n placeholder=\"Seleccione una opción\" [disabled]=\"control.disabled || false\"></p-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'dropdown:replace'\">\r\n <p-select [lazy]=\"isLoading\" [options]=\"dataFromService\"\r\n (onChange)=\"sendValueFromObject($event)\" [optionLabel]=\"control.config.optionLabel\"\r\n appendTo=\"body\" placeholder=\"Seleccione una opción\"\r\n [disabled]=\"control.disabled || false\"></p-select>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n <p-autoComplete [showEmptyMessage]=\"true\" [suggestions]=\"dataFromService\" appendTo=\"body\"\r\n (completeMethod)=\"loadDataFromControlBusquedaService($event)\" [field]=\"control.field\"\r\n [minLength]=\"1\" (onSelect)=\"sendValueFromObject($event)\" [(ngModel)]=\"tempValue\"\r\n [disabled]=\"control.disabled || false\"></p-autoComplete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'autocompleteCustom'\">\r\n <p-autoComplete [showEmptyMessage]=\"true\" [suggestions]=\"dataFromService\" appendTo=\"body\"\r\n (completeMethod)=\"loadDataFromControlBusquedaService($event)\" \r\n [minLength]=\"1\" (onSelect)=\"sendValueFromObject($event)\" [(ngModel)]=\"tempValue\"\r\n [disabled]=\"control.disabled || false\"\r\n [field]=\"control.field\">\r\n <ng-template let-item pTemplate=\"item\">\r\n <div class=\"flex align-items-center gap-2\">\r\n <div>{{ item._display }}</div>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'input:search'\">\r\n <div class=\"p-inputgroup\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"value\" (focusout)=\"sendValue()\"\r\n (keyup.enter)=\"doFocusOut()\" />\r\n <button type=\"button\" pButton icon=\"pi pi-search\" (click)=\"searchValue(value)\"></button>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <sf-file-upload *ngIf=\"!isLoading\" [accept]=\"control.config?.accept || 'image/*,application/pdf'\"\r\n [loading]=\"uploadingFiles\" [files]=\"uploadedFiles\" [configName]=\"control.config?.configName\"\r\n [limit]=\"control.config?.limit || 1\" (onUpload)=\"onUpload($event)\"\r\n (onDeleteFile)=\"onDeleteFile($event)\"></sf-file-upload>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'calendar'\">\r\n <!-- <div class=\"p-col-12\">\r\n <p-inputgroup>\r\n <p-inputMask [(ngModel)]=\"tempValue\" [mask]=\"maskDate\" [placeholder]=\"control.placeholder\"\r\n (onBlur)=\"onChangeSDate($event)\" [disabled]=\"control.disabled || false\"></p-inputMask>\r\n <p-calendar\r\n [(ngModel)]=\"value\" class=\"only-icon\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1900:2035\"\r\n [dateFormat]=\"control.format || 'yy-mm-dd'\" appendTo=\"body\" [disabled]=\"control.disabled || false\"\r\n [showOnFocus]=\"!control.hide\" [placeholder]=\"control.placeholder || 'aaaa-mm-dd'\"\r\n [touchUI]=\"control.touchUI || false\" [showIcon]=\"control.showIcon || false\" (onSelect)=\"onChangeDate()\"\r\n (onBlur)=\"onChangeDate()\"\r\n ></p-calendar>\r\n </p-inputgroup>\r\n \r\n </div> -->\r\n <p-datepicker\r\n [(ngModel)]=\"value\" inputId=\"icondisplay\" [monthNavigator]=\"true\" [yearNavigator]=\"true\" yearRange=\"1900:2035\"\r\n [dateFormat]=\"control.format || 'yy-mm-dd'\" appendTo=\"body\" [disabled]=\"control.disabled || false\"\r\n [showOnFocus]=\"control.hide\" [placeholder]=\"control.placeholder || 'aaaa-mm-dd'\"\r\n [showIcon]=\"control.showIcon || false\" (onSelect)=\"onChangeDate()\"\r\n (onBlur)=\"onChangeDate()\" [iconDisplay]=\"'input'\" class=\"p-0\"\r\n ></p-datepicker>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'numeric'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <p-inputNumber [ngModel]=\"value\" (ngModelChange)=\"value = $event; sendValue()\" mode=\"decimal\" [minFractionDigits]=\"control.minFractionDigits || 0\"\r\n [min]=\"control.min || null\" [max]=\"control.max || null\" (onInput)=\"sendNumberValue($event)\"\r\n [prefix]=\"control.currency || '$ '\" [disabled]=\"control.disabled || false\"></p-inputNumber>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'decimal'\">\r\n <p-inputNumber [ngModel]=\"value\" mode=\"decimal\" (ngModelChange)=\"value = $event; sendValue()\" [min]=\"control.min || null\"\r\n [max]=\"control.max || null\" [minFractionDigits]=\"control.minFractionDigits || 0\"\r\n [locale]=\"control.locale || undefined\" [useGrouping]=\"control.useGrouping || false\"\r\n [disabled]=\"control.disabled || false\"></p-inputNumber>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'percentage'\">\r\n <p-inputNumber [ngModel]=\"value\" suffix=\" %\" (ngModelChange)=\"value = $event; sendValue()\" (onInput)=\"sendValue()\" [min]=\"control.min || null\"\r\n [max]=\"control.max || null\" [minFractionDigits]=\"control.minFractionDigits || 2\"\r\n [locale]=\"control.locale || undefined\" [disabled]=\"control.disabled || false\"></p-inputNumber>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'decimal:search'\">\r\n <div class=\"p-inputgroup\">\r\n <input type=\"number\" pInputText [(ngModel)]=\"value\" (focusout)=\"sendValue()\"\r\n (keyup.enter)=\"doFocusOut()\" />\r\n <button type=\"button\" pButton icon=\"pi pi-search\" (click)=\"searchValue(value)\"></button>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'array'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'file'\">\r\n <sf-file-upload *ngIf=\"!isLoading\" [loading]=\"uploadingFiles\" [files]=\"uploadedFiles\"\r\n [configName]=\"control.config?.configName\" [limit]=\"control.config?.limit || 1\"\r\n [accept]=\"control.config?.accept || 'image/*,application/pdf'\" (onUpload)=\"onUpload($event)\"\r\n (onDeleteFile)=\"onDeleteFile($event)\"></sf-file-upload>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'multiselect'\">\r\n <p-multiSelect [options]=\"dataFromService\" [(ngModel)]=\"value\" (onChange)=\"sendValue()\"\r\n [optionLabel]=\"control.config?.optionLabel\" [optionValue]=\"control.config?.optionValue\"\r\n [placeholder]=\"control.config?.placeholder\"\r\n [display]=\"control.config?.display || 'chip'\"></p-multiSelect>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <ng-container [ngSwitch]=\"control.subtype\">\r\n <ng-container *ngSwitchCase=\"'switch'\">\r\n <p-inputSwitch [(ngModel)]=\"tempValue\" (onChange)=\"onChangeSwitch()\" [id]=\"label\"\r\n [trueValue]=\"control?.trueValue !== undefined ? control?.trueValue: null\"\r\n [falseValue]=\"control?.falseValue !== undefined ? control?.falseValue: null\"></p-inputSwitch>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <p-checkbox [(ngModel)]=\"tempCheckVal\" [binary]=\"control?.binary !== undefined ? control?.binary: true\" (onChange)=\"onCheckboxChange()\" />\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n","import { Component, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewChildren, HostBinding } from '@angular/core';\r\n\r\nimport { MessageService } from 'primeng/api';\r\n// import { Message } from 'primeng/message'; // Removed in PrimeNG 18\r\nimport * as jsonpath from 'jsonpath';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Shema } from '../../shared/models/shema.model';\r\nimport { ChangeData, Loading, SfCrudService } from '../../sf-crud.service';\r\nimport { ConfigRegistro } from '../../shared/models/crud-config.model';\r\nimport { StepService } from '../../shared/services/step.service';\r\nimport { Simulador } from 'sf-simulador';\r\nimport * as _ from \"lodash\";\r\nimport { AdoService, JWTService, ProcesoADO } from 'sf-ado';\r\nimport { Tooltip } from 'primeng/tooltip';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-form',\r\n templateUrl: './form.component.html',\r\n styleUrls: ['./form.component.css'],\r\n standalone: false\r\n})\r\nexport class FormComponent implements OnChanges, OnInit, OnDestroy{\r\n @HostBinding(\"style.--primary-color\") color!: string;\r\n @HostBinding(\"style.--secondary-color\") color2!: string;\r\n @HostBinding(\"style.--button-color\") colorButton!: string;\r\n @Input() uiEsquema: any;\r\n @Input() esquema!: Shema;\r\n @Input() data: any;\r\n @Input() isDialog= false;\r\n @Input() isAddressDialog= false;\r\n @Input() separador?: string;\r\n newAddress?: string;\r\n currentAddress?: string;\r\n registro!: ConfigRegistro;\r\n values!: any[][];\r\n controls!: any[][];\r\n controlsLoaded = false;\r\n idKatios!: string;\r\n visible!: boolean[][];\r\n isMobile = false;\r\n urlADO?: string;\r\n proceso: ProcesoADO | undefined;\r\n private loading!:Loading;\r\n public subscription: Subscription | undefined= undefined;\r\n \r\n\r\n @ViewChildren(Tooltip) tooltips!: QueryList <Tooltip>;\r\n\r\n\r\n constructor(\r\n private messageService: MessageService,\r\n private crudService: SfCrudService,\r\n private domSanitizer: DomSanitizer,\r\n private stepService: StepService,\r\n private adoService: AdoService,\r\n private jwtService: JWTService\r\n ) {\r\n this.loading = {inProgress: true, target: undefined};\r\n if (window.innerWidth <= 768) this.isMobile = true\r\n window.addEventListener('resize', () => {\r\n if (window.innerWidth <= 768) this.isMobile = true\r\n });\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.buildControls()\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n try {\r\n if (this.isAddressDialog) this.currentAddress = this.data.currentValue\r\n this.jwtService.idKatios = this.crudService.idKatios\r\n this.jwtService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones\r\n this.adoService.servidorIntegraciones = this.crudService.environment.ServidorIntegraciones\r\n this.idKatios = this.crudService.idKatios\r\n this.stepService.requestApproved$.subscribe((approved) => {\r\n if (!this.isDialog && approved){\r\n this.uiEsquema = this.crudService.getUIEsquema(this.stepService.currentIndex)\r\n this.esquema = this.crudService.getEsquema(this.stepService.currentIndex)\r\n this.data = this.crudService.getData(this.stepService.currentIndex);\r\n this.registro = this.crudService.getRegistro(this.stepService.currentIndex)\r\n this.buildControls();\r\n }\r\n })\r\n this.defaultField();\r\n } catch (error) {\r\n console.error(error)\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n if(this.subscription) this.subscription.unsubscribe();\r\n }\r\n\r\n emitLoadingForm($event: boolean){\r\n this.loading.inProgress = $event\r\n Promise.resolve().then(() => this.crudService.formLoading = this.loading)//si no se usa asi el enproceso totea con el simulador\r\n }\r\n\r\n\r\n\r\n buildControls(){\r\n this.visible = []\r\n this.controlsLoaded = false;\r\n this.controls = []\r\n this.values = []\r\n\r\n //address\r\n if (this.isAddressDialog) this.newAddress = this.crudService.armarNuevaDireccion(\"string\", this.data, this.crudService.getValue(\"$..separador\", this.data))\r\n\r\n this.uiEsquema.elements.forEach((layout: any, i: number) => {\r\n let isVisible = layout.conditions ? this.crudService.isConditionsCompleted(layout.conditions, this.registro.conditions || [], this.data): true\r\n this.visible.push(layout.elements? layout.elements.map(() => isVisible): [isVisible])\r\n this.controls.push([])\r\n this.values.push([])\r\n\r\n layout.elements?.forEach((element: any, j: number) => {\r\n if (element.conditions) this.visible[i][j] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data)\r\n\r\n if (element.ngStyle && typeof(element.ngStyle) == \"string\") element.ngStyle = JSON.parse(element.ngStyle)\r\n if (element.url){\r\n this.controls[i].push(undefined)\r\n let url = this.crudService.applyStringKeys(element.url)\r\n this.values[i].push(this.domSanitizer.bypassSecurityTrustResourceUrl(url))\r\n }\r\n else if (!element.scope){\r\n this.controls[i].push(undefined)\r\n this.values[i].push(undefined)\r\n }else{\r\n try{\r\n this.controls[i].push(this.crudService.getControl(element.scope, this.esquema))\r\n this.controls[i][j].scope = element.scope\r\n this.controls[i][j].labelPosition = element.labelPosition\r\n this.controls[i][j].reverse = element.reverse\r\n this.values[i].push(this.crudService.getValue(element.scope, this.data))\r\n }catch(e){\r\n console.log(element)\r\n console.error(e)\r\n console.log(this.controls[i])\r\n console.log(this.values[i])\r\n }\r\n\r\n }\r\n });\r\n });\r\n this.controlsLoaded = true;\r\n let idProceso = this.data.ADO?.dataProceso?.idProceso\r\n if (idProceso && this.proceso?.id != idProceso) this.refreshIntegracion(idProceso)\r\n }\r\n\r\n refreshIntegracion(idProceso: number){\r\n this.emitLoadingForm(true)\r\n return Promise.all([\r\n this.adoService.getProceso(idProceso).then((proceso) => {\r\n this.proceso = proceso\r\n this.data.ADO.proceso = this.proceso\r\n })\r\n ])\r\n .finally(() => this.emitLoadingForm(false))\r\n }\r\n\r\n extracControlFromTableElements(i:any, j:any, col:any){\r\n const property = this.controls[i][j].properties[col.col];\r\n return property\r\n }\r\n\r\n extracValueFromTableElements(i:any, j:any, k:any, col:any){\r\n const value = this.values[i][j][k][col.col];\r\n return value\r\n }\r\n\r\n setValue(value: any, scope: any, i: number, j: number, k: number) {\r\n let transformedScope = scope;\r\n if (scope.includes('.items.properties.')) {\r\n const parts = scope.split('.items.properties.');\r\n const basePath = parts[0]; \r\n const property = parts[1]; \r\n transformedScope = `${basePath}[${k}].${property}`;\r\n } else {\r\n transformedScope = scope.replaceAll('..properties', '');\r\n }\r\n\r\n if (transformedScope) {\r\n let control = this.controls[i][j];\r\n if(control.convert) value = this.getDefaultValueForType(control.convert, value);\r\n this.values[i][j] = value;\r\n jsonpath.value(this.data, transformedScope, value);\r\n\r\n this.crudService.changeData = new ChangeData(value, transformedScope, this.crudService.index)\r\n this.uiEsquema.elements.forEach((layout: any, iLayout: number) => {\r\n if (layout.conditions){\r\n let isVisible = this.crudService.isConditionsCompleted(layout.conditions, this.crudService.getRegistro(this.crudService.index).conditions || [], this.data)\r\n if(layout.elements) this.visible[iLayout] = layout.elements.map(() => isVisible)\r\n else this.visible[iLayout][0] = isVisible\r\n }\r\n\r\n layout.elements?.forEach((element: any, indexEl: number) => {\r\n if (element.conditions){\r\n this.visible[iLayout][indexEl] = this.crudService.isConditionsCompleted(element.conditions, this.registro.conditions || [], this.data)\r\n }\r\n })\r\n })\r\n control.applyKeys?.forEach((i: number) => {\r\n let key = this.registro.keys ? this.registro.keys[i] : undefined\r\n if (key) this.crudService.applyKey(key, this.registro, key.indexData ? this.crudService.getData(key.indexData) : this.data)\r\n });\r\n this.buildControls()\r\n }\r\n this.crudService.applyValuesOnEvent('onChange', this.esquema, undefined, this.data);\r\n }\r\n\r\n\r\n sendNotification(message: any) {\r\n this.messageService.add(message)\r\n }\r\n\r\n applyValuesFromObject(event: any) {\r\n if (event.optionValue){\r\n for (let i = 0; i < event.optionValue.length; i++) {\r\n const optionVal = event.optionValue[i];\r\n const newVal = event.data ? this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]): null;\r\n jsonpath.value(this.data, optionVal.scope.replace('.properties',''), this.aplyFormatValue(optionVal.scope, event.data[optionVal.key]))\r\n this.setValueByScope(optionVal.scope, newVal)\r\n }\r\n }\r\n }\r\n\r\n setValueByScope(scope: string, newVal: any){\r\n for (let i = 0; i < this.controls.length; i++) {\r\n const row = this.controls[i];\r\n row.forEach((el, j) => {\r\n if (el.scope && el.scope.replace('.properties','')== scope.replace('.properties','')){\r\n this.values[i][j] = newVal\r\n }\r\n })\r\n }\r\n }\r\n\r\n aplyFormatValue(scope: string, value: any) {\r\n const control = jsonpath.query(this.esquema, scope)[0]\r\n let resp;\r\n switch (control.type) {\r\n case 'date':\r\n resp = new Date(`${value}`)\r\n break;\r\n case 'numeric':\r\n resp = +value\r\n break;\r\n default:\r\n resp = value\r\n break;\r\n }\r\n return resp\r\n }\r\n\r\n editRow(element: any, data: any, index: number) {\r\n this.stepService.addCustomChildrenEvent(\"onClickedEditButton\", {element, data, index})\r\n }\r\n\r\n deleteRow(element: any, index: number) {\r\n this.stepService.addCustomChildrenEvent(\"onClickedDeleteButton\", {element, index})\r\n }\r\n\r\n addObjectArray(element: any) {\r\n this.stepService.addCustomChildrenEvent(\"onClickedAddButton\", {element})\r\n }\r\n\r\n openPopUpDireccion(scope: string){\r\n this.stepService.addCustomChildrenEvent(\"onClickedAddress\", {scope})\r\n }\r\n\r\n onStateDocument(state: string){\r\n this.data.pdf.signed = state.toUpperCase() == \"FIRMADO\"\r\n }\r\n\r\n onSimuladorChange($event: Simulador) {\r\n Promise.resolve().then(() => Object.assign(this.data, $event))\r\n }\r\n\r\n goToADO(){\r\n let url = window.location.href;\r\n let callback = url.split('?')[0] + `?id=${this.data.idForm}`;\r\n let idProceso = this.data.ADO.dataProceso?.idProceso\r\n let dataProceso = this.data.ADO.dataProceso\r\n dataProceso.ctivo = this.data.idForm\r\n //this.data.ADO.idTransaction = null\r\n //this.data.ADO.idProceso = null\r\n if (idProceso){\r\n window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`\r\n window.location.reload();\r\n }\r\n else if (dataProceso){\r\n window.location.href = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?dataProceso=${btoa(JSON.stringify(dataProceso))}&callback=${encodeURIComponent(callback)}`\r\n window.location.reload();\r\n }\r\n }\r\n onTouchDescription(id: string, alignRight=true) {\r\n const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === id)!;\r\n try{\r\n foundTooltip.activate();\r\n alignRight ? foundTooltip.alignRight(): foundTooltip.alignTop();\r\n }catch(ex){}\r\n }\r\n\r\n onUnTouchDescription(descripcion: string) {\r\n const foundTooltip = this.tooltips.find(tooltip => tooltip.el.nativeElement.id === descripcion)!;\r\n try{\r\n foundTooltip.deactivate();\r\n }catch(ex){}\r\n }\r\n\r\n copyToClipboard(idProceso: string){\r\n let url = `${this.crudService.environment.WebUtilities}GWV/ADO/${this.crudService.idKatios}?id=${idProceso}`\r\n navigator.clipboard.writeText(url)\r\n }\r\n\r\n // Array Layout methods\r\n getArrayItems(scope: string): any[] {\r\n if (!scope) return [];\r\n const arrayData = jsonpath.value(this.data, scope.replace(\"..properties\",\"\"));\r\n return Array.isArray(arrayData) ? arrayData : [];\r\n }\r\n\r\n private updateScopesForArrayItem(schema: any, arrayIndex: number): void {\r\n if (schema.scope) {\r\n schema.scope = schema.scope.replace(/(\\$\\.\\.[^.\\[]+)/, `$1[${arrayIndex}]`);\r\n }\r\n \r\n if (schema.elements && Array.isArray(schema.elements)) {\r\n schema.elements.forEach((element: any) => {\r\n this.updateScopesForArrayItem(element, arrayIndex);\r\n });\r\n }\r\n }\r\n\r\n addArrayItem(element: any, layoutIndex: number): void {\r\n if (!element.scope) return;\r\n let arrayData = jsonpath.value(this.data, element.scope.replace(\"..properties\",\"\"));\r\n if (!Array.isArray(arrayData)) {\r\n arrayData = [];\r\n jsonpath.value(this.data, element.scope, arrayData);\r\n }\r\n const newItem = this.createEmptyArrayItem(element);\r\n arrayData.push(newItem);\r\n }\r\n\r\n removeArrayItem(element: any, layoutIndex: number, arrayIndex: number): void {\r\n if (!element.scope) return;\r\n \r\n const arrayData = jsonpath.value(this.data, element.scope.replace(\"..properties\",\"\"));\r\n if (Array.isArray(arrayData) && arrayIndex >= 0 && arrayIndex < arrayData.length) {\r\n arrayData.splice(arrayIndex, 1);\r\n }\r\n }\r\n\r\n private createEmptyArrayItem(element: any): any {\r\n const newItem: any = {};\r\n if (element.elements && Array.isArray(element.elements)) {\r\n this.extractDefaultValues(element.elements, newItem);\r\n }\r\n return newItem;\r\n }\r\n\r\n private extractDefaultValues(elements: any[], target: any): void {\r\n elements.forEach(element => {\r\n if (element.scope) {\r\n const propertyMatch = element.scope.split('.').pop();\r\n if (propertyMatch) {\r\n target[propertyMatch] = null;\r\n }\r\n } \r\n if (element.elements && Array.isArray(element.elements)) {\r\n this.extractDefaultValues(element.elements, target);\r\n }\r\n });\r\n }\r\n\r\n private getDefaultValueForType(type: any,value:any): any {\r\n if (!type) return '';\r\n try{\r\n switch (type) {\r\n case 'numeric':\r\n return parseFloat(value) || 0;\r\n case 'integer':\r\n return parseInt(value) || 0;\r\n case 'boolean':\r\n return Boolean(value);\r\n case 'array':\r\n return JSON.parse(value) || [];\r\n case 'object':\r\n return JSON.parse(value) || {};\r\n default:\r\n return '';\r\n }\r\n }\r\n catch(e){\r\n return '';\r\n }\r\n \r\n }\r\n getControl(sub:any, index: number): any {\r\n const control = this.crudService.getControl(sub.scope, this.esquema);\r\n if(sub.default?.index === index) {\r\n control.disabled = true;\r\n }else{\r\n control.disabled = false;\r\n }\r\n return control;\r\n }\r\n\r\n defaultField(): void {\r\n this.uiEsquema.elements.forEach((layout: any, i: number) => {\r\n if (layout.type=='ArrayLayout' && this.getArrayItems(layout.scope).length==0){\r\n const target: any = {};\r\n let arrayData = jsonpath.value(this.data, layout.scope.replace(\"..properties\",\"\"));\r\n if (!Array.isArray(arrayData)) {\r\n arrayData = [];\r\n jsonpath.value(this.data, layout.scope, arrayData);\r\n }\r\n layout.elements?.forEach((el: any, j: number) => {\r\n const propertyMatch = el.scope.split('.').pop();\r\n if (el.default) {\r\n target[propertyMatch] = el.default.value;\r\n }else{\r\n target[propertyMatch] = null;\r\n }\r\n });\r\n arrayData.push(target);\r\n }\r\n });\r\n }\r\n getValueFromData(el:any,subEl:any,k:number): any{\r\n const arrayData = jsonpath.value(this.data, el.scope.replace(\"..properties\",\"\"));\r\n const property = subEl.scope.split('.').pop();\r\n return arrayData && arrayData[k] && subEl.default ? arrayData[k][property] : null;\r\n }\r\n\r\n setDependencyValue(value:any, i:number, j:number,k: number){\r\n if(!value.scope) return;\r\n this.setValue(value.data, value.scope, i, j, k);\r\n }\r\n \r\n}\r\n","<div *ngIf=\"controlsLoaded\" class=\"frm-container\">\r\n <ng-container *ngIf=\"isAddressDialog && currentAddress\">\r\n Dirección actual: {{currentAddress | formatAddress: separador}}\r\n <br>\r\n </ng-container>\r\n <br>\r\n <ng-container *ngIf=\"isAddressDialog\">\r\n Dirección nueva: {{newAddress | formatAddress: separador}}\r\n </ng-container>\r\n <p-fluid>\r\n <div *ngFor=\"let element of uiEsquema.elements; let i = index\" [class]=\"element?.class\" #a>\r\n <ng-container [ngSwitch]=\"element.type\" *ngIf=\"visible[i][0]\">\r\n <div class=\"label\" *ngSwitchCase=\"'Label'\" [style]=\"element?.style\">\r\n {{element?.label}}\r\n </div>\r\n <ng-container *ngSwitchCase=\"'HorizontalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n <div *ngSwitchCase=\"'Texto'\" [ngStyle]=\"{'height': '100%', 'margin-block': 'auto'}\">\r\n <p>{{el.label}}</p>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'VerticalLayout'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\" *ngIf=\"visible[i][j]\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"controls[i][j]\" [label]=\"el.label\"\r\n [value]=\"values[i][j]\" (setValue)=\"setValue($event, el.scope, i, j)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"></sf-control>\r\n <div *ngSwitchCase=\"'PDF'\" class=\"pdf\">\r\n <iframe [src]=\"values[i][j]\" frameborder=\"0\" allow=\"geolocation *; camera *;\"></iframe>\r\n </div>\r\n <div *ngSwitchCase=\"'PDF-SIGN'\">\r\n <sf-sign [allowDownload]=\"true\" [idkatios]=\"idKatios\" [tdoc]=\"data.pdf.tdoc\" [ndoc]=\"data.pdf.ndoc\"\r\n [idDocument]=\"data.pdf.id\" [typeDocument]=\"data.pdf.idDoc\"\r\n (stateDocument)=\"onStateDocument($event)\"></sf-sign>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'SIMULADOR'\">\r\n <sf-simulador [simulador]=\"data\" [otherToolTips]=\"data.otherTooltips\"\r\n (simuladorChange)=\"onSimuladorChange($event)\" (enProceso)=\"emitLoadingForm($event)\"></sf-simulador>\r\n </ng-container>\r\n <div *ngSwitchCase=\"'ADO'\" class=\"buttons\">\r\n <p-button *ngIf=\"!data?.ADO?.dataProceso?.idProceso\" [ngStyle]=\"el?.ngStyle\" (click)=\"goToADO()\" label=\"Validar identidad\"></p-button>\r\n </div>\r\n <div *ngSwitchCase=\"'ADO'\">\r\n <div *ngIf=\"data?.ADO?.dataProceso?.idProceso\">\r\n <div class=\"data-ado-container\">\r\n <ng-container *ngIf=\"proceso\">\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === true\" pTooltip=\"Validado\" tooltipPosition=\"top\" id=\"Validado\" class=\"pi pi-user\" style=\"color: green\"\r\n (touchstart)=\"onTouchDescription('Validado', false)\" (touchend)=\"onUnTouchDescription('Validado')\"></i>\r\n <i *ngIf=\"proceso?.respuestaProceso?.EsExitoso === false\" pTooltip=\"No validado\" tooltipPosition=\"top\" id=\"No-Validado\" class=\"pi pi-user\" style=\"color: red\"\r\n (touchstart)=\"onTouchDescription('No-Validado', false)\" (touchend)=\"onUnTouchDescription('No-Validado')\"></i>\r\n <i *ngIf=\"!proceso?.respuestaProceso\" pTooltip=\"Sin validar\" tooltipPosition=\"top\" class=\"pi pi-user\" id=\"Sin-Validar\" style=\"color: gray\"\r\n (touchstart)=\"onTouchDescription('Sin-Validar', false)\" (touchend)=\"onUnTouchDescription('Sin-Validar')\"></i>\r\n </ng-container>\r\n <div class=\"buttons\">\r\n <button pButton icon=\"pi pi-external-link\" (click)=\"goToADO()\" pTooltip=\"Abrir\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-copy\" (click)=\"copyToClipboard(proceso.id)\" pTooltip=\"Copiar\" [disabled]=\"!proceso\"></button>\r\n <button pButton icon=\"pi pi-refresh\" (click)=\"refreshIntegracion(proceso.id)\" pTooltip=\"Refrescar\" [disabled]=\"!proceso\"></button>\r\n </div>\r\n </div>\r\n <p class=\"result-ado\" *ngIf=\"proceso && !proceso.respuestaProceso && proceso.estado == 'PROCESANDO'\">Procesando</p>\r\n <p class=\"result-ado\" *ngIf=\"proceso && proceso.respuestaProceso && proceso.estado == 'TERMINADO'\">{{proceso.respuestaProceso.Detalle ?? proceso.respuestaProceso.Mensaje}}</p>\r\n </div>\r\n </div>\r\n <ng-container *ngSwitchCase=\"'Table'\">\r\n <p-table [value]=\"values[i][j]\" [columns]=\"controls[i][j].config.columns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div class=\"flex align-items-center justify-content-between\">\r\n <button pButton pRipple icon=\"pi pi-plus\" (click)=\"addObjectArray(el)\"\r\n class=\"p-button-success\" [disabled]=\"controls[i][j].disabled === true\"></button>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{col.label}}\r\n </th>\r\n <ng-container>\r\n <th></th>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-rowIndex=\"rowIndex\">\r\n <tr>\r\n <ng-container *ngFor=\"let col of columns\" [ngSwitch]=\"col.type\">\r\n <ng-container *ngSwitchCase=\"'control'\">\r\n <sf-control [control]=\"extracControlFromTableElements(i, j, col)\" [label]=\"\"\r\n [value]=\"extracValueFromTableElements(i, j, rowIndex, col)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (setValue)=\"setValue($event, extracValueFromTableElements(i, j, rowIndex, col).scope, i, j)\"\r\n [showTempValue]=\"true\"\r\n >\r\n </sf-control>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <td>{{rowData[col.col]}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'address'\">\r\n <td>{{rowData[col.col] | formatAddress: extracControlFromTableElements(i, j, col).separador }}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency:USD'\">\r\n <td>{{rowData[col.col] | currency: 'USD'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:yyyy-mm-dd'\">\r\n <td>{{rowData[col.col] | date: 'yyyy-mm-dd'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date:dd/mm/yyyy'\">\r\n <td>{{rowData[col.col] | date: 'dd/MM/yyyy'}}</td>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <td>\r\n <i *ngIf=\"rowData[col.col]\" class=\"pi pi-check\"></i>\r\n <i *ngIf=\"!rowData[col.col]\" class=\"pi pi-times\"></i>\r\n </td>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container>\r\n <td>\r\n <button pButton pRipple type=\"button\"\r\n (click)=\"editRow(el, rowData, rowIndex)\" icon=\"pi pi-pencil\"\r\n class=\"p-button-rounded p-button-info mr-1\"></button>\r\n <button pButton pRipple type=\"button\" (click)=\"deleteRow(el, rowIndex)\" [disabled]=\"controls[i][j].disabled === true\"\r\n icon=\"pi pi-trash\" class=\"p-button-rounded p-button-danger\"></button>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'ArrayLayout'\">\r\n <div class=\"col-12\">\r\n <div *ngIf=\"element.addButton\" class=\"flex items-center justify-content-between mb-2\">\r\n <p-button [icon]=\"element.addButton.icon\" [label]=\"element.addButton.label\" (click)=\"addArrayItem(element, i)\" [severity]=\"element.addButton.severity || 'primary'\"/>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let arrayItem of getArrayItems(element.scope); let arrayIndex = index\" [ngClass]=\"element.classElements || 'flex align-items-center w-full'\">\r\n <div *ngFor=\"let el of element.elements; let j =index\" [class]=\"el?.class\">\r\n <ng-container [ngSwitch]=\"el.type\">\r\n <sf-control *ngSwitchCase=\"'Control'\" [control]=\"getControl(el,arrayIndex)\" [label]=\"el.label\"\r\n [value]=\"values[i][j] || getValueFromData(element,el,arrayIndex)\" (setValue)=\"setValue($event, el.scope, i, j,arrayIndex)\"\r\n (sendNotification)=\"sendNotification($event)\"\r\n (sendObject)=\"applyValuesFromObject($event)\"\r\n (addressClicked)=\"openPopUpDireccion(el.scope)\"\r\n (setDependencyValue)=\"setDependencyValue($event, i, j, arrayIndex)\"></sf-control>\r\n </ng-container>\r\n </div>\r\n <p-button *ngIf=\"element.deleteButton && !(element.deleteButton.hide?.index === arrayIndex)\" [icon]=\"element.deleteButton.icon\" [rounded]=\"element.deleteButton.rounded || false\" [text]=\"element.deleteButton.text || true\" [severity]=\"element.deleteButton.severity || 'danger'\" (click)=\"removeArrayItem(element, i, arrayIndex)\" \r\n [label]=\"element.deleteButton.label\" />\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </p-fluid>\r\n</div>\r\n\r\n<p-toast *ngIf=\"isDialog\"></p-toast>\r\n","import { Component, HostBinding, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef, Output, EventEmitter } from '@angular/core';\r\n//import { ConfigRegistro, Operation, RequestChecking } from '../../shared/models/crud-config.model';\r\n//import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigRegistro, Operation, RequestChecking } from '../../shared/models/crud-config.model';\r\n//import { DialogService, DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { GeneralService } from '../../shared/services/general.service';\r\nimport { MenuItem, MessageService } from 'primeng/api';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Shema } from '../../shared/models/shema.model';\r\nimport * as jsonpath from 'jsonpath';\r\nimport { Loading, SfCrudService } from '../../sf-crud.service';\r\nimport { SfPdfsignService } from 'sf-pdfsign';\r\nimport { SfSimuladorService } from 'sf-simulador';\r\nimport { Condition } from '../../shared/models/Conditions.model';\r\nimport { StepService } from '../../shared/services/step.service';\r\nimport * as _ from \"lodash\";\r\nimport Swal, { SweetAlertOptions } from 'sweetalert2';\r\nimport { NotificationService } from '../../shared/services/notification.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'sf-registro',\r\n templateUrl: './registro.component.html',\r\n styleUrls: ['./registro.component.css'],\r\n standalone: false,\r\n providers: [MessageService]\r\n})\r\nexport class RegistroComponent implements OnChanges, OnInit, OnDestroy{\r\n @HostBinding(\"style.--primary-color\") color!: string;\r\n @HostBinding(\"style.--secondary-color\") color2!: string;\r\n @HostBinding(\"style.--button-color\") colorButton!: string;\r\n @Input() idKatios: string = '';\r\n @Input() trx: string = '';\r\n @Input() id: string = '';\r\n @Input() user: any;\r\n @Input() dataExt: any;\r\n @Input() ids: string[] = [];\r\n @Input() environment?: any; \r\n @Input() buttonsFooterTemplate!: TemplateRef<any>;\r\n @Input() back_route: string = \"\";\r\n @Output() sendData: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() onSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() onLoaded: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n public btnSubmit: any;\r\n notificationSubscription: any;\r\n subsToKillOnDestroy: Subscription[] = [];\r\n\r\n @Input() set idEntidad(value: string) {\r\n this.idForm = value\r\n }\r\n\r\n public idForm!: string;\r\n public isLocal: boolean = false;\r\n public displays: boolean[]=[];\r\n public firstLoad = true;\r\n public logo: string | undefined;\r\n public dialogElements: DialogElement[]=[];\r\n private loading!:Loading;\r\n items: MenuItem[] = [];\r\n\r\n constructor(\r\n private generalService: GeneralService,\r\n private activeRoute: ActivatedRoute,\r\n private messageService: MessageService,\r\n public sfCrudService: SfCrudService,\r\n private stepService: StepService,\r\n private sfPdfSignService: SfPdfsignService,\r\n private sfSimuladorService: SfSimuladorService,\r\n private notificationService: NotificationService,\r\n private router: Router\r\n ) {\r\n this.loading = {inProgress: true, target: undefined};\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.environment) {\r\n this.environment = JSON.parse(sessionStorage.getItem('ConfigJSON') || '{}');\r\n }\r\n\r\n if (this.idKatios && this.idForm && this.environment && (changes[\"idKatios\"] || changes[\"idEntidad\"])) {\r\n this.sfCrudService.ids = this.ids\r\n this.sfCrudService.idKatios = this.idKatios\r\n this.sfCrudService.environment = this.environment\r\n this.generalService.idKatios = this.idKatios\r\n this.generalService.environment = this.environment\r\n this.sfPdfSignService.setEnviroments(this.environment)\r\n this.sfSimuladorService.environments = this.environment\r\n this.sfSimuladorService.idKatios = this.idKatios\r\n this.loadConfigCrud();\r\n }\r\n if(this.onLoaded) this.onLoaded.emit();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.cargarMascarasDirecciones()\r\n this.instanceSubsStepService();\r\n this.notificationSubscription = this.notificationService.notificationAdded$().subscribe(notification => {\r\n if(notification?.requestChecking?.useSwal){\r\n Swal.fire(notification.msg as SweetAlertOptions).then((res) => {\r\n if ((notification.msg as SweetAlertOptions).showCancelButton && res.isDismissed && notification.requestChecking?.cancelRedirect) {\r\n if (notification.requestChecking.cancelRedirect.toUpperCase() == \"INICIO\") this.sfCrudService.redirectToInicio()\r\n else window.location.href = notification.requestChecking.cancelRedirect\r\n } else if (res.isConfirmed && notification.requestChecking?.redirect) {\r\n if (notification.requestChecking.redirect.toUpperCase() == \"INICIO\") this.sfCrudService.redirectToInicio()\r\n else window.location.href = notification.requestChecking.redirect\r\n }\r\n })\r\n }\r\n else if (notification?.msg && notification.requestChecking?.redirect){\r\n this.messageService.add(notification.msg);\r\n if (notification.requestChecking.redirect.toUpperCase() == \"INICIO\") this.sfCrudService.redirectToInicio()\r\n else if(notification.requestChecking.redirect.toUpperCase() === \"ATRAS\") this.back();\r\n else {\r\n let newURL = this.sfCrudService.getURLRedirect(notification.requestChecking.redirect)\r\n window.location.href = newURL\r\n window.location.reload()\r\n }\r\n }\r\n else if (notification?.msg){\r\n this.messageService.add(notification.msg);\r\n }\r\n });\r\n this.subsToKillOnDestroy.push(\r\n this.sfCrudService.operation$.subscribe((op) => {\r\n if(op) {\r\n this.stepService.currentIndex = op.index;\r\n this.sfCrudService.setTrx(op.trx, op.index);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.notificationSubscription) {\r\n this.notificationSubscription.unsubscribe();\r\n }\r\n this.subsToKillOnDestroy.forEach(sub => sub.unsubscribe())\r\n this.stepService.reset()\r\n this.sfCrudService.reset()\r\n }\r\n\r\n instanceSubsStepService(){\r\n this.subsToKillOnDestroy.push(this.stepService.customChildrenEvents$.subscribe((event: {name: string, data: any}) => {\r\n if (!event) return;\r\n switch (event.name.toUpperCase()) {\r\n case \"ONCLICKEDEDITBUTTON\":\r\n this.onClickedEditButton(event.data.element, event.data.data, event.data.index)\r\n break;\r\n case \"ONCLICKEDDELETEBUTTON\":\r\n this.deleteRow(event.data.element, event.data.index)\r\n break;\r\n case \"ONCLICKEDADDBUTTON\":\r\n this.onClickedAddButton(event.data.element)\r\n break;\r\n case \"ONCLICKEDADDRESS\":\r\n this.onClickedAddress(event.data.scope)\r\n break;\r\n }\r\n }))\r\n\r\n this.subsToKillOnDestroy.push(this.stepService.requestApproval$.subscribe((value) =>{\r\n if (value?.desired != undefined) {\r\n if (value.desired < value.current) {\r\n this.stepService.requestApproved = true;\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n this.scrollTop()\r\n }\r\n else{\r\n const operation =this.sfCrudService.getRegistro(this.indexCrud).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))!\r\n if (!this.validateData(operation, this.sfCrudService.getData(this.indexCrud), this.sfCrudService.getRegistro(this.indexCrud).conditions || [])) this.stepService.requestApproved = false;\r\n else if(operation?.method != null) this.uploadInfoStep(value)\r\n else if (operation?.answerChecking){ //no tiene request, solo un mensaje\r\n this.stepService.requestApproved = true\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n this.notificationService.addNotification(this.notificationService.generateMessage(\r\n this.notificationService.genDefaultMessage(\"success\", undefined, \"Información subida correctamente\", operation.answerChecking), {}, operation.answerChecking),\r\n operation.answerChecking\r\n );\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n this.scrollTop()\r\n }else{//no tiene nada configurado\r\n this.stepService.requestApproved = true\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n this.scrollTop()\r\n }\r\n }\r\n }\r\n }))\r\n }\r\n\r\n uploadInfoStep(position: {current: number, desired: number}){\r\n this.loading.inProgress = true\r\n this.sfCrudService.formLoading = this.loading\r\n this.submit(position.current).then(() => {\r\n let tieneRedirect = this.sfCrudService.currentOperation?.answerChecking !== undefined && this.sfCrudService.currentOperation?.answerChecking?.redirect !== undefined\r\n if (this.items.length == 1) {\r\n this.stepService.requestApproved = false\r\n //this.stepService.desiredIndex = undefined\r\n this.sfCrudService.index = this.stepService.currentIndex\r\n }\r\n else if (!tieneRedirect){\r\n this.advance(position.current, position.desired, false)\r\n }\r\n this.scrollTop()\r\n })\r\n .catch(() => {\r\n this.stepService.requestApproved = false\r\n\r\n }).finally(() => {\r\n this.loading.inProgress = false\r\n this.sfCrudService.formLoading = this.loading})\r\n }\r\n\r\n onClickBtnSubmit() {\r\n this.stepService.requestApproval = this.indexCrud\r\n }\r\n\r\n loadConfigCrud() {\r\n this.loading.inProgress = true\r\n this.sfCrudService.formLoading = this.loading;\r\n this.sfCrudService.dataExt = this.dataExt\r\n this.sfCrudService.crudLoaded = false;\r\n if (this.loadSession()) {\r\n this.sfCrudService.crudLoaded = true;\r\n return;\r\n }\r\n\r\n this.generalService.getCrudByEntidad(this.idKatios, this.idForm)\r\n .then((res: any) => {\r\n this.sfCrudService.uiEsquemas = res.uiEsquemas\r\n this.sfCrudService.esquemas = res.esquemas\r\n this.sfCrudService.registros = res.registros\r\n this.customizeCompany(res.uiEsquemas)\r\n this.sfCrudService.registros.forEach((_, i) => this.sfCrudService.setTrx(\"c\", i))\r\n this.loadData()\r\n .then(() => {\r\n this.setLabelSumbit()\r\n this.sfCrudService.dataset.forEach((data, i) => {\r\n if (this.activeRoute.snapshot.queryParams[\"_idGWVADO\"] && data.ADO?.dataProceso){\r\n data.ADO.dataProceso.idProceso = this.activeRoute.snapshot.queryParams[\"_idGWVADO\"]\r\n }\r\n if (this.activeRoute.snapshot.queryParams[\"_idADO\"] && data.ADO){\r\n data.ADO.idTransaction = this.activeRoute.snapshot.queryParams[\"_idADO\"]\r\n }\r\n this.sfCrudService.setDataSet(data, i)\r\n })\r\n })\r\n .finally(() => {\r\n let willExecuteRequest = this.advance(0, this.sfCrudService.uiEsquemas.length - 1, true)\r\n this.createSteps(res.uiEsquemas)\r\n this.sfCrudService.crudLoaded = true\r\n if (!willExecuteRequest){\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading;\r\n }\r\n })\r\n }).catch((ex) => {\r\n console.error(ex)\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading\r\n })\r\n\r\n }\r\n\r\n /**\r\n * Step will advance until esquema is not completed\r\n */\r\n advance(start: number, limit: number, executeRequest: boolean) {\r\n let i = start\r\n let op;\r\n let willExecuteRequest = false;\r\n let registro;\r\n while (i < limit){\r\n registro =this.sfCrudService.getRegistro(i)\r\n op = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(i)))!\r\n if (!this.validateData(op, this.sfCrudService.getData(i), registro.conditions || [], false)) break;\r\n i++;\r\n }\r\n\r\n this.sfCrudService.index = i\r\n this.stepService.currentIndex = i\r\n this.stepService.desiredIndex = i\r\n this.stepService.requestApproved = true\r\n registro =this.sfCrudService.getRegistro(i)\r\n let dataCurrentStep = this.sfCrudService.getData(i)\r\n op = this.sfCrudService.getRegistro(i).operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(i)))!\r\n if (executeRequest && (this.activeRoute.snapshot.queryParams[\"_idGWVADO\"] || this.activeRoute.snapshot.queryParams[\"_idADO\"]) //Viene de ADO\r\n && dataCurrentStep.ADO && this.validateData(op, dataCurrentStep, registro.conditions ?? [], false) //El step esta completo\r\n ) {\r\n this.stepService.requestApproval = i\r\n willExecuteRequest = true\r\n }\r\n return willExecuteRequest;\r\n }\r\n loadSession() {\r\n const wasLoaded = this.sfCrudService.loadSession()\r\n if (wasLoaded){\r\n this.customizeCompany(this.sfCrudService.uiEsquemas)\r\n this.stepService.currentIndex = this.sfCrudService.index\r\n this.createSteps(this.sfCrudService.uiEsquemas)\r\n this.loading.inProgress = false;\r\n this.sfCrudService.formLoading = this.loading\r\n }\r\n return wasLoaded\r\n }\r\n\r\n customizeCompany(uiEsquemas: any[]) {\r\n this.sfCrudService.configEmpresa = uiEsquemas.find(ui => ui.general)?.general\r\n this.logo = this.sfCrudService.configEmpresa?.icons?.carga;\r\n if(this.sfCrudService.configEmpresa){\r\n if (this.sfCrudService.configEmpresa.colors?.main) this.color = this.sfCrudService.configEmpresa.colors.main\r\n if (this.sfCrudService.configEmpresa.colors?.secondary) this.color2 = this.sfCrudService.configEmpresa.colors.secondary\r\n if (this.sfCrudService.configEmpresa.colors?.button) this.colorButton = this.sfCrudService.configEmpresa.colors.button\r\n }\r\n if (!this.colorButton) this.colorButton = \"blue\";\r\n if (!this.color2) this.color2 = \"blue\";\r\n if (!this.color) this.color = \"blue\";\r\n }\r\n\r\n scrollTop(){\r\n window.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n createSteps(uiEsquemas: any[]){\r\n this.items = []\r\n uiEsquemas.forEach((uiEsq, index) => {\r\n if (uiEsq.step) this.items.push({label: uiEsq.step, routerLink: index, queryParamsHandling: \"preserve\"})\r\n else this.items.push({label: `paso ${index}`, routerLink: index})\r\n this.sfCrudService.getRegistro(index) //ver si tiene un change\r\n })\r\n }\r\n\r\n /**\r\n * Instancia todos los esquemas, y realiza los requests para traer la data de todos los step.\r\n * @param esquema\r\n * @param registro\r\n * @returns\r\n */\r\n loadData(){\r\n this.sfCrudService.esquemas.forEach((esquema, i) => {\r\n const op = this.sfCrudService.registros[i].operations.find(x => x.type.startsWith(this.sfCrudService.getTrx(i)))\r\n this.sfCrudService.setDataSet(this.sfCrudService.createObject(esquema, op), i)\r\n //this.sfCrudService.setOptionalDataSet(this.sfCrudService.createOptionalObject(esquema, op), i);\r\n })\r\n \r\n return Promise.all(this.sfCrudService.registros.map((registro, i) => this.ids.length > 0 ? this.getInfoRegistro(registro, i, this.ids[i]): Promise.resolve()))\r\n }\r\n\r\n getInfoRegistro(configRegistro: ConfigRegistro, index: number, id: any) {\r\n const op = configRegistro.operations.find(x => x.type == 'read');\r\n if (!op) return;\r\n const url = this.sfCrudService.getURL(op, index, id)\r\n return this.generalService.genericRequest(op.method, url)\r\n .then((res: any) => {\r\n let value = undefined\r\n if (res?.data){\r\n value = Array.isArray(res.data) ? res.data[0] : res.data\r\n }\r\n else value = Array.isArray(res) ? res[0]: res\r\n\r\n this.sfCrudService.applyObjectKeys(value, op.keysEsquema || [], configRegistro)\r\n if (op.changeTrx) op.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n let errorChecking;\r\n if (Array.isArray(op.errorChecking)) errorChecking = op.errorChecking[0]\r\n else errorChecking = op.errorChecking\r\n\r\n this.notificationService.addNotification(this.notificationService.generateMessage(\r\n this.notificationService.genDefaultMessage(\"error\", \"Formulario no cargado correctamente\", \"\", errorChecking), error.error, errorChecking),\r\n errorChecking\r\n );\r\n throw error\r\n })\r\n }\r\n\r\n\r\n setDefaultValue(value: any) {\r\n let data = null;\r\n if (value.key && this.sfCrudService.currentOperation?.keys){\r\n data = this.sfCrudService.getValueKey(this.sfCrudService.currentOperation.keys.find(k => k.key == value.key))\r\n value = data\r\n }else{\r\n switch (value) {\r\n case '@uactivo':\r\n data = `${this.user.UsuarioSistema.TDOC}-${this.user.UsuarioSistema.NDOC}`\r\n break;\r\n case '@tdocactivo':\r\n data = this.user.UsuarioSistema.TDOC\r\n break;\r\n case '@ndocactivo':\r\n data = this.user.UsuarioSistema.NDOC\r\n break;\r\n case '@hoy':\r\n data = new Date();\r\n break;\r\n default:\r\n data = value;\r\n break;\r\n }\r\n return data\r\n }\r\n\r\n }\r\n get indexCrud(){\r\n return this.stepService.currentIndex;\r\n }\r\n\r\n primeChecking(){\r\n return new RequestChecking(undefined, undefined, false, undefined, undefined, false, undefined)\r\n }\r\n\r\n submit(index: number) {\r\n if(!index) index = this.indexCrud\r\n this.sfCrudService.applyValuesOnEvent('onSubmit', this.sfCrudService.getEsquema(index), undefined, this.sfCrudService.getData(index))\r\n let registro = this.sfCrudService.getRegistro(index)\r\n const operation = registro.operations.find(op => op.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))!\r\n let url = this.sfCrudService.getURL(operation, index)\r\n const dataToSend = this.sfCrudService.removeUiOnlyFields(this.sfCrudService.getData(index), this.sfCrudService.getEsquema(index))\r\n return this.generalService.genericRequest(operation.method, url, dataToSend)\r\n .then((res: any) => {\r\n if (res === null) res = {}\r\n res = this.sfCrudService.applyObjectKeys(res, operation.keysEsquema || [], registro)\r\n this.sfCrudService.setAnswers(res, this.indexCrud)\r\n if (operation.changeTrx && Array.isArray(operation.changeTrx)) operation.changeTrx.forEach(x => this.sfCrudService.setTrx(x.trx, x.index))\r\n this.notificationService.addNotification(this.notificationService.generateMessage(\r\n this.notificationService.genDefaultMessage(\"success\", undefined, \"Información subida correctamente\", operation.answerChecking), res, operation.answerChecking),\r\n operation.answerChecking\r\n );\r\n return res;\r\n })\r\n .catch(err => {\r\n console.error(err)\r\n this.notificationService.addNotification(\r\n this.notificationService.generateMessage(this.notificationService.genDefaultMessage(\"error\", \"Error no controlado\", \"Por favor comunicarse con el admin\",operation.errorChecking), err.error, operation.errorChecking)\r\n , operation.errorChecking\r\n )\r\n throw new Error(err)\r\n })\r\n // return Promise.resolve({})\r\n }\r\n\r\n onCloseAddItem(index: number) {\r\n const scope = (this.dialogElements[index].scope as any).replaceAll('.properties', '')\r\n const item = _.cloneDeep(this.dialogElements[index].data);\r\n if (index == 0) {\r\n jsonpath.query(this.sfCrudService.getData(this.indexCrud), scope)[0].push(item)\r\n }\r\n else jsonpath.query(this.dialogElements[index - 1].data, scope)[0].push(item)\r\n }\r\n\r\n deleteRow(element: any, indexElement: number) {\r\n const scope = element.scope.replaceAll('.properties', '')\r\n let indexDialog = this.dialogElements.length - 1\r\n\r\n if (indexDialog == -1) (jsonpath.query(this.sfCrudService.getData(this.indexCrud), scope)[0] as any[]).splice(indexElement, 1)\r\n else {\r\n indexDialog = indexDialog == 0 ? 1: indexDialog;\r\n (jsonpath.query(this.dialogElements[indexDialog - 1].data, scope)[0] as any[]).splice(indexElement, 1)\r\n }\r\n this.sfCrudService.applyValuesOnEvent('onChange', this.sfCrudService.getEsquema(this.indexCrud), element.scope.replace('$..properties.', ''), this.sfCrudService.getData(this.indexCrud))\r\n }\r\n\r\n onCloseEditRow(index: number) {\r\n let scope = undefined\r\n try{\r\n const iArray = this.dialogElements[index].index\r\n scope = (this.dialogElements[index].scope as any).replaceAll('.properties', '')\r\n const item = _.cloneDeep(this.dialogElements[index].data);\r\n if (index == 0) {\r\n jsonpath.query(this.sfCrudService.getData(this.indexCrud), scope)[0][iArray] = item\r\n }\r\n else {\r\n jsonpath.query(this.dialogElements[index - 1].data, scope)[0][iArray] = item\r\n }\r\n }catch (error){\r\n console.error(error)\r\n console.log(this.dialogElements)\r\n console.log(index)\r\n console.log(scope)\r\n console.log(this.indexCrud)\r\n console.log(this.sfCrudService.getData(this.indexCrud))\r\n throw error\r\n }\r\n\r\n }\r\n\r\n validateData(operation: Operation, data: any, conditions: Condition[], printErrors:boolean=true) {\r\n if (operation?.validations?.type == 'local') {\r\n let err = this.sfCrudService.validateDataLocal(operation, data, conditions);\r\n if (err.length != 0 && printErrors) this.notificationService.addNotification({ severity: 'warn', detail: err.slice(0, 5).join('. ')}, this.primeChecking())\r\n return err.length == 0;\r\n }\r\n return true;\r\n }\r\n\r\n onConfirm() {\r\n this.messageService.clear('c');\r\n }\r\n\r\n onReject() {\r\n this.messageService.clear('c');\r\n }\r\n\r\n onClickedAddress(scope: string) {\r\n let j = 1, k = 0;\r\n let separador = jsonpath.query(this.sfCrudService.esquemas[this.indexCrud], scope)[0]?.separador\r\n let dataPadre = this.dialogElements.length > 0 ? this.dialogElements[this.dialogElements.length - 1].data : this.sfCrudService.dataset[this.indexCrud];\r\n let currentValue = jsonpath.query(dataPadre, scope.replaceAll('.properties', ''))[0]\r\n let currentValues = currentValue?.split(separador)\r\n let esquema: any = {\r\n type: \"object\",\r\n validations: {\r\n type: \"local\",\r\n required: [\r\n ]\r\n },\r\n properties: {\r\n currentValue: {\r\n type: \"string\",\r\n default: currentValue\r\n },\r\n separador: {\r\n type: \"string\",\r\n default: separador\r\n }\r\n }\r\n }\r\n\r\n let uiesquema: {elements: any[]} ={elements: []}\r\n\r\n let traductorTamaniosMascaras: any = {\r\n \"grande\": \"field col-12 md:col-4\",\r\n \"pequeño\": \"field col-12 md:col-2\",\r\n \"mediano\": \"field col-12 md:col-3\",\r\n }\r\n\r\n\r\n this.cargarMascarasDirecciones().then(() => {\r\n const op = this.sfCrudService.registros[this.indexCrud].operations.find(x => x.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))\r\n this.sfCrudService.mascaras.forEach(mascara => {\r\n //generar el uiesquema de las direcciones\r\n uiesquema.elements.push({\r\n \"type\": \"Label\",\r\n \"class\": \"col-12 md:col-12\",\r\n \"style\": `font-size: medium; color:white; background: var(--primary-color) !important; border-radius: 10px; text-align: center;`,\r\n \"label\": `Línea ${mascara.linea}`\r\n })\r\n uiesquema.elements.push({\r\n \"type\": \"HorizontalLayout\",\r\n \"class\": \"p-fluid p-formgrid grid\",\r\n \"elements\": []\r\n })\r\n mascara.Campo.forEach(campo => {\r\n if (campo.Tipo.toLocaleLowerCase() == \"label\"){\r\n uiesquema.elements[j].elements.push({\r\n \"type\": \"Texto\",\r\n \"class\": \"my-auto\",\r\n \"label\": campo.Valor,\r\n \"scope\": `$..properties.${campo.Id}`,\r\n \"ngStyle\": {\r\n \"font-size\": \"1.5rem\"\r\n }\r\n })\r\n }else {\r\n uiesquema.elements[j].elements.push({\r\n \"type\": \"Control\",\r\n \"class\": campo.Tamaño ? traductorTamaniosMascaras[campo.Tamaño.toLocaleLowerCase()]: traductorTamaniosMascaras.mediano,\r\n \"scope\": `$..properties.${campo.Id}`\r\n })\r\n }\r\n\r\n //generar el esquema de las direcciones\r\n if (campo.Tipo.toLocaleLowerCase() == \"combo\"){\r\n let customOptions: any[] = []\r\n let valores = campo.Valores.split(\",\")\r\n valores.forEach(valor => customOptions.push({label: valor.split(\"-\")[0], value: valor.split(\"-\")[1]}))\r\n\r\n esquema.properties[campo.Id] = {\r\n type: \"string\",\r\n subtype: \"dropdown\",\r\n default: this.getDefaultValueDireccion(k, currentValues),\r\n config: {\r\n optionLabel: \"label\",\r\n optionValue: \"value\",\r\n customOptions: customOptions,\r\n showClear: k >= 2\r\n }\r\n }\r\n }\r\n else if (campo.Tipo.toLocaleLowerCase() == \"text\"|| campo.Tipo.toLocaleLowerCase() == \"label\"){\r\n esquema.properties[campo.Id] = {\r\n type: \"string\",\r\n subtype: \"input\",\r\n default: this.getDefaultValueDireccion(k, currentValues)\r\n }\r\n }\r\n else if (campo.Tipo.toLocaleLowerCase() == \"numeric\"){\r\n esquema.properties[campo.Id] = {\r\n type: \"numeric\",\r\n\t\t\t\t subtype: \"decimal\",\r\n default: this.getDefaultValueDireccion(k, currentValues)\r\n }\r\n }\r\n\r\n if (esquema.validations.required.length < 2){//validar los primeros 2 campos\r\n esquema.validations.required.push({\r\n \"field\": `$..${campo.Id}`,\r\n \"message\": `Por favor digite el campo N° ${esquema.validations.required.length + 1}`\r\n })\r\n }\r\n k += 1\r\n })\r\n j += 2\r\n })\r\n\r\n const currentElement = {\r\n data: this.sfCrudService.createObject(esquema, op),\r\n uiEsquema: uiesquema,\r\n esquema: esquema,\r\n scope: scope,\r\n index: 0,\r\n isAddressDialog: true,\r\n separador: separador,\r\n operation: \"address\"\r\n }\r\n this.displays.push(true)\r\n this.dialogElements.push(currentElement)\r\n })\r\n }\r\n\r\n private getDefaultValueDireccion(index: number, currentValues?: string[]){\r\n let valoresLiterales: string[] = []\r\n this.sfCrudService.mascaras.forEach(mascara => {\r\n mascara.Campo.forEach(campo => {\r\n if (campo.Valor && campo.Tipo.toLocaleLowerCase() == \"label\") valoresLiterales.push(campo.Valor)\r\n })\r\n })\r\n let invalidCurrentValues = [\"\", null, undefined]\r\n let temporalValue: string | null = currentValues && index < currentValues.length && currentValues.length > 1 && !invalidCurrentValues.includes(currentValues[index]) ? currentValues[index]: null\r\n valoresLiterales.forEach(valor => {\r\n if (temporalValue?.startsWith(valor)) temporalValue = temporalValue.replace(valor, \"\")\r\n })\r\n return temporalValue\r\n }\r\n\r\n onClickedEditButton(element: any, data: any, index:number){\r\n const esquema = _.cloneDeep(this.sfCrudService.getControl(element.scope, this.sfCrudService.getEsquema(this.indexCrud)));\r\n esquema.type = \"object\"\r\n const currentElement = {\r\n data: _.cloneDeep(data),\r\n uiEsquema: _.cloneDeep(element.elements[0]),\r\n esquema: esquema,\r\n scope: element.scope,\r\n index: index,\r\n operation: \"u\"\r\n }\r\n this.displays.push(true)\r\n this.dialogElements.push(currentElement)\r\n }\r\n\r\n onClickedAddButton(element: any){\r\n const esquema = _.cloneDeep(this.sfCrudService.getControl(element.scope, this.sfCrudService.getEsquema(this.indexCrud)));\r\n const op = this.sfCrudService.registros[this.indexCrud].operations.find(x => x.type.startsWith(this.sfCrudService.getTrx(this.indexCrud)))\r\n esquema.type = \"object\"\r\n const currentElement = {\r\n data: this.sfCrudService.createObject(esquema, op),\r\n uiEsquema: _.cloneDeep(element.elements[0]),\r\n esquema: esquema,\r\n scope: element.scope,\r\n index: 0,\r\n operation: \"c\"\r\n }\r\n try{\r\n currentElement.data.id = this.sfCrudService.getValue(element.scope, this.sfCrudService.getData(this.indexCrud)).length + 1\r\n }catch(error){\r\n console.error(error)\r\n }\r\n this.displays.push(true)\r\n this.dialogElements.push(currentElement)\r\n }\r\n\r\n onCloseAddress(index: number){\r\n let separador = jsonpath.query(this.sfCrudService.esquemas[this.indexCrud], this.dialogElements[index].scope)[0]?.separador\r\n //leer los campos de las mascaras, setear el string\r\n let newValue = this.sfCrudService.armarNuevaDireccion(\"string\", this.dialogElements[index].data, separador)\r\n let scope = this.dialogElements[index].scope.replaceAll('.properties', '')\r\n if (index == 0) {\r\n jsonpath.value(this.sfCrudService.getData(this.indexCrud), scope, newValue)\r\n }\r\n else {\r\n //Actualizarlo en un dialog anterior. Se crea una nueva referencia para que el compilador detecte cambios en el objeto data y lo recargue\r\n let newDataPreviousDialog = _.cloneDeep(this.dialogElements[index - 1].data);\r\n jsonpath.value(newDataPreviousDialog, scope, newValue)\r\n this.dialogElements[index - 1].data = newDataPreviousDialog;\r\n }\r\n this.stepService.desiredIndex = undefined\r\n this.stepService.requestApproved =true\r\n }\r\n\r\n onCloseDialog(index: number){\r\n let validated = true;\r\n if (this.dialogElements[index].esquema.validations){\r\n const op = new Operation()\r\n op.validations = this.dialogElements[index].esquema.validations\r\n validated = this.validateData(op, this.dialogElements[index].data, this.sfCrudService.getRegistro(this.indexCrud).conditions || [])\r\n }\r\n if (validated){\r\n switch (this.dialogElements[index].operation) {\r\n case \"c\":\r\n this.onCloseAddItem(index)\r\n break;\r\n case \"u\":\r\n this.onCloseEditRow(index)\r\n break;\r\n case \"address\":\r\n this.onCloseAddress(index)\r\n break;\r\n }\r\n this.removeDialogItem()\r\n }\r\n\r\n }\r\n\r\n removeDialogItem(){\r\n this.dialogElements.pop()\r\n this.displays.pop()\r\n }\r\n\r\n setLabelSumbit() {\r\n let x: any = {\"c\": { label: 'Guardar', icon: 'pi pi-save' },\r\n \"u\": { label: 'Actualizar', icon: 'pi pi-sync' },\r\n \"d\": { label: 'Eliminar', icon: 'pi pi-trash' }\r\n }\r\n\r\n this.btnSubmit = x[this.sfCrudService.getTrx(0)]\r\n }\r\n\r\n back() {\r\n let back = \"\";\r\n if (this.back_route && this.back_route != \"\") {\r\n back = this.back_route;\r\n }\r\n else{\r\n back = this.sfCrudService.registros[0].btnBack;\r\n }\r\n this.router.navigateByUrl(back);\r\n }\r\n\r\n private cargarMascarasDirecciones(){\r\n if (this.sfCrudService.mascaras.length == 0){\r\n return this.generalService.genericRequest(\"GET\", `${this.generalService.generales}/General/getConfiguracionKatios/${this.idKatios}`).then((res: any) => {\r\n this.sfCrudService.mascaras = JSON.parse(res).RESPUESTA.MascarasDirecciones.Mascaras.Mascara\r\n })\r\n }\r\n return Promise.resolve(this.sfCrudService.mascaras)\r\n }\r\n}\r\n\r\n\r\ninterface DialogElement{data: any\r\n uiEsquema: any,\r\n esquema: Shema,\r\n scope: string, index: number,\r\n operation: string,//\"c\" | \"u\" | \"address\"\r\n isAddressDialog?: boolean\r\n }\r\n","<div class=\"card\">\r\n <!--TODO convertir en template y editarla en -->\r\n <h5 *ngIf=\"sfCrudService.registros.length >= 1\" class=\"card-header mb-2\" style=\"display: flex; justify-content: space-between;align-items: center;\">\r\n <span>{{sfCrudService.registros[0]?.label || idForm.replaceAll('_', ' ')}} {{ids.length > 0 ? '-' + ids[0] : ''}}</span>\r\n <button *ngIf=\"sfCrudService.registros[0]?.canBack\" pButton pRipple type=\"button\" icon=\"pi pi-arrow-left\" (click)=\"back()\"></button>\r\n </h5>\r\n <div *ngIf=\"items.length > 1\">\r\n <app-step [items]=\"items\"></app-step>\r\n </div>\r\n <div *ngIf=\"items.length == 1\">\r\n <app-form [data]=\"sfCrudService.dataset[0]\" [esquema]=\"sfCrudService.esquemas[0]\"\r\n [uiEsquema]=\"sfCrudService.uiEsquemas[0]\" [isDialog]=\"false\"></app-form>\r\n\r\n <!--renderizar un codigo personalizado desde el componente padre o renderizar el que se tiene por defecto-->\r\n <ng-container *ngTemplateOutlet=\"buttonsFooterTemplate || defaultButtonsFooterTemplate\"></ng-container>\r\n <ng-template #defaultButtonsFooterTemplate>\r\n <div class=\"card-footer mt-2\" *ngIf=\"btnSubmit\">\r\n <button pButton pRipple type=\"button\" [icon]=\"btnSubmit.icon\" [label]=\"btnSubmit.label\" (click)=\"onClickBtnSubmit()\"></button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n\r\n<span *ngFor=\"let item of dialogElements; let $index=index\">\r\n <p-dialog [(visible)]=\"displays[$index]\" [modal]=\"true\" [header]=\"'Detalle'\" [closable]=\"false\">\r\n <!-- TODO header = currentElement.element.label ? currentElement.element.label: -->\r\n <app-form [data]=\"item.data\" [esquema]=\"item.esquema\" [uiEsquema]=\"item.uiEsquema\" [isDialog]=\"true\"\r\n [id]=\"ids[indexCrud]\" [isAddressDialog]=\"item.isAddressDialog === true\" [separador]=\"item.separador\"></app-form>\r\n <ng-template pTemplate=\"footer\">\r\n <p-button icon=\"pi pi-times\" (onClick)=\"removeDialogItem()\" label=\"Cancelar\" ></p-button>\r\n <p-button icon=\"pi pi-check\" [disabled]=\"item.esquema.disabled === true\" (onClick)=\"onCloseDialog($index)\" label=\"Ok\" pAutoFocus\r\n [autofocus]=\"true\"></p-button>\r\n </ng-template>\r\n </p-dialog>\r\n</span>\r\n\r\n<p-toast *ngIf=\"dialogElements.length == 0\">\r\n <ng-template let-message pTemplate=\"message\">\r\n <div class=\"custom-toast\">\r\n <i class=\"pi\" [ngClass]=\"{\r\n 'pi-check-circle': message.severity === 'success',\r\n 'pi-info-circle': message.severity === 'info',\r\n 'pi-exclamation-triangle': message.severity === 'warn',\r\n 'pi-times-circle': message.severity === 'error'\r\n }\"></i>\r\n <div class=\"custom-toast-content\">\r\n <span class=\"custom-toast-detail\">{{message.detail}}</span>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</p-toast>\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-sf-crud',\r\n template: `\r\n <p>\r\n sf-crud works!\r\n </p>\r\n `,\r\n styles: [\r\n ],\r\n standalone: false\r\n})\r\nexport class SfCrudComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { FormComponent } from './components/form/form.component';\r\nimport { RegistroComponent } from './components/registro/registro.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {path: ':idStep',\r\n component: FormComponent\r\n }\r\n \r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class SfCrudRoutingModule { }","import { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n//=========================================================\r\n// PrimeNG Modules\r\n//=========================================================\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\nimport { AvatarGroupModule } from 'primeng/avatargroup';\r\nimport { AvatarModule } from 'primeng/avatar';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { BlockUIModule } from 'primeng/blockui';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { CardModule } from 'primeng/card';\r\nimport { CarouselModule } from 'primeng/carousel';\r\nimport { CascadeSelectModule } from 'primeng/cascadeselect';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { ContextMenuModule } from 'primeng/contextmenu';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { GalleriaModule } from 'primeng/galleria';\r\nimport { InplaceModule } from 'primeng/inplace';\r\nimport { InputMaskModule } from 'primeng/inputmask';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { KnobModule } from 'primeng/knob';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { MegaMenuModule } from 'primeng/megamenu';\r\nimport { MenubarModule } from 'primeng/menubar';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport {MessageModule} from 'primeng/message';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { OrganizationChartModule } from 'primeng/organizationchart';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { PanelMenuModule } from 'primeng/panelmenu';\r\nimport { PanelModule } from 'primeng/panel';\r\nimport { PasswordModule } from 'primeng/password';\r\nimport { ProgressBarModule } from 'primeng/progressbar';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { RatingModule } from 'primeng/rating';\r\nimport { RippleModule } from 'primeng/ripple';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { ScrollTopModule } from 'primeng/scrolltop';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\n// SlideMenuModule removed in PrimeNG 18\r\nimport { SliderModule } from 'primeng/slider';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { SplitterModule } from 'primeng/splitter';\r\nimport { StepsModule } from 'primeng/steps';\r\nimport { TableModule } from 'primeng/table';\r\nimport { TabMenuModule } from 'primeng/tabmenu';\r\nimport { TabViewModule } from 'primeng/tabview';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { TerminalModule } from 'primeng/terminal';\r\nimport { TieredMenuModule } from 'primeng/tieredmenu';\r\nimport { TimelineModule } from 'primeng/timeline';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { InputGroupModule } from 'primeng/inputgroup';\r\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\r\nimport { DatePickerModule } from 'primeng/datepicker'; \r\nimport { FluidModule } from 'primeng/fluid';\r\n\r\n//=========================================================\r\n// Componets\r\n//=========================================================\r\nimport { SfCrudComponent } from './sf-crud.component';\r\nimport { TableroComponent } from './components/tablero/tablero.component';\r\nimport { RegistroComponent } from './components/registro/registro.component';\r\nimport { ControlComponent } from './components/control/control.component';\r\nimport {FormComponent} from './components/form/form.component';\r\n\r\nimport { StepComponent } from './components/step/step.component';\r\nimport { SfCrudRoutingModule } from './sf-crud.routing.module';\r\nimport { SfPdfsignModule } from 'sf-pdfsign';\r\nimport { SfSimuladorModule } from 'sf-simulador';\r\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\r\nimport { SfAdoModule } from \"sf-ado\";\r\nimport { FormatAddressPipe } from './directives/format-address.pipe';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { SelectModule } from 'primeng/select';\r\n\r\n@NgModule({\r\n declarations: [\r\n SfCrudComponent,\r\n TableroComponent,\r\n RegistroComponent,\r\n ControlComponent,\r\n StepComponent,\r\n FormComponent,\r\n FileUploadComponent,\r\n FormatAddressPipe\r\n ],\r\n imports: [\r\n SfCrudRoutingModule,\r\n SfPdfsignModule,\r\n SfSimuladorModule,\r\n AccordionModule,\r\n AutoCompleteModule,\r\n AvatarGroupModule,\r\n AvatarModule,\r\n BadgeModule,\r\n BlockUIModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n CardModule,\r\n CarouselModule,\r\n CascadeSelectModule,\r\n CheckboxModule,\r\n ChipModule,\r\n ChipModule,\r\n ColorPickerModule,\r\n ConfirmDialogModule,\r\n ConfirmPopupModule,\r\n ContextMenuModule,\r\n DialogModule,\r\n DividerModule,\r\n DropdownModule,\r\n DatePickerModule,\r\n FieldsetModule,\r\n FileUploadModule,\r\n FluidModule,\r\n FormsModule,\r\n GalleriaModule,\r\n HttpClientModule,\r\n RouterModule,\r\n InplaceModule,\r\n InputMaskModule,\r\n InputNumberModule,\r\n InputSwitchModule,\r\n InputGroupModule,\r\n InputGroupAddonModule,\r\n IconFieldModule,\r\n InputIconModule,\r\n TextareaModule,\r\n InputTextModule,\r\n KnobModule,\r\n ListboxModule,\r\n MegaMenuModule,\r\n MenubarModule,\r\n MenuModule,\r\n MessageModule,\r\n MultiSelectModule,\r\n OrganizationChartModule,\r\n OverlayPanelModule,\r\n PanelMenuModule,\r\n PanelModule,\r\n PasswordModule,\r\n ProgressBarModule,\r\n RadioButtonModule,\r\n RatingModule,\r\n RippleModule,\r\n ScrollPanelModule,\r\n ScrollTopModule,\r\n SelectButtonModule,\r\n SidebarModule,\r\n SkeletonModule,\r\n SliderModule,\r\n SplitButtonModule,\r\n SplitterModule,\r\n StepsModule,\r\n SelectModule,\r\n TableModule,\r\n TabMenuModule,\r\n TabViewModule,\r\n TagModule,\r\n TerminalModule,\r\n TieredMenuModule,\r\n TimelineModule,\r\n ToastModule,\r\n ToggleButtonModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n TreeModule,\r\n SfAdoModule\r\n],\r\n exports: [\r\n SfCrudComponent,\r\n TableroComponent,\r\n RegistroComponent,\r\n ControlComponent\r\n ]\r\n})\r\nexport class SfCrudModule {}\r\n","/*\r\n * Public API Surface of sf-crud\r\n */\r\n\r\nexport * from './lib/components/tablero/tablero.component';\r\nexport * from './lib/components/registro/registro.component';\r\nexport * from './lib/components/control/control.component';\r\nexport * from './lib/sf-crud.component';\r\nexport * from './lib/components/form/form.component';\r\nexport * from './lib/sf-crud.module';\r\nexport * from './lib/sf-crud.service';\r\nexport * from './lib/shared/services/step.service';\r\nexport * from './lib/shared/services/notification.service';\r\nexport * from './lib/shared/models/crud-config.model';\r\nexport * from './lib/shared/models/Empresa.model';\r\nexport * from './lib/shared/models/shema.model';\r\nexport * from './lib/shared/injections/token';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.GeneralService","i3.SfCrudService","i4.StepService","i5.CrudDialogService","i6","i7","i8","i1.SfCrudService","i2.StepService","i3","i4","i2","i2.SfCrudService","i3.NotificationService","i5","i11","i12","i13","i14","i15","i16","i17","i18.FileUploadComponent","i19.FormatAddressPipe","i9","i15.ControlComponent","i16.FormatAddressPipe","i4.SfCrudService","i5.StepService","i8.NotificationService","i10","i14.StepComponent","i15.FormComponent"],"mappings":"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"}