@apia/execution 4.0.19 → 4.0.20

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/util/comparators/deepEqual.ts","../src/main/Notifications/index.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/main/Execution/FormsExecution/constants/fieldProps.ts","../src/main/Execution/FormsExecution/constants/formProps.ts","../src/main/Execution/FormsExecution/constants/props/booleanProps.ts","../src/util/dataTypes/parseBoolean.ts","../src/util/xml/parseXml.ts","../src/util/api/apiaApi.ts","../src/util/events/EventEmitter.ts","../src/util/events/StatefulEmitter.ts","../src/util/events/BouncingEmitter.ts","../src/util/labels/labels.ts","../src/main/Execution/FormsExecution/WithProperties.ts","../src/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.ts","../src/main/Execution/FormsExecution/Field.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.ts","../src/main/Execution/FormsExecution/fields/Checkbox/index.ts","../src/main/Execution/FormsExecution/TranslatableField/Translation.ts","../src/main/Execution/FormsExecution/TranslatableField/util.ts","../src/main/Execution/FormsExecution/TranslatableField/index.ts","../src/main/Execution/FormsExecution/fields/Editor/index.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/Uploader/UploaderModalController.ts","../src/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/programming/ActionController/ButtonsActions.ts","../src/programming/ActionController/index.ts","../src/programming/ApiaField.ts","../src/programming/fields/ButtonField.ts","../src/programming/fields/EditorField.ts","../src/programming/ApiaFieldWithAttribute.ts","../src/programming/fields/SelectField.ts","../src/programming/fields/InputField.ts","../src/programming/fields/TreeField.ts","../src/programming/fields/CheckField.ts","../src/programming/fields/RadioField.ts","../src/programming/fields/MultipleField.ts","../src/programming/fields/HiddenField.ts","../src/programming/fields/AreaField.ts","../src/programming/fields/ImageField.ts","../src/programming/fields/LinkField.ts","../src/programming/fields/TextField.ts","../src/programming/constants/Field.ts","../src/programming/fields/CustomComponentField.ts","../src/programming/utils/createApiaField.ts","../src/programming/fields/GridField.ts","../src/programming/fields/CaptchaField.ts","../src/programming/fields/FileUploaderField.ts","../src/programming/fields/PasswordField.ts","../src/programming/ApiaForm.ts","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/Execution/FormsExecution/Form.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/fields/Grid/GridFooterHandler.ts","../src/main/Execution/FormsExecution/fields/Grid/GridCell.ts","../src/main/Execution/FormsExecution/fields/Grid/AdditionalCell.ts","../src/main/Execution/FormsExecution/fields/Grid/index.ts","../src/main/Execution/FormsExecution/fields/GridPaginated/index.ts","../src/main/Execution/FormsExecution/fields/Hidden/index.ts","../src/main/Execution/FormsExecution/fields/Image/index.ts","../src/main/Execution/FormsExecution/fields/Input/index.ts","../src/main/Execution/FormsExecution/fields/Label/index.ts","../src/main/Execution/FormsExecution/fields/Link/index.ts","../src/main/Execution/FormsExecution/fields/ModalInput/index.ts","../src/main/Execution/FormsExecution/fields/Multiple/index.ts","../src/main/Execution/FormsExecution/fields/Password/index.ts","../src/main/Execution/FormsExecution/fields/Radio/index.ts","../src/main/Execution/FormsExecution/fields/Select/index.ts","../src/main/Execution/FormsExecution/fields/Textarea/index.ts","../src/main/Execution/FormsExecution/fields/Title/index.ts","../src/main/Execution/FormsExecution/fields/Tree/index.ts","../src/main/Execution/FormsExecution/fieldsMap.ts","../src/main/Execution/Process/index.ts","../src/main/Execution/Task.ts","../src/main/Execution/Entity/index.ts","../src/main/Execution/Observations/index.ts","../src/main/Execution/FlowModals/FlowModal.ts","../src/main/Execution/FlowModals/ShowPoolSelection.ts","../src/main/Execution/FlowModals/ShowPathSelection.ts","../src/main/Execution/FlowModals/ShowSignSelection.ts","../src/main/Execution/FlowModals/ShowConfirmMessage.ts","../src/main/Execution/FlowModals/ShowSign.ts","../src/main/Execution/FlowModals/confirmFlow.ts","../src/main/Execution/assistantUtils/canDocument.ts","../src/main/Execution/assistantUtils/getFormsAssistantConfiguration.ts","../src/main/Execution/AssistantController.ts","../src/main/Execution/index.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/Uploader/FormsUploader.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/main/Execution/FormsExecution/fields/Grid/HeaderCell.ts","../src/programming/constants/Form.ts","../src/programming/constants/IProperty.ts","../src/main/Notifications/StatusNotification.ts"],"sourcesContent":["export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const deepEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!deepEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!deepEqual(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!deepEqual(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { Notification } from './Notification';\r\nimport { EventEmitter } from '../../util';\r\nimport type { CustomComponent } from '../Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { Field } from '../Execution/FormsExecution/Field';\r\n\r\nexport type FocusTarget = {\r\n element: Field | CustomComponent;\r\n};\r\n\r\nexport class Notifications {\r\n static #instance: Notifications | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new Notifications();\r\n\r\n return this.#instance!;\r\n }\r\n\r\n private emitter = new EventEmitter<{\r\n notification: Notification;\r\n }>();\r\n\r\n private constructor() {\r\n makeObservable<Notifications, 'notifications'>(this, {\r\n notifications: observable,\r\n add: action,\r\n remove: action,\r\n });\r\n }\r\n\r\n protected notifications: Notification[] = [];\r\n\r\n add(notification: Notification) {\r\n this.notifications.push(notification);\r\n this.emitter.emit('notification', notification);\r\n }\r\n\r\n getAll() {\r\n return this.notifications;\r\n }\r\n\r\n getById(id: string | number) {\r\n return this.notifications.find((c) => c.id === id);\r\n }\r\n\r\n remove(notification: string | number | Notification) {\r\n this.notifications = this.notifications.filter((c) => {\r\n if (typeof notification === 'string' || typeof notification === 'number')\r\n return c.id !== notification;\r\n return c !== notification;\r\n });\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n}\r\n","import { makeAutoObservable } from 'mobx';\r\n\r\nexport type NotificationIcon = string;\r\n\r\nexport type NotificationType = 'info' | 'error' | 'success' | 'warning';\r\n\r\nexport type NotificationDefinition = {\r\n icon?: NotificationIcon;\r\n id?: string | number;\r\n isOpen?: boolean;\r\n message: string;\r\n stackTrace?: string;\r\n title?: string;\r\n type?: NotificationType;\r\n};\r\n\r\nexport abstract class Notification<\r\n State extends NotificationDefinition = NotificationDefinition,\r\n> {\r\n protected state: State;\r\n\r\n constructor(public readonly props: State) {\r\n this.state = props;\r\n\r\n makeAutoObservable(this);\r\n }\r\n\r\n get icon() {\r\n return this.state.icon;\r\n }\r\n get id() {\r\n return this.state.id;\r\n }\r\n get isOpen() {\r\n return this.state.isOpen;\r\n }\r\n get message() {\r\n return this.state.message;\r\n }\r\n get stackTrace() {\r\n return this.state.stackTrace;\r\n }\r\n get title() {\r\n return this.state.title;\r\n }\r\n get type() {\r\n return this.state.type;\r\n }\r\n}\r\n","import { Notification } from './Notification';\r\n\r\nexport class MessageNotification extends Notification {\r\n close() {\r\n this.state.isOpen = false;\r\n }\r\n}\r\n","const fieldProps = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n} as const;\r\n\r\nexport default fieldProps;\r\n","const formProps = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default formProps;\r\n","import fieldProps from '../fieldProps';\r\nimport formProps from '../formProps';\r\n\r\nconst FormBoolProps = [\r\n formProps.PROPERTY_FORM_INVISIBLE,\r\n formProps.PROPERTY_FORM_HIDDEN,\r\n formProps.PROPERTY_FORM_CLOSED,\r\n formProps.PROPERTY_FORM_TAB,\r\n formProps.PROPERTY_FORM_HIGHLIGHT,\r\n formProps.PROPERTY_FORM_DONT_FIRE,\r\n formProps.PROPERTY_FORM_READONLY,\r\n formProps.SIGNABLE_FORM,\r\n formProps.MARKED_TO_SIGN,\r\n formProps.REQUIRED_SIGN,\r\n];\r\n\r\nconst FieldBoolProps = [\r\n fieldProps.PROPERTY_ALLOW_EDITION,\r\n fieldProps.PROPERTY_CHECKED,\r\n fieldProps.PROPERTY_DISABLED,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\r\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\r\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\r\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\r\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\r\n fieldProps.PROPERTY_FILE_PREVIEW,\r\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\r\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\r\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\r\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\r\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\r\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\r\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\r\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\r\n fieldProps.PROPERTY_HIDE_GRID_BTN,\r\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\r\n fieldProps.PROPERTY_INPUT_AS_TEXT,\r\n fieldProps.PROPERTY_MODAL_DISABLED,\r\n fieldProps.PROPERTY_MULTISELECT,\r\n fieldProps.PROPERTY_NO_DOWNLOAD,\r\n fieldProps.PROPERTY_NO_ERASE,\r\n fieldProps.PROPERTY_NO_LOCK,\r\n fieldProps.PROPERTY_NO_MODIFY,\r\n fieldProps.PROPERTY_NOT_PRINT,\r\n fieldProps.PROPERTY_PAGED_GRID,\r\n fieldProps.PROPERTY_READONLY,\r\n fieldProps.PROPERTY_REQUIRED,\r\n fieldProps.PROPERTY_SEL_PARENT,\r\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\r\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\r\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\r\n fieldProps.PROPERTY_TRANSIENT,\r\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\r\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\r\n];\r\n\r\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\r\nexport default BoolProps;\r\n","// get boolean value from string values\r\nexport const parseBoolean = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst childParsers: ((element: Element, next: () => void) => void | Element)[] =\r\n [\r\n (element, next) => {\r\n if (element.tagName === 'f') {\r\n if (\r\n BoolProps.includes(element.attributes.getNamedItem('i')?.value || '')\r\n ) {\r\n element.setAttribute(\r\n 'v',\r\n String(\r\n parseBoolean(element.attributes.getNamedItem('v')?.value || ''),\r\n ),\r\n );\r\n return element;\r\n }\r\n next();\r\n }\r\n },\r\n ];\r\n\r\nconst tagNameParsers: ((key: string, next: () => void) => void | string)[] = [\r\n (key, next) => {\r\n if (key === 'a') return 'form';\r\n if (key === 'b') return 'field';\r\n if (key === 'g') return 'possibleValues';\r\n if (key === 'h') return 'item';\r\n if (key === 'z') return 'focusTo';\r\n if (key === 'r') return 'reload';\r\n if (key === 'p') return 'proccess';\r\n if (key === 'd') return 'valueAttr';\r\n next();\r\n },\r\n (key, next) => {\r\n if (key === 't') return 'text';\r\n if (key === 'label') return 'LABEL';\r\n next();\r\n },\r\n];\r\n\r\nconst attributesParsers: ((\r\n key: string,\r\n value: any,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (String(value).toLowerCase() === 'true') return { key, value: true };\r\n if (String(value).toLowerCase() === 'false') return { key, value: false };\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (['scriptEvents', 'serverEvents'].includes(key)) {\r\n return { key, value: JSON.parse(value) };\r\n }\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (key === 'value' && typeof value === 'number' && Number.isNaN(value)) {\r\n return { key, value: '' };\r\n }\r\n if (key === 'valueType' && typeof value === 'string' && value === 'null') {\r\n return { key, value: '' };\r\n }\r\n if (\r\n (key === 'cols' ||\r\n key === 'rows' ||\r\n key === 'x' ||\r\n key === 'y' ||\r\n key === 'length') &&\r\n typeof value === 'string'\r\n ) {\r\n const n = Number.parseFloat(value);\r\n if (!Number.isNaN(n)) {\r\n return { key, value: n };\r\n }\r\n }\r\n next();\r\n },\r\n (key, value, next) => {\r\n if (BoolProps.includes(key)) {\r\n return { key, value: parseBoolean(value) };\r\n }\r\n next();\r\n },\r\n (_key, value, next) => {\r\n if (value.match?.(/[&]/))\r\n new DOMParser().parseFromString(\r\n value.replaceAll('<', '&lt;'),\r\n 'text/html',\r\n ).body.textContent!;\r\n\r\n next();\r\n },\r\n];\r\n\r\nfunction xmlElementToObject(element: Element): any {\r\n const obj: any = {};\r\n\r\n for (const elParser of childParsers) {\r\n let next = false;\r\n const el = elParser(element, () => {\r\n next = true;\r\n });\r\n if (!next && el) {\r\n element = el;\r\n break;\r\n }\r\n }\r\n\r\n // Add attributes to the object\r\n for (const originalAttr of element.attributes) {\r\n const attr = {\r\n name: originalAttr.name,\r\n value: originalAttr.value,\r\n };\r\n\r\n for (const parser of attributesParsers) {\r\n let next = false;\r\n const res = parser(attr.name, attr.value, () => {\r\n next = true;\r\n });\r\n if (!next) {\r\n attr.name = res!.key;\r\n attr.value = res!.value;\r\n break;\r\n }\r\n }\r\n\r\n if (obj[attr.name]) {\r\n if (Array.isArray(obj[attr.name])) {\r\n obj[attr.name].push(attr.value);\r\n } else {\r\n obj[attr.name] = [obj[attr.name], attr.value];\r\n }\r\n } else {\r\n obj[attr.name] = attr.value;\r\n }\r\n }\r\n\r\n // Recursively process child nodes\r\n for (const child of element.childNodes) {\r\n if (child instanceof Element) {\r\n const o = xmlElementToObject(child as Element);\r\n\r\n let tagName = child.tagName;\r\n for (const parser of tagNameParsers) {\r\n let next = false;\r\n const current = parser(tagName, () => {\r\n next = true;\r\n });\r\n if (!next && current) {\r\n tagName = current;\r\n break;\r\n }\r\n }\r\n\r\n if (obj[tagName]) {\r\n if (Array.isArray(obj[tagName])) {\r\n obj[tagName].push(o);\r\n } else {\r\n obj[tagName] = [obj[tagName], o];\r\n }\r\n } else {\r\n obj[tagName] = o;\r\n }\r\n } else if (child.nodeType === Node.TEXT_NODE) {\r\n const textContent = child.textContent?.trim();\r\n if (textContent) {\r\n if (obj.text) {\r\n if (Array.isArray(obj.text)) {\r\n obj.text.push(textContent);\r\n } else {\r\n obj.text = [obj.text, textContent];\r\n }\r\n } else {\r\n obj.text = textContent;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return replaceLabelHtmlValues(obj);\r\n}\r\n\r\nfunction replaceLabelHtmlValues(o: object) {\r\n for (const [key, value] of Object.entries(o)) {\r\n if (typeof value === 'object' && value) {\r\n (o as any)[key] = replaceLabelHtmlValues(value);\r\n } else if (typeof value === 'string' && value.match(/&/)) {\r\n (o as any)[key] = new DOMParser().parseFromString(\r\n value.replaceAll('<', '&lt;'),\r\n 'text/html',\r\n ).body.textContent!;\r\n }\r\n }\r\n return o;\r\n}\r\n\r\nexport function parseXml<T>(xmlString: string): T {\r\n // Parse the XML string into a DOM Document\r\n const parser = new DOMParser();\r\n const xmlDoc = parser.parseFromString(xmlString, 'application/xml');\r\n\r\n // Check for parsing errors\r\n if (xmlDoc.querySelector('parsererror')) {\r\n throw new Error('Error parsing XML');\r\n }\r\n\r\n // Convert the root XML element to a JavaScript object\r\n const rootElement = xmlDoc.documentElement;\r\n return xmlElementToObject(rootElement);\r\n}\r\n\r\n(window as any).x = parseXml;\r\n","import type { AxiosResponse } from 'axios';\r\nimport { Notifications } from '../../main/Notifications';\r\nimport { MessageNotification } from '../../main/Notifications/MessageNotification';\r\nimport {\r\n IApiaApiPostConfig,\r\n IApiaApiRequestConfig,\r\n TApiaApiAxiosResponse,\r\n TApiaApiResult,\r\n TApiaMessage,\r\n TApiaSystemMessageObj,\r\n} from './types';\r\nimport { NotificationType } from '../../main/Notifications/Notification';\r\nimport { parseXml } from '../xml/parseXml';\r\nimport type { IStringifyOptions } from 'qs';\r\nimport QueryString from 'qs';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\ndeclare global {\r\n interface Window {\r\n [key: string]: string;\r\n }\r\n}\r\n\r\nfunction dispatchMessage(type: NotificationType, message: TApiaMessage) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: message.text,\r\n title: message.label,\r\n type,\r\n }),\r\n );\r\n}\r\n\r\nfunction getAxios() {\r\n return import('axios').then((r) => r.default);\r\n}\r\n\r\nconst handleWrongResponse = (error: Error) => {\r\n if (error instanceof InvalidSessionException) throw error;\r\n\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: errorMessage.replaceAll('AxiosError', 'Error'),\r\n }),\r\n );\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nexport function parseMessages(response: TApiaSystemMessageObj) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n arrayOrArray(exceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'error'),\r\n );\r\n arrayOrArray(sysMessages?.message).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'warning'),\r\n );\r\n arrayOrArray(sysExceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, 'error'),\r\n );\r\n}\r\n\r\nasync function handleResponse<LoadType extends Record<string, unknown>>(\r\n result: AxiosResponse<string> | void,\r\n): Promise<TApiaApiAxiosResponse<LoadType> | null> {\r\n try {\r\n if (!result || result.data === undefined) {\r\n //\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<LoadType>(result);\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(e instanceof Error ? e : new Error(e as string));\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class InvalidSessionException extends Error {}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n LoadType extends Record<string, unknown>,\r\n>(\r\n response: AxiosResponse<string>,\r\n) => {\r\n let parsedObj: TApiaSystemMessageObj<LoadType> | void | undefined = undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<LoadType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n try {\r\n parsedObj = parseXml<LoadType>(response.data);\r\n } catch (e) {\r\n handleWrongResponse(new Error(e as string));\r\n }\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n\r\n parseMessages({ exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n return { ...parsedObj, ...load, ...(rest as LoadType) };\r\n }\r\n return {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n ...(rest as LoadType),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nexport async function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiPostConfig<DataType>,\r\n): TApiaApiResult<LoadType> {\r\n const postData =\r\n behaveConfig?.postDataTreatment === 'stringify'\r\n ? QueryString.stringify(\r\n behaveConfig.postData,\r\n behaveConfig.stringifyOptions,\r\n )\r\n : behaveConfig?.postData;\r\n\r\n const response = await (await getAxios())\r\n .post<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(actualUrl, postData, behaveConfig?.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(new Error(e as string));\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nexport async function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiRequestConfig,\r\n): TApiaApiResult<LoadType> {\r\n const response = await (await getAxios())\r\n .get<T, AxiosResponse<string>, D>(actualUrl, behaveConfig?.axiosConfig)\r\n .catch((e: unknown) => {\r\n handleWrongResponse(e instanceof Error ? e : new Error(e as string));\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport type MakeApiaUrlProps = {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n};\r\n\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * window.URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(props?: MakeApiaUrlProps) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? window.URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = window.TAB_ID_REQUEST.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : window.TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = window;\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replaceAll('/', '');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n","import { Callback, Callbacks, Map, UnSubscriber } from './types';\r\n\r\nexport type { Callback, Map, UnSubscriber } from './types';\r\n\r\n/**\r\n * @public\r\n *\r\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\r\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\r\n *\r\n * @typeParam Events - An extension of `Map` where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class EventEmitter<Events extends Map> {\r\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\r\n on: {} as Callbacks<Events>,\r\n once: {} as Callbacks<Events>,\r\n };\r\n protected enabled = true;\r\n\r\n protected debugMode = false;\r\n debug(enable = true) {\r\n this.debugMode = enable;\r\n }\r\n\r\n /**\r\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\r\n *\r\n * @param event - The event name to emit.\r\n * @param data - The data associated with the event. Its type is dependent on the event name.\r\n */\r\n emit<K extends keyof Events>(event: K, data: Events[K]) {\r\n this.callbacks.on[event]?.forEach((current) => current(data));\r\n\r\n this.callbacks.once[event]?.forEach((current) => current(data));\r\n this.callbacks.once[event] = [];\r\n }\r\n\r\n /**\r\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\r\n */\r\n get isEnabled() {\r\n return this.enabled;\r\n }\r\n\r\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\r\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\r\n *\r\n * @param event - The event name to listen to.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\r\n this.callbacks.on[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.on[event] = this.callbacks.on[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\r\n *\r\n * @param event - The event name to listen to for a single occurrence.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\r\n this.callbacks.once[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.once[event] = this.callbacks.once[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n}\r\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype Setter<T> = (prevState: T) => T;\r\n\r\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\r\n return typeof data === 'function';\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\ntype EmitterState<Events extends Map> = {\r\n [K in keyof Events]: Events[K];\r\n};\r\n\r\n/**\r\n * Extends EventEmitter to manage and emit events with state persistence.\r\n * This class allows emitting and listening to typed events while also keeping\r\n * a state that can be accessed synchronously for each event.\r\n *\r\n * @param initialState - If given will be passed to subscriptions\r\n *\r\n * @template Events - A mapping of event names to their associated data types.\r\n * @extends EventEmitter<Events>\r\n */\r\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\r\n protected state = {} as EmitterState<Events>;\r\n\r\n constructor(initialState?: Partial<Events>) {\r\n super();\r\n\r\n this.state = Object.assign({}, initialState) as Events;\r\n }\r\n\r\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\r\n this.state[event] = data;\r\n super.emit(event, data);\r\n }\r\n\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (this.state[event]) cb(this.state[event]);\r\n\r\n return super.on(event, cb);\r\n }\r\n\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (this.state[event]) {\r\n cb(this.state[event]);\r\n\r\n /**\r\n * Given that the information has already been sent, the subscription is not necessary\r\n */\r\n return () => {};\r\n }\r\n\r\n return super.once(event, cb);\r\n }\r\n\r\n /**\r\n * Retrieves the stored state for a given event\r\n */\r\n getState<K extends keyof Events>(event: K): Events[K] {\r\n return this.state[event];\r\n }\r\n\r\n /**\r\n * Just an alias for emit, with the advantage that can be called with a callback as second parameter in which case behaves exactly as react's setState.\r\n */\r\n setState<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.emit(event, actualData);\r\n }\r\n}\r\n","import { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n","export function getLabel(\r\n label: string,\r\n replacers?: Partial<{\r\n text: Record<string, string>;\r\n tooltip: Record<string, string>;\r\n }>,\r\n) {\r\n const labelObject = (window as any).labels[label] as {\r\n text: string;\r\n tooltip: string;\r\n };\r\n\r\n if (replacers?.text) {\r\n Object.entries(replacers.text).forEach(([key, value]) => {\r\n labelObject.text = labelObject.text.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n if (replacers?.tooltip) {\r\n Object.entries(replacers.tooltip).forEach(([key, value]) => {\r\n labelObject.tooltip = labelObject.tooltip.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n\r\n return labelObject;\r\n}\r\n\r\nexport const labels = {\r\n errorConfirmationFailed: () => 'Error al confirmar',\r\n errorRegexNotValidated: () => 'La expresión regular no fue validada.',\r\n errorCouldNotSync: () => 'No se pudo sincronizar',\r\n errorFieldRequired: () => 'Este campo es requerido',\r\n errorLoadForms: () =>\r\n 'Error al inicializar los formularios, contacte al administrador.',\r\n errorOnEvent: (eventName: string, className: string) =>\r\n (window as any).SERVER_MODE\r\n ? 'Error al ejecutar la clase de negocios, contacte al administrador.'\r\n : `Error on event ${eventName}, className ${className}`,\r\n};\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { SetStateAction } from '../../../util/events/types';\r\n\r\nexport class WithProperties<Props extends Record<string, any>> {\r\n properties: Props = {} as Props;\r\n\r\n constructor(initialState?: Props) {\r\n if (initialState) {\r\n this.properties = initialState;\r\n }\r\n makeObservable(this, { properties: observable, setProperty: action });\r\n }\r\n\r\n getProperty<K extends keyof Props>(propName: K): Props[K] {\r\n return this.properties[propName];\r\n }\r\n setProperty<K extends keyof Props>(\r\n propName: K,\r\n propValue: SetStateAction<Props[K]>,\r\n ) {\r\n const value =\r\n propValue instanceof Function\r\n ? propValue(this.properties[propName])\r\n : propValue;\r\n\r\n this.properties[propName] = value;\r\n }\r\n}\r\n","import { Tab } from '@apia/components';\r\n\r\nexport function getCurrentTabsString() {\r\n const tabsList = (window.tabsController as any)?.tabsList as Tab[];\r\n\r\n if (tabsList)\r\n return `${tabsList\r\n .map((c) => (c.state.isOpen ? c.id : -1))\r\n .filter((c) => !(typeof c === 'number'))\r\n .join(',')}~${document.scrollingElement?.scrollTop ?? 0}`;\r\n}\r\n","import { getCurrentTabsString } from '../../../../util/app/getCurrentTabsString';\r\n\r\nexport const actions = {\r\n forms: 'apia.execution.FormAction.run',\r\n formSubmit: `${window.CONTEXT}/apia.execution.FormAction.run?action=fireFieldEvent&currentTab=${getCurrentTabsString()}${window.TAB_ID_REQUEST}`,\r\n};\r\n","export const eventTypes = {\r\n EVENT_FLD_ONCHANGE: 1,\r\n EVENT_FLD_ONCLICK: 4,\r\n EVENT_FLD_POPULATE: 5,\r\n EVENT_FLD_ONMODALRETURN: 37,\r\n EVENT_FLD_ONMODALCHANGE: 36,\r\n\r\n // Grid Events\r\n EVENT_FLD_GRID_ADD: 60,\r\n EVENT_FLD_GRID_DEL: 61,\r\n EVENT_FLD_GRID_SORT: 62,\r\n EVENT_FLD_GRID_COLUMN_SELECT: 65,\r\n\r\n // Print Events\r\n EVENT_FRM_ONBEFORE_PRINT: 63,\r\n EVENT_FRM_ONAFTER_PRINT: 64,\r\n};\r\n","import fieldProps from './fieldProps';\r\nimport formProps from './formProps';\r\n\r\nconst IProperty = {\r\n ...fieldProps,\r\n ...formProps,\r\n} as const;\r\n\r\nexport default IProperty;\r\n","import IProperty from '../constants/IProperty';\r\nimport { Notifications } from '../../../Notifications';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { Field } from '../Field';\r\nimport { Grid, Select } from '../fields';\r\nimport { parseMessages } from '../../../../util/api/apiaApi';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\nasync function getExecution() {\r\n return (await import('../../index')).Execution;\r\n}\r\n\r\nexport const setAjaxFormResponse = async (\r\n response: TFieldAjaxEventResponsePayload,\r\n) => {\r\n const forms = arrayOrArray(response.form);\r\n for (let i = 0; i < forms.length; i += 1) {\r\n const formId = forms[i].i;\r\n const form = forms[i];\r\n const [frmParent, id] = formId.split('_');\r\n const apiaForm = (await getExecution()).instance.getFormById(\r\n id,\r\n frmParent as 'E',\r\n );\r\n\r\n arrayOrArray(form.cusCmp).forEach((c) => {\r\n apiaForm\r\n ?.getCustomComponentByFldId(Number.parseInt(String(c.id)))\r\n ?.processResult({ state: c.state });\r\n });\r\n\r\n /** Refresh the updated grids */\r\n const changedGrids = arrayOrArray(form.changedGrids.grdId);\r\n changedGrids.forEach(({ id }) => {\r\n (apiaForm?.getFieldById(id) as Grid)?.refresh();\r\n });\r\n\r\n if (!apiaForm) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: `Form with id ${formId} not found`,\r\n }),\r\n );\r\n\r\n continue;\r\n }\r\n\r\n // Iterate each field element in form element\r\n const ajaxFields = arrayOrArray(forms[i].field);\r\n for (let f = 0; f < ajaxFields.length; f += 1) {\r\n // got id of field to alter\r\n const apiField = apiaForm?.getFieldById(ajaxFields[f].i) as Field<any>;\r\n if (apiField) {\r\n // set VALUE to fldId\r\n if (ajaxFields[f].c !== undefined) {\r\n const { c } = ajaxFields[f];\r\n\r\n let value: any = undefined;\r\n if (typeof c === 'string') {\r\n value = c;\r\n } else {\r\n /**\r\n * Este procedimiento se usa para concatenar los distintos índices de textarea, editor, etc\r\n */\r\n const valuesArray = arrayOrArray(c?.valueAttr);\r\n value = valuesArray.reduce((reduced, current) => {\r\n return reduced + current.v;\r\n }, '');\r\n }\r\n\r\n /**\r\n * Si ponemos que apiField es instanceof FieldWithAttribute generamos una dependencia\r\n * circular que rompe la compilación !!!\r\n */\r\n if ((apiField as any).attribute) {\r\n (apiField as any).setValue(value);\r\n }\r\n }\r\n // set PROPERTIES to fldId\r\n if (ajaxFields[f].e !== undefined) {\r\n const ajaxProps = arrayOrArray(ajaxFields[f].e);\r\n for (let c = 0; c < ajaxProps.length; c += 1) {\r\n if (ajaxProps[c]?.f) {\r\n const prop = arrayOrArray(ajaxProps[c]?.f);\r\n for (let p = 0; p < prop.length; p += 1) {\r\n if (prop[p]?.i) {\r\n apiField.setProperty(prop[p]?.i, prop[p]?.v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // set field possible VALUES for select/multi and radio\r\n if (ajaxFields[f].possibleValues !== undefined) {\r\n const possibleValuesItems = arrayOrArray(\r\n ajaxFields[f].possibleValues,\r\n );\r\n const items = arrayOrArray(possibleValuesItems[0]?.item);\r\n if (items) {\r\n if (\r\n ['multiple', 'radio', 'select'].includes(\r\n apiField.definition.fieldType,\r\n )\r\n ) {\r\n (apiField as Select).setProperty(\r\n 'possibleValue',\r\n items.map((current) => ({\r\n value: current.v,\r\n text: current.text,\r\n })),\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n ['tree', 'file'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const possibleValues = arrayOrArray(\r\n ajaxFields[f]?.field?.possibleValue,\r\n );\r\n apiField.setProperty('possibleValue', possibleValues);\r\n\r\n const propertiesObj = eval(\r\n '(' + ajaxFields[f]?.field?.properties + ')',\r\n );\r\n\r\n Object.keys(propertiesObj).forEach((key) => {\r\n let value = propertiesObj[key];\r\n\r\n if (typeof value === 'string') {\r\n const lowerValue = value.toLowerCase();\r\n if (lowerValue === 't' || lowerValue === 'true') {\r\n value = true;\r\n } else if (lowerValue === 'f' || lowerValue === 'false') {\r\n value = false;\r\n }\r\n }\r\n\r\n apiField.setProperty(key, value);\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Formulario invisible\r\n if (\r\n form.v === 't' &&\r\n String(apiaForm.properties[IProperty.PROPERTY_FORM_HIDDEN]) !== 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, true);\r\n } else if (\r\n form.v === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_HIDDEN)) === 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, false);\r\n }\r\n\r\n // Formulario cerrado\r\n if (\r\n form.c === 't' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) !== 'true'\r\n ) {\r\n apiaForm.closeForm();\r\n } else if (\r\n form.c === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) === 'true'\r\n ) {\r\n apiaForm.openForm();\r\n }\r\n }\r\n\r\n if (response.proccess?.p) {\r\n (await getExecution()).instance\r\n .getProcess()\r\n ?.setPriority(response.proccess.p);\r\n }\r\n\r\n if (response.data) {\r\n parseMessages(response.data);\r\n }\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TFieldServerEvent,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { Form } from './Form';\r\nimport { WithProperties } from './WithProperties';\r\nimport { actions } from './constants/actions';\r\nimport { eventTypes } from './constants/eventTypes';\r\nimport { setAjaxFormResponse } from './events/setAjaxFormResponse';\r\nimport {\r\n FieldValidationState,\r\n FireEventParameters,\r\n TFieldAjaxEventResponsePayload,\r\n} from './types';\r\nimport { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaFunctions } from '../../../programming';\r\nimport { getCurrentTabsString } from '../../../util/app/getCurrentTabsString';\r\n\r\nexport type TFncParams = {\r\n type: 'V' | 'P' | 'E';\r\n value?: string;\r\n attId?: string | number;\r\n};\r\n\r\nlet af: ApiaFunctions | null = null;\r\nasync function getApiaFunctions() {\r\n if (!af) {\r\n await import('../../../programming/ApiaFunctions').then(\r\n ({ ApiaFunctions }) => (af = ApiaFunctions.instance),\r\n );\r\n }\r\n return af!;\r\n}\r\n\r\nexport abstract class Field<\r\n FieldProps extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n } = {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n },\r\n> extends WithProperties<FieldProps> {\r\n protected form: Form = {} as Form;\r\n\r\n definition: State['definition'];\r\n state: Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n } = {\r\n validation: { dirty: false, errorMessage: '', synchronizing: false },\r\n } as Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n };\r\n\r\n constructor({ properties, ...definition }: FieldDefinition) {\r\n super();\r\n\r\n this.properties = properties;\r\n this.definition = definition;\r\n\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions())\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n let idx: any;\r\n if (window.IS_EDIT_GRID_MODAL) {\r\n idx = window.MODAL_INDEX;\r\n } else {\r\n idx = this.definition?.index || 0;\r\n }\r\n return {\r\n ajaxUrl: actions.forms,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n action: 'fireFieldEvent',\r\n frmParent: this.form.definition.frmParent,\r\n frmId: this.form.definition.id,\r\n fldId: this.definition.id,\r\n index: idx,\r\n evtId,\r\n nuevo: true,\r\n preventAsXmlParameter: true,\r\n ...additionalParams,\r\n };\r\n }\r\n\r\n protected async fireScriptEvent(eventName: string): Promise<boolean> {\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (events.length > 0) {\r\n for (const event of events) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: Field<any, any, any> | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n this,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n return result;\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(eventName, event.evtName),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n protected async fireAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n const response = await post<TFieldAjaxEventResponsePayload>(\r\n await makeApiaUrl(\r\n this.getServerEventParams(event.evtId, {\r\n isAjax: true,\r\n }),\r\n ),\r\n {\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n if (response?.data?.success) {\r\n await setAjaxFormResponse(response.data);\r\n return true;\r\n }\r\n } catch (rejectedValue) {\r\n console.error(rejectedValue);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: String(rejectedValue),\r\n }),\r\n );\r\n }\r\n return false;\r\n }\r\n protected async fireNoAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const p = this.getServerEventParams(event.evtId, params);\r\n if ((window.config as any).execution.reloadOnNoAjaxEvents) {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\r\n currentTab: getCurrentTabsString(),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\r\n currentTab: getCurrentTabsString(),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n }\r\n protected async fireServerEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let event = this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n async fireEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let result = await this.fireScriptEvent(eventName);\r\n if (result) {\r\n result = await this.fireServerEvent(eventName, params);\r\n }\r\n\r\n /**\r\n * No es necesario mostrar errores ya que cada fireXXXEvent sabe hacerlo por sí mismo.\r\n */\r\n\r\n return result;\r\n }\r\n\r\n getForm() {\r\n return this.form;\r\n }\r\n\r\n protected hasEventsOfType(eventName: string) {\r\n return (\r\n this.definition.serverEvents?.find((c) => c.evtName === eventName) ||\r\n this.definition.scriptEvents?.find((c) => c.evtName === eventName)\r\n );\r\n }\r\n\r\n protected hasServerAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && c.isAjax,\r\n );\r\n }\r\n\r\n protected hasServerNoAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && !c.isAjax,\r\n );\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n public async validate(): Promise<boolean | Field> {\r\n return true;\r\n }\r\n\r\n markAsRendered() {\r\n this.getForm().markFieldAsRendered(\r\n this.definition.id,\r\n this.definition.index,\r\n );\r\n }\r\n}\r\n","import { TApiaButtonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport type ButtonEvents = 'onClick';\r\n\r\nexport class Button extends Field<TApiaButtonProperties> {\r\n fireEvent(eventName: ButtonEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\nimport { TApiaCaptchaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { labels } from '../../../../../util/labels/labels';\r\n\r\nexport class Captcha extends Field<\r\n TApiaCaptchaProperties,\r\n TApiaFieldBaseDefinition<TApiaCaptchaProperties>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<TApiaCaptchaProperties>,\r\n 'properties'\r\n >;\r\n value: string;\r\n url: string;\r\n }\r\n> {\r\n private static emitter = new EventEmitter<{ confirm: null }>();\r\n public static reload() {\r\n this.emitter.emit('confirm', null);\r\n }\r\n\r\n private id: string = '';\r\n\r\n private static confirmParams: Record<string, string> = {};\r\n public static getConfirmParams() {\r\n return this.confirmParams;\r\n }\r\n\r\n constructor(definition: TApiaCaptchaProperties) {\r\n super(definition as TApiaFieldBaseDefinition<TApiaCaptchaProperties>);\r\n this.state.value = '';\r\n this.properties.name = '__captcha__';\r\n\r\n Captcha.emitter.on('confirm', () => {\r\n this.generateImgUrl();\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.id = this.getCaptchaId();\r\n this.generateImgUrl();\r\n }\r\n\r\n private getCaptchaId() {\r\n return `${window.TAB_ID}${this.form.definition.frmParent}_${this.form.definition.id}`;\r\n }\r\n public getUrl() {\r\n return this.state.url;\r\n }\r\n\r\n public generateImgUrl() {\r\n this.state.url = `${window.CONTEXT}/captchaImg?captchaName=${this.getId()}&t=${new Date().getTime()}`;\r\n }\r\n\r\n public generateVoiceUrl() {\r\n return `${window.CONTEXT}/captchaAudio?captchaName=${this.getId()}&t=${new Date().getTime()}&langCode=${window.LANG_CODE}`;\r\n }\r\n\r\n public getId() {\r\n return this.id;\r\n }\r\n\r\n public setValue(value: string) {\r\n this.state.value = value;\r\n this.state.validation.errorMessage = '';\r\n Captcha.confirmParams = { [this.id]: value };\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n this.id = this.getCaptchaId();\r\n if (this.state.value === '') {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n } else {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n }\r\n}\r\n","export type RetryConfiguration = {\r\n retries: number;\r\n timeout: number;\r\n};\r\n\r\nexport class TooMuchRetriesException extends Error {}\r\n\r\nfunction timeout(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n\r\n/**\r\n * Ejecuta el callback provisto y verifica el resultado contra el método checkSuccess. En caso de que checkSuccess devuelva false, reintenta en el timeout especificado, siempre que las restricciones de configuration.retries lo permita.\r\n *\r\n * En caso de fallar demasiadas veces, eleva una excepción de tipo TooMuchRetriesException\r\n *\r\n */\r\nexport async function asyncRetry<ReturnType>(\r\n cb: () => Promise<ReturnType>,\r\n checkSuccess: (value: ReturnType) => boolean,\r\n configuration: RetryConfiguration = {\r\n retries: 3,\r\n timeout: 300,\r\n },\r\n): Promise<ReturnType> {\r\n return new Promise<ReturnType>((resolve, reject) => {\r\n (async () => {\r\n const tryIt = async () => {\r\n const res = await cb();\r\n return checkSuccess(res) ? res : null;\r\n };\r\n\r\n for await (const _ of new Array(configuration.retries)) {\r\n const res = await tryIt();\r\n if (res) {\r\n resolve(res);\r\n return;\r\n }\r\n await timeout(configuration.timeout);\r\n }\r\n\r\n reject(new TooMuchRetriesException());\r\n })();\r\n });\r\n}\r\n","export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!Object.is(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!Object.is(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!Object.is(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttributeState, SetValueOptions } from './types';\r\nimport { Field } from './Field';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { IApiaApiPostConfig } from '../../../util/api/types';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TooMuchRetriesException,\r\n asyncRetry,\r\n} from '../../../util/other/asyncRetry';\r\nimport {\r\n TApiaFieldValueType,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { actions } from './constants/actions';\r\nimport { shallowEqual } from '../../../util/comparators/shallowEqual';\r\nimport { TApiaFieldWithAttributeProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\n\r\nexport class Attribute {\r\n constructor(\r\n public readonly id: string,\r\n public readonly name: string,\r\n public readonly title: string,\r\n public readonly valueType: TApiaFieldValueType,\r\n ) {}\r\n}\r\n\r\nexport abstract class FieldWithAttribute<\r\n FieldProps extends\r\n TApiaFieldWithAttributeProperties = TApiaFieldWithAttributeProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n FieldWithAttributeState<FieldDefinition, FieldProps, ValueType>\r\n> {\r\n #lastOnChangeValue: ValueType | null = null;\r\n protected lastSynchronizationValue: ValueType | null = null;\r\n\r\n public readonly attribute: Attribute;\r\n\r\n constructor({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(definition as FieldDefinition);\r\n\r\n this.attribute = new Attribute(attId, attName, attLabel, valueType);\r\n\r\n const initialValue = this.getInitialValue({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition,\r\n });\r\n if (initialValue !== value) {\r\n this.synchronize(initialValue);\r\n }\r\n this.state.value = initialValue || ('' as ValueType);\r\n this.state.validation = {\r\n dirty: false,\r\n errorMessage: null,\r\n synchronizing: false,\r\n };\r\n\r\n makeObservable(this, {\r\n attribute: observable,\r\n });\r\n }\r\n\r\n async fireEvent(eventName: string): Promise<boolean> {\r\n if (this.getValidationState().dirty) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (eventName === 'onChange') {\r\n if (this.getValue() === this.#lastOnChangeValue) {\r\n return true;\r\n } else {\r\n const res = await super.fireEvent(eventName);\r\n if (res) {\r\n this.#lastOnChangeValue = this.getValue();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return super.fireEvent(eventName);\r\n }\r\n protected getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>): ValueType {\r\n return value;\r\n }\r\n public getValidationState() {\r\n return this.state.validation;\r\n }\r\n public getValue() {\r\n return this.state.value;\r\n }\r\n public setValue(newValue: ValueType, options?: SetValueOptions) {\r\n if (\r\n this.properties.readonly ||\r\n this.form.properties.readOnly ||\r\n this.form.properties.readonly ||\r\n shallowEqual(newValue, this.getValue())\r\n )\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n return this.fireEvent('onChange');\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ValueType,\r\n ): IApiaApiPostConfig<any> {\r\n return {\r\n postData: {\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n };\r\n }\r\n protected getSynchronizeUrl(params?: Record<string, unknown>) {\r\n return makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'processFieldSubmit',\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attId: this.attribute.id,\r\n index: this.definition.index || 0,\r\n timestamp: Date.now(),\r\n isAjax: true,\r\n ...params,\r\n });\r\n }\r\n protected processSynchronizeError(e: unknown) {\r\n if (e instanceof TooMuchRetriesException) {\r\n this.state.validation.dirty = true;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n protected async synchronize(newValue: ValueType) {\r\n if (newValue === this.lastSynchronizationValue) return true;\r\n\r\n try {\r\n const postData = this.getSynchronizePostConfiguration(newValue);\r\n const result =\r\n (\r\n await asyncRetry(\r\n async () => {\r\n try {\r\n return await post<{ success: boolean }>(\r\n await this.getSynchronizeUrl(),\r\n postData,\r\n );\r\n } catch (e) {\r\n Notifications.instance.add(\r\n new MessageNotification({ message: String(e) }),\r\n );\r\n return null;\r\n }\r\n },\r\n (result) => !!result?.data?.success,\r\n { retries: 10, timeout: 500 },\r\n )\r\n )?.data?.success || false;\r\n\r\n if (result) {\r\n this.lastSynchronizationValue = newValue;\r\n this.state.validation.dirty = false;\r\n return true;\r\n }\r\n } catch (e) {\r\n this.processSynchronizeError(e);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid = !!this.getValue() || !this.properties.required;\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n return {\r\n ...super.getServerEventParams(evtId, additionalParams),\r\n attId: this.attribute.id,\r\n };\r\n }\r\n}\r\n","import { TApiaCheckboxProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype CheckboxEvents = 'onClick';\r\n\r\nexport class Checkbox extends FieldWithAttribute<\r\n TApiaCheckboxProperties,\r\n boolean\r\n> {\r\n fireEvent(eventName: CheckboxEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n protected getInitialValue({\r\n value,\r\n properties,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaCheckboxProperties>): boolean {\r\n return value === undefined || value === ''\r\n ? properties.checked || value\r\n : value;\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { TTranslationState } from './types';\r\nimport { post } from '../../../../util';\r\n\r\nexport class Translation {\r\n state: TTranslationState;\r\n\r\n constructor(state: Pick<TTranslationState, 'id' | 'label' | 'isTranslated'>) {\r\n this.state = {\r\n ...state,\r\n hasChanged: false,\r\n isTranslated: state.isTranslated,\r\n tempValue: '',\r\n };\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n cancelTranslation() {\r\n this.reset();\r\n }\r\n\r\n async readTranslations(url: string) {\r\n if (this.state.remoteValue === undefined) {\r\n const result = await post<{ values: { value: { text: string } } }>(url);\r\n\r\n const newValue = result?.data?.values?.value?.text;\r\n this.state.tempValue =\r\n newValue !== 'null' ? (result?.data?.values?.value?.text ?? '') : '';\r\n this.state.remoteValue = this.state.tempValue;\r\n }\r\n }\r\n\r\n reset() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n }\r\n\r\n setTempValue(str: string) {\r\n this.state.tempValue = str;\r\n this.state.hasChanged = str !== this.state.remoteValue;\r\n }\r\n\r\n submitTranslation(value: string, url: string) {\r\n if (this.state.hasChanged) {\r\n post(url, {\r\n postData: { value },\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n postDataTreatment: 'stringify',\r\n });\r\n }\r\n\r\n this.state.isTranslated = this.value !== '';\r\n this.reset();\r\n }\r\n\r\n get langId() {\r\n return this.state.id;\r\n }\r\n\r\n get value() {\r\n return this.state.tempValue;\r\n }\r\n}\r\n","export function parseFakeJSON(fakeJSON: string) {\r\n return [...fakeJSON.matchAll(/(\\d+): '?([^']+)'?/g)].map(([, k, v]) => ({\r\n id: k,\r\n label: v,\r\n }));\r\n}\r\n","import { TApiaFieldWithAttributeBaseProps } from '../../../InitialData/types/TApiaField';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Form } from '../Form';\r\nimport { TApiaTranslatableFieldProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { Translation } from './Translation';\r\nimport { parseFakeJSON } from './util';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\ninterface InitialTradMap {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport abstract class TranslatableField<\r\n FieldProps extends\r\n TApiaTranslatableFieldProperties = TApiaTranslatableFieldProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends FieldWithAttribute<FieldProps, ValueType, FieldDefinition> {\r\n translations = new Map<string, Translation>();\r\n selectedLanguageId = this.getLanguages()[0]?.id;\r\n isTradLoading = false;\r\n definitionTradParsed: InitialTradMap = {};\r\n\r\n constructor(props: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(props);\r\n makeObservable(this, {\r\n translations: observable,\r\n selectedLanguageId: observable,\r\n isTradLoading: observable,\r\n });\r\n }\r\n\r\n private extractTrad() {\r\n const tradMap: InitialTradMap = {};\r\n const regex = /(\\d+)\\s*:\\s*(true|false)/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(this.definition.trad ?? '{}')) !== null) {\r\n const key = match[1];\r\n const value = match[2] === 'true';\r\n tradMap[key] = value;\r\n }\r\n\r\n this.definitionTradParsed = tradMap;\r\n }\r\n\r\n private getLanguages() {\r\n return arrayOrArray(parseFakeJSON(this.getForm().definition?.langs ?? ''));\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n if (this.getLanguages().length > 0) {\r\n this.extractTrad();\r\n this.getLanguages().forEach((lang) => {\r\n const isTranslated = this.definitionTradParsed[lang.id] ?? false;\r\n this.translations.set(\r\n lang.id,\r\n new Translation({\r\n id: lang.id,\r\n label: lang.label,\r\n isTranslated: isTranslated,\r\n }),\r\n );\r\n });\r\n\r\n this.selectedLanguageId = this.getLanguages()[0].id;\r\n }\r\n }\r\n\r\n public cancelTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.reset();\r\n });\r\n }\r\n\r\n public async changeLanguage(langId: string) {\r\n this.selectedLanguageId = langId;\r\n this.syncTranslation();\r\n }\r\n\r\n public getTranslation(id: string) {\r\n return this.translations.get(id);\r\n }\r\n\r\n public getCurrentTranslation() {\r\n return this.translations.get(this.selectedLanguageId);\r\n }\r\n\r\n public getTranslations() {\r\n return this.translations;\r\n }\r\n\r\n public submitTranslations() {\r\n [...this.getTranslations().values()]\r\n .filter((c) => c.state.hasChanged)\r\n .forEach((c) => {\r\n c.submitTranslation(\r\n c.value,\r\n this.getSynchronizeUrl({\r\n react: true,\r\n preventAsXmlParameter: true,\r\n langId: c.langId,\r\n }),\r\n );\r\n });\r\n }\r\n\r\n public async syncTranslation() {\r\n const langId = this.selectedLanguageId;\r\n this.isTradLoading = true;\r\n\r\n await this.getTranslation(langId)?.readTranslations(\r\n await makeApiaUrl({\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'getFieldTranslations',\r\n frmId: this.getForm().definition.id,\r\n frmParent: this.getForm().definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n langId,\r\n react: true,\r\n }),\r\n );\r\n\r\n this.isTradLoading = false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n const isSuperValid = await super.validate();\r\n let isValid = isSuperValid;\r\n\r\n if (isSuperValid && this.properties.reqTrad) {\r\n const translations = [...this.getTranslations().values()];\r\n\r\n const tradNotValidated = translations.find((c) => !c.state.isTranslated);\r\n\r\n if (tradNotValidated) {\r\n this.state.validation.errorMessage = `El idioma ${tradNotValidated.state.label} es requerido`;\r\n isValid = false;\r\n } else {\r\n this.state.validation.errorMessage = null;\r\n }\r\n }\r\n return isValid;\r\n }\r\n}\r\n","import { TApiaEditorProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport type EditorEvents = 'onChange';\r\n\r\nexport class Editor extends TranslatableField<TApiaEditorProperties, string> {\r\n fireEvent(eventName: EditorEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import fieldProps from '../fieldProps';\r\n\r\nconst NumProps: string[] = [\r\n fieldProps.PROPERTY_SIZE,\r\n fieldProps.PROPERTY_ROWS,\r\n fieldProps.PROPERTY_COLSPAN,\r\n fieldProps.PROPERTY_ROWSPAN,\r\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\r\n fieldProps.PROPERTY_GRID_HEIGHT,\r\n fieldProps.PROPERTY_MAX_REG_GRID,\r\n];\r\n\r\nexport default NumProps;\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst valueParsers: ((\r\n key: string,\r\n value: unknown,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n return next();\r\n } else if (typeof value === 'number') {\r\n return next();\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n return { key, value: parseBoolean(value as string) };\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n return { key, value: parseInt((value as string) || '', 10) };\r\n }\r\n next();\r\n },\r\n];\r\n\r\nexport function parseFakeJSON<T extends Record<string, unknown>>(str: string) {\r\n const res = new Function(`const form = ${str}; return form;`)() as T;\r\n\r\n const ret: T = {} as T;\r\n\r\n for (const [key, value] of Object.entries(res)) {\r\n for (const p of valueParsers) {\r\n let next = false;\r\n const t = p(key, value, () => {\r\n next = true;\r\n });\r\n if (!next && t) {\r\n (ret as any)[t.key] = t.value;\r\n } else {\r\n (ret as any)[key] = value;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TApiaDocumentDefinition,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploadModalOpener,\r\n UploaderModalState,\r\n} from './types';\r\nimport { cloneDeep, getLabel } from '@apia/util';\r\n\r\nfunction getFileExtension(fileName: string): string {\r\n const parts = fileName.split('.');\r\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\r\n}\r\n\r\nconst initialState: Readonly<UploaderModalState> = Object.freeze({\r\n metadata: {\r\n metadataArray: [],\r\n freeMetadataArray: [],\r\n isFreeMetadata: false,\r\n },\r\n fromDirectoryFile: null,\r\n docFolder: undefined,\r\n docExpDate: undefined,\r\n description: '',\r\n permissions: {\r\n pools: [],\r\n users: window.DOCUMENT_OWNER_PRIVILEGES\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: window.CURRENT_USER_LOGIN,\r\n userLogin: window.CURRENT_USER_LOGIN,\r\n },\r\n ]\r\n : [],\r\n allowAllType: ((window.DOCUMENT_EVERYONE_PERMISSION as any as boolean) !==\r\n false\r\n ? 'M'\r\n : '') as '',\r\n },\r\n fileReqError: false,\r\n});\r\n\r\nexport class UploaderModalController {\r\n public state: UploaderModalState = cloneDeep(initialState);\r\n\r\n constructor(\r\n public api: UploaderApi,\r\n public modalConfig: TModalConfig,\r\n public conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n },\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n }\r\n\r\n public get allMetadata() {\r\n return [\r\n ...this.state.metadata.metadataArray,\r\n ...this.state.metadata.freeMetadataArray,\r\n ];\r\n }\r\n\r\n public get allowAllType() {\r\n return this.state.permissions.allowAllType;\r\n }\r\n\r\n public get description() {\r\n return this.state.description;\r\n }\r\n\r\n public get docFolder() {\r\n return this.state.docFolder;\r\n }\r\n\r\n public get docExpDate() {\r\n return this.state.docExpDate;\r\n }\r\n\r\n public get docTypes() {\r\n return this.api.getDocTypes();\r\n }\r\n\r\n public get freeMetadata() {\r\n return this.state.metadata.freeMetadataArray;\r\n }\r\n\r\n public get exitingFiles() {\r\n return this.api.getExistingFiles();\r\n }\r\n\r\n public get inProgressFiles() {\r\n return this.api.getInProgressFiles();\r\n }\r\n\r\n public get hiddenFiles() {\r\n return this.api.getHiddenFiles();\r\n }\r\n\r\n public get progress() {\r\n return this.api.getProgress();\r\n }\r\n\r\n public get metadata() {\r\n return this.state.metadata.metadataArray;\r\n }\r\n\r\n public get selectedDocTypeId() {\r\n return this.api.getCurrentDocTypeId();\r\n }\r\n\r\n public get selectedDocType() {\r\n return this.api.getCurrentDocType();\r\n }\r\n\r\n public addMetadata() {\r\n this.state.metadata.freeMetadataArray.push({\r\n free: 'Y',\r\n id: String(Math.random()),\r\n name: '',\r\n required: 'Y',\r\n title: '',\r\n type: 'S',\r\n value: '',\r\n errorMessage: '',\r\n });\r\n }\r\n\r\n public addFiles(files: File[]) {\r\n this.state.fileReqError = false;\r\n this.api.saveDroppedFiles(files);\r\n }\r\n\r\n public addDirectoryFile(file: TApiaDocumentDefinition) {\r\n this.state.fileReqError = false;\r\n this.api.state.inProgressFiles = [];\r\n this.state.fromDirectoryFile = file;\r\n }\r\n public async changeDocType(docTypeId: string) {\r\n this.resetMetadata();\r\n this.api.setCurrentDocTypeId(docTypeId);\r\n this.onChangeExtension();\r\n this.api.reloadMetadata({ docTypeId });\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.api.clearFile(name);\r\n }\r\n\r\n public clearFiles() {\r\n this.api.clearFiles();\r\n }\r\n\r\n public clearState() {\r\n this.state = cloneDeep(initialState);\r\n this.api.clearState();\r\n }\r\n\r\n public onCloseModal() {\r\n this.clearState();\r\n }\r\n\r\n public async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal(this.conf);\r\n return isValid;\r\n }\r\n\r\n public deleteMetadata(indices: number[]) {\r\n const deleteSet = new Set(indices);\r\n this.state.metadata.freeMetadataArray =\r\n this.state.metadata.freeMetadataArray.filter(\r\n (c, index) => c.free !== 'Y' || !deleteSet.has(index),\r\n );\r\n }\r\n\r\n public deletePermission(item: IPoolsPermissions | IUsersPermissions) {\r\n if (item && 'userId' in item) {\r\n this.state.permissions.users = this.state.permissions.users.filter(\r\n (c) => c.userId !== item.userId,\r\n );\r\n } else {\r\n this.state.permissions.pools = this.state.permissions.pools.filter(\r\n (c) => c.poolId !== item.poolId,\r\n );\r\n }\r\n }\r\n\r\n protected onChangeExtension(): void {\r\n const rawDocExts = this.api.getCurrentDocType()?.docExts || '';\r\n let hideFileNames = '';\r\n const allowedExtensions = rawDocExts\r\n .split(';')\r\n .map((ext) => ext.trim())\r\n .filter((ext) => ext !== '');\r\n\r\n if (rawDocExts === '') {\r\n const allFiles = [...this.inProgressFiles, ...this.hiddenFiles];\r\n const dedupedFiles = Array.from(\r\n new Map(allFiles.map((file: File) => [file.name, file])).values(),\r\n );\r\n this.api.state.inProgressFiles = dedupedFiles;\r\n this.api.state.hiddenFiles = [];\r\n return;\r\n }\r\n\r\n const allowedInProgress: File[] = [];\r\n const toHide: File[] = [];\r\n this.inProgressFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedInProgress.push(file);\r\n } else {\r\n toHide.push(file);\r\n hideFileNames += ` ${file.name} `;\r\n }\r\n });\r\n\r\n const allowedHidden: File[] = [];\r\n const stillHidden: File[] = [];\r\n this.api.state.hiddenFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedHidden.push(file);\r\n } else {\r\n stillHidden.push(file);\r\n }\r\n });\r\n\r\n const combinedInProgress = [...allowedInProgress, ...allowedHidden];\r\n const dedupedInProgress = Array.from(\r\n new Map(\r\n combinedInProgress.map((file: File) => [file.name, file]),\r\n ).values(),\r\n );\r\n const combinedHidden = [...toHide, ...stillHidden];\r\n const dedupedHidden = Array.from(\r\n new Map(combinedHidden.map((file: File) => [file.name, file])).values(),\r\n );\r\n\r\n this.api.state.inProgressFiles = dedupedInProgress;\r\n this.api.state.hiddenFiles = dedupedHidden;\r\n if (hideFileNames)\r\n this.api.notify({\r\n title: getLabel('msgFileWrngExt').text,\r\n message: hideFileNames,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n public async openModal() {\r\n const a = 'openUploaderModal';\r\n import(\r\n /* webpackInclude: /\\.tsx?$/ */\r\n `/src/static/files/${a}`\r\n ).then((r) => {\r\n (r as { default: TUploadModalOpener }).default(this);\r\n });\r\n }\r\n\r\n public setDescription(desc: string) {\r\n this.state.description = desc;\r\n }\r\n\r\n protected async resetMetadata() {\r\n this.state.metadata = {\r\n freeMetadataArray: [],\r\n metadataArray: [],\r\n isFreeMetadata: false,\r\n };\r\n }\r\n\r\n public validate(): boolean {\r\n let isValid = true;\r\n this.state.fileReqError = false;\r\n if (\r\n this.api.getInProgressFiles().length === 0 &&\r\n !this.state.fromDirectoryFile\r\n ) {\r\n this.state.fileReqError = true;\r\n isValid = false;\r\n }\r\n\r\n this.allMetadata.forEach((c) => {\r\n if (c.required === 'Y') {\r\n if (c.value.trim() === '' || c.name.trim() === '') {\r\n c.errorMessage = getLabel('msgReqField').text;\r\n isValid = false;\r\n } else {\r\n c.errorMessage = '';\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n}\r\n","import { parseXml } from '../../../util/xml/parseXml';\r\nimport { TApiaForm } from '../types/TApiaForm';\r\n\r\nfunction decodeBase64ToUtf8(base64String: string) {\r\n const binaryString = atob(base64String);\r\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\r\n return new TextDecoder('utf-8').decode(bytes);\r\n}\r\n\r\nasync function getFormXMLDataAsObj(\r\n formDiv: HTMLElement,\r\n): Promise<TApiaForm | null> {\r\n if (formDiv.dataset.xml) {\r\n const formData = (await parseXml(\r\n decodeBase64ToUtf8(formDiv.dataset.xml),\r\n )) as TApiaForm;\r\n return formData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function readFormsDefinition() {\r\n const elements = [...document.querySelectorAll('.formContainer')];\r\n const forms: TApiaForm[] = [];\r\n\r\n for await (const form of elements) {\r\n const def = await getFormXMLDataAsObj(form as HTMLElement);\r\n if (def) forms.push(def);\r\n }\r\n\r\n return forms;\r\n}\r\n","import { readFormsDefinition } from './bootstrap/readFormsDefinition';\r\n\r\nexport class InitialData {\r\n static #instance: InitialData | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new InitialData();\r\n\r\n return this.#instance!;\r\n }\r\n private constructor() {}\r\n\r\n getFormsDefinition() {\r\n return readFormsDefinition();\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { IButton } from '../types';\r\n\r\nexport class ButtonsAction {\r\n constructor(private button: IButton) {\r\n makeObservable<ButtonsAction, 'button'>(this, {\r\n button: observable,\r\n });\r\n }\r\n\r\n private update(props: Partial<IButton>) {\r\n if (this.button) {\r\n this.button = { ...this.button, ...props };\r\n }\r\n }\r\n\r\n get action() {\r\n return this;\r\n }\r\n\r\n get disabled() {\r\n return this.button.disabled;\r\n }\r\n\r\n get props() {\r\n const properties = {\r\n disabled: this.button.disabled,\r\n hidden: this.button.hidden,\r\n loading: this.button.isLoading,\r\n };\r\n return properties;\r\n }\r\n\r\n get label() {\r\n return this.button?.label;\r\n }\r\n\r\n get title() {\r\n return this.button?.title ?? '';\r\n }\r\n\r\n get variant() {\r\n return this.button?.variant ?? '';\r\n }\r\n\r\n set title(title: string) {\r\n this.update({ title });\r\n }\r\n\r\n set variant(variant: string) {\r\n this.update({ variant });\r\n }\r\n\r\n public disable() {\r\n this.update({ disabled: true });\r\n }\r\n\r\n public enable() {\r\n this.update({ disabled: false });\r\n }\r\n\r\n public hide() {\r\n this.update({ hidden: true });\r\n }\r\n\r\n public show() {\r\n this.update({ hidden: false });\r\n }\r\n}\r\n","import { ButtonsAction } from './ButtonsActions';\r\nimport { IButton, TActionButtons } from '../types';\r\n\r\nexport class ActionsController {\r\n static CONFIRM = 0;\r\n static NEXT = 1;\r\n static PREVIOUS = 2;\r\n static SIGN = 3;\r\n static SAVE = 4;\r\n static RELEASE = 5;\r\n static DELEGATE = 6;\r\n static SHARE = 7;\r\n static PRINT = 8;\r\n static VIEW_DOCS = 9;\r\n static CLOSE = 10;\r\n\r\n private static _instance: ActionsController;\r\n public static get instance(): ActionsController {\r\n if (!ActionsController._instance) {\r\n ActionsController._instance = new ActionsController();\r\n }\r\n return ActionsController._instance;\r\n }\r\n\r\n private buttons = new Map<TActionButtons, ButtonsAction>();\r\n\r\n public addButton(button: IButton) {\r\n if (this.buttons.has(button.id)) return;\r\n this.buttons.set(\r\n button.id,\r\n new ButtonsAction({\r\n ...{\r\n isLoading: false,\r\n disabled: false,\r\n hidden: false,\r\n },\r\n ...button,\r\n }),\r\n );\r\n }\r\n\r\n public getButton(id: TActionButtons) {\r\n if (this.buttons.has(id)) {\r\n return this.buttons.get(id);\r\n }\r\n throw Error('That button not exist');\r\n }\r\n}\r\n","import { Field } from '../main/Execution/FormsExecution/Field';\r\nimport type { TApiaFieldCommonProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport type { IApiaField } from './types';\r\n\r\nexport default abstract class ApiaField implements IApiaField {\r\n #field: Field;\r\n\r\n constructor(field: Field) {\r\n this.#field = field;\r\n }\r\n get fldType() {\r\n return this.#field.definition.fieldType;\r\n }\r\n get fldId() {\r\n return this.#field.definition.id;\r\n }\r\n get index() {\r\n const idx = undefined;\r\n return idx ?? 0;\r\n }\r\n\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: TApiaFieldCommonProperties[K],\r\n ) {\r\n this.#field.setProperty(name, value);\r\n }\r\n\r\n getProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n ): TApiaFieldCommonProperties[K] {\r\n return this.#field.getProperty(name);\r\n }\r\n\r\n setFocus(): IApiaField | null {\r\n throw new Error('Method not implemented. ');\r\n }\r\n isInGrid(): boolean {\r\n return !!this.#field.properties.inGrid;\r\n }\r\n}\r\n","import { Button } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IButtonField extends IApiaField {\r\n fireClickEvent(): void;\r\n getValue(): string | null;\r\n}\r\n\r\nexport default class ButtonField extends ApiaField implements IButtonField {\r\n #field: Button;\r\n\r\n constructor(field: Button) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n fireClickEvent(): void {\r\n if (this.#field.definition.id) {\r\n this.#field.fireEvent('onClick');\r\n }\r\n }\r\n\r\n getValue(): string | null {\r\n if (this.#field.definition.id) {\r\n return this.#field.properties.value ?? '';\r\n }\r\n return null;\r\n }\r\n\r\n clearValue(): void {\r\n this.#field.properties.value = '';\r\n }\r\n}\r\n","import { Editor } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TEditorField = IApiaField;\r\n\r\nexport default class EditorField extends ApiaField implements TEditorField {\r\n constructor(field: Editor) {\r\n super(field);\r\n }\r\n}\r\n","import {\r\n Attribute,\r\n FieldWithAttribute,\r\n} from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { TApiaFieldWithAttributeProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport ApiaField from './ApiaField';\r\n\r\nexport class ApiaAttribute {\r\n #attribute: Attribute;\r\n constructor(attribute: Attribute) {\r\n this.#attribute = attribute;\r\n }\r\n\r\n get attLabel() {\r\n return this.#attribute.title;\r\n }\r\n\r\n get name() {\r\n return this.#attribute.name;\r\n }\r\n get id() {\r\n return this.#attribute.id;\r\n }\r\n get valueType() {\r\n return this.#attribute.valueType;\r\n }\r\n}\r\n\r\nexport class ApiaFieldWithAttribute<T = string | boolean> extends ApiaField {\r\n #field: FieldWithAttribute;\r\n constructor(field: FieldWithAttribute) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n get attribute() {\r\n return new ApiaAttribute(this.#field.attribute);\r\n }\r\n\r\n clearValue() {\r\n this.#field.setValue('');\r\n }\r\n\r\n getValue() {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: T) {\r\n this.#field.setValue(v);\r\n }\r\n\r\n getLabel(): string | null | void {\r\n return this.#field.attribute.title;\r\n }\r\n\r\n getProperty<K extends keyof TApiaFieldWithAttributeProperties>(\r\n name: K,\r\n ): TApiaFieldWithAttributeProperties[K] {\r\n return super.getProperty(name as any);\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Select } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport type TOptionsAsArray = PossibleValue[];\r\n\r\nexport default class SelectField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Select;\r\n constructor(field: Select) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n // get all select options either as array[] or object\r\n getOptions(asObject: boolean): TOptionsMap | TOptionsAsArray | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // adds a option to the select field\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n text: showValue,\r\n });\r\n }\r\n }\r\n\r\n // overwrite all options in select field\r\n setOptions(optionsArray: PossibleValue[] | PossibleValue): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = optionsArray;\r\n }\r\n }\r\n\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n\r\n // get selected option either as array or object key/value\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n const arr = arrayOrArray(this.#field.properties.possibleValue);\r\n if (this.#field.definition.id) {\r\n if (asObject) {\r\n let obj = null;\r\n arr.forEach((c) => {\r\n if (c.selected) {\r\n obj = c;\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return arrayOrArray(arr.find((c) => c.selected));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedText(): string | null {\r\n if (this.#field.definition.id) {\r\n return (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.selected,\r\n )?.text ?? 'Not option selected'\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // // remove all select options\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n}\r\n","import { Input } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class InputField extends ApiaFieldWithAttribute {\r\n #field: Input;\r\n constructor(field: Input) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): number | string | boolean | null {\r\n return this.#field.getValue();\r\n }\r\n}\r\n","import { Tree } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class TreeField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Tree;\r\n constructor(field: Tree) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n setValue(v: string | number | (string | number)[]): void {\r\n this.#field.setValue(v);\r\n }\r\n}\r\n","import { ApiaUtil } from '@apia/components';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Checkbox } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport default class CheckField extends ApiaFieldWithAttribute {\r\n constructor(field: Checkbox) {\r\n super(field);\r\n }\r\n\r\n clearValue(): void {\r\n this.setValue(false);\r\n }\r\n\r\n setValue(value: string | boolean | number): void {\r\n // accepts 1/0 or true/false as values\r\n let val;\r\n const isBool = ApiaUtil.instance.parsers.parseBool(\r\n value as unknown as string,\r\n );\r\n if (isBool === true || isBool === false) {\r\n val = isBool;\r\n } else {\r\n throw new Error(\r\n 'Apia JSApi Error: The function setValue for a Checkbox field only accepts boolean or string type for value parameter.',\r\n );\r\n }\r\n super.setValue(val);\r\n }\r\n}\r\n","import { PossibleValue } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Radio } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class RadioField extends ApiaFieldWithAttribute {\r\n #field: Radio;\r\n constructor(field: Radio) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n radioValues.forEach((c) => options.set(String(c.value), c));\r\n\r\n return options;\r\n }\r\n\r\n return radioValues;\r\n }\r\n return null;\r\n }\r\n\r\n clearOptions(): void | null {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = [];\r\n }\r\n }\r\n\r\n addOption(\r\n radioValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n const isValueIsRepeated = radioValues.some((c) => {\r\n return c.value === radioValue.toString();\r\n });\r\n\r\n if (allowRepeatedValue || !isValueIsRepeated) {\r\n radioValues.push({\r\n value: radioValue.toString(),\r\n text: showValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setOptions(options: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = options;\r\n }\r\n }\r\n\r\n removeOption(radioValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== radioValue,\r\n );\r\n }\r\n }\r\n\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue | null {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n const selected = radioValues.find((c) => c.selected);\r\n if (!selected) return null;\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n options.set(String(selected?.value), selected);\r\n return options;\r\n } else {\r\n return selected;\r\n }\r\n }\r\n\r\n getSelectedText(): string | undefined | null {\r\n if (this.#field.definition.id) {\r\n const possibleValue = arrayOrArray(this.#field.properties.possibleValue);\r\n if (possibleValue) {\r\n return possibleValue.find((c) => c.selected)?.text;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Multiple } from '../../main/Execution/FormsExecution/fields';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class MultipleField extends ApiaFieldWithAttribute<string[]> {\r\n #field: Multiple;\r\n constructor(field: Multiple) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n text: showValue,\r\n });\r\n }\r\n }\r\n setValue(value: string[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.setValue(value);\r\n }\r\n }\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const selected = arrayOrArray(\r\n this.#field.properties.possibleValue,\r\n ).filter((c) => c.selected);\r\n\r\n if (selected) {\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n selected.forEach((c) => options.set(String(c.value), c));\r\n return options;\r\n }\r\n\r\n return selected;\r\n }\r\n }\r\n return null;\r\n }\r\n getOptions(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options;\r\n }\r\n return null;\r\n }\r\n setOptions(optionsArray: PossibleValue[] | PossibleValue): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = optionsArray;\r\n }\r\n }\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n}\r\n","import { Hidden } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\n\r\nexport default class HiddenField extends ApiaField {\r\n constructor(field: Hidden) {\r\n super(field);\r\n }\r\n}\r\n","import { Textarea } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class AreaField extends ApiaFieldWithAttribute {\r\n constructor(field: Textarea) {\r\n super(field);\r\n }\r\n}\r\n","import { Image } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IImageField extends IApiaField {\r\n getValue(): null;\r\n setValue(): null;\r\n getLabel(): void;\r\n clearValue(): null;\r\n}\r\n\r\nexport default class ImageField extends ApiaField implements IImageField {\r\n #field: Image;\r\n constructor(field: Image) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n\r\n getValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Link } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ILinkField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class LinkField extends ApiaField implements ILinkField {\r\n #field: Link;\r\n constructor(field: Link) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n if (this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n }\r\n}\r\n","import { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ITextField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class TextField extends ApiaField implements ITextField {\r\n #field: Field;\r\n constructor(field: Field) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n}\r\n","const Field = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n\r\n // Mensajes de error\r\n WRONG_ATT_TYPE_ERROR:\r\n 'Component does not support attributes of type <TOK>. Contact system administrator',\r\n\r\n // Keys almacenadas en los campos\r\n STORE_KEY_FIELD: 'field',\r\n STORE_KEY_FORM: 'form',\r\n\r\n PROPERTY_ARIA_DESCRIPTION: 'ariaDescription',\r\n PROPERTY_ARIA_LABEL: 'ariaLabel',\r\n PROPERTY_ALT: 'alt',\r\n PROPERTY_AUTO_COMPLETE: 'autoComplete',\r\n PROPERTY_AUTO_FOCUS: 'autoFocus',\r\n PROPERTY_INPUT_TYPE: 'inputType',\r\n PROPERTY_PLACE_HOLDER: 'placeHolder',\r\n PROPERTY_TITLE: 'title',\r\n} as const;\r\n\r\nexport default Field;\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport class CustomComponentField {\r\n #field: CustomComponent;\r\n constructor(field: CustomComponent) {\r\n this.#field = field;\r\n }\r\n\r\n fireEvent(name: string) {\r\n this.#field.fireEvent(name);\r\n }\r\n getProperty(name: string): any {\r\n return this.#field.getProperty(name);\r\n }\r\n setFocus(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isInGrid(): boolean {\r\n return false;\r\n }\r\n getStringValue(attName: string) {\r\n return this.#field.getStringValue(attName);\r\n }\r\n getValue(attName: string, index = 0) {\r\n return this.#field.getValue(attName, index);\r\n }\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: any,\r\n ): void {\r\n this.#field.setProperty(name, value);\r\n }\r\n setStringValue(attName: string, value: string) {\r\n return this.#field.setStringValue(attName, value);\r\n }\r\n setValue(attName: string, value: any, index = 0) {\r\n return this.#field.setValue(attName, value, index);\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { Field as ExecutionField } from '../../main/Execution/FormsExecution/Field';\r\nimport {\r\n Button,\r\n Captcha,\r\n Checkbox,\r\n Editor,\r\n File,\r\n Grid,\r\n Hidden,\r\n Image,\r\n Input,\r\n Label,\r\n Link,\r\n Multiple,\r\n Password,\r\n Radio,\r\n Select,\r\n Textarea,\r\n Title,\r\n Tree,\r\n} from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport Field from '../constants/Field';\r\nimport {\r\n ButtonField,\r\n CaptchaField,\r\n CheckField,\r\n EditorField,\r\n FileUploaderField,\r\n HiddenField,\r\n ImageField,\r\n InputField,\r\n LinkField,\r\n MultipleField,\r\n PasswordField,\r\n RadioField,\r\n SelectField,\r\n TextAreaField,\r\n TextField,\r\n TreeField,\r\n} from '../fields';\r\nimport { CustomComponentField } from '../fields/CustomComponentField';\r\nimport GridField from '../fields/GridField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport const createNewField = (\r\n field: ExecutionField | FieldWithAttribute | CustomComponent,\r\n): IApiaField | null => {\r\n if (field instanceof CustomComponent) {\r\n return new CustomComponentField(field) as any;\r\n } else {\r\n const { fieldType } = field.definition;\r\n let newField: IApiaField | null = null;\r\n\r\n switch (fieldType) {\r\n case Field.TYPE_INPUT:\r\n newField = new InputField(field as Input);\r\n break;\r\n case Field.TYPE_PASSWORD:\r\n newField = new PasswordField(field as Password);\r\n break;\r\n case Field.TYPE_SELECT:\r\n newField = new SelectField(field as Select);\r\n break;\r\n case Field.TYPE_RADIO:\r\n newField = new RadioField(field as Radio);\r\n break;\r\n case Field.TYPE_CHECK:\r\n newField = new CheckField(field as Checkbox);\r\n break;\r\n case Field.TYPE_BUTTON:\r\n newField = new ButtonField(field as Button);\r\n break;\r\n case Field.TYPE_MULTIPLE:\r\n newField = new MultipleField(field as Multiple);\r\n break;\r\n case Field.TYPE_HIDDEN:\r\n newField = new HiddenField(field as Hidden);\r\n break;\r\n case Field.TYPE_AREA:\r\n newField = new TextAreaField(field as Textarea);\r\n break;\r\n case Field.TYPE_GRID:\r\n newField = new GridField(field as Grid);\r\n break;\r\n case Field.TYPE_IMAGE:\r\n newField = new ImageField(field as Image);\r\n break;\r\n case Field.TYPE_HREF:\r\n newField = new LinkField(field as Link);\r\n break;\r\n case Field.TYPE_LABEL:\r\n newField = new TextField(field as Label);\r\n break;\r\n case Field.TYPE_TITLE:\r\n newField = new TextField(field as Title);\r\n break;\r\n case Field.TYPE_FILE:\r\n newField = new FileUploaderField(field as File);\r\n break;\r\n case Field.TYPE_CAPTCHA:\r\n newField = new CaptchaField(field as Captcha);\r\n break;\r\n case Field.TYPE_TREE:\r\n newField = new TreeField(field as Tree);\r\n break;\r\n case Field.TYPE_EDITOR:\r\n newField = new EditorField(field as Editor);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return newField;\r\n }\r\n};\r\n","import ApiaField from '../ApiaField';\r\nimport { arrayOrArray, Mutex } from '@apia/util';\r\nimport { createNewField } from '../utils/createApiaField';\r\nimport { Grid } from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\n\r\nexport default class GridField extends ApiaField {\r\n #field: Grid;\r\n\r\n constructor(field: Grid) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n #mutex = new Mutex();\r\n\r\n async addRow(): Promise<IApiaField[]> {\r\n try {\r\n await this.#mutex.acquire();\r\n const result = await this.#field.addRow(1);\r\n\r\n if (result) {\r\n return this.getRow(this.#field.finalIndex)!;\r\n }\r\n\r\n return [];\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n clearGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n clearPage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async clearRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n\r\n const row = this.#field.getRowByFieldIndex(index);\r\n\r\n if (!row) {\r\n throw new Error(`Row ${index} not found`);\r\n }\r\n\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n closeForm(): GridField {\r\n this.#field.closeEditionModal();\r\n return this;\r\n }\r\n\r\n async deleteAllRows() {\r\n try {\r\n await this.#mutex.acquire();\r\n this.#field.deleteAllRows();\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n async deleteGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n deletePage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async deleteRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n this.#field.deleteRows(index);\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n editRow(index: number) {\r\n window.dispatchEvent(\r\n new CustomEvent('openGridEdition', {\r\n detail: { index, grid: this.#field },\r\n }),\r\n );\r\n }\r\n\r\n getAllColumns() {\r\n return this.#field\r\n .getAllColumns()\r\n .map((c) => c.map((f) => createNewField(f)));\r\n }\r\n\r\n getColumn(fieldName: string) {\r\n const fields = this.#field.getColumn(fieldName);\r\n if (fields) {\r\n return arrayOrArray(fields).map((c) => createNewField(c!));\r\n }\r\n return [];\r\n }\r\n\r\n getCurrentPage() {\r\n return this.#field.getCurrentPage();\r\n }\r\n\r\n getField(fieldName: string, fieldIndex = 0) {\r\n const fields = this.#field.getField(fieldName, fieldIndex);\r\n\r\n if (fields) return arrayOrArray(fields).map((c) => createNewField(c!));\r\n return null;\r\n }\r\n\r\n getPageCount() {\r\n return this.#field.pageCount;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field\r\n .getRowByFieldIndex(index)\r\n ?.map((c) => createNewField(c)!);\r\n }\r\n\r\n getSelection(): IApiaField[][] {\r\n const selected = this.#field.getSelectedRows();\r\n const returnObj: IApiaField[][] = [];\r\n selected.forEach((r) => {\r\n const row: IApiaField[] = [];\r\n r.forEach((c) => {\r\n const fld = createNewField(c);\r\n if (fld) {\r\n row.push(fld);\r\n }\r\n });\r\n returnObj.push(row);\r\n });\r\n return returnObj;\r\n }\r\n\r\n get id() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n isPaged() {\r\n return this.#field.properties.paged;\r\n }\r\n\r\n get rowsCount() {\r\n return this.#field.length;\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.#field.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n toggleDeleteButton(index: number, isShown?: boolean) {\r\n this.#field.toggleDeleteButton(index, isShown);\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n this.#field.toggleEditFormButton(rowIndex, isShown);\r\n }\r\n}\r\n","import { Captcha } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TCaptchaField = IApiaField;\r\n\r\nexport default class CaptchaField extends ApiaField implements TCaptchaField {\r\n constructor(field: Captcha) {\r\n super(field);\r\n }\r\n}\r\n","import { File } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { reaction } from 'mobx';\r\n\r\nexport default class FileUploaderField extends ApiaFieldWithAttribute {\r\n #field: File;\r\n constructor(field: File) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n onChange(cb: (newValue: unknown) => unknown) {\r\n reaction(\r\n () => {\r\n this.#field.getValue();\r\n },\r\n () => {\r\n cb(this.#field.getValue());\r\n },\r\n { fireImmediately: false },\r\n );\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id && this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Password } from '../../main/Execution/FormsExecution/fields';\r\nimport ApiaField from '../ApiaField';\r\n\r\nexport default class PasswordField extends ApiaField {\r\n constructor(field: Password) {\r\n super(field);\r\n }\r\n}\r\n","import { DataGridField as GridField } from './fields';\r\nimport { IApiaField, IApiaForm } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from './ApiaFieldWithAttribute';\r\nimport { createNewField } from './utils/createApiaField';\r\nimport { Form } from '../main/Execution/FormsExecution/Form';\r\nimport { TApiaFormProperties } from '../main/InitialData/types/TApiaForm';\r\nimport { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport { Field } from '../main/Execution/FormsExecution/Field';\r\n\r\nexport default class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n constructor(form: Form) {\r\n this.#form = form;\r\n }\r\n\r\n getFrmParent(): string {\r\n return this.#form.definition.frmParent;\r\n }\r\n\r\n getFrmId(): string | null {\r\n return this.#form.definition.id;\r\n }\r\n\r\n getFormName(): string {\r\n return this.#form.definition.formName;\r\n }\r\n getFormTitle(): string {\r\n return this.#form.definition.formTitle;\r\n }\r\n openForm(): void {\r\n this.#form.setProperty('prpFrmClosed', false);\r\n }\r\n closeForm(): void {\r\n this.#form.setProperty('prpFrmClosed', true);\r\n }\r\n getProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n ): TApiaFormProperties[K] {\r\n return this.#form.getProperty(name);\r\n }\r\n setProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n value: TApiaFormProperties[K],\r\n ): void {\r\n this.#form.setProperty(name, value);\r\n }\r\n getCustomComponent(attName: string) {\r\n return this.#form.getCustomComponentByAttName(attName);\r\n }\r\n getField(fld: string | number, index?: number): IApiaField | undefined {\r\n const field = this.#form.getField(fld as string, index);\r\n\r\n if (field) {\r\n return createNewField(field as FieldWithAttribute)!;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(fldId: string) {\r\n const field = this.#form.getFieldById(fldId);\r\n\r\n if (field) {\r\n return createNewField(field as Field);\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldColumn(name: string): IApiaField[] {\r\n return arrayOrArray(this.#form.getFieldByName(name))\r\n .map((c) => createNewField(c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n getAllFields(): IApiaField[] {\r\n return this.#form\r\n .getAllFields()\r\n .map((c) => createNewField(c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n clearForm(clearReadonlyFields: boolean, deleteGridsRows: boolean): void {\r\n this.getAllFields().forEach((c) => {\r\n if (deleteGridsRows && c instanceof GridField) {\r\n c.clearGrid();\r\n }\r\n\r\n if (c instanceof ApiaFieldWithAttribute) {\r\n if (!c.getProperty('readonly') || clearReadonlyFields) {\r\n c.setValue('');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n ApiaUtil,\r\n TDispatchedNotification,\r\n TOpenModal,\r\n} from '@apia/components';\r\nimport { ActionsController } from './ActionController';\r\nimport { IApiaField, IApiaForm, IApiaFunctions, TActionButtons } from './types';\r\nimport { notify } from '@apia/notifications';\r\nimport ApiaForm from './ApiaForm';\r\nimport { TFrmParent } from '../main/InitialData/types/TApiaForm';\r\nimport { Execution } from '../main/Execution';\r\n\r\ndeclare global {\r\n interface Window {\r\n lastModalReturn: string[];\r\n }\r\n}\r\n\r\nconst OptionButton = {\r\n BTN_VIEW_DOCS: 100,\r\n BTN_PRINT: 101,\r\n};\r\n\r\nexport class ApiaFunctions implements IApiaFunctions {\r\n public static instance = new ApiaFunctions();\r\n\r\n private constructor() {}\r\n\r\n getFormByType(frmName: string, frmType: TFrmParent): IApiaForm | null {\r\n const form = Execution.instance.getFormByName(frmName, frmType);\r\n if (form) return new ApiaForm(form);\r\n return null;\r\n }\r\n\r\n actionButton(id: string | number) {\r\n const actualId = this.getButtonAction(id);\r\n return ActionsController.instance.getButton(actualId);\r\n }\r\n\r\n admEntity(\r\n entName: string,\r\n entNum?: number,\r\n parameters?: string,\r\n width?: number,\r\n height?: number,\r\n ) {\r\n entName;\r\n entNum;\r\n parameters;\r\n width;\r\n height;\r\n ApiaUtil.instance.modals.open({ children: 'TODO' });\r\n //TODO\r\n }\r\n\r\n clearMessages() {\r\n ApiaUtil.instance.notifications.closeAll();\r\n }\r\n\r\n clickActionButton(button: number) {\r\n const id = Number(button);\r\n // let domId;\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n (\r\n document.querySelector(`[id=\"${'btnCon'}\"]`) as HTMLButtonElement\r\n )?.click();\r\n break;\r\n case ActionsController.NEXT:\r\n Execution.instance.next();\r\n break;\r\n case ActionsController.PREVIOUS:\r\n Execution.instance.back();\r\n break;\r\n case ActionsController.SAVE:\r\n Execution.instance.save();\r\n break;\r\n case ActionsController.RELEASE:\r\n Execution.instance.free();\r\n break;\r\n case ActionsController.DELEGATE:\r\n Execution.instance.delegate();\r\n break;\r\n case ActionsController.SHARE:\r\n Execution.instance.shareSocial();\r\n break;\r\n case OptionButton.BTN_VIEW_DOCS:\r\n Execution.instance.viewDocs();\r\n break;\r\n case OptionButton.BTN_PRINT:\r\n Execution.instance.print();\r\n break;\r\n case ActionsController.CLOSE:\r\n Execution.instance.close();\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n closeCurrentTab(): void {\r\n ApiaUtil.instance.tabs.currentTab.close();\r\n }\r\n\r\n disableActionButton(id: string | number): void {\r\n const actualId = this.getButtonAction(id);\r\n this.actionButton(actualId)?.disable();\r\n }\r\n\r\n disableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.disableActionButton(actualId);\r\n }\r\n\r\n enableActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.enable();\r\n }\r\n\r\n enableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.enableActionButton(actualId);\r\n }\r\n\r\n getAllForms(): IApiaForm[] {\r\n return Execution.instance.getAllForms().map((c) => new ApiaForm(c));\r\n }\r\n getAllFormsByType(type: 'P' | 'E'): IApiaForm[] {\r\n return Execution.instance.getAllForms().reduce<ApiaForm[]>((acc, c) => {\r\n if (c.definition.frmParent === type) {\r\n acc.push(new ApiaForm(c));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getAttField(\r\n attType: 'P' | 'E',\r\n attId: string,\r\n ): IApiaField | IApiaField[] | undefined {\r\n const fields: IApiaField[] = [];\r\n this.getAllFormsByType(attType).forEach((c) =>\r\n fields.push(c.getField(attId) as IApiaField),\r\n );\r\n return fields;\r\n }\r\n\r\n getButtonAction(id: number | string) {\r\n let btnId: TActionButtons;\r\n\r\n switch (id) {\r\n case ActionsController.CLOSE || 'CLOSE':\r\n btnId = 'CLOSE';\r\n break;\r\n case ActionsController.CONFIRM || 'CONFIRM':\r\n btnId = 'CONFIRM';\r\n break;\r\n case ActionsController.DELEGATE || 'DELEGATE':\r\n btnId = 'DELEGATE';\r\n break;\r\n case ActionsController.NEXT || 'NEXT':\r\n btnId = 'NEXT';\r\n break;\r\n case ActionsController.PREVIOUS || 'PREVIOUS':\r\n btnId = 'PREVIOUS';\r\n break;\r\n case ActionsController.PRINT || 'PRINT':\r\n btnId = 'PRINT';\r\n break;\r\n case ActionsController.RELEASE || 'RELEASE':\r\n btnId = 'RELEASE';\r\n break;\r\n case ActionsController.SAVE || 'SAVE':\r\n btnId = 'SAVE';\r\n break;\r\n case ActionsController.SIGN || 'SIGN':\r\n btnId = 'SIGN';\r\n break;\r\n case ActionsController.SHARE || 'SHARE':\r\n btnId = 'SHARE';\r\n break;\r\n case ActionsController.VIEW_DOCS || 'VIEW_DOCS':\r\n btnId = 'VIEW_DOCS';\r\n break;\r\n default:\r\n throw new Error(`There is no button with id ${id}`);\r\n }\r\n return btnId;\r\n }\r\n\r\n getCurrentLanguageCode(): string | null {\r\n return window.LANG_CODE;\r\n }\r\n\r\n getCurrentProcessName(): string | null {\r\n return Execution.instance.getProcess().name ?? null;\r\n }\r\n\r\n getCurrentStep(): number | null {\r\n return Execution.instance.currentStep;\r\n }\r\n\r\n getCurrentTaskName(): string | null {\r\n return Execution.instance.getCurrentTask().name;\r\n }\r\n\r\n getEntityForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'E');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getForm(frmName: string, frmType?: string): IApiaForm | null {\r\n if (frmType === 'E') return this.getFormByType(frmName, frmType);\r\n if (frmType === 'P') return this.getFormByType(frmName, frmType);\r\n const eFrm = this.getFormByType(frmName, 'E');\r\n if (eFrm) {\r\n return eFrm;\r\n }\r\n const pForm = this.getFormByType(frmName, 'P');\r\n return pForm;\r\n }\r\n\r\n getLastModalReturn() {\r\n return window.lastModalReturn;\r\n }\r\n\r\n getModalReturn() {\r\n return this.getLastModalReturn();\r\n }\r\n\r\n getModalSelectedRow() {\r\n return window.lastModalReturn.slice(2);\r\n }\r\n\r\n getModalShowValue() {\r\n return window.lastModalReturn[1];\r\n }\r\n\r\n getModalValue() {\r\n return window.lastModalReturn[0];\r\n }\r\n\r\n getProcessForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'P');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getRootPath(): string | null {\r\n try {\r\n return window.APIA_ROOT_CONTEXT;\r\n } catch (e: unknown) {\r\n if (e instanceof Error) {\r\n console.error(`Apia JSApi Error: ${e.message}`);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hideActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.hide();\r\n }\r\n\r\n hideOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.hideActionButton(actualId);\r\n }\r\n\r\n openModal(props: TOpenModal) {\r\n ApiaUtil.instance.modals.open(props);\r\n }\r\n\r\n openTab(title: string, url: string): void {\r\n ApiaUtil.instance.tabs.openTab(title, url);\r\n }\r\n\r\n saveTask() {\r\n //TODO\r\n Execution.instance.save().then((res) => {\r\n if (res) console.warn('Manage...');\r\n });\r\n }\r\n\r\n setLastModalReturn(value: string[]) {\r\n window.lastModalReturn = value;\r\n window.lastModalReturn = value;\r\n }\r\n\r\n setStepTitle(stepNumber: number, stepTitle: string): void {\r\n Execution.instance.setStepTitle(stepNumber, stepTitle);\r\n }\r\n\r\n showActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.show();\r\n }\r\n\r\n showConfirm(\r\n text: string,\r\n title: string,\r\n callbackFn: (win: boolean) => unknown,\r\n ): void {\r\n ApiaUtil.instance.dialogs\r\n .confirm({ children: text, title })\r\n .then((hasConfirmed) => {\r\n try {\r\n callbackFn(hasConfirmed);\r\n } catch (e) {\r\n if (e instanceof Error) {\r\n notify({\r\n message: String(e),\r\n type: 'danger',\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n showMessage(\r\n text: string,\r\n title?: string,\r\n type?: TDispatchedNotification['type'],\r\n ): void {\r\n notify({ message: text, type: type ?? 'warning', title });\r\n }\r\n\r\n showOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.showActionButton(actualId);\r\n }\r\n\r\n // converts a number in an Apia formatted number\r\n toApiaNumber(value: number): number | string {\r\n return ApiaUtil.instance.parsers.apiaNumber(value);\r\n }\r\n\r\n // converts an Apia formatted number into a javascript number\r\n toJSNumber(value: string): number | string {\r\n return ApiaUtil.instance.parsers.jsNumber(value);\r\n }\r\n\r\n viewAdmEntity(entName: string, entNum?: number) {\r\n this.admEntity(entName, entNum);\r\n }\r\n}\r\n","import { computed, makeObservable, observable, toJS } from 'mobx';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { actions } from '../constants/actions';\r\nimport { parseXml, post } from '../../../../util';\r\nimport type { Form } from '../Form';\r\nimport { setAjaxFormResponse } from '../events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { ResponseSysMessages } from '../../../../util/api/types';\r\nimport {\r\n ComponentEvent,\r\n TCusCmpStateRequest,\r\n TCustomComponentDefaultResponse,\r\n TCustomComponentDefinition,\r\n} from '../../../InitialData/types/TApiaForm';\r\nimport { arrayOrArray, DeepReadonly, freezeDeep } from '@apia/util';\r\nimport { TFncParams } from '../Field';\r\nimport { Notifications } from '../../../Notifications';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { ApiaFunctions } from '../../../../programming';\r\n\r\nexport type TCustomComponentState = {\r\n isLoading: boolean;\r\n\r\n attributes: Record<string, any[]>;\r\n properties: Record<string, any>;\r\n additional: any;\r\n};\r\n\r\nexport class CustomComponent {\r\n #hasInited = false;\r\n public form: Form = {} as Form;\r\n private _state: TCustomComponentState = {\r\n isLoading: false,\r\n attributes: {},\r\n properties: {},\r\n additional: {},\r\n };\r\n\r\n constructor(public readonly definition: TCustomComponentDefinition) {\r\n makeObservable<CustomComponent, '_state'>(this, {\r\n _state: observable,\r\n state: computed,\r\n });\r\n this.parseStateObject(definition.state.state);\r\n }\r\n\r\n public get state(): DeepReadonly<TCustomComponentState> {\r\n return freezeDeep(toJS(this._state));\r\n }\r\n\r\n public getAdditional<T>() {\r\n return this.state.additional as DeepReadonly<T>;\r\n }\r\n\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n\r\n private parseStateObject(o: TCusCmpStateRequest) {\r\n if (o.additional) {\r\n try {\r\n this._state.additional = JSON.parse(o.additional.text);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(JSON.parse(atob(c.values)));\r\n });\r\n arrayOrArray(o.property).forEach((c) => {\r\n this._state.properties[c.name] = c.value;\r\n });\r\n }\r\n\r\n public async processResult(res?: TCustomComponentDefaultResponse | null) {\r\n let proceed = true;\r\n const scheduledEvents: string[] = [];\r\n\r\n const newState = res?.state || res?.processResult?.state;\r\n\r\n if (newState) {\r\n for (const directive of arrayOrArray(newState.directive)) {\r\n if (directive.type === 'RELOAD') {\r\n proceed = false;\r\n window.location.assign(\r\n makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'reload',\r\n nuevo: true,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n );\r\n } else if (directive.type === 'FIRE') {\r\n scheduledEvents.push(directive.content);\r\n }\r\n }\r\n }\r\n\r\n if (proceed) {\r\n if (res!.ajaxUpdated) {\r\n const result = parseXml(res!.ajaxUpdated.text);\r\n\r\n setAjaxFormResponse(\r\n result as TFieldAjaxEventResponsePayload & ResponseSysMessages,\r\n );\r\n }\r\n\r\n if (newState) {\r\n this.parseStateObject(newState);\r\n }\r\n\r\n for await (const event of scheduledEvents) {\r\n await this.fireEvent(event);\r\n }\r\n\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n protected getScriptEventParams(fncParams: TFncParams[]): unknown[] {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n ApiaFunctions.instance\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n protected async fireScriptEvents(event: ComponentEvent): Promise<boolean> {\r\n let result = true;\r\n\r\n for await (const script of arrayOrArray(event.script)) {\r\n const def = JSON.parse(script.text) as {\r\n fncName: string;\r\n fncParams: {\r\n type: 'P' | 'E';\r\n attId: number;\r\n }[];\r\n };\r\n\r\n try {\r\n const fn = (window as any)[def.fncName] as (\r\n src: CustomComponent | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n result =\r\n result &&\r\n (await fn(\r\n this,\r\n ...this.getScriptEventParams(arrayOrArray(def.fncParams)),\r\n ));\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(event.name, def.fncName),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async fireEvent(evtName: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const event = arrayOrArray(this.definition.event).find(\r\n (c) => c.name === evtName,\r\n );\r\n if (!event) {\r\n throw new Error('Unknown event ' + evtName);\r\n }\r\n\r\n if (\r\n (!event.script || (await this.fireScriptEvents(event))) &&\r\n event.serverEvents\r\n ) {\r\n await this.processResult(\r\n (await this.postMessage('fireEvent', evtName))?.data,\r\n );\r\n }\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getProperty(prpName: string) {\r\n return this._state.properties[prpName];\r\n }\r\n\r\n private async postMessage(method: string, body: any) {\r\n return post<TCustomComponentDefaultResponse>(\r\n makeApiaUrl({\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData: {\r\n payload: body,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n }\r\n\r\n async setStringValue(attName: string, value: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n attName,\r\n clear: true,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getStringValue(attName: string) {\r\n return this._state.attributes[attName]?.join();\r\n }\r\n\r\n getValue(attName: string, index: number = 0) {\r\n return this._state.attributes[attName]?.[index];\r\n }\r\n\r\n async setValue(attName: string, value: any, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n index,\r\n attName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setProperty(prpName: string, value: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setProperty',\r\n JSON.stringify({\r\n prpName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async sendMessage(payload: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'message',\r\n typeof payload === 'object' && payload\r\n ? JSON.stringify(payload)\r\n : payload,\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n}\r\n","import {\r\n TApiaForm,\r\n TApiaFormProperties,\r\n TFormEventName,\r\n} from '../../InitialData/types/TApiaForm';\r\nimport { Execution } from '..';\r\nimport { TSignaturesData } from './types';\r\nimport { Field } from './Field';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { computed, makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\r\nimport { Grid } from './fields';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\nexport class Form extends WithProperties<TApiaFormProperties> {\r\n fields: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n state = { isMarkedToSign: false };\r\n protected _customComponents: Map<string, CustomComponent> = new Map();\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsGroups = new Map<string, Grid>();\r\n definition: TApiaForm = {} as TApiaForm;\r\n\r\n constructor(definition: TApiaForm) {\r\n const props = parseFakeJSON<TApiaFormProperties>(definition.properties);\r\n super(props);\r\n makeObservable<Form, 'state'>(this, {\r\n state: observable,\r\n allFields: computed,\r\n customComponents: computed,\r\n });\r\n\r\n this.definition = definition;\r\n this.fields = arrayOrArray(definition.field).sort((a, b) => {\r\n if (a.y < b.y) return -1;\r\n if (a.y > b.y) return 1;\r\n\r\n if (a.x < b.x) return -1;\r\n if (a.x > b.x) return 1;\r\n\r\n return 0;\r\n });\r\n this.state.isMarkedToSign = this.definition.markedToSign;\r\n }\r\n\r\n get allFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n get customComponents() {\r\n return this._customComponents;\r\n }\r\n\r\n closeForm() {\r\n this.properties.prpFrmClosed = true;\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getField(field: string, index?: number) {\r\n const found =\r\n this.getFieldById(field) ||\r\n this.getFieldByName(field) ||\r\n this.getFieldByAttributeId(field) ||\r\n this.getFieldByAttributeName(field);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getField(field, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n const found = this.fieldsByAttributeId.get(String(attId));\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeId(attId, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n const found = this.fieldsByAttributeName.get(attName);\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeName(attName, index);\r\n return res;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(id: string | number, index?: number) {\r\n const found = this.fieldsById.get(String(id));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldById(id, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldByName(name: string): Field | Field[] | undefined;\r\n getFieldByName(name: string, index: number): Field | undefined;\r\n getFieldByName(name: string, index?: number): Field | Field[] | undefined {\r\n const found = this.fieldsByName.get(String(name));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByName(name, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected getHiddenFields() {\r\n return this.allFields.filter((c) => c.getProperty('visibilityHidden'));\r\n }\r\n async markFormToSign() {\r\n void post<{ success: boolean }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'markFormToSign',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n sign: !this.state.isMarkedToSign,\r\n react: true,\r\n }),\r\n ).then((res) => {\r\n if (res?.data && res.data.success) {\r\n this.state.isMarkedToSign = !this.state.isMarkedToSign;\r\n }\r\n });\r\n }\r\n\r\n async viewSigns(): Promise<TSignaturesData | undefined> {\r\n const res = await get<TSignaturesData>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'viewSigns',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n react: true,\r\n }),\r\n );\r\n if (res?.data) {\r\n return res.data;\r\n }\r\n }\r\n\r\n private cucCmpByAttId = new Map<number, CustomComponent>();\r\n private cucCmpByFldId = new Map<number, CustomComponent>();\r\n private cucCmpByAttName = new Map<string, CustomComponent>();\r\n\r\n getCustomComponentByFldId(fldId: number) {\r\n return this.cucCmpByFldId.get(fldId);\r\n }\r\n\r\n getCustomComponentByAttId(attId: number) {\r\n return this.cucCmpByAttId.get(attId);\r\n }\r\n\r\n getCustomComponentByAttName(attName: string) {\r\n return this.cucCmpByAttName.get(attName);\r\n }\r\n\r\n private mustRenderFields: string[] = [];\r\n\r\n public addFieldToRender(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields.push(fldId + '_' + fldIndex);\r\n }\r\n\r\n public markFieldAsRendered(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields = this.mustRenderFields.filter(\r\n (c) => c !== fldId + '_' + fldIndex,\r\n );\r\n if (this.mustRenderFields.length - this.getHiddenFields().length === 0) {\r\n Execution.instance.markFormAsRendered(\r\n this.definition.frmParent,\r\n this.definition.formName,\r\n );\r\n }\r\n }\r\n\r\n async init() {\r\n const cusFields = arrayOrArray(this.definition.customField);\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n this.mustRenderFields.push(field.id + '_' + (field.index ?? 0));\r\n }\r\n for await (const customComponent of cusFields) {\r\n this.mustRenderFields.push(customComponent.id + '_' + 0);\r\n }\r\n for await (const customComponent of cusFields) {\r\n const cc = new CustomComponent(customComponent);\r\n await cc.init(this);\r\n this._customComponents.set(customComponent.id, cc);\r\n arrayOrArray(customComponent.state.state.attribute).forEach((a) => {\r\n this.cucCmpByAttId.set(Number.parseInt(String(a.attId)), cc);\r\n this.cucCmpByAttName.set(a.attName, cc);\r\n this.cucCmpByFldId.set(Number.parseInt(String(customComponent.id)), cc);\r\n });\r\n }\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n Execution.instance.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor(field);\r\n await newField.init(this);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties?.name) {\r\n this.fieldsByName.set(\r\n String(newField.properties?.name),\r\n newField as Field<any>,\r\n );\r\n }\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n\r\n if (newField instanceof Grid) {\r\n this.fieldsGroups.set(String(newField.definition.id), newField);\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n async runEvent(eventType: TFormEventName) {\r\n switch (eventType) {\r\n case 'onLoad':\r\n break;\r\n }\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const field of this.allFields) {\r\n if (field instanceof Grid) {\r\n const result = await field.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n isValid = false;\r\n } else {\r\n isValid = isValid && result === true;\r\n }\r\n } else if (field instanceof Field) {\r\n isValid = (await field.validate()) && isValid;\r\n if (!isValid && !firstInvalid) {\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n}\r\n","export function noNaN(number: unknown, defaultReturn = 0) {\r\n const returnNumber = Number(number);\r\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\r\n return returnNumber;\r\n}\r\n","import { makeObservable, observable, runInAction } from 'mobx';\r\nimport { Grid } from '.';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n };\r\n\r\n constructor(private grid: Grid) {\r\n makeObservable(this, { state: observable });\r\n this.init();\r\n }\r\n\r\n #unsubscribeTableEvents = () => {};\r\n private init() {\r\n this.#unsubscribeTableEvents();\r\n\r\n const controller = this.grid.controller;\r\n\r\n const u2 = controller.on('selectionChange', (selection) => {\r\n const { paged, currentPage, pages } = this.grid.properties;\r\n const isFirstPage = paged ? String(currentPage) === '1' : false;\r\n const isLastPage = paged ? String(currentPage) === String(pages) : false;\r\n\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.getContainer()?.getRowIndex(c) === 0) &&\r\n isFirstPage\r\n : selection.find((c) => c.getContainer()?.getRowIndex(c) === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ) && isLastPage\r\n : selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ));\r\n });\r\n });\r\n this.#unsubscribeTableEvents = () => {\r\n u2();\r\n };\r\n }\r\n\r\n get showAddButton() {\r\n const { hideGridButtons, hideAddButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return !hideGridButtons && !hideAddButton && !hideIncludeButton;\r\n }\r\n get showDelButton() {\r\n const { hideGridButtons, hideDelButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return !hideGridButtons && !hideDelButton && !hideIncludeButton;\r\n }\r\n get showSortButtons() {\r\n const { hideGridButtons, hideOrderButton } = this.grid.properties;\r\n return !hideGridButtons && !hideOrderButton;\r\n }\r\n get isSortUpDisabled() {\r\n return this.state.isSortUpDisabled || this.grid.state.isLoading;\r\n }\r\n get isSortDownDisabled() {\r\n return this.state.isSortDownDisabled || this.grid.state.isLoading;\r\n }\r\n get isAddDisabled() {\r\n return this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getState('selection').size === 0 ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n async sortUp() {\r\n this.grid.sortUp();\r\n }\r\n\r\n async sortDown() {\r\n this.grid.sortDown();\r\n }\r\n\r\n async addRow() {\r\n await this.grid.addRow();\r\n }\r\n\r\n async deleteSelectedRows() {\r\n this.grid.deleteRows();\r\n }\r\n}\r\n","import { Cell } from '@apia/table2';\r\nimport type { Field } from '../../Field';\r\n\r\nexport class GridCell extends Cell {\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import { Cell } from '@apia/table2';\r\nimport type { GridEditionModal } from './GridEditionModal';\r\nimport type { Grid } from '.';\r\n\r\nexport class AdditionalCell extends Cell {\r\n constructor(\r\n public grid: Grid,\r\n public getIndex: () => number,\r\n public remove: () => unknown,\r\n public openEditionModal?: (handler: GridEditionModal) => unknown,\r\n ) {\r\n super({ colName: 'additional' });\r\n }\r\n\r\n public get hasEditionModal() {\r\n return this.openEditionModal !== undefined;\r\n }\r\n}\r\n","import { makeApiaUrl, parseXml, post } from '../../../../../util';\r\n\r\nimport type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport type { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { actions } from '../../constants/actions';\r\nimport type {\r\n FieldState,\r\n GridActionResponse,\r\n GridColumn,\r\n GridDefinition,\r\n GridEvents,\r\n GridProps,\r\n GridState,\r\n} from './types';\r\nimport { GridEditionModal } from './GridEditionModal';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport {\r\n Cell,\r\n FocusControllerPlugin,\r\n Row,\r\n TableController,\r\n} from '@apia/table2';\r\nimport type { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Execution } from '../../..';\r\nimport { Field } from '../../Field';\r\nimport type { Form } from '../../Form';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { GridFooterHandler } from './GridFooterHandler';\r\nimport { GridCell } from './GridCell';\r\nimport { arrayOrArray, Mutex } from '@apia/util';\r\nimport type { FireEventParameters } from '../../types';\r\nimport { AdditionalCell } from './AdditionalCell';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\n\r\nasync function inlineCaller<T>(cb: () => T, _t: number): Promise<T> {\r\n return cb();\r\n}\r\n\r\nasync function inlineTimeout(cb: () => unknown, _t: number): Promise<true> {\r\n setTimeout(cb, _t);\r\n\r\n return Promise.resolve(true);\r\n}\r\n\r\nexport class Grid extends Field<GridProps, GridDefinition, GridState> {\r\n private rowId = 0;\r\n\r\n protected mutex = new Mutex();\r\n protected newRowStates: FieldState[][] = [];\r\n protected initialStates: FieldState[][];\r\n protected fieldsDefinitions: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >[];\r\n\r\n protected readonly managedAttIds = new Set<string | number>();\r\n protected readonly managedAttNames = new Set<string>();\r\n protected readonly managedFieldIds = new Set<string | number>();\r\n protected readonly managedFieldsNames = new Set<string>();\r\n\r\n protected _editionModalHandler: GridEditionModal | null = null;\r\n protected readonly _footerController: GridFooterHandler;\r\n protected readonly tableController: TableController = new TableController({\r\n allowEdition: true,\r\n allowSelection: true,\r\n isSelectionMultiple: true,\r\n });\r\n\r\n public get controller() {\r\n return this.tableController;\r\n }\r\n\r\n public get currentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n public get editionModalHandler() {\r\n return this._editionModalHandler;\r\n }\r\n\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n return (\r\n this.controller.body.rows\r\n .at(-1)\r\n ?.cells.find((c) => c instanceof GridCell) as GridCell\r\n ).getField().definition.index!;\r\n }\r\n\r\n public get footerController() {\r\n return this._footerController;\r\n }\r\n\r\n public get header() {\r\n return this.state.header;\r\n }\r\n\r\n public get isPaged() {\r\n return this.properties.paged;\r\n }\r\n\r\n public get length() {\r\n return this.tableController.body.rows.length;\r\n }\r\n\r\n public get minIndex() {\r\n return Number.isFinite(this.properties.pageSize)\r\n ? (this.properties.currentPage - 1) * this.properties.pageSize\r\n : 0;\r\n }\r\n\r\n public get pageCount() {\r\n return this.properties.pages;\r\n }\r\n\r\n public get pageSize() {\r\n return this.properties.pageSize;\r\n }\r\n\r\n public get selectedIndices() {\r\n return [...this.tableController.getState('selection').values()].map((c) =>\r\n c.getIndex(),\r\n );\r\n }\r\n\r\n public get selectedItems() {\r\n return this.selectedIndices.map((current) => this.getRow(current)!);\r\n }\r\n\r\n public get startIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(properties.pagedGridSize, Infinity),\r\n\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n });\r\n\r\n this._footerController = new GridFooterHandler(this);\r\n\r\n const fieldsArray = arrayOrArray(field);\r\n this.initialStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n this.fieldsDefinitions = fieldsArray.map(\r\n ({ properties, fieldValue, ...current }) => {\r\n return current;\r\n },\r\n );\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n fldId: c.fldId,\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150px',\r\n }));\r\n this.state.isLoading = false;\r\n this.state.isMaximized = false;\r\n\r\n this.controller.on('columnClick', (col) => {\r\n this.sortColumn((col.getState('properties')!.col as GridColumn).fldId);\r\n });\r\n\r\n const hiddenColNames: Set<string> = new Set();\r\n\r\n this.initialStates.forEach((rows, idx) => {\r\n const allHidden = rows.every(\r\n (r) => parseFakeJSON(r.properties).visibilityHidden,\r\n );\r\n if (allHidden) {\r\n hiddenColNames.add(this.header[idx].fldId);\r\n }\r\n });\r\n\r\n this.controller.setState('hiddenColumns', hiddenColNames);\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n public async addRow(addRowsCount: number = 1): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridAdd')) {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n addRowsCount,\r\n },\r\n });\r\n\r\n /**\r\n * Cuando no tengo la definición de la nueva fila, debo obtenerla.\r\n */\r\n if (this.newRowStates.length === 0) {\r\n const response = await res;\r\n if (response?.data?.gridXml) {\r\n /**\r\n * Si la definición vuelve del server, la establezco en una variable\r\n * local y la uso en el futuro, cada vez que se crea una nueva fila.\r\n */\r\n const xml = parseXml(\r\n response.data.gridXml,\r\n ) as TApiaGridDefinition;\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n this.newRowStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n } else {\r\n /**\r\n * En caso de error, tiro excepción con o sin mensaje, pero la excepción\r\n * es necesaria para detener el flujo actual.\r\n */\r\n throw new Error(\r\n !window.SERVER_MODE\r\n ? 'Something went wrong on the add row action.'\r\n : '',\r\n );\r\n }\r\n }\r\n\r\n const addedRow = await this.addRowFromDefinitions(\r\n this.fieldsDefinitions.map((c, i) => ({\r\n ...c,\r\n ...this.newRowStates[i][0],\r\n })),\r\n );\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de agregar la fila en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridAdd')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n (await addedRow).remove();\r\n return false;\r\n } else {\r\n this.controller.clearSelection();\r\n (await addedRow).scrollIntoView();\r\n (await addedRow).toggleSelection(true);\r\n return true;\r\n }\r\n }, !this.hasServerAjaxEventsOfType('gridAdd'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public closeEditionModal() {\r\n this._editionModalHandler?.close();\r\n this._editionModalHandler = null;\r\n this.refresh();\r\n }\r\n\r\n public async deleteAllRows() {\r\n return this.asyncAction(async () => {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n this.controller.body.clear();\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridDelete')) {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.getIndex();\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index).sort((a, b) => b - a);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n let minIndex = Infinity;\r\n\r\n /**\r\n * Busco el mínimo índice de forma de poder restablecer la selección\r\n * luego de eliminar las filas.\r\n */\r\n deletingIndices.forEach((i) => {\r\n if (i < minIndex) {\r\n minIndex = i;\r\n }\r\n });\r\n\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n deletingIndices.forEach((c) =>\r\n this.controller.body.getRowByIndex(c).remove(),\r\n );\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridDelete')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridDelete'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async fireScriptEvent(eventName: GridEvents): Promise<boolean> {\r\n return super.fireScriptEvent(eventName);\r\n }\r\n\r\n public async fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters & { mutex: boolean },\r\n ): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n return super.fireEvent(eventName, params);\r\n }, params?.mutex);\r\n }\r\n\r\n public getAllColumns() {\r\n return [...Object.values(this.fieldsDefinitions)].map((f) =>\r\n this.tableController.body.rows.map((c) =>\r\n (c.getCellByColumnName(f.id) as GridCell).getField(),\r\n ),\r\n );\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n\r\n public getCurrentPage() {\r\n return 0;\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getField(field: string, index?: number): Field | Field[] | undefined {\r\n return (\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeName(field, index)\r\n );\r\n }\r\n\r\n public getFieldByAttributeId(\r\n attId: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.id === attId,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')!.field as FieldWithAttribute)\r\n .attribute.id === attId,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByAttributeName(\r\n attName: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.name === attName,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')!.field as FieldWithAttribute)\r\n .attribute.name === attName,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldById(\r\n id: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldIds.has(id)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find((c) => c.definition.id === id);\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')!.field as Field).definition.id ===\r\n id,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByName(\r\n name: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find((c) => c.properties.name === name);\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')!.field as Field).properties.name ===\r\n name,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public getRowByFieldIndex(index: number) {\r\n const row = this.tableController.body.rows.find(\r\n (c) =>\r\n (\r\n c.cells.find((current) => current instanceof GridCell) as GridCell\r\n )?.getField().definition.index === index,\r\n );\r\n if (row) {\r\n return row?.cells\r\n .filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getSelectedRows() {\r\n return this.tableController\r\n .getSelectedRows()\r\n .map((c) => this.getRow(c.getIndex()));\r\n }\r\n\r\n public async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n const headerRow = new Row('header');\r\n headerRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => -1,\r\n () => {},\r\n ),\r\n );\r\n\r\n for (const col of this.header) {\r\n let width = String(col.width || 250);\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n\r\n headerRow.addCell(\r\n new Cell({\r\n colName: col.fldId,\r\n content: col.label,\r\n domProperties: {\r\n title: col.title || col.label,\r\n style: { width },\r\n },\r\n properties: { col },\r\n }),\r\n );\r\n }\r\n this.controller.head.addRow(headerRow);\r\n\r\n for (let index = 0; index < this.initialStates[0]?.length || 0; index++) {\r\n this.addRowFromDefinitions(\r\n this.fieldsDefinitions.map((c, i) => ({\r\n ...c,\r\n ...this.initialStates[i][index],\r\n })),\r\n );\r\n }\r\n }\r\n\r\n public openEditionModal(handler: GridEditionModal) {\r\n this._editionModalHandler = handler;\r\n handler.open();\r\n }\r\n\r\n public async refresh() {\r\n return this.asyncAction(this.actualRefreshAction.bind(this));\r\n }\r\n\r\n public async sortColumn(fldId: string) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField: fldId,\r\n mutex: true,\r\n });\r\n return true;\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => b - a,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'down');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => a - b,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'up');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.controller.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n public toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const row of this.tableController.body.rows) {\r\n for await (const cell of row.cells) {\r\n const field = cell.getState('properties')?.field;\r\n if (field instanceof Field) {\r\n const result = await field.validate();\r\n if (!result && isValid && !firstInvalid) {\r\n isValid = false;\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n\r\n protected async actualRefreshAction() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n });\r\n\r\n if (res?.data?.gridXml) {\r\n await this.rebuildGrid(res.data.gridXml);\r\n } else {\r\n throw new Error(\"The server didn't return a valid XML response.\");\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected async addRowFromDefinitions(\r\n definitions?: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {\r\n const pageSize = this.properties.pageSize;\r\n const offset = Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0; // When pageSize is Infinity, we treat it as a single page\r\n const index = this.tableController.body.rows.length + offset;\r\n\r\n if (!definitions) {\r\n definitions = this.fieldsDefinitions.map((current, columnIndex) => {\r\n this.getForm().addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.initialStates[columnIndex][0],\r\n };\r\n });\r\n }\r\n\r\n // Check if pageSize is finite\r\n\r\n const newRow = new Row(String(this.rowId++), { cells: [] });\r\n newRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => newRow.getIndex(),\r\n () => {\r\n this.deleteRows(newRow.getIndex());\r\n },\r\n this.properties.gridForm\r\n ? (handler) => {\r\n this.openEditionModal(handler);\r\n }\r\n : undefined,\r\n ),\r\n );\r\n this.tableController.body.addRow(newRow);\r\n\r\n for await (const field of definitions) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n Execution.instance.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor({ ...field, index });\r\n await newField.init(this.getForm());\r\n\r\n if (newField instanceof FieldWithAttribute) {\r\n this.managedAttIds.add(newField.attribute.id);\r\n this.managedAttNames.add(newField.attribute.name);\r\n }\r\n this.managedFieldIds.add(newField.definition.id);\r\n this.managedFieldsNames.add(newField.properties.name);\r\n\r\n newRow.addCell(\r\n new GridCell({\r\n colName: newField.definition.id,\r\n properties: { field: newField },\r\n }),\r\n );\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n\r\n this.tableController.clearSelection();\r\n this.tableController.toggleRowSelection(newRow, true);\r\n setTimeout(() => {\r\n newRow.cells[0]?.focus();\r\n }, 0);\r\n\r\n return newRow;\r\n }\r\n\r\n protected async asyncAction<T>(\r\n cb: () => Promise<T>,\r\n mutex = true,\r\n ): Promise<T> {\r\n if (mutex) {\r\n await this.mutex.acquire();\r\n }\r\n try {\r\n this.state.isLoading = true;\r\n const res = await cb();\r\n return res;\r\n } finally {\r\n this.state.isLoading = false;\r\n if (mutex) {\r\n this.mutex.release();\r\n }\r\n }\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const { hideDelButton, shownDeleteButtons, shownEditionButtons, gridForm } =\r\n this.properties;\r\n const mustShowAdditionalColumn =\r\n (!hideDelButton &&\r\n [...shownDeleteButtons.values()].some((c) => c !== false)) ||\r\n (!!gridForm &&\r\n [...shownEditionButtons.values()].some((c) => c !== false));\r\n\r\n this.controller.toggleColumnVisibility(\r\n 'additional',\r\n mustShowAdditionalColumn,\r\n );\r\n }\r\n\r\n protected getRow(index: number) {\r\n return this.tableController.body\r\n .getRowByIndex(index)\r\n ?.cells.filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n protected async rebuildGrid(xmlString: string): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray = fieldsArray.map((field) =>\r\n arrayOrArray(field.fieldValue || field.row),\r\n );\r\n\r\n this.properties.pages = xml.pages || this.properties.pages;\r\n this.properties.currentPage = xml.curPage || this.properties.currentPage;\r\n\r\n if (statesArray[0].length > this.controller.body.rows.length) {\r\n for (\r\n let i = this.controller.body.rows.length;\r\n i < statesArray[0].length;\r\n i++\r\n ) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i,\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i].properties,\r\n value: statesArray[columnIndex][i].value,\r\n },\r\n };\r\n });\r\n\r\n await this.addRowFromDefinitions(parsedFieldGroups);\r\n }\r\n } else if (statesArray[0].length < this.controller.body.rows.length) {\r\n const removeIndices = new Array(\r\n this.controller.body.rows.length - statesArray[0].length,\r\n )\r\n .fill(0)\r\n .map((_, i) => i + statesArray[0].length);\r\n\r\n removeIndices\r\n .sort((a, b) => b - a)\r\n .forEach((i) => {\r\n this.controller.body.getRowByIndex(i)?.remove();\r\n });\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n statesArray.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const field = this.getFieldById(id, rowIndex) as Field | undefined;\r\n\r\n if (field) {\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = this.startIndex + rowIndex;\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n behave: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n await makeApiaUrl({\r\n action: 'gridAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n ...behave,\r\n },\r\n );\r\n }\r\n\r\n private swapRows(rows: number[], direction: 'up' | 'down') {\r\n let min = Infinity;\r\n\r\n for (const i of rows) {\r\n min = Math.min(min, i);\r\n\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n\r\n const aRow = this.tableController.body.getRowByIndex(i);\r\n const bRow = this.tableController.body.getRowByIndex(swapIndex);\r\n\r\n // Solamente se ejecuta el swap si ambas filas existen\r\n if (aRow && bRow) {\r\n this.getRow(i).forEach((c) => (c.definition.index = swapIndex));\r\n this.getRow(swapIndex).forEach((c) => (c.definition.index = i));\r\n\r\n this.tableController.body.swapRows(aRow, bRow);\r\n\r\n // Forzamos el estado de selección a refrescarse para que se actualicen los botones de subir y bajar\r\n const selection = this.tableController.getState('selection');\r\n selection.forEach((c) => c.toggleSelection(true));\r\n }\r\n }\r\n\r\n if (min < Infinity) {\r\n this.tableController\r\n .getPluginOfType(FocusControllerPlugin)\r\n ?.scrollIntoView(\r\n this.tableController.body.getRowByIndex(min)!.getState('id'),\r\n );\r\n }\r\n }\r\n\r\n public toggleMaximize() {\r\n this.state.isMaximized = !this.state.isMaximized;\r\n }\r\n}\r\n","import { arrayOrArray, noNaN } from '@apia/util';\r\nimport { parseXml } from '../../../../../util';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { Grid } from '../Grid';\r\nimport type { GridActionResponse } from '../Grid/types';\r\nimport { Row } from '@apia/table2';\r\n\r\nexport class GridPaginated extends Grid {\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN(this.properties.currentPage * pageSize - 1, 0);\r\n }\r\n\r\n public addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridAdd')) {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridDelete')) {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.getIndex();\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index).sort((a, b) => b - a);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const minIndex = Math.min(...deletingIndices);\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n\r\n let newSelectedRow: Row | undefined;\r\n\r\n if (currentPage === this.currentPage) {\r\n newSelectedRow =\r\n this.controller.body.rows[minIndex] ||\r\n this.controller.body.rows[minIndex - 1];\r\n } else {\r\n newSelectedRow = this.controller.body.rows.at(-1);\r\n }\r\n\r\n newSelectedRow?.toggleSelection(true);\r\n newSelectedRow?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async gotoPage(page: number): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page: page - 1,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => b - a,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices.map((c) => c + this.startIndex),\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices.map((c) => c + this.startIndex),\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.getIndex());\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c + 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows[0]?.scrollIntoView();\r\n this.controller.body.rows[0]?.toggleSelection(true);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => a - b,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: indices.map((c) => c + this.startIndex),\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices.map((c) => c + this.startIndex),\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.getIndex());\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c - 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","import { TApiaHiddenProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Hidden extends FieldWithAttribute<TApiaHiddenProperties> {}\r\n","import { TApiaImageProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Image extends Field<TApiaImageProperties> {}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaInputDefinition } from '../../../../InitialData/types/fields/TApiaInputDefinition';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { SetValueOptions } from '../../types';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\n\r\nexport class Input<ValueType = any> extends TranslatableField<\r\n TApiaInputProperties,\r\n ValueType,\r\n TApiaInputDefinition\r\n> {\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public async setValue(\r\n newValue: ValueType,\r\n options?: SetValueOptions,\r\n ): Promise<boolean> {\r\n if (!this.definition.regExp || this.validateRegex(newValue)) {\r\n if (newValue !== '') this.state.validation.errorMessage = null;\r\n return super.setValue(newValue, options);\r\n }\r\n return false;\r\n }\r\n\r\n private validateRegex(value: ValueType): boolean {\r\n const regex = new RegExp(this.definition.regExp ?? '');\r\n\r\n if (!regex.test(String(value)) && value !== '') {\r\n this.state.validation.errorMessage = labels.errorRegexNotValidated();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n return super.validate();\r\n }\r\n}\r\n","import { TApiaLabelProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Label extends Field<TApiaLabelProperties> {}\r\n","import { TApiaLinkProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Link extends Field<TApiaLinkProperties> {}\r\n","import { makeApiaUrl, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaModalInputDefinition } from '../../../../InitialData/types/fields/TApiaModalInputDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\ntype ModalInputValue = { showValue: string; storeValue?: string };\r\n\r\nexport class ModalInput extends FieldWithAttribute<\r\n TApiaInputProperties,\r\n ModalInputValue\r\n> {\r\n constructor({ value, ...definition }: TApiaModalInputDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n },\r\n value: { showValue: definition.qry_show_value, storeValue: value },\r\n });\r\n }\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public setValue(\r\n newValue: Required<ModalInputValue>,\r\n options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n const actualValue: ModalInputValue = {\r\n showValue: newValue.showValue,\r\n storeValue: this.properties.storeMdlQryResult\r\n ? newValue.storeValue\r\n : undefined,\r\n };\r\n\r\n return super.setValue(actualValue, options);\r\n }\r\n\r\n public async setValueFromModalSelection(rowId: string) {\r\n const result = await post<{ row: { cell: { text: string }[] } }>(\r\n makeApiaUrl({\r\n ajaxUrl: '/apia.query.ModalAction.run',\r\n action: 'getValues',\r\n }),\r\n { postData: { id: rowId }, postDataTreatment: 'stringify' },\r\n );\r\n\r\n if (result?.data?.row?.cell) {\r\n this.setValue({\r\n storeValue: result.data.row.cell[0].text,\r\n showValue: result.data.row.cell[1].text,\r\n });\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n if (this.properties.required && !this.getValue().storeValue) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n }\r\n\r\n return super.validate();\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ModalInputValue,\r\n ): IApiaApiPostConfig<any> {\r\n const storeIdValue = this.properties.storeMdlQryResult;\r\n\r\n return {\r\n ...super.getSynchronizePostConfiguration(value),\r\n postData: {\r\n value: storeIdValue\r\n ? [this.getValue().storeValue!, this.getValue().showValue]\r\n : this.getValue().showValue,\r\n },\r\n };\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaMultipleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaMultipleDefinition } from '../../../../InitialData/types/fields/TApiaMultipleDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Multiple extends FieldWithAttribute<\r\n TApiaMultipleProperties,\r\n Record<number, string>\r\n> {\r\n constructor({\r\n possibleValue,\r\n value,\r\n ...definition\r\n }: TApiaMultipleDefinition) {\r\n super({\r\n ...{\r\n ...definition,\r\n value: arrayOrArray(possibleValue).find((c) => c.selected)?.value,\r\n },\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n console.warn('Validation incomplete');\r\n const isValid = !!this.getValue()[0] || !this.properties.required;\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n}\r\n","import { TApiaPasswordProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Password extends FieldWithAttribute<\r\n TApiaPasswordProperties,\r\n string\r\n> {}\r\n","import { TApiaRadioProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaRadioButtonDefinition } from '../../../../InitialData/types/fields/TApiaRadioButtonDefinition';\r\nimport { Form } from '../../Form';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype RadioEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Radio extends FieldWithAttribute<\r\n TApiaRadioProperties,\r\n number | string,\r\n TApiaRadioButtonDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaRadioButtonDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n await this.fireEvent('onPopulate');\r\n }\r\n\r\n fireEvent(eventName: RadioEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { TApiaSelectProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaSelectDefinition } from '../../../../InitialData/types/fields/TApiaSelectDefinition';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Select extends FieldWithAttribute<\r\n TApiaSelectProperties,\r\n string,\r\n TApiaSelectDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaSelectDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n protected getInitialValue({\r\n properties: { possibleValue },\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaSelectProperties>): string {\r\n return (\r\n value ||\r\n (!this.properties.inputAsText && arrayOrArray(possibleValue)[0]?.value)\r\n );\r\n }\r\n}\r\n","import { TApiaTextareaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class Textarea extends TranslatableField<\r\n TApiaTextareaProperties,\r\n string\r\n> {}\r\n","import { TApiaTitleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Title extends Field<TApiaTitleProperties> {}\r\n","import { reaction } from 'mobx';\r\nimport { EventEmitter } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { TApiaTreeProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport {\r\n TApiaTreeDefinition,\r\n TApiaTreePossibleValue,\r\n} from '../../../../InitialData/types/fields/TApiaTreeDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\nexport type TTreeValue = string | number;\r\ntype TreeEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Tree extends FieldWithAttribute<\r\n TApiaTreeProperties,\r\n TTreeValue | TTreeValue[],\r\n TApiaTreeDefinition\r\n> {\r\n private treeNodes = new EventEmitter<{\r\n nodesList: TApiaTreePossibleValue[];\r\n }>();\r\n\r\n constructor({ possibleValue, ...props }: TApiaTreeDefinition) {\r\n super(props);\r\n\r\n this.properties.possibleValue = arrayOrArray(possibleValue);\r\n\r\n reaction(\r\n () => {\r\n this.properties.possibleValue;\r\n },\r\n () => {\r\n this.treeNodes.emit('nodesList', this.properties.possibleValue);\r\n },\r\n );\r\n }\r\n\r\n getPossibleValues() {\r\n return this.properties.possibleValue;\r\n }\r\n\r\n onPossibleValuesChange = this.treeNodes.on.bind(this.treeNodes, 'nodesList');\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: TTreeValue | TTreeValue[],\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n return {\r\n ...conf,\r\n postData: {\r\n ...conf.postData,\r\n clearValues: true,\r\n },\r\n };\r\n }\r\n fireEvent(eventName: TreeEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Field } from './Field';\r\nimport { TranslatableField } from './TranslatableField';\r\nimport { Button } from './fields/Button';\r\nimport { Captcha } from './fields/Captcha';\r\nimport { Checkbox } from './fields/Checkbox';\r\nimport { Editor } from './fields/Editor';\r\nimport { File } from './fields/File';\r\nimport { Grid } from './fields/Grid';\r\nimport { GridPaginated } from './fields/GridPaginated';\r\nimport { Hidden } from './fields/Hidden';\r\nimport { Image } from './fields/Image';\r\nimport { Input } from './fields/Input';\r\nimport { Label } from './fields/Label';\r\nimport { Link } from './fields/Link';\r\nimport { ModalInput } from './fields/ModalInput';\r\nimport { Multiple } from './fields/Multiple';\r\nimport { Password } from './fields/Password';\r\nimport { Radio } from './fields/Radio';\r\nimport { Select } from './fields/Select';\r\nimport { Textarea } from './fields/Textarea';\r\nimport { Title } from './fields/Title';\r\nimport { Tree } from './fields/Tree';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { GridProps } from './fields/Grid/types';\r\n\r\nexport type FieldConstructor = new (\r\n definition: any,\r\n) =>\r\n | Field<any, any, any>\r\n | FieldWithAttribute<any, any, any>\r\n | TranslatableField<any, any, any>;\r\n\r\nexport type FieldsMapping = Record<\r\n string,\r\n (definition: any) => FieldConstructor\r\n>;\r\n\r\nexport const defaultFieldsMap: FieldsMapping = Object.freeze({\r\n area: () => Textarea,\r\n button: () => Button,\r\n captcha: () => Captcha,\r\n check: () => Checkbox,\r\n editor: () => Editor,\r\n file: () => File,\r\n grid: (def) => {\r\n const definition = def as TApiaFieldBaseDefinition<GridProps>;\r\n\r\n if (definition?.properties?.paged) {\r\n return GridPaginated;\r\n }\r\n\r\n return Grid;\r\n },\r\n hidden: () => Hidden,\r\n href: () => Link,\r\n image: () => Image,\r\n input: (def) => {\r\n const definition = def as TApiaFieldWithAttributeBaseProps<any>;\r\n\r\n if (definition.qryId) {\r\n return ModalInput;\r\n }\r\n\r\n return Input;\r\n },\r\n label: () => Label,\r\n multiple: () => Multiple,\r\n password: () => Password,\r\n radio: () => Radio,\r\n select: () => Select,\r\n title: () => Title,\r\n tree: () => Tree,\r\n});\r\n","import { action, computed, makeObservable, observable } from 'mobx';\r\nimport { TProcess } from './types';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\n\r\nexport class Process {\r\n state: TProcess | null = null;\r\n\r\n uploader = new UploaderApi(\r\n 'ProcessUploader',\r\n 'P',\r\n window.processDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n name: computed,\r\n });\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n async init() {\r\n const res = await post<{ processData: { text: string } }>(\r\n makeApiaUrl({\r\n action: 'getProcessData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.processData.text) {\r\n throw new Error('Cannot retrieve the process data');\r\n }\r\n\r\n this.uploader.onInit();\r\n\r\n const parsedData: TProcess = JSON.parse(res?.data?.processData.text);\r\n const calValue = arrayOrArray(parsedData.calendar?.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n const priorityValue =\r\n arrayOrArray(parsedData.priority.options).find((c) => c.selected)\r\n ?.value ?? arrayOrArray(parsedData?.priority?.options)[0]?.value;\r\n\r\n this.state = parsedData;\r\n if (calValue) this.state.calendar.value = calValue;\r\n if (priorityValue) this.state.priority.value = priorityValue;\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n cmbProPri: this.state?.priority?.value,\r\n selCal: this.state?.calendar?.value,\r\n };\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n if (this.state?.priority) this.state.priority.value = newPriority;\r\n }\r\n}\r\n","export class Task {\r\n #name: string;\r\n constructor(task: any) {\r\n this.#name = task.name;\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n get name() {\r\n return this.#name;\r\n }\r\n}\r\n","import { computed, makeObservable, observable } from 'mobx';\r\nimport { TEntity } from './type';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\n\r\nexport class Entity {\r\n state: TEntity | null = null;\r\n\r\n uploader = new UploaderApi(\r\n 'EntityUploader',\r\n 'E',\r\n window.entityDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n name: computed,\r\n });\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n async init() {\r\n const res = await post<{ entityData: { text: string } }>(\r\n makeApiaUrl({\r\n action: 'getEntityData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.entityData.text) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n this.uploader.onInit();\r\n\r\n const parsedData: TEntity = JSON.parse(res?.data?.entityData.text);\r\n const statusValue = arrayOrArray(parsedData.status.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n this.state = parsedData;\r\n this.state.image.file = null;\r\n if (statusValue && this.state.status) this.state.status.value = statusValue;\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n busEntSta: this.state?.status.value,\r\n };\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { TObservation, TObservations } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\n\r\nexport class Observations {\r\n state: TObservations = { newObservation: null, observations: [] };\r\n constructor() {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n });\r\n }\r\n\r\n async init() {\r\n this.state = { newObservation: null, observations: [] };\r\n\r\n const res = await post<{\r\n obData: { text: string };\r\n }>(\r\n makeApiaUrl({\r\n action: 'getObservationsData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.obData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n\r\n const parsedData: {\r\n observations: TObservation[];\r\n newCommentData: { comment: string; isChecked: boolean };\r\n } = JSON.parse(res?.data?.obData.text);\r\n\r\n this.state.observations = arrayOrArray(parsedData.observations);\r\n\r\n const newObservation = {\r\n commentValue: parsedData.newCommentData.comment,\r\n chkAddAlert: parsedData.newCommentData.isChecked,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n };\r\n this.state.newObservation = newObservation;\r\n }\r\n getConfirmParams() {\r\n return {\r\n txtComment: this.state.newObservation?.commentValue,\r\n chkAddAlert: this.state.newObservation?.chkAddAlert === true ? 'on' : '',\r\n chkAddAllAlert:\r\n this.state.newObservation?.chkAddAllAlert === true ? 'on' : '',\r\n chkRemAlert: this.state.newObservation?.chkRemAlert === true ? 'on' : '',\r\n };\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n}\r\n","export type ConfirmChecker = (\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep =\r\n | 'CHECK_LOCK'\r\n | 'CONFIRM'\r\n | 'CHECK_SIGN'\r\n | 'CHECK_WIZARD'\r\n | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowPoolSelection extends FlowModal<{\r\n confirmed: boolean;\r\n group: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n group: string;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport type TFetchConfirmPathResponse = {\r\n onClose?: string;\r\n sysMessages?: {\r\n message?: {\r\n text: string;\r\n };\r\n };\r\n pathSelection?: boolean | null;\r\n groupSelection?: boolean | null;\r\n load?: TApiaLoadForm & {\r\n type: 'form' | 'text' | 'table' | 'function';\r\n canClose: boolean;\r\n text?: {\r\n closeAll: string;\r\n title: string;\r\n addClass: string;\r\n label: string;\r\n content?: string;\r\n };\r\n };\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n};\r\n\r\nexport class ShowPathSelection extends FlowModal<{\r\n confirmed: boolean;\r\n path: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n path: string;\r\n }) => Promise<Status | FlowModal<any>>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { ShowPoolSelection } from './ShowPoolSelection';\r\nimport {\r\n ShowPathSelection,\r\n TFetchConfirmPathResponse,\r\n} from './ShowPathSelection';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution, ExecutionState } from '..';\r\nimport { TCheckWizardResponse } from './types';\r\nimport { parseXMLRequestResponse, TApiaLoadForm } from '@apia/util';\r\nimport axios from 'axios';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmResponse } from '../types';\r\n\r\nfunction buildPoolSelection(status: Status, poolForm: TApiaLoadForm['form']) {\r\n return new ShowPoolSelection(poolForm, async (result) => {\r\n if (result.confirmed) {\r\n const confirmPoolResult = await axios.post<{\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'confirmPool',\r\n isAjax: true,\r\n appletToken: 'null',\r\n }),\r\n result.group,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n confirmPoolResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (\r\n parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose' ||\r\n parsedRes?.onClose === 'confirmOkOnClose'\r\n ) {\r\n if (parsedRes?.load?.text?.content) {\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: parsedRes?.load?.text?.content,\r\n type: 'success',\r\n }),\r\n );\r\n }\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else {\r\n throw Error('Failed to confirm pool');\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nfunction buildPathSelection(status: Status, form: TApiaLoadForm['form']) {\r\n return new ShowPathSelection(form, async (result) => {\r\n if (result.confirmed) {\r\n const pathSelectionResult = await axios.post<TFetchConfirmPathResponse>(\r\n makeApiaUrl({\r\n action: 'confirmPath',\r\n isAjax: true,\r\n asXML: true,\r\n }),\r\n result.path,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n pathSelectionResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes?.groupSelection) {\r\n return buildPoolSelection(status, parsedRes.load!.form!);\r\n } else if (parsedRes?.actions?.action?.toDo === 'functionTimedCall') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n\r\n const selectedPathInServer = true; // fetch(confirmPath, result.path)\r\n if (selectedPathInServer) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nasync function checkSign(status: Status): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n makeApiaUrl({\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(status: Status): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n }[];\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1].text === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(status: Status): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl({\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1]?.text !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...Execution.instance.getEntity().getConfirmParams(),\r\n ...Execution.instance.getProcess().getConfirmParams(),\r\n ...Execution.instance.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmResponse>(\r\n makeApiaUrl({\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: window.appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (confirmResponse?.data?.sysMessages?.message) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n };\r\n }\r\n if (confirmResponse?.data?.onClose === 'confirmOkOnClose') {\r\n Execution.instance.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(\r\n status,\r\n confirmResponse.data.load?.text?.text ?? '',\r\n );\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n const checkConfirmProcess = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n makeApiaUrl({\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'P',\r\n currentTab: 0,\r\n }),\r\n );\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(checkConfirmEntity.data?.form);\r\n }\r\n if (checkConfirmProcess?.data?.form) {\r\n setAjaxFormResponse(checkConfirmProcess.data?.form);\r\n }\r\n if (confirmResponse?.data?.pathSelection) {\r\n return buildPathSelection(status, confirmResponse.data.load!.form!);\r\n }\r\n\r\n if (confirmResponse?.data?.groupSelection === true) {\r\n return buildPoolSelection(status, confirmResponse.data.load!.form!);\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_WIZARD',\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\nasync function checkWizard(status: Status): Promise<Status> {\r\n const checkWizardResponse = await post<TCheckWizardResponse>(\r\n makeApiaUrl({\r\n action: 'checkWizzard',\r\n }),\r\n {\r\n postData: {},\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (!checkWizardResponse?.data?.url && checkWizardResponse?.status === 200) {\r\n Execution.instance.close();\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n } else if (checkWizardResponse?.data?.url) {\r\n window.location.assign(checkWizardResponse.data.url + '&nuevo=true');\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: true,\r\n error: 'Failed to check wizard',\r\n };\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CHECK_WIZARD: checkWizard,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirm(\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n Notifications.instance.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","export const canDocument = () =>\r\n window.IS_TASK_DOCUMENTATION_SERVICE_ENABLED &&\r\n !document.querySelector('.execution__taskMonitor') &&\r\n !window.IS_FIRST_TASK &&\r\n !window.ENTITY_EXECUTION;\r\n","import { getLabel } from '@apia/util';\r\nimport type { TFormsAssistantConfigurations } from './types';\r\nimport { canDocument } from './canDocument';\r\n\r\nexport const getFormsAssistantConfiguration =\r\n (): TFormsAssistantConfigurations => {\r\n const formsAssistantConfigurations: TFormsAssistantConfigurations = {\r\n OBSERVATIONS: {\r\n label: getLabel('sbtEjeObs').text.toUpperCase(),\r\n name: 'OBSERVATIONS',\r\n },\r\n ALLOW_MODIFY_AUTOCOMPLETE: {\r\n label: getLabel('lblAiAllowModifyAutoComplete').text.toUpperCase(),\r\n name: 'ALLOW_MODIFY_AUTOCOMPLETE',\r\n },\r\n ...(canDocument()\r\n ? {\r\n FORCE_DOCUMENT_PROCESS_FLOW: {\r\n label: getLabel(\r\n 'lblAiAvoidDocumentProcessFlow',\r\n ).text.toUpperCase(),\r\n name: 'FORCE_DOCUMENT_PROCESS_FLOW',\r\n },\r\n }\r\n : {}),\r\n };\r\n return formsAssistantConfigurations;\r\n };\r\n","import { makeObservable } from 'mobx';\r\nimport { Execution } from '.';\r\nimport { ChatMessage, IAttachment, TMessageType } from '@apia/components';\r\nimport { ApiaApi, makeApiaUrl } from '@apia/api';\r\nimport type {\r\n TPromptPromiseResponse,\r\n TTrConfirmProps,\r\n} from './assistantUtils/types';\r\nimport { getFormsAssistantConfiguration } from './assistantUtils/getFormsAssistantConfiguration';\r\nimport {\r\n ActionsController,\r\n ApiaFieldWithAttribute,\r\n GridField,\r\n IApiaForm,\r\n} from '../../programming';\r\n\r\nexport type TFieldValue = Record<string, string>[] | string;\r\n\r\nexport class AssistantController {\r\n #enableAssistant = false;\r\n\r\n public get isEnabled() {\r\n return this.#enableAssistant;\r\n }\r\n\r\n constructor() {\r\n makeObservable(this);\r\n }\r\n\r\n init(execution: Execution) {\r\n this.#enableAssistant = !!execution\r\n .getAllForms()\r\n .find((c) => !!c.definition.chkAllowFormsAssistant);\r\n }\r\n\r\n async run(message: ChatMessage) {\r\n const result = await this.generateFormsContent(\r\n 'processFormsAssistant',\r\n message.message as string,\r\n message.attachments,\r\n );\r\n\r\n if (result?.data) {\r\n return await this.resolveResponseResult(result.data);\r\n }\r\n }\r\n\r\n private generateFormsContent(\r\n action: string,\r\n prompt?: string,\r\n files?: IAttachment[],\r\n ) {\r\n const url = makeApiaUrl({\r\n action,\r\n ajaxUrl: 'apia.execution.FormAction.run',\r\n frmParent: window.ApiaFunctions.getAllForms().some((f) => {\r\n f.getFrmParent() === 'E';\r\n })\r\n ? 'E'\r\n : 'P',\r\n });\r\n\r\n return ApiaApi.post<{ json: string }>(url, {\r\n postData: {\r\n ...(prompt ? { prompt } : {}),\r\n files: JSON.stringify(\r\n files?.map((a) => {\r\n return {\r\n base64: a.base64,\r\n name: a.name,\r\n description: a.description ?? '',\r\n } as {\r\n name: string;\r\n base64: string;\r\n description: string;\r\n };\r\n }),\r\n ),\r\n },\r\n postDataTreatement: 'stringify',\r\n });\r\n }\r\n\r\n private resolveResponseResult = async (\r\n data: NonNullable<\r\n NonNullable<Awaited<ReturnType<typeof this.generateFormsContent>>>['data']\r\n >,\r\n ) => {\r\n const form = JSON.parse(data.json) as {\r\n message: string;\r\n type: TMessageType;\r\n filledFormsMap: Record<string, TFieldValue>;\r\n mustClose: boolean;\r\n mustComplete: boolean;\r\n };\r\n if (form.mustClose) {\r\n window.ApiaFunctions.clickActionButton(ActionsController.CLOSE);\r\n } else if (form.mustComplete) {\r\n const isComplete = this.shouldGoToNextStep(Execution.instance.steps);\r\n if (isComplete) {\r\n window.ApiaFunctions.clickActionButton(ActionsController.CONFIRM);\r\n } else {\r\n window.ApiaFunctions.clickActionButton(ActionsController.NEXT);\r\n }\r\n } else {\r\n const filledFormsMap = form?.filledFormsMap;\r\n const formsMap: Record<string, Record<string, TFieldValue>> = {};\r\n const windowForms = Execution.instance.getAllForms();\r\n windowForms.map((f) => {\r\n f.allFields.map((fi) => {\r\n const actualFi = fi;\r\n const actualName =\r\n actualFi?.getProperty('name') ||\r\n actualFi.getProperty('ariaLabel') ||\r\n actualFi.getProperty('title');\r\n if (actualName) {\r\n const value = filledFormsMap[actualName];\r\n if (value) {\r\n if (!formsMap[f.definition.formName]) {\r\n formsMap[f.definition.formName] = {};\r\n }\r\n formsMap[f.definition.formName][actualName] = value;\r\n }\r\n }\r\n });\r\n });\r\n\r\n let fillProps: {\r\n confirmProps: TTrConfirmProps[];\r\n confirmedValues: string[];\r\n } = { confirmedValues: [], confirmProps: [] };\r\n // let needFinalMessage = true;\r\n fillProps = await this.fillForms(formsMap);\r\n // if (fillProps.confirmProps.length !== 0) {\r\n // resolveConfirm(fillProps, { ...form, filledFormsMap: formsMap });\r\n // needFinalMessage = false;\r\n // }\r\n // if (needFinalMessage)\r\n return this.resolveFinalMessage(\r\n { ...form, filledFormsMap: formsMap },\r\n fillProps.confirmedValues,\r\n );\r\n }\r\n };\r\n\r\n private shouldGoToNextStep(\r\n steps: {\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[],\r\n ): boolean {\r\n const currentStep = steps.find((step) => step.status === 'current');\r\n\r\n if (!currentStep) {\r\n return false;\r\n }\r\n\r\n return steps.some(\r\n (step) =>\r\n step.status === 'pending' && step.stepNumber > currentStep.stepNumber,\r\n );\r\n }\r\n\r\n private resolveFinalMessage = (\r\n form: {\r\n message: string;\r\n filledFormsMap: Record<string, Record<string, TFieldValue>>;\r\n type: TMessageType;\r\n },\r\n confirmedValues: string[],\r\n ) => {\r\n const formsAssistantConfigurations = getFormsAssistantConfiguration();\r\n for (const [key, value] of Object.entries(form.filledFormsMap ?? {})) {\r\n if (\r\n key.toLocaleLowerCase() ===\r\n formsAssistantConfigurations.OBSERVATIONS.name.toLowerCase() &&\r\n String(value) ===\r\n formsAssistantConfigurations.OBSERVATIONS.name.toLowerCase()\r\n )\r\n continue;\r\n if (value) {\r\n break;\r\n }\r\n }\r\n const token = '-_-_-TOK-_-_-';\r\n if (\r\n !form.message.includes(token) ||\r\n (form.message.includes(token) && confirmedValues.length !== 0)\r\n ) {\r\n const message: TPromptPromiseResponse = {\r\n message:\r\n confirmedValues.length !== 0\r\n ? form.message.replace(\r\n token,\r\n this.generateConfirmedValues(confirmedValues),\r\n )\r\n : form.message,\r\n messageType: form.type,\r\n };\r\n return message;\r\n }\r\n };\r\n\r\n private generateConfirmedValues = (confirmedValues: string[]) => {\r\n return confirmedValues.map((x) => `[${x}]`).join(' ');\r\n };\r\n\r\n private async fillForms(\r\n filledFormsMap: Record<string, Record<string, TFieldValue>>,\r\n ): Promise<{ confirmProps: TTrConfirmProps[]; confirmedValues: string[] }> {\r\n const confirmProps: TTrConfirmProps[] = [];\r\n const confirmedValues: string[] = [];\r\n\r\n for await (const formName of Object.keys(filledFormsMap)) {\r\n this.fillForm(formName, filledFormsMap, confirmedValues);\r\n }\r\n\r\n return { confirmProps, confirmedValues };\r\n }\r\n\r\n private async fillForm(\r\n formName: string,\r\n filledFormsMap: Record<string, Record<string, TFieldValue>>,\r\n confirmedValues: string[],\r\n ) {\r\n const form = window.ApiaFunctions.getAllForms().find(\r\n (f) => f.getFormName() === formName,\r\n );\r\n const fields: Record<string, TFieldValue> = filledFormsMap[formName];\r\n if (form) {\r\n const formFieldMap: Record<\r\n string,\r\n {\r\n form: IApiaForm;\r\n field: ApiaFieldWithAttribute | GridField;\r\n rowIdx?: number;\r\n }\r\n > = {};\r\n const fieldsMap: Record<string, string> = Object.keys(fields).reduce(\r\n (fieldsMap: Record<string, string>, fieldName) => {\r\n const result = fieldName.split('-_-', 2);\r\n const field = form.getAllFields().find((fld) => {\r\n return (\r\n fld.getProperty('name') ===\r\n (result.length != 2 ? fieldName : result[1])\r\n );\r\n });\r\n\r\n if (field && field instanceof ApiaFieldWithAttribute) {\r\n fieldsMap[field.attribute.name] = fieldName;\r\n formFieldMap[field.attribute.name] = {\r\n form,\r\n field,\r\n ...(result.length > 1\r\n ? { rowIdx: Number.parseInt(result[0]) }\r\n : {}),\r\n };\r\n } else if (field && field instanceof GridField) {\r\n fieldsMap[field.getProperty('name') ?? 'grid'] = fieldName;\r\n formFieldMap[field.getProperty('name') ?? 'grid'] = {\r\n form,\r\n field,\r\n ...(result.length > 1\r\n ? { rowIdx: Number.parseInt(result[0]) }\r\n : {}),\r\n };\r\n }\r\n return fieldsMap;\r\n },\r\n {},\r\n );\r\n for await (const fieldLabel of Object.keys(formFieldMap)) {\r\n this.fillFields(fieldLabel, fieldsMap, form, fields, confirmedValues);\r\n }\r\n } else {\r\n console.warn(`Form with name ${formName} not found.`);\r\n }\r\n }\r\n\r\n private async fillFields(\r\n fieldLabel: string,\r\n fieldsMap: Record<string, string>,\r\n form: IApiaForm,\r\n fields: Record<string, TFieldValue>,\r\n confirmedValues: string[],\r\n ) {\r\n const fieldName = fieldsMap[fieldLabel];\r\n const value = fields[fieldName];\r\n const result = fieldName.split('-_-', 2);\r\n const field = form.getField(\r\n result.length != 2 ? fieldName : result[1],\r\n result.length != 2 ? undefined : Number.parseInt(result[0]),\r\n );\r\n if (typeof value === 'string') {\r\n if (field && field instanceof ApiaFieldWithAttribute) {\r\n try {\r\n const [_, __, actualValue, ___] = this.resolveFieldValue(\r\n field,\r\n value,\r\n );\r\n field.setValue((actualValue !== null ? actualValue : value) as any);\r\n confirmedValues.push(fieldLabel);\r\n } catch (e) {\r\n e;\r\n return;\r\n }\r\n } else {\r\n console.warn(`Field with name ${fieldName} not found.`);\r\n }\r\n } else {\r\n if (field) {\r\n const actualField = field as GridField;\r\n await actualField.deleteAllRows();\r\n this.fillGridField(actualField, value);\r\n }\r\n }\r\n }\r\n\r\n private async fillGridField(\r\n field: GridField,\r\n value: Record<string, string>[],\r\n ) {\r\n for await (const gridRowValue of value) {\r\n const rowAdded = await field.addRow();\r\n\r\n if (rowAdded) {\r\n rowAdded.forEach((rowField) => {\r\n const fieldName = rowField.getProperty('name') as string;\r\n if (gridRowValue[fieldName]) {\r\n if (rowField instanceof ApiaFieldWithAttribute) {\r\n rowField.setValue(gridRowValue[fieldName]);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private resolveFieldValue = (\r\n field: ApiaFieldWithAttribute,\r\n value: TFieldValue,\r\n ) => {\r\n const actualValue: boolean | string | number | TFieldValue | null = value;\r\n const prevLabel: boolean | string | number | null | undefined = null;\r\n const fieldValue = field.getValue();\r\n\r\n const currentValue = fieldValue;\r\n let castedCurrentValue: string | number | boolean | null = null;\r\n if (\r\n typeof currentValue !== 'number' &&\r\n typeof currentValue !== 'boolean' &&\r\n typeof currentValue !== 'string'\r\n ) {\r\n castedCurrentValue = String(currentValue);\r\n } else castedCurrentValue = currentValue;\r\n return [fieldValue, castedCurrentValue, actualValue, prevLabel];\r\n };\r\n}\r\n","import { InitialData } from '../InitialData';\r\nimport { labels } from '../../util/labels/labels';\r\nimport { Form } from './FormsExecution/Form';\r\nimport { TFrmParent } from '../InitialData/types/TApiaForm';\r\nimport { FieldsMapping, defaultFieldsMap } from './FormsExecution/fieldsMap';\r\nimport { Notifications } from '../Notifications';\r\nimport { MessageNotification } from '../Notifications/MessageNotification';\r\nimport { Process } from './Process';\r\nimport { makeAutoObservable } from 'mobx';\r\nimport { Field } from './FormsExecution/Field';\r\nimport { makeApiaUrl, post, get, parseXml } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport { arrayOrArray, noNaN, postNavigation } from '@apia/util';\r\nimport { Observations } from './Observations';\r\nimport { confirm } from './FlowModals/confirmFlow';\r\nimport { ConfirmStep, FlowModal, Status } from './FlowModals/FlowModal';\r\nimport { Captcha } from './FormsExecution/fields';\r\nimport { getCurrentTabsString } from '../../util/app/getCurrentTabsString';\r\nimport { TFetchTaskActionResponse } from './types';\r\nimport { ScreenLocker } from '@apia/components';\r\nimport { AssistantController } from './AssistantController';\r\ninterface TExec_errors {\r\n onClose: string;\r\n sysMessages: {\r\n message: {\r\n text: string;\r\n }[];\r\n };\r\n}\r\n\r\nexport enum ExecutionState {\r\n RUNNING,\r\n LOADING,\r\n FINISHED,\r\n RENDERING,\r\n}\r\nexport type TExecutionConfig = {\r\n canConfirm: boolean;\r\n canGoBack: boolean;\r\n canGoForward: boolean;\r\n canSave: boolean;\r\n canFree: boolean;\r\n canDelegate: boolean;\r\n canClose: boolean;\r\n canShare: boolean;\r\n isEntity?: boolean;\r\n};\r\n\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/&apos;/g, \"'\")\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&lt;/g, '<')\r\n .replace(/&amp;/g, '&');\r\n }\r\n return '';\r\n};\r\n\r\nexport class Execution {\r\n static #instance: Execution | null = null;\r\n public static get instance() {\r\n if (!this.#instance) this.#instance = new Execution();\r\n\r\n return this.#instance!;\r\n }\r\n public fieldsMapping: FieldsMapping;\r\n private entity = new Entity();\r\n private process = new Process();\r\n private observations = new Observations();\r\n public assistantController = new AssistantController();\r\n public executionConfig: TExecutionConfig | null = null;\r\n private _steps: {\r\n title: string;\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[] = [];\r\n private _currentStep: number = 1;\r\n private _stepCount: number = 1;\r\n private constructor(fieldsMapping?: FieldsMapping) {\r\n this.fieldsMapping = { ...defaultFieldsMap, ...fieldsMapping };\r\n\r\n makeAutoObservable(this, { fieldsMapping: false });\r\n }\r\n\r\n protected formsById = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n protected forms = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n\r\n state: {\r\n formsReady: ReturnType<Execution['getAllForms']>;\r\n executionState: ExecutionState;\r\n locked: boolean;\r\n } = {\r\n formsReady: [],\r\n executionState: ExecutionState.LOADING,\r\n locked: true,\r\n };\r\n\r\n locker = new ScreenLocker();\r\n\r\n getAllForms() {\r\n return [...this.forms.E.values(), ...this.forms.P.values()];\r\n }\r\n getFormsByType(type: TFrmParent) {\r\n return [...this.forms[type].values()];\r\n }\r\n getFormByName(formName: string, frmParent?: TFrmParent) {\r\n if (frmParent) {\r\n return this.forms[frmParent].get(formName);\r\n } else {\r\n return this.forms.E.get(formName) || this.forms.P.get(formName);\r\n }\r\n }\r\n getFormById(formId: string | number, frmParent?: TFrmParent) {\r\n if (frmParent) return this.formsById[frmParent].get(String(formId));\r\n return (\r\n this.formsById.E.get(String(formId)) ||\r\n this.formsById.P.get(String(formId))\r\n );\r\n }\r\n get currentStep() {\r\n return this._currentStep;\r\n }\r\n get steps() {\r\n return this._steps;\r\n }\r\n public getEntity() {\r\n return this.entity;\r\n }\r\n public getProcess() {\r\n return this.process;\r\n }\r\n public getObservations() {\r\n return this.observations;\r\n }\r\n public getCurrentTask() {\r\n return new Task({ task: { name: 'TODO' } });\r\n }\r\n\r\n private mustRenderForms: string[] = [];\r\n\r\n public async run(executionConfig: TExecutionConfig) {\r\n await this.entity.init();\r\n if (!executionConfig?.isEntity)\r\n await Promise.all([this.process.init(), this.observations.init()]);\r\n\r\n this._stepCount = noNaN(window.STEP_QTY);\r\n this._currentStep = noNaN(window.CURRENT_STEP);\r\n this.executionConfig = executionConfig;\r\n\r\n const errXML = unescapeMarkup(window.EXEC_ERRORS);\r\n\r\n if (errXML) {\r\n const obj: TExec_errors = parseXml(errXML);\r\n arrayOrArray(obj.sysMessages?.message).forEach((c) =>\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'warning',\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n for (let i = 1; i < Number(window.STEP_QTY) + 1; i++) {\r\n if (i < this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'completed',\r\n });\r\n }\r\n if (i > this._currentStep && i <= this._stepCount) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'pending',\r\n });\r\n }\r\n if (i === this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'current',\r\n });\r\n }\r\n }\r\n const res = await InitialData.instance.getFormsDefinition();\r\n\r\n try {\r\n for await (const formDefinition of res) {\r\n this.mustRenderForms.push(\r\n formDefinition.frmParent + '_' + formDefinition.formName,\r\n );\r\n }\r\n for await (const formDefinition of res) {\r\n const newForm = new Form(formDefinition);\r\n await newForm.init();\r\n\r\n if (formDefinition.frmParent === 'E') {\r\n this.forms.E.set(formDefinition.formName, newForm);\r\n this.formsById.E.set(String(formDefinition.id), newForm);\r\n } else {\r\n this.forms.P.set(formDefinition.formName, newForm);\r\n this.formsById.P.set(String(formDefinition.id), newForm);\r\n }\r\n }\r\n\r\n for await (const formDefinition of res) {\r\n this.formsById[formDefinition.frmParent]\r\n .get(String(formDefinition.id))\r\n ?.runEvent('onLoad');\r\n }\r\n\r\n this.state.formsReady = this.getAllForms();\r\n this.state.executionState = ExecutionState.RENDERING;\r\n this.state.locked = false;\r\n\r\n this.assistantController.init(this);\r\n } catch (e) {\r\n console.error(e);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorLoadForms(),\r\n }),\r\n );\r\n }\r\n }\r\n protected getHiddenForms() {\r\n const hiddenForms = this.getAllForms().filter((form) => {\r\n return form.properties.frmHidden;\r\n });\r\n return hiddenForms;\r\n }\r\n\r\n public markFormAsRendered(frmParent: string, frmName: string) {\r\n this.mustRenderForms = this.mustRenderForms.filter(\r\n (c) => c !== frmParent + '_' + frmName,\r\n );\r\n if (this.mustRenderForms.length - this.getHiddenForms().length === 0) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n }\r\n\r\n public async back() {\r\n const canGoBack = this.executionConfig?.canGoBack;\r\n if (canGoBack) {\r\n try {\r\n const nextUrl = makeApiaUrl({\r\n action: 'gotoPrevStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async delegate() {\r\n console.warn('Delegate not implemented yet');\r\n }\r\n public async shareSocial() {\r\n console.warn('shareSocial not implemented yet');\r\n }\r\n\r\n public async close() {\r\n const tabId = ((window.top ?? window).tabsController as any)?.handler\r\n .activeTab.id;\r\n const force = true;\r\n ((window.top ?? window).tabsController as any)?.handler.closeTab(\r\n tabId,\r\n force,\r\n );\r\n }\r\n\r\n public async desktop() {}\r\n\r\n public async confirm(\r\n status?: Status,\r\n step?: ConfirmStep,\r\n ): Promise<boolean | FlowModal<any> | Field> {\r\n const isValid = await this.validate();\r\n const canConfirm = this.executionConfig?.canConfirm && isValid === true;\r\n\r\n if (canConfirm) {\r\n try {\r\n const result = await confirm(\r\n status || {\r\n step: step ?? 'CHECK_LOCK',\r\n },\r\n );\r\n\r\n if (result instanceof FlowModal) {\r\n return result;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n } else {\r\n return isValid;\r\n }\r\n }\r\n\r\n public async free() {\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const data = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'release',\r\n currentTab: getCurrentTabsString(),\r\n }),\r\n {\r\n postData: serverParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n return data;\r\n }\r\n\r\n public async print() {\r\n window.print();\r\n }\r\n\r\n public getStepTitle(step: number) {\r\n if (this._steps) return this._steps[step];\r\n }\r\n\r\n public async next() {\r\n const isValid = await this.validate();\r\n if (isValid !== true) return isValid;\r\n const canGoNext = this.executionConfig?.canGoForward && isValid === true;\r\n\r\n if (canGoNext) {\r\n try {\r\n const checkLocksRes = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksRes?.data?.actions?.action?.param[1]?.text !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n throw new Error('Failed to check WebDAV document locks.');\r\n }\r\n\r\n // Check signable forms\r\n const checkSignableFormsRes = await post<{ hasForms: boolean }>(\r\n makeApiaUrl({\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: window.appletToken,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (checkSignableFormsRes?.status !== 200) {\r\n throw new Error('No signable forms available.');\r\n }\r\n\r\n const nextUrl = makeApiaUrl({\r\n action: 'gotoNextStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n return true;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n Notifications.instance.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async save() {\r\n const response = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n }),\r\n );\r\n const canClose = response?.data?.load?.canClose;\r\n if (canClose) {\r\n return response;\r\n }\r\n }\r\n\r\n public async viewDocs() {\r\n const url = `${\r\n window.CONTEXT\r\n }/react/generic/docExecutionModal.jsp?isProcessMonitor=${\r\n window.IN_MONITOR_PROCESS ?? 'false'\r\n }&isTaskMonitor=${window.IN_MONITOR_TASK ?? 'false'}&isTask=true${\r\n window.TAB_ID_REQUEST\r\n }&react=true`;\r\n\r\n const result = await get(url);\r\n\r\n if (result && result.data !== null) {\r\n const { data } = result;\r\n return data;\r\n }\r\n }\r\n\r\n public setStepTitle(stepNumber: number, stepTitle: string) {\r\n if (this._steps && this._steps[stepNumber - 1])\r\n this._steps[stepNumber - 1].title = stepTitle;\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const [, c] of this.forms.E) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n for await (const [, c] of this.forms.P) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n\r\n return firstInvalid ?? true;\r\n }\r\n}\r\n","import { ApiaApi, makeApiaUrl } from '@apia/api';\r\n\r\nimport {\r\n addBoundary,\r\n arrayOrArray,\r\n downloadUrl,\r\n formatMessage,\r\n parseAsSize,\r\n TApiaFunction,\r\n TApiaLoad,\r\n toBoolean,\r\n} from '@apia/util';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TAjaxUploadFileStatus,\r\n TAjaxUploadStart,\r\n TConfirmDropModal,\r\n TDocType,\r\n TDocumentMetadata,\r\n TFileUploaded,\r\n TProcessDroppedFiles,\r\n TSaveDroppedFilesConf,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploaderLoadCurrentFunction,\r\n TUploaderLoadCurrentFunctionMessages,\r\n UploaderState,\r\n TDocumentInformation,\r\n TRequireOnlyOne,\r\n} from './types';\r\nimport { UploaderModalController } from './UploaderModalController';\r\nimport { Notifications } from '../../Notifications';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { NotificationDefinition } from '../../Notifications/Notification';\r\nimport QueryString from 'qs';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Execution } from '..';\r\n\r\n/**\r\n * El comportamiento de esta función se explica por su\r\n * nombre.\r\n */\r\nexport function returnExactlyTheSame(\r\n defaultParameters: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n return defaultParameters;\r\n}\r\n\r\nexport const parseFileDefinition = (\r\n fileDefinition: TFileUploaded | TUploaderFileInfo,\r\n isSignRequired: boolean,\r\n): TUploaderFileInfo => {\r\n const { lock, isLocked, lockedBy, userLocking, ...file } =\r\n fileDefinition as TFileUploaded;\r\n\r\n return {\r\n ...file,\r\n isLocked: isLocked === 'true' || isLocked === true,\r\n isLockedByMe: (lockedBy || userLocking) === window.CURRENT_USER_LOGIN,\r\n isMarkedToSign: file.markedToSign || toBoolean(file.sign) || isSignRequired,\r\n isVirtual: file.virtualDoc ?? false,\r\n lockingUser: lockedBy || userLocking,\r\n };\r\n};\r\n\r\n(window as any).fileApi = {};\r\n\r\nexport type TOnUploadProgress = (progress: number) => void;\r\nexport class UploaderApi {\r\n maxFiles = Infinity;\r\n modalController: UploaderModalController | null = null;\r\n allowTranslations = false;\r\n langs: Record<number, string> | undefined;\r\n currentConfiguration: TUploaderLoadCurrentFunctionMessages | undefined;\r\n docTypePermittedObjId;\r\n state: UploaderState = {\r\n progress: 0,\r\n allowedTypes: [],\r\n selectedDocTypeId: '1',\r\n versioningFile: null,\r\n inProgressFiles: [],\r\n files: {},\r\n selectedFiles: [],\r\n hiddenFiles: [],\r\n translatedFiles: new Map(),\r\n hasAllDocTypes: false,\r\n };\r\n get filesArray() {\r\n return Object.values(this.state.files);\r\n }\r\n\r\n constructor(\r\n public id: string,\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n this.allowTranslations = type === 'E' && !!window.DOC_LANGS;\r\n this.langs = window.DOC_LANGS;\r\n try {\r\n this.docTypePermittedObjId =\r\n type === 'E' ? window.docTypePerEntId : window.docTypePerProId;\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n\r\n //TODO sacar\r\n (window as any).fileApi[id] = this as any as string;\r\n // window.toJs = (a) => toJS(a) as any as string;\r\n }\r\n async onInit() {\r\n await this.ajaxUploadStart();\r\n await this.reloadMetadata({\r\n docTypeId: this.state.selectedDocTypeId,\r\n });\r\n await this.loadCurrentDocuments();\r\n }\r\n\r\n async onStartUpload(files?: File[]) {\r\n if (this.modalConfig.oneClickUpload) {\r\n await this.saveDroppedFiles(files ?? []);\r\n this.confirmDropModal();\r\n } else {\r\n if (files) this.state.inProgressFiles = files;\r\n this.onInit();\r\n this.modalController = new UploaderModalController(\r\n this,\r\n this.modalConfig,\r\n );\r\n this.modalController.openModal();\r\n }\r\n }\r\n\r\n async onTranslateUpload(conf: {\r\n langId: number;\r\n translatingFile: TUploaderFileInfo;\r\n }) {\r\n this.onInit();\r\n this.modalController = new UploaderModalController(\r\n this,\r\n this.modalConfig,\r\n conf,\r\n );\r\n this.modalController.openModal();\r\n }\r\n\r\n async onVersionUpload(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n this.modalController = new UploaderModalController(this, this.modalConfig, {\r\n versionFile: file,\r\n });\r\n this.version(file, conf);\r\n }\r\n\r\n async autoLock(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n public notify(notification: NotificationDefinition) {\r\n Notifications.instance.add(new MessageNotification(notification));\r\n }\r\n\r\n protected getAjaxUrl(): string {\r\n return window.URL_REQUEST_AJAX;\r\n }\r\n\r\n public getDocTypes() {\r\n return this.state.allowedTypes;\r\n }\r\n\r\n public getCurrentDocTypeId() {\r\n return this.state.selectedDocTypeId;\r\n }\r\n\r\n public getCurrentDocType() {\r\n return this.state.allowedTypes.find(\r\n (c) => c.id === this.state.selectedDocTypeId,\r\n );\r\n }\r\n\r\n public getInProgressFiles() {\r\n return this.state.inProgressFiles;\r\n }\r\n\r\n public getHiddenFiles() {\r\n return this.state.hiddenFiles;\r\n }\r\n\r\n public getExistingFiles() {\r\n return this.state.files;\r\n }\r\n\r\n public getProgress() {\r\n return this.state.progress;\r\n }\r\n\r\n public getHasAllDocTypes() {\r\n return this.state.hasAllDocTypes;\r\n }\r\n\r\n async getDocumentInfo(\r\n {\r\n docId: apiId,\r\n downloadDocId: docId,\r\n }: TRequireOnlyOne<{ docId: string; downloadDocId: string }>,\r\n newElem?: boolean,\r\n ) {\r\n const id = apiId ? this.getDocument(apiId)!.docId : docId;\r\n const result = await ApiaApi.post<TDocumentInformation>(\r\n makeApiaUrl(\r\n this.getDocumentInfoParameters({\r\n action: 'getDocumentInfo',\r\n isAjax: true,\r\n docId: id,\r\n newElem,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n return result.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * This method searches for the provided id in several places:\r\n *\r\n * If it's found in the current files, returns it.\r\n * If not, it searches the provided docId in the translations map of each uploaded file.\r\n */\r\n getDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n return this.state.files[docId];\r\n } else {\r\n for (const map of this.state.translatedFiles.values()) {\r\n for (const file of map.values()) {\r\n if (file.docId === docId) {\r\n return file;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected updateDocument(docId: string, newValue: TUploaderFileInfo) {\r\n if (this.state.files[docId]) {\r\n this.state.files[docId] = { ...this.getDocument(docId), ...newValue };\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.set(langKey, { ...doc, ...newValue });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected deleteDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n delete this.state.files[docId];\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.delete(langKey);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.state.inProgressFiles = this.state.inProgressFiles.filter(\r\n (c) => c.name !== name,\r\n );\r\n }\r\n\r\n public clearFiles() {\r\n this.state.inProgressFiles = [];\r\n this.state.hiddenFiles = [];\r\n }\r\n\r\n public clearState() {\r\n this.state.selectedDocTypeId = '1';\r\n this.state.inProgressFiles = [];\r\n this.state.versioningFile = null;\r\n }\r\n\r\n async checkLockDocument(id: string, shouldNotifyUnlocked = true) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if (Number(file.docId) < 0) return true;\r\n\r\n const result = await ApiaApi.post<{\r\n success: 'ok' | 'unlocked';\r\n usr: string;\r\n }>(\r\n makeApiaUrl(\r\n this.getCheckLockDocumentParameters({\r\n action: 'checkLockDocument',\r\n docId: file.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n const isLocked = result?.data?.success === 'ok';\r\n if (\r\n !isLocked &&\r\n result?.data?.usr &&\r\n result.data.usr !== window.CURRENT_USER_LOGIN\r\n ) {\r\n this.notify({\r\n message: `${window.MSG_DOC_LOCKED_BY_USR.split('.')[0]}: ${\r\n result.data.usr\r\n }.`,\r\n type: 'warning',\r\n });\r\n return result.data.usr;\r\n }\r\n if (!isLocked && shouldNotifyUnlocked && !(await this.autoLock()))\r\n this.notify({\r\n message: window.MSG_DOC_MUST_BE_LOCKED,\r\n type: 'warning',\r\n });\r\n\r\n return isLocked;\r\n }\r\n\r\n public setCurrentDocTypeId(docTypeId: string) {\r\n this.state.selectedDocTypeId = docTypeId;\r\n }\r\n\r\n public async ajaxUploadStart(newFiles: File[] = []) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n const versioningFile = this.state.versioningFile;\r\n const res = await ApiaApi.post<TAjaxUploadStart>(\r\n makeApiaUrl(\r\n this.getAjaxUploadStartParameters({\r\n action: 'ajaxUploadStart',\r\n isAjax: true,\r\n docId: versioningFile?.docId,\r\n prefix: this.type,\r\n docTypeId:\r\n newFiles.length === 1 ? versioningFile?.docTypeId || '1' : '1',\r\n newDoc: !versioningFile,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjType: this.type,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n if (res?.data) {\r\n // this.#lastUploadKnownConf = result.data;\r\n // this.resetModal();\r\n\r\n const docTypes = arrayOrArray(res?.data?.function?.docTypes?.docType);\r\n const hasGeneric = !!docTypes.find((c) => String(c.id) === '1');\r\n\r\n // if (newFiles.length > 0) {\r\n // await this.saveDroppedFiles(newFiles, (progress) => {\r\n // console.log(progress);\r\n // });\r\n // }\r\n\r\n this.state.allowedTypes = docTypes;\r\n this.state.selectedDocTypeId = hasGeneric ? '1' : docTypes[0].id;\r\n\r\n if (newFiles.length > 0) {\r\n await this.saveDroppedFiles(newFiles);\r\n }\r\n return res?.data?.function.name === 'fncDocumentLoadInformation'\r\n ? true\r\n : false;\r\n } else {\r\n throw new Error('No files data');\r\n }\r\n }\r\n\r\n public async reloadMetadata(\r\n props?: Partial<{ docId: string; docTypeId: number | string }>,\r\n additionalProps?: Record<string, unknown>,\r\n ) {\r\n if (!this.modalController) return;\r\n const res = await ApiaApi.post<{\r\n metadata: TDocumentMetadata | TDocumentMetadata[];\r\n }>(\r\n makeApiaUrl(\r\n this.getReloadMetadataParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'reloadMetadata',\r\n isAjax: true,\r\n docId: props?.docId,\r\n docTypeId: props?.docTypeId,\r\n metadata: this.getConfirmDropModalMetadataString({\r\n metadata: this.modalController?.allMetadata,\r\n }),\r\n prefix: this.type,\r\n ...additionalProps,\r\n }),\r\n ),\r\n );\r\n\r\n if (res?.data && props?.docTypeId) {\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find(\r\n (current) => current.id === props.docTypeId,\r\n )?.free ?? false;\r\n\r\n this.modalController!.state.metadata.metadataArray = arrayOrArray(\r\n res.data.metadata,\r\n );\r\n this.modalController!.state.metadata.isFreeMetadata = isFreeMetadata;\r\n }\r\n }\r\n\r\n public async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const {\r\n // langId,\r\n strictMode: isConfStrictMode = false,\r\n // translatingFile,\r\n } = conf ?? {};\r\n const isStrictMode = isConfStrictMode || !!this.state.versioningFile;\r\n // || !!validationsStore.fromDirectoryFile;\r\n\r\n const docType = this.getCurrentDocTypeId();\r\n\r\n if (!isStrictMode && !docType) {\r\n this.notify({\r\n message: `${window.LBL_DROP_FILE_DELETED}: ${unprocessedFiles\r\n .map((current) => current.name)\r\n .join(', ')}.`,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n const allowedFiles = this.filterAlreadyUploadedFiles(\r\n this.filterByFilesAmountLimit(\r\n this.filterAcceptedFiles(\r\n this.filterExistingFiles(\r\n this.filterVersioningFiles(unprocessedFiles, conf),\r\n conf,\r\n ),\r\n true,\r\n docType as string,\r\n ),\r\n ),\r\n conf,\r\n );\r\n\r\n const formData = new FormData();\r\n allowedFiles.forEach((file) =>\r\n formData.append('fileRepository', file, file.name),\r\n );\r\n\r\n await ApiaApi.post(\r\n makeApiaUrl(\r\n this.getSaveDroppedFilesParameters({\r\n action: 'saveDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n elemType: this.type,\r\n elemId: `prmDocumentContainter${this.type}`,\r\n frmOut: !this.modalController,\r\n docTypeId: this.state.selectedDocTypeId,\r\n ...conf,\r\n }),\r\n ),\r\n {\r\n postData: formData,\r\n axiosConfig: {\r\n onUploadProgress: (ev) =>\r\n (this.state.progress =\r\n (ev.loaded * 100) / ((ev.total ?? ev.loaded) * 2)),\r\n },\r\n },\r\n );\r\n const ajaxUploadFileStatusParameters =\r\n this.getAjaxUploadFileStatusParameters({\r\n action: 'ajaxUploadFileStatus',\r\n ajaxUrl: this.getAjaxUrl(),\r\n delayForDrop: true,\r\n isAjax: true,\r\n prefix: this.type,\r\n });\r\n\r\n let tries = 0;\r\n const checkUploadResult = async () => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n tries += 1;\r\n if (tries === 10) {\r\n this.notify({\r\n message:\r\n 'Error while checking for uploadFileStatus, too many tries',\r\n type: 'error',\r\n });\r\n resolve(false);\r\n return;\r\n }\r\n const response = await ApiaApi.post<TAjaxUploadFileStatus>(\r\n makeApiaUrl(ajaxUploadFileStatusParameters),\r\n );\r\n if (response && response.data) {\r\n const hasMessages =\r\n arrayOrArray<any>(\r\n response.data?.sysMessages?.message ??\r\n response.data?.sysExceptions?.exception ??\r\n response.data?.exceptions?.exception ??\r\n response.data.function.messages?.message,\r\n ).length > 0 || !!response.data.function.dropLastMessage;\r\n\r\n const uploadMessage = arrayOrArray(\r\n response.data.function.messages?.message,\r\n ).find((current) => current.name === 'message');\r\n if (uploadMessage)\r\n this.notify({ message: uploadMessage.label, type: 'warning' });\r\n\r\n const method = response.data?.function.name;\r\n this.state.progress = 44;\r\n if (hasMessages) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (method === 'fncProceedDocumentProcessing') {\r\n resolve(true);\r\n return;\r\n }\r\n if (tries === 10) {\r\n resolve(method === 'fncProceedDocumentProcessing');\r\n }\r\n setTimeout(() => {\r\n checkUploadResult()\r\n .then(resolve)\r\n .catch(() => resolve(false));\r\n }, 100);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n const hasUploadedCorrectly = await checkUploadResult();\r\n\r\n this.state.progress = 66;\r\n\r\n if (hasUploadedCorrectly) {\r\n const shown = (this.state.inProgressFiles ?? []).map((file) => file.name);\r\n const postData = QueryString.stringify(\r\n this.getProcessDroppedFilesPostdata({\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId?.toString(),\r\n docTypePermittedObjType: this.type,\r\n dropped: allowedFiles.map((file) => file.name).concat(shown),\r\n shown,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n const secondResult = await ApiaApi.post<TProcessDroppedFiles>(\r\n makeApiaUrl(\r\n this.getProcessDroppedFilesParameters({\r\n action: 'processDroppedFiles',\r\n elemType: this.type,\r\n docId: this.state.versioningFile?.docId,\r\n frmOut: !this.modalController,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n this.state.progress = 83;\r\n\r\n if (secondResult?.data?.function?.principal?.docInfo) {\r\n const acceptedByServerFiles = arrayOrArray(\r\n secondResult.data.function?.principal?.docInfo,\r\n );\r\n\r\n this.state.inProgressFiles = [\r\n ...(this.state.inProgressFiles ?? []),\r\n ...acceptedByServerFiles\r\n .map((current) =>\r\n [...this.state.inProgressFiles, ...unprocessedFiles].find(\r\n (search) => search.name === current.docInfoName,\r\n ),\r\n )\r\n .filter((current): current is File => !!current),\r\n ];\r\n this.state.progress = 100;\r\n\r\n if (this.modalController)\r\n this.modalController.state.fromDirectoryFile = null;\r\n\r\n this.notify({\r\n type: 'success',\r\n message: window.FILE_UPLOADED_SUCCESSFULLY,\r\n });\r\n\r\n // if (isOneClickUploadEnabled(this.configurationObject.oneClickUpload)) {\r\n // if (langId && translatingFile)\r\n // void this.confirmDropModal({ langId, translatingFile });\r\n // else void this.confirmDropModal();\r\n // } else if (!this.isModalOpen)\r\n // this.openModal({\r\n // langId,\r\n // translatingFile,\r\n // shouldReset: false,\r\n // });\r\n }\r\n }\r\n this.state.progress = 100;\r\n }\r\n\r\n async checkWebDavLock(docId: string) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n let tries = 10;\r\n const checkLockAction = async () => {\r\n const isLocked = await ApiaApi.post<{ locked: boolean }>(\r\n makeApiaUrl(\r\n this.getCheckWebDavLockParameters({\r\n action: 'isWebDavDocumentLocked',\r\n docId,\r\n ajaxUrl: window.URL_REQUEST_AJAX,\r\n }),\r\n ),\r\n );\r\n if (\r\n isLocked?.data?.locked === true ||\r\n isLocked?.data?.locked === undefined\r\n ) {\r\n if (--tries > 0) {\r\n Execution.instance.state.locked = true;\r\n setTimeout(() => void checkLockAction(), 1000);\r\n } else {\r\n Execution.instance.state.locked = false;\r\n this.notify({ message: window.MSG_FAIL_SYNC_DOCUMENT });\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(true);\r\n Execution.instance.state.locked = false;\r\n }\r\n };\r\n void checkLockAction();\r\n });\r\n }\r\n\r\n async checkSignature(file: TUploaderFileInfo) {\r\n let res = null;\r\n if (Number(file.docId) >= 0)\r\n res = await ApiaApi.get<{ markedToSign: boolean }>(\r\n makeApiaUrl({\r\n action: 'viewDocSigns',\r\n docId: file.docId,\r\n lock: false,\r\n isAjax: true,\r\n prefix: this.type,\r\n react: true,\r\n }),\r\n );\r\n return res;\r\n }\r\n\r\n async editDocument(id: string) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post<{ folderId: string }>(\r\n makeApiaUrl(\r\n this.getEditDocumentParameters({\r\n action: 'updateWebDavDocument',\r\n docId: file.docId,\r\n prefix: this.type,\r\n isAjax: true,\r\n }),\r\n ),\r\n );\r\n if (result?.data?.folderId) {\r\n const sDocumentUrl = `${window.WEBDAV_SERVER}${\r\n result?.data?.folderId\r\n }/${file.docId}/${file.name || file.docName || ''}`;\r\n\r\n const ProtocolInstallMessage = () => {\r\n this.notify({\r\n type: 'warning',\r\n message: window.MSG_NO_DOC_EDIT_PROTOCOL,\r\n title: window.LBL_EDIT,\r\n });\r\n };\r\n\r\n (window.avoidLoadEvents as any) = true;\r\n (window.ITHit as any).WebDAV.Client.DavConstants.ProtocolTimeoutMs =\r\n 10000;\r\n\r\n await (\r\n window.ITHit as any\r\n ).WebDAV.Client.DocManager.DavProtocolEditDocument(\r\n sDocumentUrl,\r\n window.WEBDAV_SERVER,\r\n ProtocolInstallMessage,\r\n null,\r\n 'Current',\r\n 'ApiaWebDavCookie', // Cookie(s) to copy.\r\n '', // URL to navigate to if any cookie from the list is not found.\r\n 'Edit',\r\n );\r\n }\r\n }\r\n }\r\n\r\n async downloadDocument(id: string, version?: string) {\r\n const file = this.getDocument(id)!;\r\n if (window.IN_MONITOR || (await this.checkWebDavLock(file.docId))) {\r\n await downloadUrl(\r\n makeApiaUrl({\r\n action: 'downloadDocument',\r\n prefix: this.type,\r\n docId: file.downloadDocId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n version,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n async ajaxDeleteDocument(id: string, langId?: number) {\r\n const file = this.getDocument(id)!;\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await ApiaApi.post(\r\n makeApiaUrl(\r\n this.getDeleteDocumentParameters({\r\n action: 'ajaxRemoveDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (this.evaluateDeleteDocumentResult(result?.data))\r\n this.deleteDocument(id);\r\n }\r\n }\r\n\r\n async version(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n if (\r\n (await this.checkLockDocument(file.docId, true)) === true &&\r\n (await this.checkWebDavLock(file.docId))\r\n ) {\r\n this.state.versioningFile = file;\r\n await this.ajaxUploadStart();\r\n\r\n if (file.docTypeId) this.state.selectedDocTypeId = file.docTypeId;\r\n await this.versionFileInfo(file);\r\n if (conf.newFiles && conf.newFiles.length > 0) {\r\n await this.saveDroppedFiles(conf.newFiles, {\r\n langId: conf.langId,\r\n translatingFile: conf.translatingFile,\r\n shouldReset: false,\r\n strictMode: true,\r\n });\r\n } else {\r\n await this.reloadMetadata({\r\n docId: file.docId,\r\n docTypeId: file.docTypeId,\r\n });\r\n this.modalController?.openModal();\r\n }\r\n }\r\n }\r\n\r\n async versionFileInfo(file: TUploaderFileInfo) {\r\n const documentInfo = await this.getDocumentInfo({ docId: file.docId });\r\n if (documentInfo?.function) {\r\n const {\r\n data: { general },\r\n metadatas,\r\n } = documentInfo.function;\r\n\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find((current) => current.id === file.docTypeId)\r\n ?.free ?? false;\r\n\r\n this.modalController!.state = {\r\n description: general.docDesc,\r\n docFolder:\r\n general.docFolder === '' ? undefined : Number(general.docFolder),\r\n permissions: {\r\n allowAllType: general.docAllPoolPerm,\r\n users: arrayOrArray(documentInfo.function.data.permissions?.user).map(\r\n (current) => {\r\n const returnObject: IUsersPermissions = {\r\n canUpdate: current.permType === 'M',\r\n userId: current.id,\r\n userLogin: current.name,\r\n };\r\n return returnObject;\r\n },\r\n ),\r\n pools: arrayOrArray(documentInfo.function.data.permissions?.pool).map(\r\n (current) => {\r\n const returnObject: IPoolsPermissions = {\r\n canUpdate: current.permType === 'M',\r\n poolId: current.id,\r\n poolName: current.name,\r\n };\r\n return returnObject;\r\n },\r\n ),\r\n },\r\n docExpDate: general.docExpDate,\r\n fileReqError: false,\r\n fromDirectoryFile: null,\r\n metadata: {\r\n metadataArray: arrayOrArray(metadatas?.metadata),\r\n freeMetadataArray: [],\r\n isFreeMetadata: isFreeMetadata,\r\n },\r\n };\r\n }\r\n }\r\n\r\n public async pickFileById(id: string) {\r\n const documentInfo = await this.getDocumentInfo(\r\n { downloadDocId: id },\r\n true,\r\n );\r\n if (documentInfo) {\r\n const document = documentInfo.function.data.general;\r\n const { permissions } = documentInfo.function.data;\r\n\r\n if (this.modalController) {\r\n this.modalController.addDirectoryFile(document);\r\n this.modalController.state.permissions = {\r\n pools: arrayOrArray(permissions.pool).map((c) => {\r\n return {\r\n poolId: c.id,\r\n poolName: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n users: [\r\n ...(window.DOCUMENT_OWNER_PRIVILEGES\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: window.CURRENT_USER_LOGIN,\r\n userLogin: window.CURRENT_USER_LOGIN,\r\n },\r\n ]\r\n : []),\r\n ...arrayOrArray(permissions.pool).map((c) => {\r\n return {\r\n userId: c.id,\r\n userLogin: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n ],\r\n allowAllType: document.docAllPoolPerm as '',\r\n };\r\n\r\n this.modalController.changeDocType(document.docTypeId);\r\n }\r\n\r\n void this.reloadMetadata(\r\n { docId: document.docId, docTypeId: document.docTypeId },\r\n {\r\n docReuse: true,\r\n },\r\n );\r\n }\r\n }\r\n\r\n async markFileToSign(id: string, langId?: number) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n this.state.files[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const marked = await ApiaApi.post<{ markedToSign: boolean }>(\r\n makeApiaUrl(\r\n this.getMarkFileToSignParameters({\r\n action: 'markDocTosign',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (marked?.data?.markedToSign !== undefined) {\r\n if (this.state.files[id]) {\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === id) {\r\n innerMap.set(langKey, {\r\n ...doc,\r\n markedToSign: marked?.data?.markedToSign ?? false,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Por el momento realiza la descarga de todos los archivos\r\n * que estén subidos.\r\n */\r\n downloadMultipleDocuments() {\r\n const files = this.filesArray;\r\n if (files.length === 0) return;\r\n const docIds = this.state.selectedFiles;\r\n\r\n const selectedFiles = files.filter((current) =>\r\n docIds.find((search) => search === current.docId),\r\n );\r\n const ids = (selectedFiles.length > 0 ? selectedFiles : files)\r\n .map((current) => current.downloadDocId)\r\n .join('-');\r\n\r\n void downloadUrl(\r\n makeApiaUrl(\r\n this.getDownloadMultipleDocumentsParameters({\r\n action: 'multipleDownload',\r\n docId: ids,\r\n prefix: this.type,\r\n }),\r\n ),\r\n 'documents.zip',\r\n );\r\n }\r\n\r\n async confirmDropModal(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n }) {\r\n if (window.IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const { langId, translatingFile } = conf ?? {};\r\n\r\n const cmbDocType = this.state.selectedDocTypeId;\r\n const fromDirectoryFile = this.modalController?.state.fromDirectoryFile;\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = this.modalConfig.oneClickUpload\r\n ? 'M'\r\n : (this.modalController?.allowAllType ?? '');\r\n const docFolder = this.modalController?.docFolder;\r\n const docExpDate = this.modalController?.docExpDate;\r\n const metadata = this.modalController?.metadata ?? [];\r\n const freeMetadata = this.modalController?.freeMetadata ?? [];\r\n\r\n const poolsPermissions =\r\n this.modalController?.state.permissions.pools ?? [];\r\n\r\n const usersPermissions =\r\n this.modalController?.state.permissions.users ?? [];\r\n\r\n let postData = QueryString.stringify(\r\n this.getConfirmDropModalPostdata({\r\n cmbDocType,\r\n docDesc,\r\n docAllowAllType,\r\n pe: this.docTypePermittedObjId?.toString(),\r\n dropped: this.state.inProgressFiles.map((file) => file.name),\r\n txtLangId: langId,\r\n txtLangGroup: translatingFile?.docLangGroup,\r\n docFolder: docFolder,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n postData = `${postData}${\r\n postData.length > 0 ? '&' : ''\r\n }${this.getConfirmDropModalPermissionsString({\r\n poolsPermissions,\r\n usersPermissions,\r\n })}&txtFreeMetadata=${this.getConfirmDropModalAdditionalMetadataString(\r\n freeMetadata,\r\n )}&txtMetadata=${this.getConfirmDropModalMetadataString({\r\n metadata: Object.values(metadata || {}),\r\n })}&docExpDate=${docExpDate ?? ''}`;\r\n\r\n const result = await ApiaApi.post<TConfirmDropModal>(\r\n makeApiaUrl(\r\n this.getConfirmDropModalParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: fromDirectoryFile\r\n ? fromDirectoryFile.docId\r\n : this.state.versioningFile?.docId,\r\n action: fromDirectoryFile\r\n ? 'associateExistingFile'\r\n : 'confirmDropModal',\r\n elemType: this.type,\r\n fromForm: true,\r\n ...(fromDirectoryFile\r\n ? {\r\n docId: fromDirectoryFile.docId,\r\n fromReuse: true,\r\n uploadDocument: false,\r\n }\r\n : null),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n if (result?.data?.function) {\r\n const currentFiles = { ...this.state.files };\r\n const versioningFile = this.state.versioningFile;\r\n\r\n if (versioningFile && versioningFile.name) {\r\n delete currentFiles[versioningFile.name];\r\n }\r\n const newFiles: Record<string, TUploaderFileInfo> = arrayOrArray(\r\n result.data.function.general,\r\n )\r\n .map((current) =>\r\n this.parseFileDefinition({\r\n ...current,\r\n canWrite: true,\r\n canRead: true,\r\n canEdit: true,\r\n }),\r\n )\r\n .filter((current) => !currentFiles[current.docId])\r\n .reduce((acc, current) => ({ ...acc, [current.docId]: current }), {});\r\n\r\n if (langId && translatingFile) {\r\n const firstFile = Object.values(newFiles)[0];\r\n this.setTranslationFile(firstFile, translatingFile.docId, langId);\r\n } else {\r\n this.state.files = { ...currentFiles, ...newFiles };\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n async loadCurrentDocuments() {\r\n const result = await ApiaApi.post<\r\n TApiaLoad<TApiaFunction<TUploaderLoadCurrentFunction, false>>\r\n >(\r\n makeApiaUrl({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'ajaxLoadCurrent',\r\n isAjax: true,\r\n readOnly: window.IS_READONLY,\r\n allowLock: true,\r\n allowSign: true,\r\n allowMultiple: true,\r\n prefix: this.type,\r\n }),\r\n {},\r\n );\r\n\r\n if (result && result.data) {\r\n const currentConfiguration: TUploaderLoadCurrentFunctionMessages =\r\n arrayOrArray(result.data.function.messages.message).reduce(\r\n (prev, { name, label }) => ({ ...prev, [name]: Boolean(label) }),\r\n {} as TUploaderLoadCurrentFunctionMessages,\r\n );\r\n\r\n const currentFiles: TUploaderFileInfo[] = result.data.function.general\r\n ? arrayOrArray(result.data.function.general).map(\r\n this.parseFileDefinition,\r\n )\r\n : [];\r\n\r\n this.currentConfiguration = currentConfiguration;\r\n const nonTranslationFiles: TUploaderFileInfo[] = [];\r\n const translationFiles: TUploaderFileInfo[] = [];\r\n currentFiles.forEach((current) => {\r\n if (current.docLang === undefined) nonTranslationFiles.push(current);\r\n else translationFiles.push(current);\r\n });\r\n\r\n nonTranslationFiles.forEach((c) => {\r\n this.state.files[c.docId] = c;\r\n });\r\n translationFiles.forEach((current) => {\r\n const originalFile = nonTranslationFiles.find(\r\n (search) => search.docLangGroup === current.docLangGroup,\r\n );\r\n if (originalFile && current.docLang !== undefined) {\r\n this.setTranslationFile(\r\n current,\r\n originalFile.docId,\r\n Number(current.docLang),\r\n );\r\n } else\r\n console.warn(\r\n `The following file is translated but has no orignal file`,\r\n current,\r\n nonTranslationFiles,\r\n );\r\n });\r\n }\r\n }\r\n\r\n async lockDocument(id: string) {\r\n if (window.IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if (file.markedToSign) {\r\n this.notify({\r\n message: window.CANT_UNLOCK_MARKED_TO_SIGN,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n if (!file.isLocked || !file.isLockedByMe) {\r\n const isLocked = await this.checkLockDocument(file.docId, false);\r\n this.updateDocument(\r\n id,\r\n typeof isLocked === 'string'\r\n ? this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n isLocked: true,\r\n lockedBy: isLocked,\r\n })\r\n : { ...file, isLocked },\r\n );\r\n }\r\n\r\n const result = await ApiaApi.post<\r\n TApiaFunction<\r\n {\r\n data: {\r\n general: {\r\n docId: string;\r\n locked: boolean;\r\n prefix: string;\r\n userLocking: string;\r\n };\r\n };\r\n },\r\n false\r\n >\r\n >(\r\n makeApiaUrl(\r\n this.getLockDocumentParameters({\r\n action: 'lockDocument',\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: file.docId,\r\n lock: file.isLocked,\r\n isAjax: true,\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n const resultFile = result.data.function?.data?.general;\r\n if (resultFile)\r\n this.updateDocument(\r\n resultFile.docId,\r\n this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\r\n isLocked: resultFile.locked,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n protected evaluateDeleteDocumentResult(result: unknown) {\r\n return (\r\n (\r\n result as\r\n | undefined\r\n | TApiaLoad<\r\n TApiaFunction<\r\n {\r\n general: {\r\n docId: string;\r\n prefix: string;\r\n };\r\n },\r\n false\r\n >\r\n >\r\n )?.function?.name === 'fncDocumentRemove'\r\n );\r\n }\r\n\r\n public setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.has(docId)) {\r\n this.state.translatedFiles.set(docId, new Map());\r\n }\r\n this.state.translatedFiles.get(docId)?.set(langId, file);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = returnExactlyTheSame;\r\n\r\n protected getAjaxUploadStartParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalParameters = returnExactlyTheSame;\r\n\r\n protected getCheckLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getCheckWebDavLockParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalPostdata = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalMetadataString = ({\r\n metadata,\r\n }: {\r\n metadata: TDocumentMetadata[];\r\n }) => {\r\n return (\r\n metadata\r\n ?.filter?.((current) => !!current.value)\r\n .map((current) => `${current.id}~${current.type}~${current.value}`)\r\n .join(';') ?? []\r\n );\r\n };\r\n\r\n protected getConfirmDropModalPermissionsString = ({\r\n poolsPermissions,\r\n usersPermissions,\r\n }: {\r\n poolsPermissions: IPoolsPermissions[];\r\n usersPermissions: IUsersPermissions[];\r\n }) => {\r\n let returnString = '';\r\n\r\n poolsPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docPoolId=${current.poolId}&docPoolName=${\r\n current.poolName\r\n }&docPermType${current.poolId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n usersPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docUserId=${current.userId}&docUsrLogin=${\r\n current.userLogin\r\n }&docPermType${current.userId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n return returnString;\r\n };\r\n\r\n protected getConfirmDropModalAdditionalMetadataString = (\r\n additionalMetadata: TDocumentMetadata[] | [],\r\n ) => {\r\n return Object.values(additionalMetadata)\r\n .filter((current) => !!current?.value)\r\n .map((current) => `${current.name}~${current.value}`)\r\n .join(';');\r\n };\r\n\r\n protected getDeleteDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getClearTempFilesParameters = returnExactlyTheSame;\r\n\r\n protected getDocumentInfoParameters = returnExactlyTheSame;\r\n\r\n protected getDownloadMultipleDocumentsParameters = returnExactlyTheSame;\r\n\r\n protected getEditDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getMarkFileToSignParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesPostdata = returnExactlyTheSame;\r\n\r\n protected getReloadMetadataParameters = returnExactlyTheSame;\r\n\r\n protected getSaveDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected filterAlreadyUploadedFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) return files;\r\n\r\n const uploadedFiles = this.state.inProgressFiles;\r\n const existingFiles: File[] = [];\r\n const nonExistingFiles: File[] = [];\r\n if (conf?.langId) {\r\n const docId = conf.translatingFile?.docId ?? Infinity;\r\n const translationsMap = this.state.translatedFiles.get(String(docId));\r\n const alreadyUploadedToTranslationsFile = translationsMap\r\n ? Array.from(translationsMap.values()).find(\r\n (current) => (current.docName || current.name) === files[0]?.name,\r\n )\r\n : undefined;\r\n if (alreadyUploadedToTranslationsFile) existingFiles.push(files[0]);\r\n } else\r\n files.forEach((file) => {\r\n if (uploadedFiles.find((search) => search.name === file.name)) {\r\n existingFiles.push(file);\r\n } else nonExistingFiles.push(file);\r\n });\r\n if (existingFiles.length > 0) {\r\n void this.notify({\r\n message: `${window.LBL_DROP_FILE_REPEATED}: ${existingFiles\r\n .map((current) => current.name)\r\n .join(', ')}`,\r\n type: 'warning',\r\n });\r\n return nonExistingFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n return files.slice(\r\n 0,\r\n addBoundary(this.maxFiles - (this.state.inProgressFiles?.length ?? 0), 0),\r\n );\r\n }\r\n\r\n protected filterAcceptedFiles(\r\n files: File[],\r\n shouldNotify = true,\r\n docTypeId?: string | TDocType,\r\n ): File[] {\r\n const docTypes =\r\n docTypeId !== undefined\r\n ? this.state.allowedTypes.filter((c) => {\r\n return typeof docTypeId === 'string'\r\n ? c.id === docTypeId\r\n : c.id === docTypeId.id;\r\n })\r\n : this.state.allowedTypes;\r\n\r\n if (!docTypes.find((c) => c.docExts === '')) {\r\n const notAllowedFilesBecauseOfExtension: File[] = [];\r\n const notAllowedFilesBecauseOfSize: File[] = [];\r\n let maxSize = Infinity;\r\n const allowedFiles = files.filter((currentFile) => {\r\n const extension = (currentFile.name.match(/\\.(\\w+)$/) ?? [])[1];\r\n\r\n let isAllowed = true;\r\n if (\r\n !docTypes.find((currentDocType) => {\r\n if (\r\n !currentDocType.docExts\r\n .split(';')\r\n .map((current) => current.toLowerCase())\r\n .includes(extension.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n isAllowed = false;\r\n notAllowedFilesBecauseOfExtension.push(currentFile);\r\n }\r\n if (\r\n isAllowed &&\r\n !docTypes.find((currentDocType: any) => {\r\n if (Number(currentDocType.maxSize) < currentFile.size) {\r\n maxSize = Number(currentDocType.maxSize);\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n notAllowedFilesBecauseOfSize.push(currentFile);\r\n isAllowed = false;\r\n }\r\n\r\n if (!isAllowed) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (shouldNotify) {\r\n let errorMessage = '';\r\n\r\n if (notAllowedFilesBecauseOfExtension.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfExtension.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n errorMessage = `<strong>${window.FILES_WRONG_EXT}</strong><br />${filesNames}`;\r\n }\r\n\r\n if (notAllowedFilesBecauseOfSize.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfSize.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n if (errorMessage.length > 0)\r\n errorMessage = `${errorMessage} <br /><br />`;\r\n errorMessage = `${errorMessage}${formatMessage(window.FILES_TOO_BIG, {\r\n TOK1: `<br />${filesNames}`,\r\n TOK2: `${parseAsSize(maxSize)}`,\r\n })}`;\r\n }\r\n\r\n if (errorMessage.length > 0)\r\n this.notify({\r\n message: errorMessage,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n return allowedFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterExistingFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n if (conf?.langId) return files;\r\n\r\n const currentFiles = this.state.inProgressFiles;\r\n const alreadyUploadedFiles = this.filesArray.filter(\r\n (current) => Number(current.docId) < 0,\r\n );\r\n let alreadyIncludedFileNames = '';\r\n const filteredFiles = files.filter((current) => {\r\n const isIncluded =\r\n currentFiles.findIndex((search) => search.name === current.name) !==\r\n -1 ||\r\n alreadyUploadedFiles.findIndex(\r\n (search) => search.docName === current.name,\r\n ) !== -1;\r\n\r\n if (isIncluded)\r\n alreadyIncludedFileNames = `${alreadyIncludedFileNames}${\r\n alreadyIncludedFileNames.length > 0 ? ', ' : ''\r\n }${current.name}`;\r\n\r\n return !isIncluded;\r\n });\r\n if (alreadyIncludedFileNames.length > 0)\r\n this.notify({\r\n message: `${window.LBL_DROP_FILE_REPEATED}: ${alreadyIncludedFileNames}`,\r\n type: 'warning',\r\n });\r\n return filteredFiles;\r\n }\r\n\r\n protected filterVersioningFiles(\r\n files: File[],\r\n conf?: {\r\n langId?: number;\r\n strictMode?: boolean;\r\n translatingFile?: TUploaderFileInfo;\r\n shouldReset?: boolean;\r\n },\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) {\r\n const newFiles = files.filter(\r\n (current) =>\r\n current.name === versioningFile.docName ||\r\n current.name === versioningFile.name,\r\n );\r\n if (newFiles.length === 0) {\r\n this.notify({\r\n type: 'warning',\r\n message: window.LBL_DROP_FILE_NAMES_NOT_MATCH,\r\n });\r\n }\r\n return newFiles;\r\n }\r\n if (\r\n files.length === 1 &&\r\n conf?.translatingFile === undefined &&\r\n conf?.langId === undefined\r\n ) {\r\n // const actualVersioningFile = fileStore.filesArray.find(\r\n // (current) => (current.name || current.docName) === files[0].name,\r\n // );\r\n // if (actualVersioningFile) {\r\n // if (actualVersioningFile.isLockedByMe)\r\n // this.updateModal({ versioningFile: actualVersioningFile });\r\n // }\r\n }\r\n\r\n return files;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(file, false),\r\n canEdit: file.canEdit || file.canWrite,\r\n canRead: file.canRead,\r\n };\r\n };\r\n\r\n public getLoadFileSystemStructureTree: () => Record<string, unknown> =\r\n () => ({\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n docTypePermittedObjType: this.type,\r\n });\r\n}\r\n","import { downloadUrl } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../util';\r\nimport { File as ExeFile } from '../FormsExecution/fields';\r\nimport {\r\n TFileUploaded,\r\n TModalConfig,\r\n TSaveDroppedFilesConf,\r\n TUploaderFileInfo,\r\n} from './types';\r\nimport { parseFileDefinition, UploaderApi } from './UploaderApi';\r\n\r\nexport class FormsUploader extends UploaderApi {\r\n constructor(\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n protected field: ExeFile,\r\n ) {\r\n super(type + '_' + field.definition.id, type, modalConfig);\r\n this.isEditionMode = window.IS_EDIT_GRID_MODAL ? true : undefined;\r\n }\r\n isEditionMode;\r\n index() {\r\n return (\r\n // Config.MODAL_INDEX ??\r\n // this.field?.multIdx ?? this.formProps.attributes.index\r\n 0\r\n );\r\n }\r\n elemId() {\r\n return `dropUpprDiv${this.field.properties.id}_${this.index()}${\r\n window.IS_EDIT_GRID_MODAL ? '_true_Mdl' : ''\r\n }`;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n const inProgressFiles = this.state.inProgressFiles;\r\n if (inProgressFiles.length === 1 && files.length)\r\n if (inProgressFiles[0].name !== files[0].name) {\r\n this.state.inProgressFiles = [];\r\n } else return [];\r\n return files.slice(0, 1);\r\n }\r\n\r\n protected getFormParameters() {\r\n return {\r\n frmId: this.field.getForm().definition.id,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n attId: this.field.attribute.id,\r\n index: this.index(),\r\n editionMode: this.isEditionMode,\r\n prefix: this.field.getForm().definition.frmParent,\r\n };\r\n }\r\n\r\n evaluateDeleteDocumentResult(\r\n result: undefined | { success: boolean },\r\n ): boolean {\r\n return !!result?.success;\r\n }\r\n\r\n getAjaxUrl(): string {\r\n return '/apia.execution.FormAction.run';\r\n }\r\n\r\n getAllowedTypesData() {\r\n return {\r\n postData: {\r\n docTypeId: this.field.properties.docType,\r\n forDropElem: true,\r\n },\r\n queryData: {\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n docTypeId: this.field.properties.docType,\r\n frmOut: true,\r\n ...this.getFormParameters(),\r\n },\r\n };\r\n }\r\n\r\n getAjaxUploadFileStatusParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n forceDocTypeId: this.field.properties.docType,\r\n\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getAjaxUploadStartParameters = ({\r\n useDocTypePermitted,\r\n docTypePermittedObjType,\r\n docTypePermittedObjId,\r\n ...defaultParameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getCheckLockDocumentParameters = ({\r\n prefix,\r\n ...parameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...parameters,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getCheckSignatureParameters = (parameters: Record<string, unknown>) => {\r\n const { frmId, frmParent } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n frmId,\r\n frmParent,\r\n };\r\n };\r\n\r\n getClearTempFilesParameters = ({\r\n elemType,\r\n ...rest\r\n }: Record<string, unknown>) => {\r\n const { frmId, frmParent, index, attId } = this.getFormParameters();\r\n return {\r\n ...rest,\r\n frmParent,\r\n frmId,\r\n attId,\r\n index,\r\n };\r\n };\r\n\r\n getConfirmDropModalParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n elemType: this.elemId(),\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getConfirmDropModalPostdata = ({\r\n pe,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n const { editionMode } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n editionMode,\r\n };\r\n };\r\n\r\n getDeleteDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getDocumentInfoParameters = (parameters: Record<string, unknown>) => {\r\n return { ...parameters, ajaxUrl: window.URL_REQUEST_AJAX };\r\n };\r\n\r\n getEditDocumentParameters = ({ action, docId }: Record<string, unknown>) => {\r\n const { prefix, editionMode, ...rest } = this.getFormParameters();\r\n return {\r\n action,\r\n ...rest,\r\n docId,\r\n ajaxUrl: 'apia.execution.FormAction.run',\r\n };\r\n };\r\n\r\n getLoadFilesForFolderParameters: () => Record<string, unknown> = () => {\r\n return {\r\n useDocTypePermitted:\r\n this.state.allowedTypes.length === 1 ? true : undefined,\r\n docTypeForcedId:\r\n this.state.allowedTypes.length === 1\r\n ? this.state.allowedTypes[0].id\r\n : undefined,\r\n txtCantDoc: 0,\r\n loadFolders: true,\r\n };\r\n };\r\n\r\n getLoadFileSystemStructureTree = () => ({\r\n useDocTypePermitted: this.state.allowedTypes.length === 1,\r\n docTypeForcedId: this.docTypePermittedObjId,\r\n });\r\n\r\n getLockDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getMarkFileToSignParameters = ({\r\n docId,\r\n prefix,\r\n ...defaultParameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...defaultParameters,\r\n action: 'sign',\r\n\r\n fldId: this.field.definition.id,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getProcessDroppedFilesParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...defaultParameters,\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n ...rest,\r\n };\r\n };\r\n\r\n getProcessDroppedFilesPostdata = ({\r\n useDocTypePermitted,\r\n docTypePermittedObjId,\r\n docTypePermittedObjType,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n return { ...parameters, editionMode: this.getFormParameters().editionMode };\r\n };\r\n\r\n getReloadMetadataParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n ...(window.IS_EDIT_GRID ? { editionMode: true } : null),\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getSaveDroppedFilesParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n const elemId = this.elemId();\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...defaultParameters,\r\n fromFormElem: true,\r\n elemType: elemId,\r\n elemId,\r\n ...rest,\r\n };\r\n };\r\n async downloadDocument(fileId: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n const { prefix, ...rest } = this.getFormParameters();\r\n if (!file) return;\r\n\r\n if (window.IN_MONITOR || (await this.checkWebDavLock(file.docId)))\r\n await downloadUrl(\r\n makeApiaUrl({\r\n action: 'download',\r\n docId: file.downloadDocId,\r\n ajaxUrl: '/page/generic/downloadAttDoc.jsp',\r\n ...rest,\r\n }),\r\n );\r\n }\r\n\r\n loadCurrentDocuments(): Promise<void> {\r\n return null as any as Promise<void>;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(file, this.field.properties.reqSign || false),\r\n canEdit: file.canEdit ?? true,\r\n canRead: file.canRead ?? true,\r\n };\r\n };\r\n\r\n async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf | undefined,\r\n ): Promise<void> {\r\n const result = await super.saveDroppedFiles(unprocessedFiles, conf);\r\n\r\n return result;\r\n }\r\n\r\n // async version(\r\n // file: TUploaderFileInfo,\r\n // conf: {\r\n // newFiles?: File[];\r\n // langId?: number;\r\n // translatingFile?: TUploaderFileInfo;\r\n // } = { newFiles: [] },\r\n // ) {\r\n // if (\r\n // (await this.checkLockDocument(file.docId, true)) === true &&\r\n // (await this.checkWebDavLock(file.docId))\r\n // ) {\r\n // validationsStore.setFieldValue(this.modalStoreId, 'versioningFile', file);\r\n // if (file.docTypeId)\r\n // this.updateModal({\r\n // allowChangeDocType: false,\r\n // cmbDocType: file.docTypeId,\r\n // });\r\n // await this.versionFileInfo(file);\r\n // if (conf.newFiles && conf.newFiles.length > 0) {\r\n // await this.ajaxUploadStart();\r\n // await this.saveDroppedFiles(conf.newFiles, onUploadProgress, {\r\n // strictMode: file.docTypeId !== undefined && file.docTypeId !== '',\r\n // langId: conf.langId,\r\n // translatingFile: conf.translatingFile,\r\n // shouldReset: false,\r\n // });\r\n // } else\r\n // this.openModal({\r\n // langId: conf.langId,\r\n // translatingFile: conf.translatingFile,\r\n // shouldReset: false,\r\n // });\r\n // }\r\n // }\r\n}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport {\r\n FormsUploader,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n} from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class File extends TranslatableField<TApiaFileProperties> {\r\n uploader: FormsUploader = {} as FormsUploader;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FormsUploader(\r\n this.getForm().definition.frmParent,\r\n {\r\n oneClickUpload: this.properties.oneClickUpload,\r\n allowDocumentsMonitor: !this.properties.fileNotShowDocMon,\r\n showDirectoriesStructure: this.properties.fileShwFoldTreeStr,\r\n allowPickFromDirectories: !this.properties.fileShwFoldTreeBtn,\r\n showExpDate: this.properties.fileExpDate,\r\n collapsePermissions: this.properties.fileCollapsePermission,\r\n collapseDirectories: this.properties.fileCollapseFldStrc,\r\n collapseMetadata: this.properties.fileCollapseMetadata,\r\n showMetadata: true,\r\n showPermissions: true,\r\n // allowEdition: this.properties.allowEdition,\r\n // dragAndDrop: !this.properties.fileNoAllwDnD,\r\n // shoDesc: !this.properties.fileShowDesc,\r\n } as TModalConfig,\r\n this,\r\n );\r\n this.uploader.onInit();\r\n\r\n if (this.definition.file_prp) {\r\n const files = parseFakeJSON(this.definition.file_prp) as Record<\r\n number,\r\n TUploaderFileInfo\r\n >;\r\n const mainFile = files[0];\r\n if (mainFile) {\r\n this.uploader.state.files = {\r\n [mainFile.docId]: { ...mainFile, docName: mainFile.name },\r\n };\r\n const otherEntries = Object.entries(files).filter(([k]) => k !== '0');\r\n if (otherEntries.length) {\r\n otherEntries.forEach(([k, file]) => {\r\n this.uploader.setTranslationFile(\r\n { ...file, docName: file.name },\r\n mainFile.docId,\r\n Number(k),\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (\r\n this.properties.disabled ||\r\n this.properties.readonly ||\r\n this.properties.noModify\r\n ) {\r\n return true;\r\n } else if (\r\n Object.values(this.uploader.state.files).length > 0 ||\r\n !this.properties.required\r\n ) {\r\n return true;\r\n } else {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n }\r\n }\r\n\r\n public async setValue(\r\n _newValue: any,\r\n _options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n // TODO: Implement this method\r\n return true;\r\n }\r\n}\r\n","import { Cell, CellState } from '@apia/table2';\r\n\r\nexport class HeaderCell extends Cell {\r\n constructor(\r\n state: CellState,\r\n public fireSelectionEvent: () => unknown,\r\n ) {\r\n super(state);\r\n }\r\n}\r\n","const Form = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default Form;\r\n","import Field from './Field';\r\nimport Form from './Form';\r\n\r\nexport const IProperty = {\r\n ...Field,\r\n ...Form,\r\n} as const;\r\n","import { Notification, NotificationDefinition } from './Notification';\r\n\r\nexport class StatusNotification extends Notification<\r\n NotificationDefinition & { blocking: boolean }\r\n> {\r\n constructor(\r\n public readonly props: NotificationDefinition & { blocking: boolean },\r\n ) {\r\n super(props);\r\n }\r\n}\r\n"],"names":["_instance","__publicField","__privateGet","__privateSet","__privateAdd","queryString","IProperty","id","_hasInited","ApiaFunctions","Field","EventEmitter","result","parseFakeJSON","getLabel","_field","TextAreaField","properties","noNaN","makeApiaUrl","fieldsMap","ExecutionState","Form"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/util/comparators/deepEqual.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/main/Execution/FormsExecution/constants/fieldProps.ts","../src/main/Execution/FormsExecution/constants/formProps.ts","../src/main/Execution/FormsExecution/constants/props/booleanProps.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/xml/parseXml.ts","../src/util/dom/getWindow.ts","../src/util/api/apiaApi.ts","../src/util/events/EventEmitter.ts","../src/util/events/StatefulEmitter.ts","../src/util/events/BouncingEmitter.ts","../src/util/labels/labels.ts","../src/main/Execution/FormsExecution/WithProperties.ts","../src/util/dom/getDocument.ts","../src/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.ts","../src/programming/utils/asynCreateApiaField.ts","../src/main/Execution/FormsExecution/Field.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/util/isFieldShowAsText.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.ts","../src/main/Execution/FormsExecution/fields/Checkbox/index.ts","../src/main/Execution/FormsExecution/TranslatableField/Translation.ts","../src/main/Execution/FormsExecution/TranslatableField/util.ts","../src/main/Execution/FormsExecution/TranslatableField/index.ts","../src/main/Execution/FormsExecution/fields/Editor/index.ts","../src/util/dataTypes/parseBoolean.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/Uploader/UploaderModalController.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/Uploader/FormsUploader.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/fields/Grid/GridFooterHandler.ts","../src/main/Execution/FormsExecution/fields/Grid/GridCell.ts","../src/main/Execution/FormsExecution/fields/Grid/AdditionalCell.ts","../src/main/Execution/FormsExecution/fields/Grid/HeaderCell.ts","../src/main/Execution/FormsExecution/fields/Grid/FieldsCache.ts","../src/main/Execution/FormsExecution/fields/ModalInput/index.ts","../src/main/Execution/FormsExecution/fields/Hidden/index.ts","../src/main/Execution/FormsExecution/fields/Grid/index.ts","../src/main/Execution/FormsExecution/fields/GridPaginated/index.ts","../src/main/Execution/FormsExecution/fields/Image/index.ts","../src/main/Execution/FormsExecution/fields/Input/index.ts","../src/main/Execution/FormsExecution/fields/Label/index.ts","../src/main/Execution/FormsExecution/fields/Link/index.ts","../src/main/Execution/FormsExecution/fields/Multiple/index.ts","../src/main/Execution/FormsExecution/fields/Password/index.ts","../src/main/Execution/FormsExecution/fields/Radio/index.ts","../src/main/Execution/FormsExecution/fields/Select/index.ts","../src/main/Execution/FormsExecution/fields/Textarea/index.ts","../src/main/Execution/FormsExecution/fields/Title/index.ts","../src/main/Execution/FormsExecution/fields/Tree/index.ts","../src/main/Execution/FormsExecution/fields/Scheduler/index.ts","../src/programming/constants/Field.ts","../src/programming/constants/Form.ts","../src/programming/constants/IProperty.ts","../src/programming/ActionController/ButtonsActions.ts","../src/programming/ActionController/index.ts","../src/programming/ApiaField.ts","../src/programming/fields/ButtonField.ts","../src/programming/fields/EditorField.ts","../src/programming/ApiaFieldWithAttribute.ts","../src/programming/fields/SelectField.ts","../src/programming/fields/InputField.ts","../src/programming/fields/TreeField.ts","../src/programming/fields/CheckField.ts","../src/programming/fields/RadioField.ts","../src/programming/fields/MultipleField.ts","../src/programming/fields/HiddenField.ts","../src/programming/fields/AreaField.ts","../src/programming/fields/ImageField.ts","../src/programming/fields/LinkField.ts","../src/programming/fields/TextField.ts","../src/programming/fields/CustomComponentField.ts","../src/programming/utils/createApiaField.ts","../src/programming/fields/GridField.ts","../src/programming/fields/CaptchaField.ts","../src/programming/fields/FileUploaderField.ts","../src/programming/fields/PasswordField.ts","../src/programming/fields/ModalInput.ts","../src/programming/ApiaForm.ts","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/main/Execution/FormsExecution/Form.ts","../src/main/Execution/FormsExecution/fieldsMap.ts","../src/main/Notifications/index.ts","../src/main/Execution/Process/index.ts","../src/main/Execution/Task.ts","../src/main/Execution/Entity/index.ts","../src/main/Execution/Observations/index.ts","../src/main/Execution/FlowModals/FlowModal.ts","../src/main/Execution/FlowModals/ShowPoolSelection.ts","../src/main/Execution/FlowModals/ShowPathSelection.ts","../src/main/Execution/FlowModals/ShowSignSelection.ts","../src/main/Execution/FlowModals/ShowConfirmMessage.ts","../src/main/Execution/FlowModals/ShowSign.ts","../src/main/Execution/FlowModals/confirmFlow.ts","../src/main/Execution/EntityFlowModals/FlowModal.ts","../src/main/Execution/EntityFlowModals/ShowSignSelection.ts","../src/main/Execution/EntityFlowModals/ShowConfirmMessage.ts","../src/main/Execution/EntityFlowModals/ShowSign.ts","../src/main/Execution/EntityFlowModals/confirmFlow.ts","../src/main/Execution/index.ts","../src/main/Notifications/StatusNotification.ts"],"sourcesContent":["export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const deepEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!deepEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!deepEqual(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!deepEqual(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\n\r\nexport type NotificationIcon = string;\r\n\r\nexport type NotificationType = 'info' | 'error' | 'success' | 'warning';\r\n\r\nexport type NotificationDefinition = {\r\n icon?: NotificationIcon;\r\n id?: string | number;\r\n isOpen?: boolean;\r\n message: string;\r\n stackTrace?: string;\r\n title?: string;\r\n type?: NotificationType;\r\n};\r\n\r\nexport abstract class Notification<\r\n State extends NotificationDefinition = NotificationDefinition,\r\n> {\r\n protected state: State;\r\n\r\n constructor(public readonly props: State) {\r\n this.state = props;\r\n\r\n makeObservable<Notification, 'state'>(this, { state: observable });\r\n }\r\n\r\n get icon() {\r\n return this.state.icon;\r\n }\r\n get id() {\r\n return this.state.id;\r\n }\r\n get isOpen() {\r\n return this.state.isOpen;\r\n }\r\n get message() {\r\n return this.state.message;\r\n }\r\n get stackTrace() {\r\n return this.state.stackTrace;\r\n }\r\n get title() {\r\n return this.state.title;\r\n }\r\n get type() {\r\n return this.state.type;\r\n }\r\n}\r\n","import { Notification } from './Notification';\r\n\r\nexport class MessageNotification extends Notification {\r\n close() {\r\n this.state.isOpen = false;\r\n }\r\n}\r\n","const fieldProps = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n} as const;\r\n\r\nexport default fieldProps;\r\n","const formProps = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default formProps;\r\n","import fieldProps from '../fieldProps';\r\nimport formProps from '../formProps';\r\n\r\nconst FormBoolProps = [\r\n formProps.PROPERTY_FORM_INVISIBLE,\r\n formProps.PROPERTY_FORM_HIDDEN,\r\n formProps.PROPERTY_FORM_CLOSED,\r\n formProps.PROPERTY_FORM_TAB,\r\n formProps.PROPERTY_FORM_HIGHLIGHT,\r\n formProps.PROPERTY_FORM_DONT_FIRE,\r\n formProps.PROPERTY_FORM_READONLY,\r\n formProps.SIGNABLE_FORM,\r\n formProps.MARKED_TO_SIGN,\r\n formProps.REQUIRED_SIGN,\r\n];\r\n\r\nconst FieldBoolProps = [\r\n fieldProps.PROPERTY_ALLOW_EDITION,\r\n fieldProps.PROPERTY_CHECKED,\r\n fieldProps.PROPERTY_DISABLED,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\r\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\r\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\r\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\r\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\r\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\r\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\r\n fieldProps.PROPERTY_FILE_PREVIEW,\r\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\r\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\r\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\r\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\r\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\r\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\r\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\r\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\r\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\r\n fieldProps.PROPERTY_HIDE_GRID_BTN,\r\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\r\n fieldProps.PROPERTY_INPUT_AS_TEXT,\r\n fieldProps.PROPERTY_MODAL_DISABLED,\r\n fieldProps.PROPERTY_MULTISELECT,\r\n fieldProps.PROPERTY_NO_DOWNLOAD,\r\n fieldProps.PROPERTY_NO_ERASE,\r\n fieldProps.PROPERTY_NO_LOCK,\r\n fieldProps.PROPERTY_NO_MODIFY,\r\n fieldProps.PROPERTY_NOT_PRINT,\r\n fieldProps.PROPERTY_PAGED_GRID,\r\n fieldProps.PROPERTY_READONLY,\r\n fieldProps.PROPERTY_REQUIRED,\r\n fieldProps.PROPERTY_SEL_PARENT,\r\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\r\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\r\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\r\n fieldProps.PROPERTY_TRANSIENT,\r\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\r\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\r\n];\r\n\r\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\r\nexport default BoolProps;\r\n","import fieldProps from '../fieldProps';\r\n\r\nconst NumProps: string[] = [\r\n fieldProps.PROPERTY_SIZE,\r\n fieldProps.PROPERTY_ROWS,\r\n fieldProps.PROPERTY_COLSPAN,\r\n fieldProps.PROPERTY_ROWSPAN,\r\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\r\n fieldProps.PROPERTY_GRID_HEIGHT,\r\n fieldProps.PROPERTY_MAX_REG_GRID,\r\n];\r\n\r\nexport default NumProps;\r\n","import xml2js, { ParserOptions } from 'xml2js';\r\nimport he from 'he';\r\nimport { parseBooleans, parseNumbers } from 'xml2js/lib/processors';\r\nimport {\r\n TApiaFieldPropsObj,\r\n TFieldScriptEvents,\r\n TFieldServerEvents,\r\n TMap,\r\n} from '@apia/util';\r\nimport BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { InvalidSessionException } from '../api/apiaApi';\r\n\r\n// get JS object from string\r\nconst jsonDecode = (string: string): TMap<string | boolean | number> => {\r\n if (!string || typeof string !== 'string') return {};\r\n // remove eol enters\r\n const str = string.replace(/\\n|\\r/g, '');\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return eval(`(${str})`);\r\n};\r\n\r\n// get boolean value from string values\r\nconst parseBool = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n\r\ntype TFieldProps = TMap<string | boolean | number>;\r\ntype TFieldValueProps = (string | boolean | number)[];\r\ntype TFieldParsedProps = TMap<string | boolean | number>;\r\n\r\n// parse XML properties of Field element\r\nconst parseFieldPropertiesObj = (props: TFieldProps): TFieldParsedProps => {\r\n // default values for missing props can go here below in response.\r\n const response: TFieldParsedProps = {};\r\n const objKeys: string[] = Object.keys(props);\r\n const objVal: TFieldValueProps = Object.values(props);\r\n for (let i = 0; i < objKeys.length; i += 1) {\r\n const key = objKeys[i];\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n response[key] = objVal[i] || '';\r\n } else if (typeof objVal[i] === 'number') {\r\n response[key] = objVal[i];\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n response[key] = parseBool(objVal[i] as string);\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n response[key] = parseInt((objVal[i] as string) || '', 10);\r\n }\r\n }\r\n return response;\r\n};\r\n\r\nconst processAjaxEventTagNames = (name: string): string => {\r\n if (name === 'a') return 'form';\r\n if (name === 'b') return 'field';\r\n if (name === 'g') return 'possibleValues';\r\n if (name === 'h') return 'item';\r\n if (name === 'z') return 'focusTo';\r\n if (name === 'r') return 'reload';\r\n if (name === 'p') return 'proccess';\r\n if (name === 'd') return 'valueAttr';\r\n return name;\r\n};\r\n\r\nconst processAjaxEventAttrNames = (name: string): string => {\r\n if (name === 't') return 'text';\r\n if (name === 'label') return 'LABEL';\r\n return name;\r\n};\r\n\r\nconst processAjaxEventResponse = <T>(value: T, _name: string): boolean | T => {\r\n return value;\r\n};\r\nfunction htmlToText(html: string) {\r\n const safe = html.replace(/</g, '&lt;');\r\n return he.decode(safe);\r\n}\r\n\r\nconst processStringObj = (\r\n value: string,\r\n key: string,\r\n):\r\n | TApiaFieldPropsObj\r\n | string\r\n | number\r\n | TFieldScriptEvents\r\n | TFieldServerEvents => {\r\n if (key === 'properties') {\r\n return parseFieldPropertiesObj(jsonDecode(value)) as TApiaFieldPropsObj;\r\n }\r\n if (key === 'scriptEvents') {\r\n return JSON.parse(value) as TFieldScriptEvents;\r\n }\r\n if (key === 'serverEvents') {\r\n return JSON.parse(value) as TFieldServerEvents;\r\n }\r\n if (key === 'gridXml') {\r\n return parseXml(he.decode(value).replaceAll('&', '&amp;'));\r\n }\r\n if (key === 'value' && typeof value === 'number' && Number.isNaN(value)) {\r\n return '';\r\n }\r\n if (key === 'valueType' && typeof value === 'string' && value === 'null') {\r\n return '';\r\n }\r\n if (\r\n (key === 'cols' ||\r\n key === 'rows' ||\r\n key === 'x' ||\r\n key === 'y' ||\r\n key === 'length') &&\r\n typeof value === 'string'\r\n ) {\r\n return parseNumbers(value);\r\n }\r\n\r\n return value.match?.(/[&]/) ? htmlToText(value) : value;\r\n};\r\n\r\nfunction replaceLabelHtmlValues(o: object) {\r\n for (const [key, value] of Object.entries(o)) {\r\n if (typeof value === 'object' && value) {\r\n (o as any)[key] = replaceLabelHtmlValues(value);\r\n } else if (typeof value === 'string' && value.match(/&/)) {\r\n if ((o as any).fieldType === 'editor') {\r\n (o as any)[key] = htmlToText(value);\r\n } else {\r\n (o as any)[key] = htmlToText(value);\r\n }\r\n }\r\n }\r\n return o;\r\n}\r\nexport const asyncGetJSObjfromXML = async <T>(xml: string): Promise<T> => {\r\n const parser = new xml2js.Parser({\r\n trim: true,\r\n normalize: true,\r\n explicitRoot: false,\r\n mergeAttrs: true,\r\n explicitArray: false,\r\n charkey: 'label',\r\n attrValueProcessors: [\r\n parseBooleans,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n ],\r\n tagNameProcessors: [processAjaxEventTagNames],\r\n attrNameProcessors: [processAjaxEventAttrNames],\r\n } as ParserOptions);\r\n\r\n const result = await new Promise<T>((resolve, reject) => {\r\n parser.parseString(xml, (err: Error | null, innerResult: T) => {\r\n if (err) reject(err);\r\n else {\r\n resolve(\r\n typeof innerResult === 'object' && innerResult\r\n ? (replaceLabelHtmlValues(innerResult) as any)\r\n : innerResult,\r\n );\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport const parseXml = <T = Record<string, unknown>>(\r\n xml: XMLDocument | string,\r\n): T => {\r\n let objJS;\r\n\r\n if (typeof xml === 'object' && !(xml instanceof XMLDocument)) {\r\n return xml;\r\n }\r\n\r\n const parser = new xml2js.Parser({\r\n trim: true,\r\n normalize: true,\r\n explicitRoot: false,\r\n mergeAttrs: true,\r\n explicitArray: false,\r\n charkey: 'label',\r\n attrValueProcessors: [\r\n parseBooleans,\r\n processStringObj,\r\n processAjaxEventResponse,\r\n ],\r\n tagNameProcessors: [processAjaxEventTagNames],\r\n attrNameProcessors: [processAjaxEventAttrNames],\r\n } as ParserOptions);\r\n\r\n parser.parseString(\r\n xml,\r\n (err: Error | null, result: Record<string, unknown>) => {\r\n if (err) {\r\n console.warn('Error Parsing XML data', err);\r\n objJS = err;\r\n } else {\r\n if (result?.code === '-1' && result.exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n objJS = result;\r\n }\r\n },\r\n );\r\n if (objJS) {\r\n return typeof objJS === 'object' && objJS\r\n ? (replaceLabelHtmlValues(objJS) as any)\r\n : objJS;\r\n }\r\n return {} as T;\r\n};\r\n","import type { Execution } from '../../main/Execution';\r\n\r\nexport function getWindow(execution: Execution) {\r\n return execution.environment.window;\r\n}\r\n","import type { AxiosResponse } from 'axios';\r\nimport { MessageNotification } from '../../main/Notifications/MessageNotification';\r\nimport {\r\n IApiaApiPostConfig,\r\n IApiaApiRequestConfig,\r\n TApiaApiAxiosResponse,\r\n TApiaApiResult,\r\n TApiaMessage,\r\n TApiaSystemMessageObj,\r\n} from './types';\r\nimport { NotificationType } from '../../main/Notifications/Notification';\r\nimport { parseXml } from '../xml/parseXml';\r\nimport type { IStringifyOptions } from 'qs';\r\nimport QueryString from 'qs';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { getWindow } from '../dom/getWindow';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\ndeclare global {\r\n interface Window {\r\n [key: string]: string;\r\n }\r\n\r\n interface Document {\r\n headers: any;\r\n }\r\n}\r\n\r\nfunction dispatchMessage(\r\n execution: Execution,\r\n type: NotificationType,\r\n message: TApiaMessage,\r\n) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: message.text!,\r\n stackTrace: message.label,\r\n title: message.title,\r\n type,\r\n }),\r\n );\r\n}\r\n\r\nfunction getAxios() {\r\n return import('axios').then((r) => r.default);\r\n}\r\n\r\nconst handleWrongResponse = (execution: Execution, error: Error) => {\r\n if (error instanceof InvalidSessionException) throw error;\r\n\r\n let errorMessage: string;\r\n if (typeof error !== 'string') {\r\n if (error.message) errorMessage = error.message;\r\n else errorMessage = error.toString();\r\n } else errorMessage = error;\r\n\r\n execution.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: errorMessage.replaceAll('AxiosError', 'Error'),\r\n }),\r\n );\r\n};\r\n\r\nexport function isJsonResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match('application/json');\r\n}\r\nexport function isXmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/xml/,\r\n );\r\n}\r\nexport function isHtmlResponse(response: AxiosResponse<unknown>) {\r\n return (response.headers['content-type'] as string).match(\r\n /(?:application|text)?\\/html/,\r\n );\r\n}\r\n\r\nexport function parseMessages(\r\n execution: Execution,\r\n response: TApiaSystemMessageObj,\r\n) {\r\n if (!response) return;\r\n const { exceptions, sysMessages, sysExceptions } = response;\r\n arrayOrArray(exceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'error'),\r\n );\r\n arrayOrArray(sysMessages?.message).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'warning'),\r\n );\r\n arrayOrArray(sysExceptions?.exception).forEach(\r\n dispatchMessage.bind(dispatchMessage, execution, 'error'),\r\n );\r\n}\r\n\r\nasync function handleResponse<LoadType extends Record<string, unknown>>(\r\n execution: Execution,\r\n result: AxiosResponse<string> | void,\r\n): Promise<TApiaApiAxiosResponse<LoadType> | null> {\r\n try {\r\n if (!result || result.data === undefined) {\r\n //\r\n } else {\r\n const parsedResponse = await parseSuccessfulResponse<LoadType>(\r\n execution,\r\n result,\r\n );\r\n\r\n return {\r\n ...result,\r\n data: parsedResponse,\r\n hasError:\r\n !!parsedResponse?.exceptions || !!parsedResponse?.sysExceptions,\r\n hasMessages: !!parsedResponse?.sysMessages,\r\n };\r\n }\r\n } catch (e: unknown) {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n return null;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport class InvalidSessionException extends Error {}\r\n\r\nexport const parseSuccessfulResponse = async <\r\n LoadType extends Record<string, unknown>,\r\n>(\r\n execution: Execution,\r\n response: AxiosResponse<string>,\r\n) => {\r\n let parsedObj: TApiaSystemMessageObj<LoadType> | void | undefined = undefined;\r\n if (isJsonResponse(response)) {\r\n if (typeof response.data === 'string')\r\n parsedObj = JSON.parse(\r\n response.data.trim(),\r\n ) as TApiaSystemMessageObj<LoadType> | void;\r\n else if (typeof response.data === 'object' && response.data)\r\n parsedObj = response.data;\r\n } else if (isXmlResponse(response)) {\r\n try {\r\n parsedObj = parseXml<LoadType>(response.data);\r\n } catch (e) {\r\n handleWrongResponse(execution, new Error(e as string));\r\n }\r\n } else if (isHtmlResponse(response)) {\r\n console.error(\r\n 'El contenido devuelto es Html, no se esperaba esa respuesta',\r\n );\r\n return null;\r\n }\r\n\r\n if (parsedObj) {\r\n const {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n load,\r\n ...rest\r\n } = parsedObj; // Session handling\r\n if (rest.code === '-1' && exceptions) {\r\n throw new InvalidSessionException();\r\n }\r\n\r\n parseMessages(execution, { exceptions, sysExceptions, sysMessages });\r\n\r\n if (load) {\r\n return { ...parsedObj, ...load, ...(rest as LoadType) };\r\n }\r\n return {\r\n actions,\r\n onClose,\r\n exceptions,\r\n sysExceptions,\r\n sysMessages,\r\n ...(rest as LoadType),\r\n };\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n* IMPORTANT!! The ApiaApi is programmed under the slogan that\r\n * **should never throw an exception**. **Errors** coming from\r\n * connectivity or exceptions on the server **will be handled\r\n * automatically** by ApiaApi, using the notification system\r\n * of the application. It is possible to determine in what context they should\r\n * be thrown those exceptions (global, main, modal) using the\r\n * alertsCategory configuration properties **(see errorsHandling.md)**.\r\n *\r\n * @param url String, the url you want to call\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.post<ResponseType>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de postData\r\n postData? unknown;\r\n postDataTreatement?: 'stringify' | undefined;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Response validator,\r\n // If it returns true, everything continues correctly\r\n // If it returns false, the ApiaApi throws a standard error.\r\n // If it returns string, ApiaApi throws the error returned in the string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // other configuration\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns The type of the return value depends on the type passed when calling the function. If there was an error it returns null.\r\n */\r\nexport async function post<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n DataType = unknown,\r\n T = unknown,\r\n>(\r\n execution: Execution,\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiPostConfig<DataType>,\r\n): TApiaApiResult<LoadType> {\r\n const postData =\r\n behaveConfig?.postDataTreatment === 'stringify'\r\n ? QueryString.stringify(\r\n behaveConfig.postData,\r\n behaveConfig.stringifyOptions,\r\n )\r\n : behaveConfig?.postData;\r\n\r\n const response = await (await getAxios())\r\n .post<\r\n T,\r\n AxiosResponse<string>,\r\n DataType | string\r\n >(actualUrl, postData, { ...behaveConfig?.axiosConfig, headers: { ...behaveConfig?.axiosConfig?.headers, ...execution.environment.headers } })\r\n .catch((e: unknown) => {\r\n handleWrongResponse(execution, new Error(e as string));\r\n });\r\n\r\n if (response) {\r\n const result = handleResponse<LoadType>(execution, response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n/**\r\n * IMPORTANTE!! El ApiaApi está programado bajo la consigna de que\r\n * **no debe tirar núnca una excepción**. **Los errores** provenientes\r\n * de la conectividad o de excepciones en el servidor **serán manejados\r\n * automáticamente** por el ApiaApi utilizando el sistema de notificaciones\r\n * de la aplicación. Es posible determinar en qué contexto deben\r\n * ser lanzadas esas excepciones (global, main, modal) utilizando las\r\n * propiedades de configuración alertsCategory **(ver errorsHandling.md)**.\r\n *\r\n * @param url String, el url al que se desea llamar\r\n * @param config interface IApiaApiRequestConfig<DataType>;\r\n *\r\n * @throws Nothing\r\n *\r\n * @example\r\n *\r\n * ApiaApi.get<TipoDeRespuesta>('url...', {\r\n axiosConfig?: AxiosRequestConfig;\r\n\r\n // Configuración de queryString\r\n queryData?: string | Record<string, unknown>;\r\n stringifyOptions?: QueryString.IStringifyOptions;\r\n\r\n // Validador de respuesta,\r\n // Si devuelve true, todo sigue correctamente\r\n // Si devuelve false, el ApiaApi tira un error estándar.\r\n // Si devuelve string, el ApiaApi tira el error devuelto en el string.\r\n validateResponse?: (\r\n response: AxiosResponse<DataType | null>,\r\n ) => boolean | string;\r\n\r\n // Configuración de alertas\r\n alertsImportance?: TAlertImportance;\r\n\r\n // Configuración de ApiaApiHandler, falta documentar\r\n handleLoad?: boolean;\r\n eventsHandler?: IEventsHandler;\r\n\r\n // Otra configuración\r\n colors?: TColors;\r\n debug?: boolean;\r\n }\r\n * @returns El tipo del valor devuelto depende del tipo pasado al llamar a la función. Si hubo un error devuelve null\r\n */\r\nexport async function get<\r\n LoadType extends Record<string, unknown> = Record<string, unknown>,\r\n T = unknown,\r\n D = unknown,\r\n>(\r\n execution: Execution,\r\n actualUrl: string,\r\n behaveConfig?: IApiaApiRequestConfig,\r\n): TApiaApiResult<LoadType> {\r\n const response = await (await getAxios())\r\n .get<\r\n T,\r\n AxiosResponse<string>,\r\n D\r\n >(actualUrl, { ...behaveConfig?.axiosConfig, headers: { ...behaveConfig?.axiosConfig?.headers, ...execution.environment.headers } })\r\n .catch((e: unknown) => {\r\n handleWrongResponse(\r\n execution,\r\n e instanceof Error ? e : new Error(e as string),\r\n );\r\n });\r\n if (response) {\r\n const result = await handleResponse<LoadType>(execution, response);\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport type MakeApiaUrlProps = {\r\n action?: string;\r\n ajaxUrl?: string;\r\n queryString?: string;\r\n stringifyOptions?: IStringifyOptions;\r\n tabId?: string | number;\r\n preventAsXmlParameter?: boolean;\r\n avoidTabId?: boolean;\r\n [key: string]: unknown;\r\n};\r\n\r\n/**\r\n * Creates an url based on the general requirements of Apia.\r\n * If the ajaxUrl property is not passed, it will use the\r\n * getWindow(execution).URL_REQUEST_AJAX. Its use is very simple, just pass the objects you\r\n * want to appear in the query string.\r\n *\r\n * @example makeApiaUrl({\r\n * ajaxUrl: 'the.endpoint.you.want',\r\n * queryString: 'an=existent&query=string',\r\n * action: 'theAction',\r\n * anotherProp: 15\r\n * })\r\n *\r\n * @returns the well formed url, in the example, the response url is:\r\n * /context/the.endpoint.you.want?an=existent&query=string&anotherProp=15&tabId=...&tokenId=...&action=theAction\r\n */\r\nexport function makeApiaUrl(execution: Execution, props?: MakeApiaUrlProps) {\r\n let actualQueryData: Record<string, unknown> | unknown = {};\r\n\r\n if (props) {\r\n const {\r\n ajaxUrl,\r\n queryString,\r\n stringifyOptions,\r\n shouldAvoidTabId,\r\n preventAsXmlParameter,\r\n avoidTabId,\r\n tabId: outerTabId,\r\n ...rest\r\n } = props;\r\n actualQueryData = { ...rest };\r\n }\r\n\r\n const queryString = QueryString.stringify(\r\n actualQueryData,\r\n props?.stringifyOptions ?? {\r\n arrayFormat: 'repeat',\r\n encodeValuesOnly: false,\r\n },\r\n );\r\n\r\n let actualAjaxUrl = props?.ajaxUrl ?? getWindow(execution).URL_REQUEST_AJAX;\r\n if (actualAjaxUrl.indexOf('?') === actualAjaxUrl.length - 1) {\r\n actualAjaxUrl = actualAjaxUrl.slice(0, actualAjaxUrl.length - 1);\r\n }\r\n if (!actualAjaxUrl.startsWith('/')) {\r\n actualAjaxUrl = `/${actualAjaxUrl}`;\r\n }\r\n\r\n const match = getWindow(execution)?.TAB_ID_REQUEST?.match(/tokenId=(\\w+)/);\r\n const currentTokenId = (match ?? [])[1];\r\n\r\n let tabId = (\r\n props?.tabId\r\n ? `&tabId=${props.tabId}&tokenId=${currentTokenId}`\r\n : getWindow(execution).TAB_ID_REQUEST\r\n ).slice(1);\r\n if (props?.avoidTabId) {\r\n tabId = '';\r\n }\r\n\r\n let { CONTEXT } = getWindow(execution);\r\n if (CONTEXT?.endsWith('/')) {\r\n CONTEXT += CONTEXT.slice(0, CONTEXT.length - 1);\r\n }\r\n\r\n let timestamp = `timestamp=${Date.now()}&`;\r\n if (\r\n (props?.queryString && props.queryString.includes('timestamp=')) ||\r\n queryString?.includes('timestamp=')\r\n ) {\r\n timestamp = '';\r\n }\r\n\r\n const contextWord = CONTEXT.replaceAll('/', '');\r\n actualAjaxUrl = actualAjaxUrl.match(\r\n new RegExp(`^(?:(?:/?${contextWord})?/)?(.+)$`),\r\n )?.[1] as string;\r\n\r\n return `${\r\n contextWord ? '/' : ''\r\n }${contextWord}/${actualAjaxUrl}?${timestamp}${\r\n !props?.preventAsXmlParameter ? 'asXml=true&' : ''\r\n }${props?.queryString ? `${props.queryString}&` : ''}${\r\n queryString ? `${queryString}&` : ''\r\n }${tabId}`;\r\n}\r\n","import { Callback, Callbacks, Map, UnSubscriber } from './types';\r\n\r\nexport type { Callback, Map, UnSubscriber } from './types';\r\n\r\n/**\r\n * @public\r\n *\r\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\r\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\r\n *\r\n * @typeParam Events - An extension of `Map` where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class EventEmitter<Events extends Map> {\r\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\r\n on: {} as Callbacks<Events>,\r\n once: {} as Callbacks<Events>,\r\n };\r\n protected enabled = true;\r\n\r\n protected debugMode = false;\r\n debug(enable = true) {\r\n this.debugMode = enable;\r\n }\r\n\r\n /**\r\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\r\n *\r\n * @param event - The event name to emit.\r\n * @param data - The data associated with the event. Its type is dependent on the event name.\r\n */\r\n emit<K extends keyof Events>(event: K, data: Events[K]) {\r\n this.callbacks.on[event]?.forEach((current) => current(data));\r\n\r\n this.callbacks.once[event]?.forEach((current) => current(data));\r\n this.callbacks.once[event] = [];\r\n }\r\n\r\n /**\r\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\r\n */\r\n get isEnabled() {\r\n return this.enabled;\r\n }\r\n\r\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\r\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\r\n (c) => c !== cb,\r\n );\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\r\n *\r\n * @param event - The event name to listen to.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\r\n this.callbacks.on[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.on[event] = this.callbacks.on[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n\r\n /**\r\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\r\n *\r\n * @param event - The event name to listen to for a single occurrence.\r\n * @param cb - The callback function to be invoked when the event is emitted.\r\n * @returns A function to unsubscribe the event listener.\r\n */\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\r\n this.callbacks.once[event].push(cb);\r\n\r\n return () => {\r\n this.callbacks.once[event] = this.callbacks.once[event].filter(\r\n (c) => c !== cb,\r\n );\r\n };\r\n }\r\n}\r\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype Setter<T> = (prevState: T) => T;\r\n\r\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\r\n return typeof data === 'function';\r\n}\r\n\r\n/**\r\n * @private\r\n */\r\ntype EmitterState<Events extends Map> = {\r\n [K in keyof Events]: Events[K];\r\n};\r\n\r\n/**\r\n * Extends EventEmitter to manage and emit events with state persistence.\r\n * This class allows emitting and listening to typed events while also keeping\r\n * a state that can be accessed synchronously for each event.\r\n *\r\n * @param initialState - If given will be passed to subscriptions\r\n *\r\n * @template Events - A mapping of event names to their associated data types.\r\n * @extends EventEmitter<Events>\r\n */\r\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\r\n protected state = {} as EmitterState<Events>;\r\n\r\n constructor(initialState?: Partial<Events>) {\r\n super();\r\n\r\n this.state = Object.assign({}, initialState) as Events;\r\n }\r\n\r\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\r\n this.state[event] = data;\r\n super.emit(event, data);\r\n }\r\n\r\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\r\n if (this.state[event]) cb(this.state[event]);\r\n\r\n return super.on(event, cb);\r\n }\r\n\r\n once<K extends keyof Events>(\r\n event: K,\r\n cb: Callback<Events, K>,\r\n ): UnSubscriber {\r\n if (this.state[event]) {\r\n cb(this.state[event]);\r\n\r\n /**\r\n * Given that the information has already been sent, the subscription is not necessary\r\n */\r\n return () => {};\r\n }\r\n\r\n return super.once(event, cb);\r\n }\r\n\r\n /**\r\n * Retrieves the stored state for a given event\r\n */\r\n getState<K extends keyof Events>(event: K): Events[K] {\r\n return this.state[event];\r\n }\r\n\r\n /**\r\n * Just an alias for emit, with the advantage that can be called with a callback as second parameter in which case behaves exactly as react's setState.\r\n */\r\n setState<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.emit(event, actualData);\r\n }\r\n}\r\n","import { Map } from './EventEmitter';\r\nimport { StatefulEmitter, isSetter } from './StatefulEmitter';\r\nimport { SetStateAction } from './types';\r\n\r\ntype BouncingMap<Events extends Map> = {\r\n [K in keyof Events]: number;\r\n};\r\n\r\nconst NullObject = Symbol('NullObject');\r\n\r\ntype ThrottlingMap<Events extends Map> = {\r\n [K in keyof Events]: Events[K] | typeof NullObject;\r\n};\r\n\r\ntype ThrottlingMarkers<Events extends Map> = {\r\n [K in keyof Events]: boolean;\r\n};\r\n\r\nexport type DebounceOptions = Partial<{ timing: number }>;\r\n\r\nexport type ThrottleOptions = Partial<{\r\n emitOnStart?: boolean;\r\n timing: number;\r\n}>;\r\n\r\n/**\r\n * @public\r\n *\r\n * The BouncingEmitter class is an extension of EventEmitter which adds debouncing and throttling functionality.\r\n *\r\n * @typeParam — Events - An extension of Map where the key is the event name and the value is the type of data associated with that event.\r\n */\r\nexport class BouncingEmitter<\r\n Events extends Map,\r\n> extends StatefulEmitter<Events> {\r\n protected bouncingTimeouts = {} as BouncingMap<Events>;\r\n\r\n protected defaultTiming = 100;\r\n\r\n /**\r\n * Debounces a event emit with until there is no call to the emit methods by (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * _____________________E\r\n */\r\n debounce<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: DebounceOptions,\r\n ) {\r\n clearTimeout(this.bouncingTimeouts[event]);\r\n this.bouncingTimeouts[event] = setTimeout(() => {\r\n this.emit(event, data);\r\n }, configuration?.timing ?? this.defaultTiming) as unknown as number;\r\n }\r\n\r\n /**\r\n * Throttles a event emit with the warranty that the data will be emitted at most every (timing)ms. Take the following event throttling, where each E is a call to this method and each character represents 20ms:\r\n *\r\n * E_E_E_E_E_E_E_E_E\r\n *\r\n * If timing is configured to 100ms, which is the default, the emission will occur as follows:\r\n *\r\n * ____E____E____E______E\r\n *\r\n * @param configuration.emitOnStart - Emits an event on the first call to throttle when no pending throttle is stored. **If emitOnStart is true and an only call to throttle is made, it will emit an only event.**\r\n */\r\n\r\n protected throttleData = {} as ThrottlingMap<Events>;\r\n protected throttleEmittedOnInit = {} as ThrottlingMarkers<Events>;\r\n throttle<K extends keyof Events>(\r\n event: K,\r\n data: Events[K],\r\n configuration?: ThrottleOptions,\r\n ) {\r\n if (!this.throttleEmittedOnInit[event] && configuration?.emitOnStart) {\r\n this.throttleEmittedOnInit[event] = true;\r\n setTimeout(() => {\r\n this.throttleEmittedOnInit[event] = false;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n this.emit(event, data);\r\n } else if (!configuration?.emitOnStart) {\r\n if (\r\n this.throttleData[event] === NullObject ||\r\n !(event in this.throttleData)\r\n ) {\r\n setTimeout(() => {\r\n this.emit(event, this.throttleData[event] as Events[K]);\r\n this.throttleData[event] = NullObject;\r\n }, configuration?.timing ?? this.defaultTiming);\r\n }\r\n this.throttleData[event] = data;\r\n }\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and debounce\r\n */\r\n setStateDebounced<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: DebounceOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.debounce(event, actualData, configuration);\r\n }\r\n\r\n /**\r\n * This method is a mix between setState and throttle\r\n */\r\n setStateThrottled<K extends keyof Events>(\r\n event: K,\r\n data: SetStateAction<Events[K]>,\r\n configuration?: ThrottleOptions,\r\n ): void {\r\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\r\n\r\n this.throttle(event, actualData, configuration);\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { getWindow } from '../dom/getWindow';\r\n\r\nexport function getLabel(\r\n execution: Execution,\r\n label: string,\r\n replacers?: Partial<{\r\n text: Record<string, string>;\r\n tooltip: Record<string, string>;\r\n }>,\r\n) {\r\n const original = (getWindow(execution) as any).labels[label] as {\r\n text: string;\r\n tooltip: string;\r\n };\r\n\r\n if (!original) {\r\n return {\r\n text: `LblNotPrealoded: ${label}`,\r\n tooltip: `LblNotPrealoded: ${label}`,\r\n };\r\n }\r\n\r\n const labelObject = { ...original };\r\n\r\n if (replacers?.text) {\r\n Object.entries(replacers.text).forEach(([key, value]) => {\r\n labelObject.text = labelObject.text.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n if (replacers?.tooltip) {\r\n Object.entries(replacers.tooltip).forEach(([key, value]) => {\r\n labelObject.tooltip = labelObject.tooltip.replaceAll(`<${key}>`, value);\r\n });\r\n }\r\n\r\n return labelObject;\r\n}\r\n\r\nexport const labels = {\r\n errorConfirmationFailed: () => 'Error al confirmar',\r\n errorRegexNotValidated: () => 'La expresión regular no fue validada.',\r\n errorCouldNotSync: () => 'No se pudo sincronizar',\r\n errorFieldRequired: () => 'Este campo es requerido',\r\n errorTranslateRequired: (execution: Execution, lang: string) =>\r\n getLabel(execution, 'lblReqLang', { text: { TOK1: lang } }).text,\r\n errorLoadForms: () =>\r\n 'Error al inicializar los formularios, contacte al administrador.',\r\n errorOnEvent: (eventName: string, className: string) =>\r\n (window as any).SERVER_MODE\r\n ? 'Error al ejecutar la clase de negocios, contacte al administrador.'\r\n : `Error on event ${eventName}, className ${className}`,\r\n};\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { SetStateAction } from '../../../util/events/types';\r\nimport type { Grid } from './fields';\r\n\r\nexport class WithProperties<Props extends Record<string, any>> {\r\n properties: Props = {} as Props;\r\n private parentGrid: null | Grid = null;\r\n\r\n constructor(initialState?: Props) {\r\n if (initialState) {\r\n this.properties = initialState;\r\n }\r\n makeObservable(this, { properties: observable, setProperty: action });\r\n }\r\n\r\n getProperty<K extends keyof Props>(propName: K): Props[K] {\r\n return this.properties[propName];\r\n }\r\n setProperty<K extends keyof Props>(\r\n propName: K,\r\n propValue: SetStateAction<Props[K]>,\r\n ) {\r\n const value =\r\n propValue instanceof Function\r\n ? propValue(this.properties[propName])\r\n : propValue;\r\n\r\n this.properties[propName] = value;\r\n\r\n if (propName === 'visibilityHidden') {\r\n this.parentGrid?.refreshColumnsVisibilities();\r\n }\r\n }\r\n\r\n setParentGrid(grid: Grid) {\r\n this.parentGrid = grid;\r\n return this;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\n\r\nexport function getDocument(execution: Execution) {\r\n return execution.environment.document;\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { getDocument } from '../dom/getDocument';\r\nimport { getWindow } from '../dom/getWindow';\r\n\r\nexport function getCurrentTabsString(execution: Execution) {\r\n const tabsList = (getWindow(execution).tabsController as any)?.tabsList as {\r\n id: string;\r\n state: { isOpen: boolean };\r\n }[];\r\n\r\n if (tabsList)\r\n return `${tabsList\r\n .map((c) => (c.state.isOpen ? c.id : -1))\r\n .filter((c) => !(typeof c === 'number'))\r\n .join(',')}~${getDocument(execution).scrollingElement?.scrollTop ?? 0}`;\r\n}\r\n","import type { Execution } from '../..';\r\nimport { getCurrentTabsString } from '../../../../util/app/getCurrentTabsString';\r\nimport { getWindow } from '../../../../util/dom/getWindow';\r\n\r\nexport const actions = {\r\n forms: 'apia.execution.FormAction.run',\r\n formSubmit: (execution: Execution) =>\r\n `${getWindow(execution).CONTEXT}/apia.execution.FormAction.run?action=fireFieldEvent&currentTab=${getCurrentTabsString(execution)}${getWindow(execution).TAB_ID_REQUEST}`,\r\n};\r\n","export const eventTypes = {\r\n EVENT_FLD_ONCHANGE: 1,\r\n EVENT_FLD_ONCLICK: 4,\r\n EVENT_FLD_POPULATE: 5,\r\n EVENT_FLD_ONMODALRETURN: 37,\r\n EVENT_FLD_ONMODALCHANGE: 36,\r\n\r\n // Grid Events\r\n EVENT_FLD_GRID_ADD: 60,\r\n EVENT_FLD_GRID_DEL: 61,\r\n EVENT_FLD_GRID_SORT: 62,\r\n EVENT_FLD_GRID_COLUMN_SELECT: 65,\r\n\r\n // Print Events\r\n EVENT_FRM_ONBEFORE_PRINT: 63,\r\n EVENT_FRM_ONAFTER_PRINT: 64,\r\n};\r\n","import fieldProps from './fieldProps';\r\nimport formProps from './formProps';\r\n\r\nconst IProperty = {\r\n ...fieldProps,\r\n ...formProps,\r\n} as const;\r\n\r\nexport default IProperty;\r\n","import IProperty from '../constants/IProperty';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { Field } from '../Field';\r\nimport { File, Grid, Select } from '../fields';\r\nimport { parseMessages } from '../../../../util/api/apiaApi';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TApiaTreeProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type { Execution } from '../../index';\r\n\r\nexport const setAjaxFormResponse = async (\r\n execution: Execution,\r\n response: TFieldAjaxEventResponsePayload,\r\n) => {\r\n const forms = arrayOrArray(response.form);\r\n for (let i = 0; i < forms.length; i += 1) {\r\n const formId = forms[i].i;\r\n const form = forms[i];\r\n const [frmParent, id] = formId.split('_');\r\n const apiaForm = execution.getFormById(id, frmParent as 'E');\r\n\r\n arrayOrArray(form.cusCmp).forEach((c) => {\r\n apiaForm\r\n ?.getCustomComponentByFldId(Number.parseInt(String(c.id)))\r\n ?.processResult({ state: c.state });\r\n });\r\n\r\n /** Refresh the updated grids */\r\n const changedGrids = arrayOrArray(form.changedGrids.grdId);\r\n changedGrids.forEach(({ id }) => {\r\n (apiaForm?.getFieldById(id) as Grid)?.refresh();\r\n });\r\n\r\n if (!apiaForm) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: `Form with id ${formId} not found`,\r\n }),\r\n );\r\n\r\n continue;\r\n }\r\n\r\n // Iterate each field element in form element\r\n const ajaxFields = arrayOrArray(forms[i].field);\r\n for (let f = 0; f < ajaxFields.length; f += 1) {\r\n // got id of field to alter\r\n const apiField = apiaForm?.getFieldById(ajaxFields[f].i) as Field<any>;\r\n if (apiField) {\r\n // set field possible VALUES for select/multi and radio\r\n if (ajaxFields[f].possibleValues !== undefined) {\r\n const possibleValuesItems = arrayOrArray(\r\n ajaxFields[f].possibleValues,\r\n );\r\n const items = arrayOrArray(possibleValuesItems[0]?.item);\r\n if (items) {\r\n if (\r\n ['multiple', 'radio', 'select'].includes(\r\n apiField.definition.fieldType,\r\n )\r\n ) {\r\n (apiField as Select).setProperty(\r\n 'possibleValue',\r\n items.map((current) => ({\r\n value: current.v,\r\n label: current.text,\r\n })),\r\n );\r\n }\r\n }\r\n }\r\n if (\r\n ['tree'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const propertiesObj: TApiaTreeProperties =\r\n ajaxFields[f]?.field?.properties || ({} as TApiaTreeProperties);\r\n\r\n Object.keys(propertiesObj).forEach((key) => {\r\n let value = propertiesObj[key as keyof TApiaTreeProperties];\r\n\r\n if (typeof value === 'string') {\r\n const lowerValue = value.toLowerCase();\r\n if (lowerValue === 't' || lowerValue === 'true') {\r\n value = true;\r\n } else if (lowerValue === 'f' || lowerValue === 'false') {\r\n value = false;\r\n }\r\n }\r\n\r\n apiField.setProperty(key, value);\r\n });\r\n const possibleValues = arrayOrArray(\r\n ajaxFields[f]?.field?.possibleValue,\r\n );\r\n apiField.setProperty('possibleValue', possibleValues);\r\n }\r\n if (\r\n ['file'].includes(apiField.definition.fieldType) &&\r\n ajaxFields[f].field\r\n ) {\r\n const fileField = apiField as File;\r\n\r\n if (ajaxFields[f]?.field?.file_prp) {\r\n fileField.loadFromDefinition(\r\n ajaxFields[f]?.field?.file_prp as string,\r\n );\r\n }\r\n }\r\n }\r\n // set VALUE to fldId\r\n if (ajaxFields[f].c !== undefined) {\r\n const { c } = ajaxFields[f];\r\n\r\n let value: any = undefined;\r\n if (typeof c !== 'object' || (c as any).k !== 't') {\r\n // <c k=\"t\" Se usa para marcar campo sin cambios ??????\r\n if (typeof c === 'string') {\r\n value = c;\r\n } else {\r\n /**\r\n * Este procedimiento se usa para concatenar los distintos índices de textarea, editor, etc\r\n */\r\n const valuesArray = arrayOrArray(c?.valueAttr);\r\n value = valuesArray.reduce((reduced, current) => {\r\n return reduced + current.v;\r\n }, '');\r\n }\r\n }\r\n\r\n /**\r\n * Si ponemos que apiField es instanceof FieldWithAttribute generamos una dependencia\r\n * circular que rompe la compilación !!!\r\n */\r\n if ((apiField as any).attribute && value !== undefined) {\r\n (apiField as any).setValue(value);\r\n }\r\n }\r\n // set PROPERTIES to fldId\r\n if (ajaxFields[f].e !== undefined) {\r\n const ajaxProps = arrayOrArray(ajaxFields[f].e);\r\n for (let c = 0; c < ajaxProps.length; c += 1) {\r\n if (ajaxProps[c]?.f) {\r\n const prop = arrayOrArray(ajaxProps[c]?.f);\r\n for (let p = 0; p < prop.length; p += 1) {\r\n if (prop[p]?.i) {\r\n apiField.setProperty(prop[p]?.i, prop[p]?.v);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Formulario invisible\r\n if (\r\n form.v === 't' &&\r\n String(apiaForm.properties[IProperty.PROPERTY_FORM_HIDDEN]) !== 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, true);\r\n } else if (\r\n form.v === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_HIDDEN)) === 'true'\r\n ) {\r\n apiaForm.setProperty(IProperty.PROPERTY_FORM_HIDDEN, false);\r\n }\r\n\r\n // Formulario cerrado\r\n if (\r\n form.c === 't' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) !== 'true'\r\n ) {\r\n apiaForm.closeForm();\r\n } else if (\r\n form.c === 'f' &&\r\n String(apiaForm.getProperty(IProperty.PROPERTY_FORM_CLOSED)) === 'true'\r\n ) {\r\n apiaForm.openForm();\r\n }\r\n }\r\n\r\n if (response.proccess?.p) {\r\n execution.getProcess()?.setPriority(response.proccess.p);\r\n }\r\n\r\n if (response.data) {\r\n parseMessages(execution, response.data);\r\n }\r\n};\r\n","import type { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\nimport { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TCreateNewField = (\r\n execution: Execution,\r\n field: Field | FieldWithAttribute | CustomComponent,\r\n) => IApiaField | null;\r\n\r\nexport type TAsyncCreateNewField = (\r\n execution: Execution,\r\n field: Field | FieldWithAttribute | CustomComponent,\r\n) => Promise<IApiaField | null>;\r\n\r\nlet creator: TCreateNewField | null = null;\r\n\r\nexport const asyncCreateNewField: TAsyncCreateNewField = async (\r\n execution,\r\n fld,\r\n) => {\r\n if (!creator) {\r\n creator = (await import('./createApiaField')).createNewField;\r\n }\r\n\r\n return creator(execution, fld);\r\n};\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport type {\r\n TApiaFieldBaseDefinition,\r\n TFieldServerEvent,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport type { Form } from './Form';\r\nimport { WithProperties } from './WithProperties';\r\nimport { actions } from './constants/actions';\r\nimport { eventTypes } from './constants/eventTypes';\r\nimport { setAjaxFormResponse } from './events/setAjaxFormResponse';\r\nimport type {\r\n FieldValidationState,\r\n FireEventParameters,\r\n TFieldAjaxEventResponsePayload,\r\n} from './types';\r\nimport type { TApiaFieldCommonProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type { ApiaFunctions, IApiaField } from '../../../programming';\r\nimport { getCurrentTabsString } from '../../../util/app/getCurrentTabsString';\r\nimport { asyncCreateNewField } from '../../../programming/utils/asynCreateApiaField';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\n\r\nexport type TFncParams = {\r\n type: 'V' | 'P' | 'E';\r\n value?: string;\r\n attId?: string | number;\r\n};\r\n\r\nlet af: ApiaFunctions | null = null;\r\n\r\nexport async function getApiaFunctions(execution: Execution) {\r\n if (!af) {\r\n await import('../../../programming/ApiaFunctions').then(\r\n ({ ApiaFunctions }) => (af = new ApiaFunctions(execution)),\r\n );\r\n }\r\n return af!;\r\n}\r\n\r\nexport abstract class Field<\r\n FieldProps extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n } = {\r\n definition: Omit<FieldDefinition, 'properties'>;\r\n },\r\n> extends WithProperties<FieldProps> {\r\n protected form: Form = {} as Form;\r\n\r\n definition: State['definition'];\r\n state: Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n } = {\r\n validation: { dirty: false, errorMessage: '', synchronizing: false },\r\n } as Omit<State, 'definition'> & {\r\n validation: FieldValidationState;\r\n };\r\n\r\n constructor({ properties, ...definition }: FieldDefinition) {\r\n super();\r\n\r\n this.properties = properties;\r\n this.definition = definition;\r\n\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions(this.form.execution))\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n let idx: any;\r\n if (getWindow(this.form.execution).IS_EDIT_GRID_MODAL) {\r\n idx = getWindow(this.form.execution).MODAL_INDEX;\r\n } else {\r\n idx = this.definition?.index || 0;\r\n }\r\n return {\r\n ajaxUrl: actions.forms,\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n action: 'fireFieldEvent',\r\n frmParent: this.form.definition.frmParent,\r\n frmId: this.form.definition.id,\r\n fldId: this.definition.id,\r\n index: idx,\r\n evtId,\r\n nuevo: true,\r\n preventAsXmlParameter: true,\r\n ...additionalParams,\r\n };\r\n }\r\n\r\n protected async fireScriptEvent(eventName: string): Promise<boolean> {\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (events.length > 0) {\r\n for (const event of events) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: IApiaField,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n (await asyncCreateNewField(this.form.execution, this))!,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n return result;\r\n } catch (e) {\r\n console.error(e);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(eventName, event.evtName),\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n protected async fireAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n const response = await post<TFieldAjaxEventResponsePayload>(\r\n this.form.execution,\r\n await makeApiaUrl(\r\n this.form.execution,\r\n this.getServerEventParams(event.evtId, {\r\n isAjax: true,\r\n }),\r\n ),\r\n {\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n },\r\n );\r\n\r\n if (response?.data?.success) {\r\n await setAjaxFormResponse(this.form.execution, response.data);\r\n return true;\r\n }\r\n } catch (rejectedValue) {\r\n console.error(rejectedValue);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: String(rejectedValue),\r\n }),\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n protected async fireNoAjaxServerEvent(\r\n event: TFieldServerEvent,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n const p = this.getServerEventParams(event.evtId, params);\r\n if (\r\n (getWindow(this.form.execution).config as any).execution\r\n .reloadOnNoAjaxEvents\r\n ) {\r\n getWindow(this.form.execution).location.assign(\r\n await makeApiaUrl(this.form.execution, {\r\n ...p,\r\n currentTab: getCurrentTabsString(this.form.execution),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n getWindow(this.form.execution).location.assign(\r\n await makeApiaUrl(this.form.execution, {\r\n ...p,\r\n currentTab: getCurrentTabsString(this.form.execution),\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n }\r\n\r\n return false;\r\n }\r\n protected async fireServerEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let event = this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n const hasBinding = this.definition.entityBind;\r\n if (!event && hasBinding) {\r\n event = {\r\n evtId: eventTypes.EVENT_FLD_ONCHANGE,\r\n isAjax: true,\r\n evtName: 'onChange',\r\n };\r\n }\r\n\r\n if (event) {\r\n const isAjax = event.isAjax;\r\n\r\n if (isAjax) {\r\n return this.fireAjaxServerEvent(event, params);\r\n } else {\r\n return this.fireNoAjaxServerEvent(event, params);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n async fireEvent(\r\n eventName: string,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n let result = await this.fireScriptEvent(eventName);\r\n if (result) {\r\n result = await this.fireServerEvent(eventName, params);\r\n }\r\n\r\n /**\r\n * No es necesario mostrar errores ya que cada fireXXXEvent sabe hacerlo por sí mismo.\r\n */\r\n\r\n return result;\r\n }\r\n\r\n getForm() {\r\n return this.form;\r\n }\r\n\r\n protected hasEventsOfType(eventName: string) {\r\n return (\r\n this.definition.serverEvents?.find((c) => c.evtName === eventName) ||\r\n this.definition.scriptEvents?.find((c) => c.evtName === eventName)\r\n );\r\n }\r\n\r\n protected hasServerAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && c.isAjax,\r\n );\r\n }\r\n\r\n protected hasServerNoAjaxEventsOfType(eventName: string) {\r\n return this.definition.serverEvents?.find(\r\n (c) => c.evtName === eventName && !c.isAjax,\r\n );\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n public async validate(): Promise<boolean | Field> {\r\n return true;\r\n }\r\n\r\n markAsRendered() {\r\n this.getForm().markFieldAsRendered(\r\n this.definition.id,\r\n this.definition.index,\r\n );\r\n }\r\n}\r\n","import { TApiaButtonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport type ButtonEvents = 'onClick';\r\n\r\nexport class Button extends Field<TApiaButtonProperties> {\r\n fireEvent(eventName: ButtonEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { EventEmitter } from '@apia/util';\r\nimport { TApiaCaptchaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\n\r\nimport { Field } from '../../Field';\r\nimport { Form } from '../../Form';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaCaptchaDefinition } from '../../../../InitialData/types/fields/TApiaCaptchaDefinition';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\n\r\nexport class Captcha extends Field<\r\n TApiaCaptchaProperties,\r\n TApiaCaptchaDefinition,\r\n {\r\n definition: Omit<TApiaCaptchaDefinition, 'properties'>;\r\n value: string;\r\n url: string;\r\n }\r\n> {\r\n private static emitter = new EventEmitter<{ confirm: null }>();\r\n public static reload() {\r\n this.emitter.emit('confirm', null);\r\n }\r\n\r\n private id: string = '';\r\n\r\n private static confirmParams: Record<string, string> = {};\r\n public static getConfirmParams() {\r\n return this.confirmParams;\r\n }\r\n\r\n constructor(definition: TApiaCaptchaProperties) {\r\n super(definition as TApiaCaptchaDefinition);\r\n this.state.value = '';\r\n this.properties.name = '__captcha__';\r\n\r\n Captcha.emitter.on('confirm', () => {\r\n this.generateImgUrl();\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.id = this.getCaptchaId();\r\n this.generateImgUrl();\r\n }\r\n\r\n private getCaptchaId() {\r\n return `${getWindow(this.form.execution).TAB_ID}${this.form.definition.frmParent}_${this.form.definition.id}`;\r\n }\r\n public getUrl() {\r\n return this.state.url;\r\n }\r\n\r\n public generateImgUrl() {\r\n this.state.url = `${getWindow(this.form.execution).CONTEXT}/captchaImg?captchaName=${this.getId()}&t=${new Date().getTime()}`;\r\n }\r\n\r\n public generateVoiceUrl() {\r\n return `${getWindow(this.form.execution).CONTEXT}/captchaAudio?captchaName=${this.getId()}&t=${new Date().getTime()}&langCode=${getWindow(this.form.execution).LANG_CODE}`;\r\n }\r\n\r\n public getId() {\r\n return this.id;\r\n }\r\n\r\n public setValue(value: string) {\r\n this.state.value = value;\r\n this.state.validation.errorMessage = '';\r\n Captcha.confirmParams = { [this.id]: value };\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n this.id = this.getCaptchaId();\r\n if (this.state.value === '' && !this.getForm().definition.readOnly) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n } else {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n }\r\n}\r\n","export type RetryConfiguration = {\r\n retries: number;\r\n timeout: number;\r\n};\r\n\r\nexport class TooMuchRetriesException extends Error {}\r\n\r\nfunction timeout(ms: number) {\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\r\n\r\n/**\r\n * Ejecuta el callback provisto y verifica el resultado contra el método checkSuccess. En caso de que checkSuccess devuelva false, reintenta en el timeout especificado, siempre que las restricciones de configuration.retries lo permita.\r\n *\r\n * En caso de fallar demasiadas veces, eleva una excepción de tipo TooMuchRetriesException\r\n *\r\n */\r\nexport async function asyncRetry<ReturnType>(\r\n cb: () => Promise<ReturnType>,\r\n checkSuccess: (value: ReturnType) => boolean,\r\n configuration: RetryConfiguration = {\r\n retries: 3,\r\n timeout: 300,\r\n },\r\n): Promise<ReturnType> {\r\n return new Promise<ReturnType>((resolve, reject) => {\r\n (async () => {\r\n const tryIt = async () => {\r\n const res = await cb();\r\n return checkSuccess(res) ? res : null;\r\n };\r\n\r\n for await (const _ of new Array(configuration.retries)) {\r\n const res = await tryIt();\r\n if (res) {\r\n resolve(res);\r\n return;\r\n }\r\n await timeout(configuration.timeout);\r\n }\r\n\r\n reject(new TooMuchRetriesException());\r\n })();\r\n });\r\n}\r\n","export type Comparator<T> = (a: T, b: T) => boolean;\r\n\r\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\r\n if (Object.is(a, b)) return true;\r\n\r\n if (!Object.is(a, b) && typeof a !== typeof b) {\r\n return false;\r\n }\r\n\r\n if (typeof a === 'object') {\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b) || a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < a.length; i++) {\r\n if (!Object.is(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if (a && b) {\r\n for (const [key, value] of Object.entries(a)) {\r\n if (!Object.is(value, b[key])) {\r\n return false;\r\n }\r\n }\r\n for (const [key, value] of Object.entries(b)) {\r\n if (!Object.is(value, a[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } else if ((a && !b) || (!a && b)) {\r\n return false;\r\n }\r\n }\r\n\r\n return a === b;\r\n};\r\n","import { isTrue } from '@apia/util';\r\nimport type { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\nexport function isFieldShowAsText(\r\n f: Pick<FieldWithAttribute<any, any, any>, 'properties' | 'getForm'>,\r\n): boolean {\r\n return (\r\n isTrue(f.properties.disabled) ||\r\n isTrue(f.getForm().definition.readonly) ||\r\n isTrue(f.getForm().definition.readOnly) ||\r\n isTrue(f.properties.inputAsText)\r\n );\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttributeState, SetValueOptions } from './types';\r\nimport { Field } from './Field';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { IApiaApiPostConfig } from '../../../util/api/types';\r\nimport { labels } from '../../../util/labels/labels';\r\nimport {\r\n TooMuchRetriesException,\r\n asyncRetry,\r\n} from '../../../util/other/asyncRetry';\r\nimport {\r\n TApiaFieldValueType,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { actions } from './constants/actions';\r\nimport { shallowEqual } from '../../../util/comparators/shallowEqual';\r\nimport { TApiaFieldWithAttributeProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { MakeApiaUrlProps } from '../../../util/api/apiaApi';\r\nimport { Form } from './Form';\r\nimport { isFieldShowAsText } from './util/isFieldShowAsText';\r\n\r\nexport class Attribute {\r\n constructor(\r\n public readonly id: string,\r\n public readonly name: string,\r\n public readonly title: string,\r\n public readonly valueType: TApiaFieldValueType,\r\n ) {}\r\n}\r\n\r\nexport abstract class FieldWithAttribute<\r\n FieldProps extends\r\n TApiaFieldWithAttributeProperties = TApiaFieldWithAttributeProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n FieldWithAttributeState<FieldDefinition, FieldProps, ValueType>\r\n> {\r\n #lastOnChangeValue: ValueType | null = null;\r\n protected lastSynchronizationValue: ValueType | null = null;\r\n\r\n public readonly attribute: Attribute;\r\n\r\n constructor({\r\n attId,\r\n attName,\r\n attLabel,\r\n valueType,\r\n value,\r\n ...definition\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(definition as FieldDefinition);\r\n\r\n this.attribute = new Attribute(attId, attName, attLabel, valueType);\r\n\r\n this.state.value = value;\r\n\r\n this.state.validation = {\r\n dirty: false,\r\n errorMessage: null,\r\n synchronizing: false,\r\n };\r\n\r\n makeObservable(this, {\r\n attribute: observable,\r\n });\r\n }\r\n\r\n async fireEvent(eventName: string): Promise<boolean> {\r\n if (this.getValidationState().dirty) {\r\n return Promise.resolve(false);\r\n }\r\n\r\n if (eventName === 'onChange') {\r\n if (this.getValue() === this.#lastOnChangeValue) {\r\n return true;\r\n } else {\r\n const res = await super.fireEvent(eventName);\r\n if (res) {\r\n this.#lastOnChangeValue = this.getValue();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return super.fireEvent(eventName);\r\n }\r\n protected async getInitialValue({\r\n value,\r\n }: TApiaFieldWithAttributeBaseProps<FieldProps>): Promise<ValueType> {\r\n return value;\r\n }\r\n public getValidationState() {\r\n return this.state.validation;\r\n }\r\n public getValue() {\r\n return this.state.value;\r\n }\r\n public setValue(newValue: ValueType, options?: SetValueOptions) {\r\n if (isFieldShowAsText(this) || shallowEqual(newValue, this.getValue()))\r\n return Promise.resolve(true);\r\n\r\n this.state.value = newValue;\r\n this.state.validation.errorMessage = null;\r\n\r\n if (options?.synchronize === false) {\r\n this.lastSynchronizationValue = newValue;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return this.synchronize(newValue).then((res) => {\r\n if (res) {\r\n if (options?.markAsDirty !== false) {\r\n this.form.execution.state.hasChangedAnything = true;\r\n }\r\n return this.fireEvent('onChange');\r\n }\r\n return Promise.resolve(false);\r\n });\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ValueType,\r\n ): IApiaApiPostConfig<any> {\r\n return {\r\n postData: {\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n };\r\n }\r\n protected getSynchronizeUrl(params?: Record<string, unknown>) {\r\n return makeApiaUrl(this.form.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'processFieldSubmit',\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n attId: this.attribute.id,\r\n index: this.definition.multIdx ?? this.definition.index ?? 0,\r\n timestamp: Date.now(),\r\n isAjax: true,\r\n ...params,\r\n });\r\n }\r\n protected processSynchronizeError(e: unknown) {\r\n if (e instanceof TooMuchRetriesException) {\r\n this.state.validation.dirty = true;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n protected async synchronize(newValue: ValueType) {\r\n if (newValue === this.lastSynchronizationValue) return true;\r\n\r\n try {\r\n const postData = this.getSynchronizePostConfiguration(newValue);\r\n const result =\r\n (\r\n await asyncRetry(\r\n async () => {\r\n try {\r\n return await post<{ success: boolean }>(\r\n this.form.execution,\r\n await this.getSynchronizeUrl(),\r\n postData,\r\n );\r\n } catch (e) {\r\n this.form.execution.notifications.add(\r\n new MessageNotification({ message: String(e) }),\r\n );\r\n return null;\r\n }\r\n },\r\n (result) => !!result?.data?.success,\r\n { retries: 10, timeout: 500 },\r\n )\r\n )?.data?.success || false;\r\n\r\n if (result) {\r\n this.lastSynchronizationValue = newValue;\r\n this.state.validation.dirty = false;\r\n return true;\r\n }\r\n } catch (e) {\r\n this.processSynchronizeError(e);\r\n }\r\n\r\n return false;\r\n }\r\n\r\n protected isValidValue() {\r\n return !!this.getValue();\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid =\r\n isFieldShowAsText(this) ||\r\n this.isValidValue() ||\r\n !this.properties.required ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n\r\n public setError(err: string) {\r\n this.state.validation.errorMessage = err;\r\n }\r\n\r\n protected getServerEventParams(\r\n evtId: number,\r\n additionalParams?: Record<string, any>,\r\n ): MakeApiaUrlProps {\r\n return {\r\n ...super.getServerEventParams(evtId, additionalParams),\r\n attId: this.attribute.id,\r\n };\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n const initialValue = await this.getInitialValue({\r\n ...this.definition,\r\n properties: this.properties,\r\n attId: this.attribute.id,\r\n attName: this.attribute.name,\r\n attLabel: this.attribute.title,\r\n valueType: this.attribute.valueType,\r\n value: this.state.value,\r\n });\r\n\r\n this.state.value = initialValue || ('' as ValueType);\r\n }\r\n}\r\n","import { isTrue } from '@apia/util';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { TApiaCheckboxProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype CheckboxEvents = 'onClick';\r\n\r\nexport class Checkbox extends FieldWithAttribute<\r\n TApiaCheckboxProperties,\r\n boolean\r\n> {\r\n fireEvent(eventName: CheckboxEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n protected getInitialValue({\r\n value,\r\n properties,\r\n }: TApiaFieldWithAttributeBaseProps<TApiaCheckboxProperties>): Promise<boolean> {\r\n return value === undefined || value === ''\r\n ? properties.checked || value\r\n : value;\r\n }\r\n\r\n public setValue(\r\n newValue: boolean,\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n if ((newValue as any) !== '') {\r\n return super.setValue(isTrue(newValue), options);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { TTranslationState } from './types';\r\nimport { post } from '../../../../util';\r\nimport type { Execution } from '../..';\r\n\r\nexport class Translation {\r\n state: TTranslationState;\r\n\r\n constructor(\r\n public execution: Execution,\r\n state: Pick<TTranslationState, 'id' | 'label' | 'isTranslated'>,\r\n ) {\r\n this.state = {\r\n ...state,\r\n hasChanged: false,\r\n isTranslated: state.isTranslated,\r\n tempValue: '',\r\n };\r\n makeObservable(this, { state: observable });\r\n }\r\n\r\n cancelTranslation() {\r\n this.reset();\r\n }\r\n\r\n async readTranslations(url: string) {\r\n if (this.state.remoteValue === undefined) {\r\n const result = await post<{ values: { value: { text: string } } }>(\r\n this.execution,\r\n url,\r\n );\r\n\r\n const newValue = result?.data?.values?.value?.text;\r\n this.state.tempValue =\r\n newValue !== 'null' ? (result?.data?.values?.value?.text ?? '') : '';\r\n this.state.remoteValue = this.state.tempValue;\r\n }\r\n }\r\n\r\n reset() {\r\n delete this.state.remoteValue;\r\n this.state.tempValue = '';\r\n this.state.hasChanged = false;\r\n }\r\n\r\n setTempValue(str: string) {\r\n this.state.tempValue = str;\r\n this.state.hasChanged = str !== this.state.remoteValue;\r\n }\r\n\r\n submitTranslation(value: string, url: string) {\r\n if (this.state.hasChanged) {\r\n post(this.execution, url, {\r\n postData: { value },\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n postDataTreatment: 'stringify',\r\n });\r\n }\r\n\r\n this.state.isTranslated = this.value !== '';\r\n this.reset();\r\n }\r\n\r\n get langId() {\r\n return this.state.id;\r\n }\r\n\r\n get value() {\r\n return this.state.tempValue;\r\n }\r\n}\r\n","export function parseFakeJSON(fakeJSON: string) {\r\n return [...fakeJSON.matchAll(/(\\d+): '?([^']+)'?/g)].map(([, k, v]) => ({\r\n id: k,\r\n label: v,\r\n }));\r\n}\r\n","import { TApiaFieldWithAttributeBaseProps } from '../../../InitialData/types/TApiaField';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Form } from '../Form';\r\nimport { TApiaTranslatableFieldProperties } from '../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { Translation } from './Translation';\r\nimport { parseFakeJSON } from './util';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\nimport { labels } from '../../../../util/labels/labels';\r\n\r\ninterface InitialTradMap {\r\n [key: string]: boolean;\r\n}\r\n\r\nexport abstract class TranslatableField<\r\n FieldProps extends\r\n TApiaTranslatableFieldProperties = TApiaTranslatableFieldProperties,\r\n ValueType = any,\r\n FieldDefinition extends\r\n TApiaFieldWithAttributeBaseProps<FieldProps> = TApiaFieldWithAttributeBaseProps<FieldProps>,\r\n> extends FieldWithAttribute<FieldProps, ValueType, FieldDefinition> {\r\n translations = new Map<string, Translation>();\r\n selectedLanguageId = this.getLanguages()[0]?.id;\r\n isTradLoading = false;\r\n definitionTradParsed: InitialTradMap = {};\r\n\r\n constructor(props: TApiaFieldWithAttributeBaseProps<FieldProps>) {\r\n super(props);\r\n makeObservable(this, {\r\n translations: observable,\r\n selectedLanguageId: observable,\r\n isTradLoading: observable,\r\n });\r\n }\r\n\r\n private extractTrad() {\r\n const tradMap: InitialTradMap = {};\r\n const regex = /(\\d+)\\s*:\\s*(true|false)/g;\r\n let match: RegExpExecArray | null;\r\n\r\n while ((match = regex.exec(this.definition.trad ?? '{}')) !== null) {\r\n const key = match[1];\r\n const value = match[2] === 'true';\r\n tradMap[key] = value;\r\n }\r\n\r\n this.definitionTradParsed = tradMap;\r\n }\r\n\r\n private getLanguages() {\r\n return arrayOrArray(parseFakeJSON(this.getForm().definition?.langs ?? ''));\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n if (this.getLanguages().length > 0) {\r\n this.extractTrad();\r\n this.getLanguages().forEach((lang) => {\r\n const isTranslated = this.definitionTradParsed[lang.id] ?? false;\r\n this.translations.set(\r\n lang.id,\r\n new Translation(this.form.execution, {\r\n id: lang.id,\r\n label: lang.label,\r\n isTranslated: isTranslated,\r\n }),\r\n );\r\n });\r\n\r\n this.selectedLanguageId = this.getLanguages()[0].id;\r\n }\r\n }\r\n\r\n public cancelTranslations() {\r\n this.getTranslations().forEach((c) => {\r\n c.reset();\r\n });\r\n }\r\n\r\n public async changeLanguage(langId: string) {\r\n this.selectedLanguageId = langId;\r\n this.syncTranslation();\r\n }\r\n\r\n public getTranslation(id: string) {\r\n return this.translations.get(id);\r\n }\r\n\r\n public getCurrentTranslation() {\r\n return this.translations.get(this.selectedLanguageId);\r\n }\r\n\r\n public getTranslations() {\r\n return this.translations;\r\n }\r\n\r\n public submitTranslations() {\r\n [...this.getTranslations().values()]\r\n .filter((c) => c.state.hasChanged)\r\n .forEach((c) => {\r\n c.submitTranslation(\r\n c.value,\r\n this.getSynchronizeUrl({\r\n react: true,\r\n preventAsXmlParameter: true,\r\n langId: c.langId,\r\n }),\r\n );\r\n });\r\n }\r\n\r\n public async syncTranslation() {\r\n const langId = this.selectedLanguageId;\r\n this.isTradLoading = true;\r\n\r\n await this.getTranslation(langId)?.readTranslations(\r\n await makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'getFieldTranslations',\r\n frmId: this.getForm().definition.id,\r\n frmParent: this.getForm().definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n langId,\r\n react: true,\r\n }),\r\n );\r\n\r\n this.isTradLoading = false;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n const isSuperValid = await super.validate();\r\n let isValid = isSuperValid;\r\n\r\n if (isSuperValid && this.properties.reqTrad) {\r\n const translations = [...this.getTranslations().values()];\r\n\r\n const tradNotValidated = translations.find((c) => !c.state.isTranslated);\r\n\r\n if (tradNotValidated) {\r\n this.state.validation.errorMessage = labels.errorTranslateRequired(\r\n this.form.execution,\r\n tradNotValidated.state.label,\r\n );\r\n isValid = false;\r\n } else {\r\n this.state.validation.errorMessage = null;\r\n }\r\n }\r\n return isValid;\r\n }\r\n}\r\n","import { TApiaEditorProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport type EditorEvents = 'onChange';\r\n\r\nexport class Editor extends TranslatableField<TApiaEditorProperties, string> {\r\n fireEvent(eventName: EditorEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n protected isValidValue(): boolean {\r\n return !!new DOMParser().parseFromString(this.getValue(), 'text/html')\r\n .documentElement.textContent;\r\n }\r\n}\r\n","// get boolean value from string values\r\nexport const parseBoolean = (val: string | null): boolean => {\r\n if (typeof val === 'string') {\r\n if (/^(?:true|T|t|1|1,00)$/i.test(val)) return true;\r\n if (/^(?:false|F|f|0|0,00|null)$/i.test(val)) return false;\r\n }\r\n return false;\r\n};\r\n","import BoolProps from '../../main/Execution/FormsExecution/constants/props/booleanProps';\r\nimport NumProps from '../../main/Execution/FormsExecution/constants/props/numberProps';\r\nimport { parseBoolean } from '../dataTypes/parseBoolean';\r\n\r\nconst valueParsers: ((\r\n key: string,\r\n value: unknown,\r\n next: () => void,\r\n) => void | { key: string; value: any })[] = [\r\n (key, value, next) => {\r\n if (BoolProps.indexOf(key) === -1 && NumProps.indexOf(key) === -1) {\r\n return next();\r\n } else if (typeof value === 'number') {\r\n return next();\r\n } else if (BoolProps.indexOf(key) !== -1) {\r\n return { key, value: parseBoolean(value as string) };\r\n } else if (NumProps.indexOf(key) !== -1) {\r\n return { key, value: parseInt((value as string) || '', 10) };\r\n }\r\n next();\r\n },\r\n];\r\n\r\nexport function parseFakeJSON<T extends Record<string, unknown>>(\r\n str: string,\r\n): T {\r\n if (!str) {\r\n return {} as T;\r\n }\r\n\r\n if (typeof str === 'object') {\r\n return str as T;\r\n }\r\n\r\n const res = new Function(`const form = ${str}; return form;`)() as T;\r\n\r\n const ret: T = {} as T;\r\n\r\n for (const [key, value] of Object.entries(res)) {\r\n for (const p of valueParsers) {\r\n let next = false;\r\n const t = p(key, value, () => {\r\n next = true;\r\n });\r\n if (!next && t) {\r\n (ret as any)[t.key] = t.value;\r\n } else {\r\n (ret as any)[key] = value;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n}\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TApiaDocumentDefinition,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploadModalOpener,\r\n UploaderModalState,\r\n} from './types';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport { getLabel } from '../../../util';\r\n\r\nfunction getFileExtension(fileName: string): string {\r\n const parts = fileName.split('.');\r\n return parts.length > 1 ? parts.pop()!.toLowerCase() : '';\r\n}\r\n\r\nconst getInitialState: (\r\n execution: Execution,\r\n) => Readonly<UploaderModalState> = (execution: Execution) =>\r\n Object.freeze({\r\n metadata: {\r\n metadataArray: [],\r\n freeMetadataArray: [],\r\n isFreeMetadata: false,\r\n },\r\n fromDirectoryFile: null,\r\n docFolder: undefined,\r\n docExpDate: undefined,\r\n description: '',\r\n permissions: {\r\n pools: [],\r\n users: getWindow(execution).DOCUMENT_OWNER_PRIVILEGES\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: getWindow(execution).CURRENT_USER_LOGIN,\r\n userLogin: getWindow(execution).CURRENT_USER_LOGIN,\r\n },\r\n ]\r\n : [],\r\n allowAllType: ((getWindow(execution)\r\n .DOCUMENT_EVERYONE_PERMISSION as any as boolean) !== false\r\n ? 'M'\r\n : '') as '',\r\n },\r\n fileReqError: false,\r\n });\r\n\r\nexport class UploaderModalController {\r\n public state: UploaderModalState;\r\n\r\n constructor(\r\n public api: UploaderApi,\r\n public modalConfig: TModalConfig,\r\n public conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n versionFile?: TUploaderFileInfo;\r\n },\r\n ) {\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n\r\n this.state = getInitialState(api.execution);\r\n }\r\n\r\n public get allMetadata() {\r\n return [\r\n ...this.state.metadata.metadataArray,\r\n ...this.state.metadata.freeMetadataArray,\r\n ];\r\n }\r\n\r\n public get allowAllType() {\r\n return this.state.permissions.allowAllType;\r\n }\r\n\r\n public get description() {\r\n return this.state.description;\r\n }\r\n\r\n public get docFolder() {\r\n return this.state.docFolder;\r\n }\r\n\r\n public get docExpDate() {\r\n return this.state.docExpDate;\r\n }\r\n\r\n public get docTypes() {\r\n return this.api.getDocTypes();\r\n }\r\n\r\n public get freeMetadata() {\r\n return this.state.metadata.freeMetadataArray;\r\n }\r\n\r\n public get exitingFiles() {\r\n return this.api.getExistingFiles();\r\n }\r\n\r\n public get inProgressFiles() {\r\n return this.api.getInProgressFiles();\r\n }\r\n\r\n public get hiddenFiles() {\r\n return this.api.getHiddenFiles();\r\n }\r\n\r\n public get progress() {\r\n return this.api.getProgress();\r\n }\r\n\r\n public get metadata() {\r\n return this.state.metadata.metadataArray;\r\n }\r\n\r\n public get selectedDocTypeId() {\r\n return this.api.getCurrentDocTypeId();\r\n }\r\n\r\n public get selectedDocType() {\r\n return this.api.getCurrentDocType();\r\n }\r\n\r\n public addMetadata() {\r\n this.state.metadata.freeMetadataArray.push({\r\n free: 'Y',\r\n id: String(Math.random()),\r\n name: '',\r\n required: 'Y',\r\n title: '',\r\n type: 'S',\r\n value: '',\r\n errorMessage: '',\r\n labelErrorMessage: '',\r\n });\r\n }\r\n\r\n public addFiles(files: File[]) {\r\n this.state.fileReqError = false;\r\n this.api.saveDroppedFiles(files);\r\n }\r\n\r\n public addDirectoryFile(file: TApiaDocumentDefinition) {\r\n this.state.fileReqError = false;\r\n this.api.state.inProgressFiles = [];\r\n this.state.fromDirectoryFile = file;\r\n }\r\n public async changeDocType(docTypeId: string) {\r\n this.resetMetadata();\r\n this.api.setCurrentDocTypeId(docTypeId);\r\n this.onChangeExtension();\r\n this.api.reloadMetadata({ docTypeId });\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.api.clearFile(name);\r\n }\r\n\r\n public clearFiles() {\r\n this.api.clearFiles();\r\n }\r\n\r\n public clearState() {\r\n this.state = getInitialState(this.api.execution);\r\n this.api.clearState();\r\n }\r\n\r\n public onCloseModal() {\r\n this.clearState();\r\n }\r\n\r\n public async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal(this.conf);\r\n return isValid;\r\n }\r\n\r\n public deleteMetadata(indices: number[]) {\r\n const deleteSet = new Set(indices);\r\n this.state.metadata.freeMetadataArray =\r\n this.state.metadata.freeMetadataArray.filter(\r\n (c, index) => c.free !== 'Y' || !deleteSet.has(index),\r\n );\r\n }\r\n\r\n public deletePermission(item: IPoolsPermissions | IUsersPermissions) {\r\n if (item && 'userId' in item) {\r\n this.state.permissions.users = this.state.permissions.users.filter(\r\n (c) => c.userId !== item.userId,\r\n );\r\n } else {\r\n this.state.permissions.pools = this.state.permissions.pools.filter(\r\n (c) => c.poolId !== item.poolId,\r\n );\r\n }\r\n }\r\n\r\n protected onChangeExtension(): void {\r\n const rawDocExts = this.api.getCurrentDocType()?.docExts || '';\r\n let hideFileNames = '';\r\n const allowedExtensions = rawDocExts\r\n .split(';')\r\n .map((ext) => ext.trim())\r\n .filter((ext) => ext !== '');\r\n\r\n if (rawDocExts === '') {\r\n const allFiles = [...this.inProgressFiles, ...this.hiddenFiles];\r\n const dedupedFiles = Array.from(\r\n new Map(allFiles.map((file: File) => [file.name, file])).values(),\r\n );\r\n this.api.state.inProgressFiles = dedupedFiles;\r\n this.api.state.hiddenFiles = [];\r\n return;\r\n }\r\n\r\n const allowedInProgress: File[] = [];\r\n const toHide: File[] = [];\r\n this.inProgressFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedInProgress.push(file);\r\n } else {\r\n toHide.push(file);\r\n hideFileNames += ` ${file.name} `;\r\n }\r\n });\r\n\r\n const allowedHidden: File[] = [];\r\n const stillHidden: File[] = [];\r\n this.api.state.hiddenFiles.forEach((file: File) => {\r\n const ext = getFileExtension(file.name);\r\n if (allowedExtensions.includes(ext)) {\r\n allowedHidden.push(file);\r\n } else {\r\n stillHidden.push(file);\r\n }\r\n });\r\n\r\n const combinedInProgress = [...allowedInProgress, ...allowedHidden];\r\n const dedupedInProgress = Array.from(\r\n new Map(\r\n combinedInProgress.map((file: File) => [file.name, file]),\r\n ).values(),\r\n );\r\n const combinedHidden = [...toHide, ...stillHidden];\r\n const dedupedHidden = Array.from(\r\n new Map(combinedHidden.map((file: File) => [file.name, file])).values(),\r\n );\r\n\r\n this.api.state.inProgressFiles = dedupedInProgress;\r\n this.api.state.hiddenFiles = dedupedHidden;\r\n if (hideFileNames)\r\n this.api.notify({\r\n title: getLabel(this.api.execution, 'msgFileWrngExt').text,\r\n message: hideFileNames,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n public async openModal() {\r\n const a = 'openUploaderModal';\r\n import(\r\n /* webpackInclude: /\\.tsx?$/ */\r\n `/src/static/files/${a}`\r\n ).then((r) => {\r\n (r as { default: TUploadModalOpener }).default(this);\r\n });\r\n }\r\n\r\n public setDescription(desc: string) {\r\n this.state.description = desc;\r\n }\r\n\r\n protected async resetMetadata() {\r\n this.state.metadata = {\r\n freeMetadataArray: [],\r\n metadataArray: [],\r\n isFreeMetadata: false,\r\n };\r\n }\r\n\r\n public validate(): boolean {\r\n let isValid = true;\r\n this.state.fileReqError = false;\r\n if (\r\n this.api.getInProgressFiles().length === 0 &&\r\n !this.state.fromDirectoryFile\r\n ) {\r\n this.state.fileReqError = true;\r\n isValid = false;\r\n }\r\n\r\n this.allMetadata.forEach((c) => {\r\n if (c.required === 'Y') {\r\n if (c.name.trim() === '' && c.free) {\r\n c.labelErrorMessage = getLabel(\r\n this.api.execution,\r\n 'msgReqField',\r\n ).text;\r\n isValid = false;\r\n }\r\n if (c.value.trim() === '') {\r\n c.errorMessage = getLabel(this.api.execution, 'msgReqField').text;\r\n isValid = false;\r\n }\r\n }\r\n });\r\n\r\n return isValid;\r\n }\r\n}\r\n","import {\r\n addBoundary,\r\n arrayOrArray,\r\n downloadUrl,\r\n EventEmitter,\r\n formatMessage,\r\n parseAsSize,\r\n TApiaFunction,\r\n TApiaLoad,\r\n toBoolean,\r\n} from '@apia/util';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TAjaxUploadFileStatus,\r\n TAjaxUploadStart,\r\n TConfirmDropModal,\r\n TDocType,\r\n TDocumentMetadata,\r\n TFileUploaded,\r\n TProcessDroppedFiles,\r\n TSaveDroppedFilesConf,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n TUploaderLoadCurrentFunction,\r\n TUploaderLoadCurrentFunctionMessages,\r\n UploaderState,\r\n TDocumentInformation,\r\n TRequireOnlyOne,\r\n} from './types';\r\nimport { UploaderModalController } from './UploaderModalController';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { NotificationDefinition } from '../../Notifications/Notification';\r\nimport QueryString from 'qs';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { Execution } from '..';\r\nimport { get, makeApiaUrl, post } from '../../../util';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\n\r\n/**\r\n * El comportamiento de esta función se explica por su\r\n * nombre.\r\n */\r\nexport function returnExactlyTheSame(\r\n defaultParameters: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n return defaultParameters;\r\n}\r\n\r\nexport const parseFileDefinition = (\r\n execution: Execution,\r\n fileDefinition: TFileUploaded | TUploaderFileInfo,\r\n isSignRequired: boolean,\r\n): TUploaderFileInfo => {\r\n const { lock, isLocked, lockedBy, userLocking, ...file } =\r\n fileDefinition as TFileUploaded;\r\n\r\n return {\r\n ...file,\r\n isLocked: isLocked === 'true' || isLocked === true,\r\n isLockedByMe:\r\n (lockedBy || userLocking) === getWindow(execution).CURRENT_USER_LOGIN,\r\n isMarkedToSign: file.markedToSign || toBoolean(file.sign) || isSignRequired,\r\n isVirtual: file.virtualDoc ?? false,\r\n lockingUser: lockedBy || userLocking,\r\n };\r\n};\r\n\r\nexport type TOnUploadProgress = (progress: number) => void;\r\nexport class UploaderApi extends EventEmitter<{ fileUploaded: null }> {\r\n maxFiles = Infinity;\r\n modalController: UploaderModalController | null = null;\r\n allowTranslations = false;\r\n langs: Record<number, string> | undefined;\r\n currentConfiguration: TUploaderLoadCurrentFunctionMessages | undefined;\r\n docTypePermittedObjId;\r\n state: UploaderState = {\r\n progress: 0,\r\n allowedTypes: [],\r\n selectedDocTypeId: '1',\r\n versioningFile: null,\r\n inProgressFiles: [],\r\n files: {},\r\n selectedFiles: [],\r\n hiddenFiles: [],\r\n translatedFiles: new Map(),\r\n hasAllDocTypes: false,\r\n };\r\n get filesArray() {\r\n return Object.values(this.state.files);\r\n }\r\n\r\n constructor(\r\n public execution: Execution,\r\n public id: string,\r\n public type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n ) {\r\n super();\r\n\r\n makeObservable(this, {\r\n state: observable,\r\n });\r\n this.allowTranslations =\r\n type === 'E' && !!getWindow(this.execution).DOC_LANGS;\r\n this.langs = getWindow(this.execution).DOC_LANGS;\r\n try {\r\n this.docTypePermittedObjId =\r\n type === 'E'\r\n ? getWindow(this.execution).docTypePerEntId\r\n : getWindow(this.execution).docTypePerProId;\r\n } catch (e) {\r\n console.warn(e);\r\n }\r\n }\r\n\r\n async init() {\r\n await this.ajaxUploadStart();\r\n await this.reloadMetadata({\r\n docTypeId: this.state.selectedDocTypeId,\r\n });\r\n await this.loadCurrentDocuments();\r\n }\r\n\r\n async onStartUpload(files?: File[]) {\r\n if (this.modalConfig.oneClickUpload) {\r\n await this.saveDroppedFiles(files ?? []);\r\n this.confirmDropModal();\r\n } else {\r\n if (files) {\r\n await this.saveDroppedFiles(files ?? []);\r\n }\r\n this.modalController = new UploaderModalController(\r\n this,\r\n this.modalConfig,\r\n );\r\n this.modalController.openModal();\r\n }\r\n }\r\n\r\n async onTranslateUpload(conf: {\r\n langId: number;\r\n translatingFile: TUploaderFileInfo;\r\n }) {\r\n await this.init();\r\n this.modalController = new UploaderModalController(\r\n this,\r\n this.modalConfig,\r\n conf,\r\n );\r\n this.modalController.openModal();\r\n }\r\n\r\n async onVersionUpload(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n this.modalController = new UploaderModalController(this, this.modalConfig, {\r\n versionFile: file,\r\n });\r\n this.version(file, conf);\r\n }\r\n\r\n async autoLock(): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n public notify(notification: NotificationDefinition) {\r\n this.execution.notifications.add(new MessageNotification(notification));\r\n }\r\n\r\n protected getAjaxUrl(): string {\r\n return getWindow(this.execution).URL_REQUEST_AJAX;\r\n }\r\n\r\n public getDocTypes() {\r\n return this.state.allowedTypes;\r\n }\r\n\r\n public getCurrentDocTypeId() {\r\n return this.state.selectedDocTypeId;\r\n }\r\n\r\n public getCurrentDocType() {\r\n return this.state.allowedTypes.find(\r\n (c) => c.id === this.state.selectedDocTypeId,\r\n );\r\n }\r\n\r\n public getInProgressFiles() {\r\n return this.state.inProgressFiles;\r\n }\r\n\r\n public getHiddenFiles() {\r\n return this.state.hiddenFiles;\r\n }\r\n\r\n public getExistingFiles() {\r\n return this.state.files;\r\n }\r\n\r\n public getProgress() {\r\n return this.state.progress;\r\n }\r\n\r\n public getHasAllDocTypes() {\r\n return this.state.hasAllDocTypes;\r\n }\r\n\r\n async getDocumentInfo(\r\n {\r\n docId: apiId,\r\n downloadDocId: docId,\r\n }: TRequireOnlyOne<{ docId: string; downloadDocId: string }>,\r\n newElem?: boolean,\r\n ) {\r\n const id = apiId ? this.getDocument(apiId)!.docId : docId;\r\n const result = await post<TDocumentInformation>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getDocumentInfoParameters({\r\n action: 'getDocumentInfo',\r\n isAjax: true,\r\n docId: id,\r\n newElem,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n return result.data;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * This method searches for the provided id in several places:\r\n *\r\n * If it's found in the current files, returns it.\r\n * If not, it searches the provided docId in the translations map of each uploaded file.\r\n */\r\n getDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n return this.state.files[docId];\r\n } else {\r\n for (const map of this.state.translatedFiles.values()) {\r\n for (const file of map.values()) {\r\n if (file.docId === docId) {\r\n return file;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected updateDocument(docId: string, newValue: TUploaderFileInfo) {\r\n if (this.state.files[docId]) {\r\n this.state.files[docId] = { ...this.getDocument(docId), ...newValue };\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.set(langKey, { ...doc, ...newValue });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n protected deleteDocument(docId: string) {\r\n if (this.state.files[docId]) {\r\n delete this.state.files[docId];\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === docId) {\r\n innerMap.delete(langKey);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n public clearFile(name: string) {\r\n this.state.inProgressFiles = this.state.inProgressFiles.filter(\r\n (c) => c.name !== name,\r\n );\r\n }\r\n\r\n public clearFiles() {\r\n this.state.inProgressFiles = [];\r\n this.state.hiddenFiles = [];\r\n }\r\n\r\n public clearState() {\r\n this.state.selectedDocTypeId = '1';\r\n this.state.inProgressFiles = [];\r\n this.state.versioningFile = null;\r\n }\r\n\r\n async checkLockDocument(id: string, shouldNotifyUnlocked = true) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if (Number(file.docId) < 0) return true;\r\n\r\n const result = await post<{\r\n success: 'ok' | 'unlocked';\r\n usr: string;\r\n }>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getCheckLockDocumentParameters({\r\n action: 'checkLockDocument',\r\n docId: file.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n const isLocked = result?.data?.success === 'ok';\r\n if (\r\n !isLocked &&\r\n result?.data?.usr &&\r\n result.data.usr !== getWindow(this.execution).CURRENT_USER_LOGIN\r\n ) {\r\n this.notify({\r\n message: `${getWindow(this.execution).MSG_DOC_LOCKED_BY_USR.split('.')[0]}: ${\r\n result.data.usr\r\n }.`,\r\n type: 'warning',\r\n });\r\n return result.data.usr;\r\n }\r\n if (!isLocked && shouldNotifyUnlocked && !(await this.autoLock()))\r\n this.notify({\r\n message: getWindow(this.execution).MSG_DOC_MUST_BE_LOCKED,\r\n type: 'warning',\r\n });\r\n\r\n return isLocked;\r\n }\r\n\r\n public setCurrentDocTypeId(docTypeId: string) {\r\n this.state.selectedDocTypeId = docTypeId;\r\n }\r\n\r\n public async ajaxUploadStart(newFiles: File[] = []) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return;\r\n }\r\n const versioningFile = this.state.versioningFile;\r\n const res = await post<TAjaxUploadStart>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getAjaxUploadStartParameters({\r\n action: 'ajaxUploadStart',\r\n isAjax: true,\r\n docId: versioningFile?.docId,\r\n prefix: this.type,\r\n docTypeId:\r\n newFiles.length === 1 ? versioningFile?.docTypeId || '1' : '1',\r\n newDoc: !versioningFile,\r\n useDocTypePermitted: true,\r\n docTypePermittedObjType: this.type,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n );\r\n if (res?.data) {\r\n const docTypes = arrayOrArray(res?.data?.function?.docTypes?.docType);\r\n const hasGeneric = !!docTypes.find((c) => String(c.id) === '1');\r\n\r\n // if (newFiles.length > 0) {\r\n // await this.saveDroppedFiles(newFiles, (progress) => {\r\n // console.log(progress);\r\n // });\r\n // }\r\n\r\n this.state.allowedTypes = docTypes;\r\n this.state.selectedDocTypeId = hasGeneric ? '1' : docTypes[0].id;\r\n\r\n if (newFiles.length > 0) {\r\n await this.saveDroppedFiles(newFiles);\r\n }\r\n return res?.data?.function.name === 'fncDocumentLoadInformation'\r\n ? true\r\n : false;\r\n } else {\r\n throw new Error('No files data');\r\n }\r\n }\r\n\r\n public async reloadMetadata(\r\n props?: Partial<{ docId: string; docTypeId: number | string }>,\r\n additionalProps?: Record<string, unknown>,\r\n ) {\r\n if (!this.modalController) return;\r\n const res = await post<{\r\n metadata: TDocumentMetadata | TDocumentMetadata[];\r\n }>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getReloadMetadataParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'reloadMetadata',\r\n isAjax: true,\r\n docId: props?.docId,\r\n docTypeId: props?.docTypeId,\r\n metadata: this.getConfirmDropModalMetadataString({\r\n metadata: this.modalController?.allMetadata,\r\n }),\r\n prefix: this.type,\r\n ...additionalProps,\r\n }),\r\n ),\r\n );\r\n\r\n if (res?.data && props?.docTypeId) {\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find(\r\n (current) => current.id === props.docTypeId,\r\n )?.free ?? false;\r\n\r\n this.modalController!.state.metadata.metadataArray = arrayOrArray(\r\n res.data.metadata,\r\n );\r\n this.modalController!.state.metadata.isFreeMetadata = isFreeMetadata;\r\n }\r\n }\r\n\r\n public async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const {\r\n // langId,\r\n strictMode: isConfStrictMode = false,\r\n // translatingFile,\r\n } = conf ?? {};\r\n const isStrictMode = isConfStrictMode || !!this.state.versioningFile;\r\n // || !!validationsStore.fromDirectoryFile;\r\n\r\n const docType = this.getCurrentDocTypeId();\r\n\r\n if (!isStrictMode && !docType) {\r\n this.notify({\r\n message: `${getWindow(this.execution).LBL_DROP_FILE_DELETED}: ${unprocessedFiles\r\n .map((current) => current.name)\r\n .join(', ')}.`,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n const allowedFiles = this.filterAlreadyUploadedFiles(\r\n this.filterByFilesAmountLimit(\r\n this.filterAcceptedFiles(\r\n this.filterExistingFiles(\r\n this.filterVersioningFiles(unprocessedFiles, conf),\r\n conf,\r\n ),\r\n true,\r\n docType as string,\r\n ),\r\n ),\r\n conf,\r\n );\r\n\r\n const formData = new FormData();\r\n allowedFiles.forEach((file) =>\r\n formData.append('fileRepository', file, file.name),\r\n );\r\n\r\n await post(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getSaveDroppedFilesParameters({\r\n action: 'saveDroppedFiles',\r\n docId: this.state.versioningFile?.docId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n elemType: this.type,\r\n elemId: `prmDocumentContainter${this.type}`,\r\n frmOut: !this.modalController,\r\n docTypeId: this.state.selectedDocTypeId,\r\n ...conf,\r\n }),\r\n ),\r\n {\r\n postData: formData,\r\n axiosConfig: {\r\n onUploadProgress: (ev) =>\r\n (this.state.progress =\r\n (ev.loaded * 100) / ((ev.total ?? ev.loaded) * 2)),\r\n },\r\n },\r\n );\r\n const ajaxUploadFileStatusParameters =\r\n this.getAjaxUploadFileStatusParameters({\r\n action: 'ajaxUploadFileStatus',\r\n ajaxUrl: this.getAjaxUrl(),\r\n delayForDrop: true,\r\n isAjax: true,\r\n prefix: this.type,\r\n });\r\n\r\n let tries = 0;\r\n const checkUploadResult = async () => {\r\n // eslint-disable-next-line no-async-promise-executor\r\n return new Promise(async (resolve) => {\r\n tries += 1;\r\n if (tries === 10) {\r\n this.notify({\r\n message:\r\n 'Error while checking for uploadFileStatus, too many tries',\r\n type: 'error',\r\n });\r\n resolve(false);\r\n return;\r\n }\r\n const response = await post<TAjaxUploadFileStatus>(\r\n this.execution,\r\n makeApiaUrl(this.execution, ajaxUploadFileStatusParameters),\r\n );\r\n if (response && response.data) {\r\n const hasMessages =\r\n arrayOrArray<any>(\r\n response.data?.sysMessages?.message ??\r\n response.data?.sysExceptions?.exception ??\r\n response.data?.exceptions?.exception ??\r\n response.data.function.messages?.message,\r\n ).length > 0 || !!response.data.function.dropLastMessage;\r\n\r\n const uploadMessage = arrayOrArray(\r\n response.data.function.messages?.message,\r\n ).find((current) => current.name === 'message');\r\n if (uploadMessage)\r\n this.notify({ message: uploadMessage.label, type: 'warning' });\r\n\r\n const method = response.data?.function.name;\r\n this.state.progress = 44;\r\n if (hasMessages) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n if (method === 'fncProceedDocumentProcessing') {\r\n resolve(true);\r\n return;\r\n }\r\n if (tries === 10) {\r\n resolve(method === 'fncProceedDocumentProcessing');\r\n }\r\n setTimeout(() => {\r\n checkUploadResult()\r\n .then(resolve)\r\n .catch(() => resolve(false));\r\n }, 100);\r\n } else {\r\n resolve(false);\r\n }\r\n });\r\n };\r\n const hasUploadedCorrectly = await checkUploadResult();\r\n\r\n this.state.progress = 66;\r\n\r\n if (hasUploadedCorrectly) {\r\n const shown = (this.state.inProgressFiles ?? []).map((file) => file.name);\r\n const postData = QueryString.stringify(\r\n this.getProcessDroppedFilesPostdata({\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId?.toString(),\r\n docTypePermittedObjType: this.type,\r\n dropped: allowedFiles.map((file) => file.name).concat(shown),\r\n shown,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n const secondResult = await post<TProcessDroppedFiles>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getProcessDroppedFilesParameters({\r\n action: 'processDroppedFiles',\r\n elemType: this.type,\r\n docId: this.state.versioningFile?.docId,\r\n frmOut: !this.modalController,\r\n ajaxUrl: this.getAjaxUrl(),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n this.state.progress = 83;\r\n\r\n if (secondResult?.data?.function?.principal?.docInfo) {\r\n const acceptedByServerFiles = arrayOrArray(\r\n secondResult.data.function?.principal?.docInfo,\r\n );\r\n\r\n this.state.inProgressFiles = [\r\n ...(this.state.inProgressFiles ?? []),\r\n ...acceptedByServerFiles\r\n .map((current) =>\r\n [...this.state.inProgressFiles, ...unprocessedFiles].find(\r\n (search) => search.name === current.docInfoName,\r\n ),\r\n )\r\n .filter((current): current is File => !!current),\r\n ];\r\n this.state.progress = 100;\r\n\r\n if (this.modalController)\r\n this.modalController.state.fromDirectoryFile = null;\r\n\r\n this.notify({\r\n type: 'success',\r\n message: getWindow(this.execution).FILE_UPLOADED_SUCCESSFULLY,\r\n });\r\n }\r\n }\r\n this.state.progress = 100;\r\n }\r\n\r\n async checkWebDavLock(docId: string) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n return new Promise((resolve) => {\r\n let tries = 10;\r\n const checkLockAction = async () => {\r\n const isLocked = await post<{ locked: boolean }>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getCheckWebDavLockParameters({\r\n action: 'isWebDavDocumentLocked',\r\n docId,\r\n ajaxUrl: getWindow(this.execution).URL_REQUEST_AJAX,\r\n }),\r\n ),\r\n );\r\n if (\r\n isLocked?.data?.locked === true ||\r\n isLocked?.data?.locked === undefined\r\n ) {\r\n if (--tries > 0) {\r\n this.execution.state.locked = true;\r\n setTimeout(() => void checkLockAction(), 1000);\r\n } else {\r\n this.execution.state.locked = false;\r\n this.notify({\r\n message: getWindow(this.execution).MSG_FAIL_SYNC_DOCUMENT,\r\n });\r\n resolve(false);\r\n }\r\n } else {\r\n resolve(true);\r\n this.execution.state.locked = false;\r\n }\r\n };\r\n void checkLockAction();\r\n });\r\n }\r\n\r\n async checkSignature(file: TUploaderFileInfo) {\r\n let res = null;\r\n if (Number(file.docId) >= 0)\r\n res = await get<{ markedToSign: boolean }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'viewDocSigns',\r\n docId: file.docId,\r\n lock: false,\r\n isAjax: true,\r\n prefix: this.type,\r\n react: true,\r\n }),\r\n );\r\n return res;\r\n }\r\n\r\n async editDocument(id: string) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await post<{ folderId: string }>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getEditDocumentParameters({\r\n action: 'updateWebDavDocument',\r\n docId: file.docId,\r\n prefix: this.type,\r\n isAjax: true,\r\n }),\r\n ),\r\n );\r\n if (result?.data?.folderId) {\r\n const sDocumentUrl = `${getWindow(this.execution).WEBDAV_SERVER}${\r\n result?.data?.folderId\r\n }/${file.docId}/${file.name || file.docName || ''}`;\r\n\r\n const ProtocolInstallMessage = () => {\r\n this.notify({\r\n type: 'warning',\r\n message: getWindow(this.execution).MSG_NO_DOC_EDIT_PROTOCOL,\r\n title: getWindow(this.execution).LBL_EDIT,\r\n });\r\n };\r\n\r\n (getWindow(this.execution).avoidLoadEvents as any) = true;\r\n (\r\n getWindow(this.execution).ITHit as any\r\n ).WebDAV.Client.DavConstants.ProtocolTimeoutMs = 10000;\r\n\r\n await (\r\n getWindow(this.execution).ITHit as any\r\n ).WebDAV.Client.DocManager.DavProtocolEditDocument(\r\n sDocumentUrl,\r\n getWindow(this.execution).WEBDAV_SERVER,\r\n ProtocolInstallMessage,\r\n null,\r\n 'Current',\r\n 'ApiaWebDavCookie', // Cookie(s) to copy.\r\n '', // URL to navigate to if any cookie from the list is not found.\r\n 'Edit',\r\n );\r\n }\r\n }\r\n }\r\n\r\n async downloadDocument(id: string, version?: string) {\r\n const file = this.getDocument(id)!;\r\n if (\r\n getWindow(this.execution).IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n ) {\r\n await downloadUrl(\r\n makeApiaUrl(this.execution, {\r\n action: 'downloadDocument',\r\n prefix: this.type,\r\n docId: file.downloadDocId,\r\n ajaxUrl: this.getAjaxUrl(),\r\n version,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n async ajaxDeleteDocument(id: string, langId?: number) {\r\n const file = this.getDocument(id)!;\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const result = await post(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getDeleteDocumentParameters({\r\n action: 'ajaxRemoveDocument',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (this.evaluateDeleteDocumentResult(result?.data))\r\n this.deleteDocument(id);\r\n }\r\n }\r\n\r\n async version(\r\n file: TUploaderFileInfo,\r\n conf: {\r\n newFiles?: File[];\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n } = { newFiles: [] },\r\n ) {\r\n if (\r\n (await this.checkLockDocument(file.docId, true)) === true &&\r\n (await this.checkWebDavLock(file.docId))\r\n ) {\r\n this.state.versioningFile = file;\r\n await this.ajaxUploadStart();\r\n\r\n if (file.docTypeId) this.state.selectedDocTypeId = file.docTypeId;\r\n await this.versionFileInfo(file);\r\n if (conf.newFiles && conf.newFiles.length > 0) {\r\n await this.saveDroppedFiles(conf.newFiles, {\r\n langId: conf.langId,\r\n translatingFile: conf.translatingFile,\r\n shouldReset: false,\r\n strictMode: true,\r\n });\r\n } else {\r\n await this.reloadMetadata({\r\n docId: file.docId,\r\n docTypeId: file.docTypeId,\r\n });\r\n this.modalController?.openModal();\r\n }\r\n }\r\n }\r\n\r\n async versionFileInfo(file: TUploaderFileInfo) {\r\n const documentInfo = await this.getDocumentInfo({ docId: file.docId });\r\n if (documentInfo?.function) {\r\n const {\r\n data: { general },\r\n metadatas,\r\n } = documentInfo.function;\r\n\r\n const isFreeMetadata =\r\n this.state.allowedTypes.find((current) => current.id === file.docTypeId)\r\n ?.free ?? false;\r\n\r\n this.modalController!.state = {\r\n description: general.docDesc,\r\n docFolder:\r\n general.docFolder === '' ? undefined : Number(general.docFolder),\r\n permissions: {\r\n allowAllType: general.docAllPoolPerm,\r\n users: arrayOrArray(documentInfo.function.data.permissions?.user).map(\r\n (current) => {\r\n const returnObject: IUsersPermissions = {\r\n canUpdate: current.permType === 'M',\r\n userId: current.id,\r\n userLogin: current.name,\r\n };\r\n return returnObject;\r\n },\r\n ),\r\n pools: arrayOrArray(documentInfo.function.data.permissions?.pool).map(\r\n (current) => {\r\n const returnObject: IPoolsPermissions = {\r\n canUpdate: current.permType === 'M',\r\n poolId: current.id,\r\n poolName: current.name,\r\n };\r\n return returnObject;\r\n },\r\n ),\r\n },\r\n docExpDate: general.docExpDate,\r\n fileReqError: false,\r\n fromDirectoryFile: null,\r\n metadata: {\r\n metadataArray: arrayOrArray(metadatas?.metadata),\r\n freeMetadataArray: [],\r\n isFreeMetadata: isFreeMetadata,\r\n },\r\n };\r\n }\r\n }\r\n\r\n public async pickFileById(id: string) {\r\n const documentInfo = await this.getDocumentInfo(\r\n { downloadDocId: id },\r\n true,\r\n );\r\n if (documentInfo) {\r\n const document = documentInfo.function.data.general;\r\n const { permissions } = documentInfo.function.data;\r\n\r\n if (this.modalController) {\r\n this.modalController.addDirectoryFile(document);\r\n this.modalController.state.permissions = {\r\n pools: arrayOrArray(permissions.pool).map((c) => {\r\n return {\r\n poolId: c.id,\r\n poolName: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n users: [\r\n ...(getWindow(this.execution).DOCUMENT_OWNER_PRIVILEGES\r\n ? [\r\n {\r\n canUpdate: true,\r\n userId: getWindow(this.execution).CURRENT_USER_LOGIN,\r\n userLogin: getWindow(this.execution).CURRENT_USER_LOGIN,\r\n },\r\n ]\r\n : []),\r\n ...arrayOrArray(permissions.pool).map((c) => {\r\n return {\r\n userId: c.id,\r\n userLogin: c.name,\r\n canUpdate: c.permType === 'M',\r\n };\r\n }),\r\n ],\r\n allowAllType: document.docAllPoolPerm as '',\r\n };\r\n\r\n this.modalController.changeDocType(document.docTypeId);\r\n }\r\n\r\n void this.reloadMetadata(\r\n { docId: document.docId, docTypeId: document.docTypeId },\r\n {\r\n docReuse: true,\r\n },\r\n );\r\n }\r\n }\r\n\r\n async markFileToSign(id: string, langId?: number) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n this.state.files[id];\r\n if ((await this.checkLockDocument(file.docId)) === true) {\r\n const marked = await post<{ markedToSign: boolean }>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getMarkFileToSignParameters({\r\n action: 'markDocTosign',\r\n docId: file.docId,\r\n isAjax: true,\r\n prefix: this.type,\r\n ajaxUrl: this.getAjaxUrl(),\r\n langId,\r\n }),\r\n ),\r\n );\r\n\r\n if (marked?.data?.markedToSign !== undefined) {\r\n if (this.state.files[id]) {\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n } else {\r\n this.state.translatedFiles.forEach((innerMap) => {\r\n innerMap.forEach((doc, langKey) => {\r\n if (doc.docId === id) {\r\n innerMap.set(langKey, {\r\n ...doc,\r\n markedToSign: marked?.data?.markedToSign ?? false,\r\n });\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Por el momento realiza la descarga de todos los archivos\r\n * que estén subidos.\r\n */\r\n downloadMultipleDocuments() {\r\n const files = this.filesArray;\r\n if (files.length === 0) return;\r\n const docIds = this.state.selectedFiles;\r\n\r\n const selectedFiles = files.filter((current) =>\r\n docIds.find((search) => search === current.docId),\r\n );\r\n const ids = (selectedFiles.length > 0 ? selectedFiles : files)\r\n .map((current) => current.downloadDocId)\r\n .join('-');\r\n\r\n void downloadUrl(\r\n makeApiaUrl(\r\n this.execution,\r\n this.getDownloadMultipleDocumentsParameters({\r\n action: 'multipleDownload',\r\n docId: ids,\r\n prefix: this.type,\r\n }),\r\n ),\r\n 'documents.zip',\r\n );\r\n }\r\n\r\n async confirmDropModal(conf?: {\r\n langId?: number;\r\n translatingFile?: TUploaderFileInfo;\r\n }) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return false;\r\n }\r\n\r\n const { langId, translatingFile } = conf ?? {};\r\n\r\n const cmbDocType = this.state.selectedDocTypeId;\r\n const fromDirectoryFile = this.modalController?.state.fromDirectoryFile;\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = this.modalConfig.oneClickUpload\r\n ? 'M'\r\n : (this.modalController?.allowAllType ?? '');\r\n const docFolder = this.modalController?.docFolder;\r\n const docExpDate = this.modalController?.docExpDate;\r\n const metadata = this.modalController?.metadata ?? [];\r\n const freeMetadata = this.modalController?.freeMetadata ?? [];\r\n\r\n const poolsPermissions =\r\n this.modalController?.state.permissions.pools ?? [];\r\n\r\n const usersPermissions =\r\n this.modalController?.state.permissions.users ?? [];\r\n\r\n let postData = QueryString.stringify(\r\n this.getConfirmDropModalPostdata({\r\n cmbDocType,\r\n docDesc,\r\n docAllowAllType,\r\n pe: this.docTypePermittedObjId?.toString(),\r\n dropped: this.state.inProgressFiles.map((file) => file.name),\r\n txtLangId: langId,\r\n txtLangGroup: translatingFile?.docLangGroup,\r\n docFolder: docFolder,\r\n }),\r\n { arrayFormat: 'repeat' },\r\n );\r\n\r\n postData = `${postData}${\r\n postData.length > 0 ? '&' : ''\r\n }${this.getConfirmDropModalPermissionsString({\r\n poolsPermissions,\r\n usersPermissions,\r\n })}&txtFreeMetadata=${this.getConfirmDropModalAdditionalMetadataString(\r\n freeMetadata,\r\n )}&txtMetadata=${this.getConfirmDropModalMetadataString({\r\n metadata: Object.values(metadata || {}),\r\n })}&docExpDate=${docExpDate ?? ''}`;\r\n\r\n const result = await post<TConfirmDropModal>(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getConfirmDropModalParameters({\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: fromDirectoryFile\r\n ? fromDirectoryFile.docId\r\n : this.state.versioningFile?.docId,\r\n action: fromDirectoryFile\r\n ? 'associateExistingFile'\r\n : 'confirmDropModal',\r\n elemType: this.type,\r\n fromForm: true,\r\n ...(fromDirectoryFile\r\n ? {\r\n docId: fromDirectoryFile.docId,\r\n fromReuse: true,\r\n uploadDocument: false,\r\n }\r\n : null),\r\n }),\r\n ),\r\n {\r\n postData: postData.toString(),\r\n },\r\n );\r\n\r\n if (result?.data?.function) {\r\n const currentFiles = { ...this.state.files };\r\n const versioningFile = this.state.versioningFile;\r\n\r\n if (versioningFile && versioningFile.name) {\r\n delete currentFiles[versioningFile.name];\r\n }\r\n const newFiles: Record<string, TUploaderFileInfo> = arrayOrArray(\r\n result.data.function.general,\r\n )\r\n .map((current) =>\r\n this.parseFileDefinition({\r\n ...current,\r\n canWrite: true,\r\n canRead: true,\r\n canEdit: true,\r\n }),\r\n )\r\n .filter((current) => !currentFiles[current.docId])\r\n .reduce((acc, current) => ({ ...acc, [current.docId]: current }), {});\r\n\r\n if (langId && translatingFile) {\r\n const firstFile = Object.values(newFiles)[0];\r\n this.setTranslationFile(firstFile, translatingFile.docId, langId);\r\n } else {\r\n this.state.files = { ...currentFiles, ...newFiles };\r\n this.state.inProgressFiles = [];\r\n }\r\n\r\n this.emit('fileUploaded', null);\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n async loadCurrentDocuments() {\r\n const result = await post<\r\n TApiaLoad<TApiaFunction<TUploaderLoadCurrentFunction, false>>\r\n >(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: this.getAjaxUrl(),\r\n action: 'ajaxLoadCurrent',\r\n isAjax: true,\r\n readOnly: getWindow(this.execution).IS_READONLY,\r\n allowLock: true,\r\n allowSign: true,\r\n allowMultiple: true,\r\n prefix: this.type,\r\n }),\r\n {},\r\n );\r\n\r\n if (result && result.data) {\r\n const currentConfiguration: TUploaderLoadCurrentFunctionMessages =\r\n arrayOrArray(result.data.function.messages.message).reduce(\r\n (prev, { name, label }) => ({ ...prev, [name]: Boolean(label) }),\r\n {} as TUploaderLoadCurrentFunctionMessages,\r\n );\r\n\r\n const currentFiles: TUploaderFileInfo[] = result.data.function.general\r\n ? arrayOrArray(result.data.function.general).map(\r\n this.parseFileDefinition,\r\n )\r\n : [];\r\n\r\n this.currentConfiguration = currentConfiguration;\r\n const nonTranslationFiles: TUploaderFileInfo[] = [];\r\n const translationFiles: TUploaderFileInfo[] = [];\r\n currentFiles.forEach((current) => {\r\n if (current.docLang === undefined) nonTranslationFiles.push(current);\r\n else translationFiles.push(current);\r\n });\r\n\r\n nonTranslationFiles.forEach((c) => {\r\n this.state.files[c.docId] = c;\r\n });\r\n translationFiles.forEach((current) => {\r\n const originalFile = nonTranslationFiles.find(\r\n (search) => search.docLangGroup === current.docLangGroup,\r\n );\r\n if (originalFile && current.docLang !== undefined) {\r\n this.setTranslationFile(\r\n current,\r\n originalFile.docId,\r\n Number(current.docLang),\r\n );\r\n } else\r\n console.warn(\r\n `The following file is translated but has no orignal file`,\r\n current,\r\n nonTranslationFiles,\r\n );\r\n });\r\n }\r\n }\r\n\r\n async lockDocument(id: string) {\r\n if (getWindow(this.execution).IN_MONITOR) {\r\n return;\r\n }\r\n\r\n const file = this.getDocument(id)!;\r\n if (file.markedToSign) {\r\n this.notify({\r\n message: getWindow(this.execution).CANT_UNLOCK_MARKED_TO_SIGN,\r\n type: 'warning',\r\n });\r\n return;\r\n }\r\n if (!file.isLocked || !file.isLockedByMe) {\r\n const isLocked = await this.checkLockDocument(file.docId, false);\r\n this.updateDocument(\r\n id,\r\n typeof isLocked === 'string'\r\n ? this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n isLocked: true,\r\n lockedBy: isLocked,\r\n })\r\n : { ...file, isLocked },\r\n );\r\n }\r\n\r\n const result = await post<\r\n TApiaFunction<\r\n {\r\n data: {\r\n general: {\r\n docId: string;\r\n locked: boolean;\r\n prefix: string;\r\n userLocking: string;\r\n };\r\n };\r\n },\r\n false\r\n >\r\n >(\r\n this.execution,\r\n makeApiaUrl(\r\n this.execution,\r\n this.getLockDocumentParameters({\r\n action: 'lockDocument',\r\n ajaxUrl: this.getAjaxUrl(),\r\n docId: file.docId,\r\n lock: file.isLocked,\r\n isAjax: true,\r\n prefix: this.type,\r\n }),\r\n ),\r\n );\r\n\r\n if (result?.data) {\r\n const resultFile = result.data.function?.data?.general;\r\n if (resultFile)\r\n this.updateDocument(\r\n resultFile.docId,\r\n this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\r\n isLocked: resultFile.locked,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n protected evaluateDeleteDocumentResult(result: unknown) {\r\n return (\r\n (\r\n result as\r\n | undefined\r\n | TApiaLoad<\r\n TApiaFunction<\r\n {\r\n general: {\r\n docId: string;\r\n prefix: string;\r\n };\r\n },\r\n false\r\n >\r\n >\r\n )?.function?.name === 'fncDocumentRemove'\r\n );\r\n }\r\n\r\n public setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.has(docId)) {\r\n this.state.translatedFiles.set(docId, new Map());\r\n }\r\n this.state.translatedFiles.get(docId)?.set(langId, file);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = returnExactlyTheSame;\r\n\r\n protected getAjaxUploadStartParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalParameters = returnExactlyTheSame;\r\n\r\n protected getCheckLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getCheckWebDavLockParameters = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalPostdata = returnExactlyTheSame;\r\n\r\n protected getConfirmDropModalMetadataString = ({\r\n metadata,\r\n }: {\r\n metadata: TDocumentMetadata[];\r\n }) => {\r\n return (\r\n metadata\r\n ?.filter?.((current) => !!current.value)\r\n .map((current) => `${current.id}~${current.type}~${current.value}`)\r\n .join(';') ?? []\r\n );\r\n };\r\n\r\n protected getConfirmDropModalPermissionsString = ({\r\n poolsPermissions,\r\n usersPermissions,\r\n }: {\r\n poolsPermissions: IPoolsPermissions[];\r\n usersPermissions: IUsersPermissions[];\r\n }) => {\r\n let returnString = '';\r\n\r\n poolsPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docPoolId=${current.poolId}&docPoolName=${\r\n current.poolName\r\n }&docPermType${current.poolId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n usersPermissions.forEach(\r\n (current) =>\r\n (returnString = `${returnString}${\r\n returnString.length > 0 ? '&' : ''\r\n }docUserId=${current.userId}&docUsrLogin=${\r\n current.userLogin\r\n }&docPermType${current.userId}=${String(current.canUpdate)}`),\r\n );\r\n\r\n return returnString;\r\n };\r\n\r\n protected getConfirmDropModalAdditionalMetadataString = (\r\n additionalMetadata: TDocumentMetadata[] | [],\r\n ) => {\r\n return Object.values(additionalMetadata)\r\n .filter((current) => !!current?.value)\r\n .map((current) => `${current.name}~${current.value}`)\r\n .join(';');\r\n };\r\n\r\n protected getDeleteDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getClearTempFilesParameters = returnExactlyTheSame;\r\n\r\n protected getDocumentInfoParameters = returnExactlyTheSame;\r\n\r\n protected getDownloadMultipleDocumentsParameters = returnExactlyTheSame;\r\n\r\n protected getEditDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getLockDocumentParameters = returnExactlyTheSame;\r\n\r\n protected getMarkFileToSignParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected getProcessDroppedFilesPostdata = returnExactlyTheSame;\r\n\r\n protected getReloadMetadataParameters = returnExactlyTheSame;\r\n\r\n protected getSaveDroppedFilesParameters = returnExactlyTheSame;\r\n\r\n protected filterAlreadyUploadedFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) return files;\r\n\r\n const uploadedFiles = this.state.inProgressFiles;\r\n const existingFiles: File[] = [];\r\n const nonExistingFiles: File[] = [];\r\n if (conf?.langId) {\r\n const docId = conf.translatingFile?.docId ?? Infinity;\r\n const translationsMap = this.state.translatedFiles.get(String(docId));\r\n const alreadyUploadedToTranslationsFile = translationsMap\r\n ? Array.from(translationsMap.values()).find(\r\n (current) => (current.docName || current.name) === files[0]?.name,\r\n )\r\n : undefined;\r\n if (alreadyUploadedToTranslationsFile) existingFiles.push(files[0]);\r\n } else\r\n files.forEach((file) => {\r\n if (uploadedFiles.find((search) => search.name === file.name)) {\r\n existingFiles.push(file);\r\n } else nonExistingFiles.push(file);\r\n });\r\n if (existingFiles.length > 0) {\r\n void this.notify({\r\n message: `${getWindow(this.execution).LBL_DROP_FILE_REPEATED}: ${existingFiles\r\n .map((current) => current.name)\r\n .join(', ')}`,\r\n type: 'warning',\r\n });\r\n return nonExistingFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n return files.slice(\r\n 0,\r\n addBoundary(this.maxFiles - (this.state.inProgressFiles?.length ?? 0), 0),\r\n );\r\n }\r\n\r\n protected filterAcceptedFiles(\r\n files: File[],\r\n shouldNotify = true,\r\n docTypeId?: string | TDocType,\r\n ): File[] {\r\n const docTypes =\r\n docTypeId !== undefined\r\n ? this.state.allowedTypes.filter((c) => {\r\n return typeof docTypeId === 'string'\r\n ? c.id === docTypeId\r\n : c.id === docTypeId.id;\r\n })\r\n : this.state.allowedTypes;\r\n\r\n if (!docTypes.find((c) => c.docExts === '')) {\r\n const notAllowedFilesBecauseOfExtension: File[] = [];\r\n const notAllowedFilesBecauseOfSize: File[] = [];\r\n let maxSize = Infinity;\r\n const allowedFiles = files.filter((currentFile) => {\r\n const extension = (currentFile.name.match(/\\.(\\w+)$/) ?? [])[1];\r\n\r\n let isAllowed = true;\r\n if (\r\n !docTypes.find((currentDocType) => {\r\n if (\r\n !currentDocType.docExts\r\n .split(';')\r\n .map((current) => current.toLowerCase())\r\n .includes(extension.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n isAllowed = false;\r\n notAllowedFilesBecauseOfExtension.push(currentFile);\r\n }\r\n if (\r\n isAllowed &&\r\n !docTypes.find((currentDocType: any) => {\r\n if (Number(currentDocType.maxSize) < currentFile.size) {\r\n maxSize = Number(currentDocType.maxSize);\r\n return false;\r\n }\r\n return true;\r\n })\r\n ) {\r\n notAllowedFilesBecauseOfSize.push(currentFile);\r\n isAllowed = false;\r\n }\r\n\r\n if (!isAllowed) return false;\r\n\r\n return true;\r\n });\r\n\r\n if (shouldNotify) {\r\n let errorMessage = '';\r\n\r\n if (notAllowedFilesBecauseOfExtension.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfExtension.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n errorMessage = `<strong>${getWindow(this.execution).FILES_WRONG_EXT}</strong><br />${filesNames}`;\r\n }\r\n\r\n if (notAllowedFilesBecauseOfSize.length > 0) {\r\n const filesNames = notAllowedFilesBecauseOfSize.reduce(\r\n (accumulated, current) => {\r\n if (accumulated.length === 0) return current.name;\r\n return `${accumulated}, ${current.name}`;\r\n },\r\n '',\r\n );\r\n\r\n if (errorMessage.length > 0)\r\n errorMessage = `${errorMessage} <br /><br />`;\r\n errorMessage = `${errorMessage}${formatMessage(\r\n getWindow(this.execution).FILES_TOO_BIG,\r\n {\r\n TOK1: `<br />${filesNames}`,\r\n TOK2: `${parseAsSize(maxSize)}`,\r\n },\r\n )}`;\r\n }\r\n\r\n if (errorMessage.length > 0)\r\n this.notify({\r\n message: errorMessage,\r\n type: 'warning',\r\n });\r\n }\r\n\r\n return allowedFiles;\r\n }\r\n return files;\r\n }\r\n\r\n protected filterExistingFiles(\r\n files: File[],\r\n conf?: TSaveDroppedFilesConf,\r\n ): File[] {\r\n if (conf?.langId) return files;\r\n\r\n const currentFiles = this.state.inProgressFiles;\r\n const alreadyUploadedFiles = this.filesArray.filter(\r\n (current) => Number(current.docId) < 0,\r\n );\r\n let alreadyIncludedFileNames = '';\r\n const filteredFiles = files.filter((current) => {\r\n const isIncluded =\r\n currentFiles.findIndex((search) => search.name === current.name) !==\r\n -1 ||\r\n alreadyUploadedFiles.findIndex(\r\n (search) => search.docName === current.name,\r\n ) !== -1;\r\n\r\n if (isIncluded)\r\n alreadyIncludedFileNames = `${alreadyIncludedFileNames}${\r\n alreadyIncludedFileNames.length > 0 ? ', ' : ''\r\n }${current.name}`;\r\n\r\n return !isIncluded;\r\n });\r\n if (alreadyIncludedFileNames.length > 0)\r\n this.notify({\r\n message: `${getWindow(this.execution).LBL_DROP_FILE_REPEATED}: ${alreadyIncludedFileNames}`,\r\n type: 'warning',\r\n });\r\n return filteredFiles;\r\n }\r\n\r\n protected filterVersioningFiles(\r\n files: File[],\r\n conf?: {\r\n langId?: number;\r\n strictMode?: boolean;\r\n translatingFile?: TUploaderFileInfo;\r\n shouldReset?: boolean;\r\n },\r\n ): File[] {\r\n const versioningFile = this.state.versioningFile;\r\n if (versioningFile) {\r\n const newFiles = files.filter(\r\n (current) =>\r\n current.name === versioningFile.docName ||\r\n current.name === versioningFile.name,\r\n );\r\n if (newFiles.length === 0) {\r\n this.notify({\r\n type: 'warning',\r\n message: getWindow(this.execution).LBL_DROP_FILE_NAMES_NOT_MATCH,\r\n });\r\n }\r\n return newFiles;\r\n }\r\n if (\r\n files.length === 1 &&\r\n conf?.translatingFile === undefined &&\r\n conf?.langId === undefined\r\n ) {\r\n const actualVersioningFile = Object.values(this.state.files).find(\r\n (c) => (c.name || c.docName) === files[0].name,\r\n );\r\n if (actualVersioningFile) {\r\n if (actualVersioningFile.isLockedByMe)\r\n this.state.versioningFile = actualVersioningFile;\r\n }\r\n }\r\n\r\n return files;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(this.execution, file, false),\r\n canEdit: file.canEdit || file.canWrite,\r\n canRead: file.canRead,\r\n };\r\n };\r\n\r\n public getLoadFileSystemStructureTree: () => Record<string, unknown> =\r\n () => ({\r\n useDocTypePermitted: true,\r\n docTypePermittedObjId: this.docTypePermittedObjId,\r\n docTypePermittedObjType: this.type,\r\n });\r\n}\r\n","import { downloadUrl } from '@apia/util';\r\nimport { makeApiaUrl } from '../../../util';\r\nimport { File as ExeFile } from '../FormsExecution/fields';\r\nimport {\r\n TFileUploaded,\r\n TModalConfig,\r\n TSaveDroppedFilesConf,\r\n TUploaderFileInfo,\r\n} from './types';\r\nimport { parseFileDefinition, UploaderApi } from './UploaderApi';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\n\r\nexport class FormsUploader extends UploaderApi {\r\n constructor(\r\n public execution: Execution,\r\n public type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n private field: ExeFile,\r\n ) {\r\n super(\r\n execution,\r\n `${type}_${field.attribute.id}_${field.definition.index ?? ''}`,\r\n type,\r\n modalConfig,\r\n );\r\n this.isEditionMode = getWindow(this.execution).IS_EDIT_GRID_MODAL\r\n ? true\r\n : undefined;\r\n }\r\n isEditionMode;\r\n index() {\r\n return this.field.definition.multIdx ?? this.field.definition.index ?? 0;\r\n }\r\n elemId() {\r\n return `dropUpprDiv${this.field.properties.id}_${this.index()}${\r\n getWindow(this.execution).IS_EDIT_GRID_MODAL ? '_true_Mdl' : ''\r\n }`;\r\n }\r\n\r\n protected filterByFilesAmountLimit(files: File[]): File[] {\r\n const inProgressFiles = this.state.inProgressFiles;\r\n if (inProgressFiles.length === 1 && files.length)\r\n if (inProgressFiles[0].name !== files[0].name) {\r\n this.state.inProgressFiles = [];\r\n } else return [];\r\n return files.slice(0, 1);\r\n }\r\n\r\n protected getFormParameters() {\r\n return {\r\n frmId: this.field.getForm().definition.id,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n attId: this.field.attribute.id,\r\n index: this.index(),\r\n editionMode: this.isEditionMode,\r\n prefix: this.field.getForm().definition.frmParent,\r\n };\r\n }\r\n\r\n evaluateDeleteDocumentResult(\r\n result: undefined | { success: boolean },\r\n ): boolean {\r\n return !!result?.success;\r\n }\r\n\r\n getAjaxUrl(): string {\r\n return '/apia.execution.FormAction.run';\r\n }\r\n\r\n getAllowedTypesData() {\r\n return {\r\n postData: {\r\n docTypeId: this.field.properties.docType,\r\n forDropElem: true,\r\n },\r\n queryData: {\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n docTypeId: this.field.properties.docType,\r\n frmOut: true,\r\n ...this.getFormParameters(),\r\n },\r\n };\r\n }\r\n\r\n getAjaxUploadFileStatusParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n forceDocTypeId: this.field.properties.docType,\r\n\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getAjaxUploadStartParameters = ({\r\n useDocTypePermitted,\r\n docTypePermittedObjType,\r\n docTypePermittedObjId,\r\n ...defaultParameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getCheckLockDocumentParameters = ({\r\n prefix,\r\n ...parameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...parameters,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getCheckSignatureParameters = (parameters: Record<string, unknown>) => {\r\n const { frmId, frmParent } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n frmId,\r\n frmParent,\r\n };\r\n };\r\n\r\n getClearTempFilesParameters = ({\r\n elemType,\r\n ...rest\r\n }: Record<string, unknown>) => {\r\n const { frmId, frmParent, index, attId } = this.getFormParameters();\r\n return {\r\n ...rest,\r\n frmParent,\r\n frmId,\r\n attId,\r\n index,\r\n };\r\n };\r\n\r\n getConfirmDropModalParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n elemType: this.elemId(),\r\n forceDocTypeId: this.field.properties.docType,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getConfirmDropModalPostdata = ({\r\n pe,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n const { editionMode } = this.getFormParameters();\r\n return {\r\n ...parameters,\r\n editionMode,\r\n };\r\n };\r\n\r\n getDeleteDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getDocumentInfoParameters = (parameters: Record<string, unknown>) => {\r\n return {\r\n ...parameters,\r\n ajaxUrl: getWindow(this.execution).URL_REQUEST_AJAX,\r\n };\r\n };\r\n\r\n getEditDocumentParameters = ({ action, docId }: Record<string, unknown>) => {\r\n const { prefix, editionMode, ...rest } = this.getFormParameters();\r\n return {\r\n action,\r\n ...rest,\r\n docId,\r\n ajaxUrl: 'apia.execution.FormAction.run',\r\n };\r\n };\r\n\r\n getLoadFilesForFolderParameters: () => Record<string, unknown> = () => {\r\n return {\r\n useDocTypePermitted:\r\n this.state.allowedTypes.length === 1 ? true : undefined,\r\n docTypeForcedId:\r\n this.state.allowedTypes.length === 1\r\n ? this.state.allowedTypes[0].id\r\n : undefined,\r\n txtCantDoc: 0,\r\n loadFolders: true,\r\n };\r\n };\r\n\r\n getLoadFileSystemStructureTree = () => ({\r\n useDocTypePermitted: this.state.allowedTypes.length === 1,\r\n docTypeForcedId: this.docTypePermittedObjId,\r\n });\r\n\r\n getLockDocumentParameters = ({\r\n prefix,\r\n isAjax,\r\n ...currentParameters\r\n }: Record<string, unknown>) => {\r\n const { prefix: pre, ...rest } = this.getFormParameters();\r\n return {\r\n ...currentParameters,\r\n ...rest,\r\n };\r\n };\r\n\r\n getMarkFileToSignParameters = ({\r\n docId,\r\n prefix,\r\n ...defaultParameters\r\n }: Record<string, unknown>) => {\r\n return {\r\n ...defaultParameters,\r\n action: 'sign',\r\n\r\n fldId: this.field.definition.id,\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getProcessDroppedFilesParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...defaultParameters,\r\n elemType: this.elemId(),\r\n fromFormElem: true,\r\n ...rest,\r\n };\r\n };\r\n\r\n getProcessDroppedFilesPostdata = ({\r\n useDocTypePermitted,\r\n docTypePermittedObjId,\r\n docTypePermittedObjType,\r\n ...parameters\r\n }: Record<string, unknown>): Record<string, unknown> => {\r\n return { ...parameters, editionMode: this.getFormParameters().editionMode };\r\n };\r\n\r\n getReloadMetadataParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n return {\r\n ...defaultParameters,\r\n ...(getWindow(this.execution).IS_EDIT_GRID\r\n ? { editionMode: true }\r\n : null),\r\n ...this.getFormParameters(),\r\n };\r\n };\r\n\r\n getSaveDroppedFilesParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ): Record<string, unknown> => {\r\n const elemId = this.elemId();\r\n const { prefix, ...rest } = this.getFormParameters();\r\n return {\r\n ...defaultParameters,\r\n fromFormElem: true,\r\n elemType: elemId,\r\n elemId,\r\n ...rest,\r\n };\r\n };\r\n async downloadDocument(fileId: string): Promise<void> {\r\n const file = this.getDocument(fileId);\r\n const { prefix, ...rest } = this.getFormParameters();\r\n if (!file) return;\r\n\r\n if (\r\n getWindow(this.execution).IN_MONITOR ||\r\n (await this.checkWebDavLock(file.docId))\r\n )\r\n await downloadUrl(\r\n makeApiaUrl(this.execution, {\r\n action: 'download',\r\n docId: file.downloadDocId,\r\n ajaxUrl: '/page/generic/downloadAttDoc.jsp',\r\n ...rest,\r\n }),\r\n );\r\n }\r\n\r\n loadCurrentDocuments(): Promise<void> {\r\n return null as any as Promise<void>;\r\n }\r\n\r\n public parseFileDefinition = (file: TFileUploaded): TUploaderFileInfo => {\r\n return {\r\n ...parseFileDefinition(\r\n this.execution,\r\n file,\r\n this.field.properties.reqSign || false,\r\n ),\r\n markedToSign: this.field.properties.reqSign || file.markedToSign,\r\n canEdit: file.canEdit ?? true,\r\n canRead: file.canRead ?? true,\r\n };\r\n };\r\n\r\n async saveDroppedFiles(\r\n unprocessedFiles: File[],\r\n conf?: TSaveDroppedFilesConf | undefined,\r\n ): Promise<void> {\r\n await super.saveDroppedFiles(unprocessedFiles, conf);\r\n }\r\n}\r\n","import { labels } from '../../../../../util/labels/labels';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\nimport { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport {\r\n FormsUploader,\r\n TModalConfig,\r\n TUploaderFileInfo,\r\n} from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class File extends TranslatableField<TApiaFileProperties> {\r\n uploader: FormsUploader = {} as FormsUploader;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FormsUploader(\r\n this.form.execution,\r\n this.getForm().definition.frmParent,\r\n {\r\n allowDocumentsMonitor: !this.properties.fileNotShowDocMon,\r\n allowPickFromDirectories:\r\n this.properties.fileShwFoldTreeBtn !== undefined,\r\n collapseDirectories: !!this.properties.fileCollapseFldStrc,\r\n collapseMetadata: !!this.properties.fileCollapseMetadata,\r\n collapsePermissions: !!this.properties.fileCollapsePermission,\r\n defaultDirectory: this.properties.fileDefFolder,\r\n monitorId: this.properties.documentMonitorCus,\r\n oneClickUpload: !!this.properties.oneClickUpload,\r\n rootFolder: this.properties.fileRootFolder,\r\n showDirectoriesStructure: this.properties.fileShwFoldTreeStr === false,\r\n showExpDate: this.properties.fileExpDate === true,\r\n showMetadata: !this.properties.hideDocMetadata,\r\n showPermissions: !this.properties.hideDocPermissions,\r\n } as TModalConfig,\r\n this,\r\n );\r\n\r\n this.uploader.on('fileUploaded', () => {\r\n this.setError('');\r\n });\r\n\r\n this.uploader.init();\r\n if (this.definition.file_prp) {\r\n const files = parseFakeJSON(this.definition.file_prp) as Record<\r\n number,\r\n TUploaderFileInfo\r\n >;\r\n const mainFile = files[0];\r\n if (mainFile) {\r\n this.uploader.state.files = {\r\n [mainFile.docId]: { ...mainFile, docName: mainFile.name },\r\n };\r\n const otherEntries = Object.entries(files).filter(([k]) => k !== '0');\r\n if (otherEntries.length) {\r\n otherEntries.forEach(([k, file]) => {\r\n this.uploader.setTranslationFile(\r\n { ...file, docName: file.name },\r\n mainFile.docId,\r\n Number(k),\r\n );\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.properties.disabled || this.properties.noModify) {\r\n return true;\r\n } else if (\r\n this.properties.required &&\r\n Object.values(this.uploader.state.files).length == 0\r\n ) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n } else if (this.getForm().definition.frmParent !== 'P') {\r\n const langEntries: [number, string][] = Object.entries(\r\n parseFakeJSON(this.form.definition.langs || '{}') as Record<\r\n number,\r\n string\r\n >,\r\n ).map(([key, value]) => [Number(key), value]);\r\n\r\n const innerMap = [...this.uploader.state.translatedFiles.values()][0];\r\n\r\n const translationValid =\r\n !this.properties.required ||\r\n !this.getForm().definition.langs ||\r\n langEntries.every(([langId, langLabel]) => {\r\n const hasTranslation = innerMap?.has(langId);\r\n if (!hasTranslation) {\r\n this.state.validation.errorMessage = labels.errorTranslateRequired(\r\n this.form.execution,\r\n langLabel,\r\n );\r\n }\r\n return hasTranslation;\r\n });\r\n return translationValid;\r\n }\r\n return true;\r\n }\r\n\r\n public async setValue(\r\n _newValue: any,\r\n _options?:\r\n | Partial<{ comparator: Comparator<any>; synchronize: boolean }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n return true;\r\n }\r\n\r\n public loadFromDefinition(def: string) {\r\n if (def) {\r\n const uploadedFile = parseFakeJSON(def ?? '')[0] as TUploaderFileInfo;\r\n\r\n if (uploadedFile) {\r\n this.uploader.state.files = {\r\n [uploadedFile.docId]: {\r\n ...uploadedFile,\r\n docName: uploadedFile.name,\r\n },\r\n };\r\n } else {\r\n this.uploader.state.files = {};\r\n }\r\n }\r\n }\r\n}\r\n","export function noNaN(number: unknown, defaultReturn = 0) {\r\n const returnNumber = Number(number);\r\n if (number === null || Number.isNaN(returnNumber)) return defaultReturn;\r\n return returnNumber;\r\n}\r\n","import { makeObservable, observable, runInAction } from 'mobx';\r\nimport { Grid } from '.';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n };\r\n\r\n constructor(private grid: Grid) {\r\n makeObservable(this, { state: observable });\r\n this.init();\r\n }\r\n\r\n #unsubscribeTableEvents = () => {};\r\n private init() {\r\n this.#unsubscribeTableEvents();\r\n\r\n const controller = this.grid.controller;\r\n\r\n const u2 = controller.on('selectionChange', (selection) => {\r\n const { paged, currentPage, pages } = this.grid.properties;\r\n const isFirstPage = paged ? String(currentPage) === '1' : false;\r\n const isLastPage = paged ? String(currentPage) === String(pages) : false;\r\n\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.getContainer()?.getRowIndex(c) === 0) &&\r\n isFirstPage\r\n : selection.find((c) => c.getContainer()?.getRowIndex(c) === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ) && isLastPage\r\n : selection.find(\r\n (c) =>\r\n c.getContainer()?.getRowIndex(c) ===\r\n controller.body.rows.length - 1,\r\n ));\r\n });\r\n });\r\n this.#unsubscribeTableEvents = () => {\r\n u2();\r\n };\r\n }\r\n\r\n get showAddButton() {\r\n const { gridQuery, hideGridButtons, hideAddButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return (\r\n !gridQuery && !hideGridButtons && !hideAddButton && !hideIncludeButton\r\n );\r\n }\r\n get showDelButton() {\r\n const { gridQuery, hideGridButtons, hideDelButton, hideIncludeButton } =\r\n this.grid.properties;\r\n return (\r\n !gridQuery && !hideGridButtons && !hideDelButton && !hideIncludeButton\r\n );\r\n }\r\n get showSortButtons() {\r\n const { gridQuery, hideGridButtons, hideOrderButton } =\r\n this.grid.properties;\r\n return !gridQuery && !hideGridButtons && !hideOrderButton;\r\n }\r\n get isSortUpDisabled() {\r\n return this.state.isSortUpDisabled || this.grid.state.isLoading;\r\n }\r\n get isSortDownDisabled() {\r\n return this.state.isSortDownDisabled || this.grid.state.isLoading;\r\n }\r\n get isAddDisabled() {\r\n return this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getState('selection').size === 0 ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n async sortUp() {\r\n this.grid.sortUp();\r\n }\r\n\r\n async sortDown() {\r\n this.grid.sortDown();\r\n }\r\n\r\n async addRow() {\r\n await this.grid.addRow();\r\n }\r\n\r\n async deleteSelectedRows() {\r\n this.grid.deleteRows();\r\n }\r\n}\r\n","import { Cell } from '@apia/table2-controller';\r\nimport type { Field } from '../../Field';\r\n\r\nexport class GridCell extends Cell {\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import { Cell } from '@apia/table2-controller';\r\nimport type { GridEditionModal } from './GridEditionModal';\r\nimport type { Grid } from '.';\r\n\r\nexport class AdditionalCell extends Cell {\r\n constructor(\r\n public grid: Grid,\r\n public getIndex: () => number,\r\n public remove: () => unknown,\r\n public openEditionModal?: (handler: GridEditionModal) => unknown,\r\n ) {\r\n super({ colName: 'additional' });\r\n }\r\n\r\n public get hasEditionModal() {\r\n return this.openEditionModal !== undefined;\r\n }\r\n}\r\n","import { Cell, type CellState } from '@apia/table2-controller';\r\nimport type { Grid } from '.';\r\nimport { Field } from '../../Field';\r\n\r\ntype HeaderCellState = CellState;\r\n\r\nexport class HeaderCell extends Cell<HeaderCellState> {\r\n constructor(\r\n public grid: Grid,\r\n state: CellState,\r\n ) {\r\n super(state);\r\n }\r\n\r\n sort() {\r\n this.grid.fireEvent('gridSort');\r\n }\r\n\r\n getField() {\r\n return this.getState('properties')?.field as Field;\r\n }\r\n}\r\n","import type { Field } from '../../Field';\r\n\r\n/**\r\n * Esta clase se encarga de recordar los campos que ya fueron accedidos,\r\n * optimizando el tiempo de acceso en grillas de gran tamaño.\r\n */\r\nexport class FieldsCache {\r\n private cached: Record<number, Record<number | string, Field<any>>> = {};\r\n\r\n private getIndex(index: number) {\r\n if (!this.cached[index]) this.cached[index] = {};\r\n return this.cached[index];\r\n }\r\n\r\n clear() {\r\n this.cached = {};\r\n }\r\n\r\n clearIndex(index: number) {\r\n delete this.cached[index];\r\n }\r\n\r\n get(index: number, id: number | string) {\r\n return this.getIndex(index)[id];\r\n }\r\n\r\n set(index: number, id: number | string, field: Field<any>) {\r\n this.getIndex(index)[id] = field;\r\n }\r\n\r\n swap(index1: number, index2: number) {\r\n const row1 = this.getIndex(index1);\r\n this.cached[index1] = this.getIndex(index2);\r\n this.cached[index2] = row1;\r\n }\r\n\r\n truncate(index: number) {\r\n Object.keys(this.cached).forEach((c) => {\r\n if (Number.parseInt(c) >= index) {\r\n delete this.cached[Number.parseInt(c)];\r\n }\r\n });\r\n }\r\n}\r\n","import { makeApiaUrl, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaModalInputDefinition } from '../../../../InitialData/types/fields/TApiaModalInputDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\ntype ModalInputValue = { showValue: string; storeValue?: string };\r\n\r\nexport class ModalInput extends FieldWithAttribute<\r\n TApiaInputProperties,\r\n ModalInputValue\r\n> {\r\n constructor({ value, ...definition }: TApiaModalInputDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n },\r\n value: { storeValue: value, showValue: definition.qry_show_value },\r\n });\r\n }\r\n\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public async setValueFromInputWrite(value: string) {\r\n if (value !== this.getValue().showValue) {\r\n const result = await post<{\r\n ret_value: { show_value: string; value: string };\r\n }>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n action: 'checkModalValue',\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n }),\r\n {\r\n postData: {\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n fldId: this.definition.id,\r\n attId: this.attribute.id,\r\n qryId: this.definition.qryId,\r\n index: this.definition.index,\r\n value,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n\r\n if (result?.data?.ret_value) {\r\n this.setValue({\r\n storeValue: result?.data?.ret_value.value,\r\n showValue: result?.data?.ret_value.show_value,\r\n });\r\n this.setError('');\r\n } else {\r\n this.setValue({ showValue: '', storeValue: '' });\r\n this.setError(getWindow(this.form.execution).MSG_VAL_NOT_FOUND);\r\n }\r\n }\r\n }\r\n\r\n public async setValueFromModalSelection(rowId: string) {\r\n const result = await post<{ row: { cell: string[] } }>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.query.ModalAction.run',\r\n action: 'getValues',\r\n }),\r\n { postData: { id: rowId }, postDataTreatment: 'stringify' },\r\n );\r\n\r\n if (result?.data?.row?.cell) {\r\n this.setValue({\r\n storeValue: result.data.row.cell[0],\r\n showValue: result.data.row.cell[1],\r\n });\r\n }\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n const isValid =\r\n !!this.getValue().storeValue ||\r\n !this.properties.required ||\r\n this.properties.inputAsText ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n if (!isValid) {\r\n this.state.validation.errorMessage = labels.errorFieldRequired();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: ModalInputValue,\r\n ): IApiaApiPostConfig<any> {\r\n const storeIdValue = this.properties.storeMdlQryResult;\r\n\r\n return {\r\n ...super.getSynchronizePostConfiguration(value),\r\n postData: {\r\n value: storeIdValue\r\n ? [this.getValue().storeValue!, this.getValue().showValue]\r\n : this.getValue().storeValue,\r\n },\r\n };\r\n }\r\n}\r\n","import { TApiaHiddenProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Hidden extends FieldWithAttribute<TApiaHiddenProperties> {}\r\n","import { makeApiaUrl, parseXml, post } from '../../../../../util';\r\n\r\nimport type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport type {\r\n IApiaDataGridColumn,\r\n TApiaGridDefinition,\r\n TApiaGridField,\r\n} from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { actions } from '../../constants/actions';\r\nimport type {\r\n FieldState,\r\n GridActionResponse,\r\n GridColumn,\r\n GridDefinition,\r\n GridEvents,\r\n GridProps,\r\n GridState,\r\n} from './types';\r\nimport { GridEditionModal } from './GridEditionModal';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport {\r\n FocusControllerPlugin,\r\n Row,\r\n TableController,\r\n} from '@apia/table2-controller';\r\nimport type { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport type { Form } from '../../Form';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { GridFooterHandler } from './GridFooterHandler';\r\nimport { GridCell } from './GridCell';\r\nimport { arrayOrArray, awaitTime, Mutex } from '@apia/util';\r\nimport type { FireEventParameters } from '../../types';\r\nimport { AdditionalCell } from './AdditionalCell';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { File } from '../File';\r\nimport { HeaderCell } from './HeaderCell';\r\nimport { TApiaFieldCommonProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldsCache } from './FieldsCache';\r\nimport { ModalInput } from '../ModalInput';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { getDocument } from '../../../../../util/dom/getDocument';\r\nimport { Hidden } from '../Hidden';\r\nimport type { Select } from '../Select';\r\n\r\nasync function inlineCaller<T>(cb: () => T, _t: number): Promise<T> {\r\n return cb();\r\n}\r\n\r\nasync function inlineTimeout(cb: () => unknown, _t: number): Promise<true> {\r\n setTimeout(cb, _t);\r\n\r\n return Promise.resolve(true);\r\n}\r\n\r\nexport class Grid extends Field<GridProps, GridDefinition, GridState> {\r\n private rowId = 0;\r\n\r\n protected cache = new FieldsCache();\r\n protected mutex = new Mutex();\r\n protected newRowStates: FieldState[][] = [];\r\n protected initialStates: FieldState[][];\r\n protected fieldsDefinitions: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n\r\n protected readonly managedAttIds = new Set<string | number>();\r\n protected readonly managedAttNames = new Set<string>();\r\n protected readonly managedFieldIds = new Set<string | number>();\r\n protected readonly managedFieldsNames = new Set<string>();\r\n\r\n protected _editionModalHandler: GridEditionModal | null = null;\r\n protected readonly _footerController: GridFooterHandler;\r\n protected readonly tableController: TableController = new TableController({\r\n allowEdition: true,\r\n allowSelection: true,\r\n isSelectionMultiple: true,\r\n });\r\n\r\n public get controller() {\r\n return this.tableController;\r\n }\r\n\r\n public get currentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n public get editionModalHandler() {\r\n return this._editionModalHandler;\r\n }\r\n\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n return (\r\n this.controller.body.rows\r\n .at(-1)\r\n ?.cells.find((c) => c instanceof GridCell) as GridCell\r\n ).getField().definition.index!;\r\n }\r\n\r\n public get footerController() {\r\n return this._footerController;\r\n }\r\n\r\n public get header() {\r\n return this.state.header;\r\n }\r\n\r\n public get isPaged() {\r\n return this.properties.paged;\r\n }\r\n\r\n public get length() {\r\n return this.tableController.body.rows.length;\r\n }\r\n\r\n public get minIndex() {\r\n return Number.isFinite(this.properties.pageSize)\r\n ? (this.properties.currentPage - 1) * this.properties.pageSize\r\n : 0;\r\n }\r\n\r\n public get pageCount() {\r\n return this.properties.pages;\r\n }\r\n\r\n public get pageSize() {\r\n return this.properties.pageSize;\r\n }\r\n\r\n public get selectedIndices() {\r\n return [...this.tableController.getState('selection').values()].map(\r\n (c) => c.index,\r\n );\r\n }\r\n\r\n public get selectedItems() {\r\n return this.selectedIndices.map((current) => this.getRow(current)!);\r\n }\r\n\r\n public get startIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n currentPage: noNaN(definition.curPage, 1),\r\n maxRows: properties.maxRecords || Infinity,\r\n paged: false,\r\n pages: noNaN(definition.pages, 1),\r\n pageSize: noNaN(\r\n properties.pagedGridSize,\r\n properties.paged ? 5 : Infinity,\r\n ),\r\n\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n hideDocInfoButton: String(properties.hideDocInfoButton) === 'true',\r\n },\r\n });\r\n\r\n this._footerController = new GridFooterHandler(this);\r\n\r\n const fieldsArray = arrayOrArray(field);\r\n this.initialStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n this.fieldsDefinitions = fieldsArray.map(\r\n ({ fieldValue, properties, ...current }) => {\r\n return { ...current, properties: parseFakeJSON(properties) };\r\n },\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n fldId: c.fldId,\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || this.resolveHeaderWidth(c),\r\n hidden: false,\r\n required: false,\r\n fldType: c.fldType,\r\n }));\r\n this.state.isLoading = false;\r\n this.state.isMaximized = false;\r\n\r\n this.controller.on('columnClick', (col) => {\r\n this.sortColumn((col.getState('properties')!.col as GridColumn).fldId);\r\n });\r\n }\r\n\r\n private resolveHeaderWidth(c: IApiaDataGridColumn) {\r\n if (\r\n c.fldType === '9' ||\r\n (c.fldType === '1' && c.dataType === 'D') ||\r\n (c.fldType === '1' && c.hasQuery)\r\n ) {\r\n return '200px';\r\n }\r\n\r\n return '150px';\r\n }\r\n\r\n protected getGridActionFromEventName(eventName: GridEvents) {\r\n switch (eventName) {\r\n case 'gridAdd':\r\n return 'add';\r\n case 'gridColumnSelect':\r\n return undefined;\r\n case 'gridDelete':\r\n return 'delete';\r\n case 'gridSort':\r\n return undefined;\r\n }\r\n }\r\n\r\n protected fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireServerEvent(eventName, {\r\n gridAction: this.getGridActionFromEventName(eventName),\r\n ...params,\r\n });\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n public async addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridAdd')) {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n addRowsCount: 1,\r\n },\r\n });\r\n\r\n /**\r\n * Cuando no tengo la definición de la nueva fila, debo obtenerla.\r\n */\r\n const response = await res;\r\n if (response?.data?.gridXml) {\r\n /**\r\n * Si la definición vuelve del server, la establezco en una variable\r\n * local y la uso en el futuro, cada vez que se crea una nueva fila.\r\n */\r\n const xml = parseXml(response.data.gridXml) as TApiaGridDefinition;\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n this.newRowStates = fieldsArray\r\n .map((current) =>\r\n current.fieldValue || current.row\r\n ? arrayOrArray(current.fieldValue || current.row)\r\n : undefined,\r\n )\r\n .filter(Boolean) as FieldState[][];\r\n } else {\r\n /**\r\n * En caso de error, tiro excepción con o sin mensaje, pero la excepción\r\n * es necesaria para detener el flujo actual.\r\n */\r\n throw new Error(\r\n !getWindow(this.form.execution).SERVER_MODE\r\n ? 'Something went wrong on the add row action.'\r\n : '',\r\n );\r\n }\r\n\r\n const addedRow = await this.addRowFromDefinitions(\r\n true,\r\n this.fieldsDefinitions.map((c, i) => ({\r\n ...c,\r\n ...this.newRowStates[i][0],\r\n })),\r\n );\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de agregar la fila en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridAdd')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n (await addedRow).remove();\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }, !this.hasServerAjaxEventsOfType('gridAdd'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public closeEditionModal() {\r\n this._editionModalHandler?.close();\r\n this._editionModalHandler = null;\r\n this.refresh();\r\n }\r\n\r\n public async deleteAllRows() {\r\n this.cache.clear();\r\n\r\n return this.asyncAction(async () => {\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n this.controller.body.clear();\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(0) ||\r\n this.tableController.body.getRowByIndex(0 - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n /**\r\n * @param index Si se pasa, se borran el o los índices provistos. Sino, se borran las filas seleccionadas, si es que hay alguna.\r\n */\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridDelete')) {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.index;\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index).sort((a, b) => b - a);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n let minIndex = Infinity;\r\n\r\n /**\r\n * Busco el mínimo índice de forma de poder restablecer la selección\r\n * luego de eliminar las filas.\r\n */\r\n deletingIndices.forEach((i) => {\r\n if (i < minIndex) {\r\n minIndex = i;\r\n }\r\n });\r\n\r\n this.cache.truncate(minIndex);\r\n\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n },\r\n });\r\n\r\n /**\r\n * Me copio el array de filas y la selección actual para poder restaurarlo\r\n * en caso de error.\r\n */\r\n const currentRows = [...this.tableController.body.rows];\r\n const currentSelection = new Set(\r\n this.tableController.getState('selection'),\r\n );\r\n\r\n deletingIndices.forEach((c) =>\r\n this.controller.body.getRowByIndex(c).remove(),\r\n );\r\n this.tableController.clearSelection();\r\n\r\n if (\r\n this.tableController.body.rows.length === 0 &&\r\n this.getProperty('includeFirstRow')\r\n ) {\r\n /**\r\n * La propiedad includeFirstRow obliga a un comportamiento diferente.\r\n * Con el llamado a actualRefreshAction nos aseguramos de establecer\r\n * sincronía con el servidor. Además, esta acción debería ser relativamente\r\n * económica debido a que no debería traer más que una fila.\r\n */\r\n await res;\r\n await this.actualRefreshAction();\r\n }\r\n\r\n /**\r\n * Restauro la selección a un nuevo índice. Este índice se corresponde con el\r\n * mínimo índice eliminado si es que este aún existe, sino se intenta con el\r\n * índice inmediatamente anterior. Si no existe, no hay ninguna fila para seleccionar.\r\n *\r\n * El foco sin embargo se restaura siempre, en caso de no haber filas seleccionables,\r\n * se restablece en el cabezal de la tabla.\r\n */\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1)\r\n )?.toggleSelection(true);\r\n (\r\n this.tableController.body.getRowByIndex(minIndex) ||\r\n this.tableController.body.getRowByIndex(minIndex - 1) ||\r\n this.tableController.head.getRowByIndex(0)\r\n ).scrollIntoView();\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de eliminar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridDelete')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(async () => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (!(await res)?.data?.success) {\r\n /**\r\n * En caso de error, restauro la selección y las filas eliminadas.\r\n */\r\n this.tableController.body.setState('rows', currentRows);\r\n this.tableController.setState('selection', currentSelection);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridDelete'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async fireScriptEvent(eventName: GridEvents): Promise<boolean> {\r\n return super.fireScriptEvent(eventName);\r\n }\r\n\r\n public async fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters & { mutex: boolean },\r\n ): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n return super.fireEvent(eventName, params);\r\n }, params?.mutex);\r\n }\r\n\r\n public getAllColumns() {\r\n return [...Object.values(this.fieldsDefinitions)].map((f) =>\r\n this.tableController.body.rows.map((c) =>\r\n (c.getCellByColumnName(f.id) as GridCell).getField(),\r\n ),\r\n );\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n\r\n public getCurrentPage() {\r\n return 0;\r\n }\r\n\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n public getField(field: string, index?: number): Field | Field[] | undefined {\r\n return (\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeName(field, index)\r\n );\r\n }\r\n\r\n public getFieldByAttributeId(\r\n attId: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getRowByFieldIndex(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.id === attId,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as FieldWithAttribute)\r\n ?.attribute.id === attId,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByAttributeName(\r\n attName: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getRowByFieldIndex(index)?.find(\r\n (c) => (c as FieldWithAttribute).attribute.name === attName,\r\n );\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as FieldWithAttribute)\r\n ?.attribute.name === attName,\r\n )\r\n ?.getState('properties')!.field as FieldWithAttribute,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldById(\r\n id: string | number,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldIds.has(String(id))) {\r\n if (index !== undefined) {\r\n const found =\r\n this.cache.get(index, id) ||\r\n this.getRow(index)?.find((c) => c.definition.id === id);\r\n\r\n this.cache.set(index, id, found);\r\n\r\n return found;\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as Field)?.definition.id ===\r\n id,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n }\r\n\r\n public getFieldByName(\r\n name: string,\r\n index?: number,\r\n ): Field | Field[] | undefined {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getRow(index)?.find((c) => c.properties.name === name);\r\n } else {\r\n return this.tableController.body.rows.map(\r\n (current) =>\r\n current.cells\r\n .find(\r\n (c) =>\r\n (c.getState('properties')?.field as Field)?.properties\r\n .name === name,\r\n )\r\n ?.getState('properties')!.field as Field,\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public getRowByFieldIndex(index: number) {\r\n const row = this.tableController.body.rows.find(\r\n (c) =>\r\n (\r\n c.cells.find((current) => current instanceof GridCell) as GridCell\r\n )?.getField().definition.index === index,\r\n );\r\n if (row) {\r\n return row?.cells\r\n .filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getSelectedRows() {\r\n return this.tableController\r\n .getSelectedRows()\r\n .map((c) => this.getRow(c.index));\r\n }\r\n\r\n refreshColumnsVisibilities() {\r\n const shownColumns = new Set<string>();\r\n\r\n for (\r\n let i = 0;\r\n i < this.tableController.body.rows[0]?.cells.length || 0;\r\n i++\r\n ) {\r\n for (const row of this.tableController.body.rows) {\r\n const cell = row.cells[i] as GridCell;\r\n\r\n const field = cell.getState('properties')?.field as Field;\r\n if (\r\n !(\r\n field &&\r\n (field.properties.visibilityHidden || field instanceof Hidden)\r\n ) ||\r\n cell instanceof AdditionalCell\r\n ) {\r\n shownColumns.add(cell.getState('colName'));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.tableController.setHiddenColumns(\r\n new Set(\r\n this.tableController.head.rows[0].cells\r\n .filter(\r\n (c) =>\r\n !(\r\n c instanceof AdditionalCell ||\r\n shownColumns.has(c.getState('colName'))\r\n ),\r\n )\r\n .map((c) => c.getState('colName')),\r\n ),\r\n );\r\n }\r\n\r\n public async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n const headerRow = new Row('header');\r\n headerRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => -1,\r\n () => {},\r\n ),\r\n );\r\n\r\n const hiddenColumns = new Set<string>();\r\n\r\n this.header.forEach((c) => {\r\n hiddenColumns.add(c.fldId);\r\n });\r\n\r\n for (const def of this.fieldsDefinitions) {\r\n if (!def.properties.visibilityHidden && def.fieldType !== 'hidden') {\r\n hiddenColumns.delete(def.id);\r\n }\r\n }\r\n\r\n for (let index = 0; index < this.initialStates[0]?.length || 0; index++) {\r\n await this.addRowFromDefinitions(\r\n false,\r\n this.fieldsDefinitions.map((c, i) => {\r\n return {\r\n ...c,\r\n ...this.initialStates[i][index],\r\n };\r\n }),\r\n );\r\n }\r\n\r\n this.header.forEach((col, i) => {\r\n let width = String(col.width || 200);\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n\r\n headerRow.addCell(\r\n new HeaderCell(this, {\r\n colName: col.fldId || String(i),\r\n content: col.label,\r\n domProperties: {\r\n style: { width, maxWidth: width },\r\n },\r\n properties: { col },\r\n }),\r\n );\r\n });\r\n this.controller.setHiddenColumns(hiddenColumns);\r\n this.controller.head.addRow(headerRow);\r\n\r\n getDocument(this.form.execution).addEventListener?.('keydown', (ev) => {\r\n if (ev.code === 'Escape') {\r\n this.state.isMaximized = false;\r\n }\r\n });\r\n }\r\n\r\n public openEditionModal(handler: GridEditionModal) {\r\n this._editionModalHandler = handler;\r\n handler.open();\r\n }\r\n\r\n public async refresh() {\r\n return this.asyncAction(this.actualRefreshAction.bind(this));\r\n }\r\n\r\n public async sortColumn(fldId: string) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField: fldId,\r\n mutex: true,\r\n });\r\n return true;\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => b - a,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'down');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices).sort(\r\n (a, b) => a - b,\r\n );\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const currentRows = [...this.tableController.body.rows];\r\n const res = this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n this.swapRows(indices, 'up');\r\n\r\n /**\r\n * Cuando hay eventos ejecuto el callback inline, sino lo ejecuto con setTimeout.\r\n * De esta forma evito que la llamada al server demore la ejecución de la UI, es\r\n * una forma de ordenar las filas en forma optimista.\r\n *\r\n * Ese comportamiento no es aceptable en caso de que haya eventos.\r\n */\r\n return await (\r\n this.hasServerAjaxEventsOfType('gridSort')\r\n ? inlineCaller\r\n : inlineTimeout\r\n )(() => {\r\n return this.asyncAction(async () => {\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n /**\r\n * Se debe procesar el resultado de los eventos ajax.\r\n */\r\n setAjaxFormResponse(this.form.execution, parseXml(evs) as any);\r\n }\r\n\r\n if (\r\n !(await res)?.data?.success ||\r\n !(await this.fireEvent('gridSort', { mutex: false }))\r\n ) {\r\n this.tableController.body.setState('rows', currentRows);\r\n return false;\r\n }\r\n\r\n return true;\r\n }, !this.hasServerAjaxEventsOfType('gridSort'));\r\n }, 0);\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.controller.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n public toggleDeleteButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownDeleteButtons.get(rowIndex);\r\n this.properties.shownDeleteButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n const currentValue = this.properties.shownEditionButtons.get(rowIndex);\r\n this.properties.shownEditionButtons.set(rowIndex, isShown ?? !currentValue);\r\n this.calculateMustShowAdditionalColumn();\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const row of this.tableController.body.rows) {\r\n for await (const cell of row.cells) {\r\n const field = cell.getState('properties')?.field;\r\n if (field instanceof Field) {\r\n const result = await field.validate();\r\n if (!result && isValid && !firstInvalid) {\r\n isValid = false;\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n\r\n protected async actualRefreshAction() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n });\r\n\r\n if (res?.data?.gridXml) {\r\n await this.rebuildGrid(res.data.gridXml);\r\n } else {\r\n throw new Error(\"The server didn't return a valid XML response.\");\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected async addRowFromDefinitions(\r\n select: boolean,\r\n definitions?: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {\r\n const pageSize = this.properties.pageSize;\r\n const offset = Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0; // When pageSize is Infinity, we treat it as a single page\r\n const index = this.tableController.body.rows.length + offset;\r\n\r\n if (!definitions) {\r\n definitions = this.fieldsDefinitions.map((current, columnIndex) => {\r\n this.getForm().addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.initialStates[columnIndex][0],\r\n };\r\n });\r\n }\r\n\r\n // Check if pageSize is finite\r\n\r\n const newRow = new Row(String(this.rowId++));\r\n newRow.addCell(\r\n new AdditionalCell(\r\n this,\r\n () => newRow.index,\r\n () => {\r\n this.deleteRows(newRow.index);\r\n },\r\n this.properties.gridForm\r\n ? (handler) => {\r\n this.openEditionModal(handler);\r\n }\r\n : undefined,\r\n ),\r\n );\r\n this.tableController.body.addRow(newRow);\r\n\r\n for await (const field of definitions) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n const fieldProps = parseFakeJSON<TApiaFieldCommonProperties>(\r\n field.properties as any,\r\n );\r\n field.properties = fieldProps;\r\n\r\n const fieldConstructor =\r\n this.form.execution.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor({\r\n ...field,\r\n ...(field as any).fieldValue,\r\n index,\r\n });\r\n await newField.init(this.getForm());\r\n newField.setParentGrid(this);\r\n\r\n if (newField instanceof FieldWithAttribute) {\r\n this.managedAttIds.add(newField.attribute.id);\r\n this.managedAttNames.add(newField.attribute.name);\r\n }\r\n this.managedFieldIds.add(newField.definition.id);\r\n this.managedFieldsNames.add(newField.properties.name);\r\n\r\n if (!(newField instanceof Hidden)) {\r\n this.cache.set(index, newField.definition.id, newField);\r\n\r\n let width = String(\r\n this.header.find((c) => c.fldId === field.id)?.width || 250,\r\n );\r\n if (!width.endsWith('px')) {\r\n width = `${width}px`;\r\n }\r\n\r\n newRow.addCell(\r\n new GridCell({\r\n colName: newField.definition.id,\r\n properties: { field: newField },\r\n }),\r\n );\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n\r\n if (select) {\r\n this.tableController.clearSelection();\r\n this.tableController.toggleRowSelection(newRow, true);\r\n }\r\n\r\n for (let i = 0; i < 10; i++) {\r\n if (newRow.cells[0]?.getTable() instanceof TableController) {\r\n newRow.cells[0]?.focus();\r\n break;\r\n } else {\r\n await awaitTime(50);\r\n }\r\n }\r\n\r\n return newRow;\r\n }\r\n\r\n protected async asyncAction<T>(\r\n cb: () => Promise<T>,\r\n mutex = true,\r\n ): Promise<T> {\r\n if (mutex) {\r\n await this.mutex.acquire();\r\n }\r\n try {\r\n this.state.isLoading = true;\r\n const res = await cb();\r\n return res;\r\n } finally {\r\n this.state.isLoading = false;\r\n if (mutex) {\r\n this.mutex.release();\r\n }\r\n }\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const { hideDelButton, shownDeleteButtons, shownEditionButtons, gridForm } =\r\n this.properties;\r\n const mustShowAdditionalColumn =\r\n (!hideDelButton &&\r\n [...shownDeleteButtons.values()].some((c) => c !== false)) ||\r\n (!!gridForm &&\r\n [...shownEditionButtons.values()].some((c) => c !== false));\r\n\r\n this.controller.toggleColumnVisibility(\r\n 'additional',\r\n mustShowAdditionalColumn,\r\n );\r\n }\r\n\r\n protected getRow(index: number) {\r\n return this.tableController.body\r\n .getRowByIndex(index)\r\n ?.cells.filter((c) => c instanceof GridCell)\r\n .map((c) => (c as GridCell).getField());\r\n }\r\n\r\n protected async rebuildGrid(\r\n xmlString: string | TApiaGridDefinition,\r\n ): Promise<void> {\r\n const xml =\r\n typeof xmlString === 'string'\r\n ? (parseXml(xmlString) as TApiaGridDefinition)\r\n : (xmlString as TApiaGridDefinition);\r\n\r\n const fieldsArray = arrayOrArray(xml.field);\r\n const statesArray: (\r\n | NonNullable<TApiaGridField['row']>\r\n | NonNullable<TApiaGridField['fieldValue']>\r\n )[][] = fieldsArray.map((field) =>\r\n arrayOrArray((field.fieldValue || field.row)!),\r\n );\r\n\r\n this.properties.pages = xml.pages || this.properties.pages;\r\n this.properties.currentPage = xml.curPage || this.properties.currentPage;\r\n\r\n if (statesArray[0].length > this.controller.body.rows.length) {\r\n for (\r\n let i = this.controller.body.rows.length;\r\n i < statesArray[0].length;\r\n i++\r\n ) {\r\n const parsedFieldGroups = fieldsArray.map((field, columnIndex) => {\r\n if (field.fieldType === 'radio' || field.fieldType === 'select') {\r\n const parsedField = {\r\n ...field,\r\n ...arrayOrArray(field.row)[i],\r\n };\r\n return parsedField;\r\n }\r\n return {\r\n ...field,\r\n index: i,\r\n fieldValue: {\r\n properties: statesArray[columnIndex][i]?.properties,\r\n value: statesArray[columnIndex][i]?.value,\r\n },\r\n };\r\n });\r\n\r\n await this.addRowFromDefinitions(false, parsedFieldGroups);\r\n }\r\n } else if (statesArray[0].length < this.controller.body.rows.length) {\r\n const removeIndices = new Array(\r\n this.controller.body.rows.length - statesArray[0].length,\r\n )\r\n .fill(0)\r\n .map((_, i) => i + statesArray[0].length);\r\n\r\n removeIndices\r\n .sort((a, b) => b - a)\r\n .forEach((i) => {\r\n this.controller.body.getRowByIndex(i)?.remove();\r\n });\r\n }\r\n\r\n statesArray.forEach((fieldStates, fieldIndex) => {\r\n fieldStates.forEach((state, rowIndex) => {\r\n const fieldDefinition = fieldsArray[fieldIndex];\r\n const id = fieldDefinition.id;\r\n\r\n const field = this.getFieldById(id, rowIndex) as Field | undefined;\r\n\r\n if (field) {\r\n const possibleValues = (state as TApiaGridField['row'])\r\n ?.possibleValue;\r\n if (possibleValues) {\r\n (field as Select).setProperty(\r\n 'possibleValue',\r\n arrayOrArray(possibleValues),\r\n );\r\n }\r\n\r\n Object.assign(\r\n field.properties,\r\n parseFakeJSON(state.properties as any),\r\n );\r\n field.definition.index = this.startIndex + rowIndex;\r\n if (field instanceof File) {\r\n field.loadFromDefinition((state as any).file_prp); // Apia trae esta prop para los files\r\n } else if (field instanceof ModalInput) {\r\n (field as ModalInput).setValue({\r\n showValue:\r\n (state as TApiaGridField['fieldValue'])!.qry_show_value || '',\r\n storeValue: state.value || '',\r\n });\r\n } else if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.refreshColumnsVisibilities();\r\n }\r\n\r\n protected async runAction<T extends Record<string, any>>(\r\n behave: IApiaApiPostConfig<Record<string, any>>,\r\n ) {\r\n return post<T>(\r\n this.form.execution,\r\n await makeApiaUrl(this.form.execution, {\r\n action: 'gridAction',\r\n ajaxUrl: actions.forms,\r\n fldId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: { arrayFormat: 'repeat' },\r\n ...behave,\r\n },\r\n );\r\n }\r\n\r\n private swapRows(rows: number[], direction: 'up' | 'down') {\r\n let min = Infinity;\r\n\r\n for (const i of rows) {\r\n min = Math.min(min, i);\r\n\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n\r\n const aRow = this.tableController.body.getRowByIndex(i);\r\n const bRow = this.tableController.body.getRowByIndex(swapIndex);\r\n\r\n // Solamente se ejecuta el swap si ambas filas existen\r\n if (aRow && bRow) {\r\n this.getRow(i).forEach((c) => {\r\n this.cache.clearIndex(c.definition.index!);\r\n this.cache.clearIndex(swapIndex);\r\n c.definition.index = swapIndex;\r\n });\r\n this.getRow(swapIndex).forEach((c) => (c.definition.index = i));\r\n\r\n this.tableController.body.swapRows(aRow, bRow);\r\n\r\n // Forzamos el estado de selección a refrescarse para que se actualicen los botones de subir y bajar\r\n const selection = this.tableController.getState('selection');\r\n selection.forEach((c) => c.toggleSelection(true));\r\n }\r\n }\r\n\r\n if (min < Infinity) {\r\n this.tableController\r\n .getPluginOfType(FocusControllerPlugin)\r\n ?.scrollIntoView(\r\n this.tableController.body.getRowByIndex(min)!.getState('id'),\r\n );\r\n }\r\n }\r\n\r\n public toggleMaximize() {\r\n this.state.isMaximized = !this.state.isMaximized;\r\n }\r\n}\r\n","import { arrayOrArray, noNaN } from '@apia/util';\r\nimport { parseXml } from '../../../../../util';\r\nimport { setAjaxFormResponse } from '../../events/setAjaxFormResponse';\r\nimport { Grid } from '../Grid';\r\nimport type { GridActionResponse } from '../Grid/types';\r\nimport { Row } from '@apia/table2-controller';\r\n\r\nexport class GridPaginated extends Grid {\r\n /**\r\n * Returns the final index of the current page\r\n */\r\n public get finalIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN(this.properties.currentPage * pageSize - 1, 0);\r\n }\r\n\r\n public addRow(): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridAdd')) {\r\n if (this.hasServerNoAjaxEventsOfType('gridAdd')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridAdd', {});\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'add',\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async deleteRows(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridDelete')) {\r\n /**\r\n * Debo igualar la selección de la tabla con los índices a eliminar.\r\n * De esta manera garantizo su correcto acceso desde los eventos script.\r\n */\r\n if (undefined === index) {\r\n index = [...this.controller.getState('selection')].map((c) => {\r\n return c.index;\r\n });\r\n } else {\r\n this.controller.setSelection(arrayOrArray(index));\r\n }\r\n\r\n const deletingIndices = arrayOrArray(index)\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridDelete')) {\r\n /**\r\n * En caso de que haya eventos no ajax, simplemente se recarga la página.\r\n */\r\n await this.fireServerEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n rowId: deletingIndices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const minIndex = Math.min(...arrayOrArray(index));\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n\r\n let newSelectedRow: Row | undefined;\r\n\r\n if (currentPage === this.currentPage) {\r\n newSelectedRow =\r\n this.controller.body.rows[minIndex] ||\r\n this.controller.body.rows[minIndex - 1];\r\n } else {\r\n newSelectedRow = this.controller.body.rows.at(-1);\r\n }\r\n\r\n newSelectedRow?.toggleSelection(true);\r\n newSelectedRow?.scrollIntoView();\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async gotoPage(page: number): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page: page - 1,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n this.controller.clearSelection();\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n public async sortDown(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices)\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: indices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'down',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.index);\r\n const currentPage = this.currentPage;\r\n\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c + 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows[0]?.scrollIntoView();\r\n this.controller.body.rows[0]?.toggleSelection(true);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n public async sortUp(index?: number | number[]): Promise<boolean> {\r\n return this.asyncAction(async () => {\r\n if (await this.fireScriptEvent('gridSort')) {\r\n const indices = arrayOrArray(index || this.selectedIndices)\r\n .sort((a, b) => a - b)\r\n .map((c) => c + this.startIndex);\r\n\r\n if (this.hasServerNoAjaxEventsOfType('gridSort')) {\r\n await this.fireServerEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: indices,\r\n });\r\n } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'up',\r\n rowId: indices,\r\n },\r\n });\r\n\r\n const evs = (await res)?.data?.eventsXml;\r\n if (evs) {\r\n await setAjaxFormResponse(this.form.execution, parseXml(evs));\r\n }\r\n\r\n if (res?.data?.success) {\r\n const currentSelectionIndices = this.controller\r\n .getSelectedRows()\r\n .map((c) => c.index);\r\n\r\n const currentPage = this.currentPage;\r\n this.rebuildGrid(res!.data!.gridXml!);\r\n\r\n this.controller.clearSelection();\r\n if (currentPage === this.currentPage) {\r\n this.controller.setSelection(\r\n currentSelectionIndices.map((c) => c - 1),\r\n );\r\n this.controller.getSelectedRows()[0]?.scrollIntoView();\r\n } else {\r\n this.controller.body.rows.at(-1)?.toggleSelection(true);\r\n this.controller.body.rows.at(-1)?.scrollIntoView();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","import { TApiaImageProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Image extends Field<TApiaImageProperties> {}\r\n","import dayjs from 'dayjs';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaInputProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaInputDefinition } from '../../../../InitialData/types/fields/TApiaInputDefinition';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { SetValueOptions } from '../../types';\r\nimport { getDateFormat } from '@apia/util';\r\n\r\ntype InputEvents = 'onChange' | 'onModalReturn';\r\n\r\nexport class Input extends TranslatableField<\r\n TApiaInputProperties,\r\n string,\r\n TApiaInputDefinition\r\n> {\r\n fireEvent(eventName: InputEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n public async setValue(\r\n newValue: string | Date | number,\r\n options?: SetValueOptions,\r\n ): Promise<boolean> {\r\n if (this.attribute.valueType === 'S') {\r\n if (!this.definition.regExp || this.validateRegex(String(newValue))) {\r\n if (String(newValue) !== '') this.state.validation.errorMessage = null;\r\n\r\n return super.setValue(String(newValue), options);\r\n }\r\n } else if (this.attribute.valueType === 'N') {\r\n super.setValue(String(newValue), options);\r\n } else if (this.attribute.valueType === 'D') {\r\n if (typeof newValue === 'string') {\r\n const dateValue = dayjs(newValue, getDateFormat(options?.format));\r\n return super.setValue(\r\n dateValue.isValid() ? dateValue.format(getDateFormat()) : '',\r\n );\r\n } else if (newValue instanceof Date) {\r\n const dateValue = dayjs(newValue);\r\n return super.setValue(\r\n dateValue.isValid() ? dateValue.format(getDateFormat()) : '',\r\n );\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private validateRegex(value: string): boolean {\r\n if (!value) {\r\n this.state.validation.errorMessage = '';\r\n return true;\r\n }\r\n\r\n const regex = new RegExp(this.definition.regExp ?? '');\r\n\r\n if (!regex.test(String(value)) && value !== '') {\r\n this.state.validation.errorMessage =\r\n this.properties.regExpMessage || labels.errorRegexNotValidated();\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.errorMessage) return false;\r\n\r\n return super.validate();\r\n }\r\n\r\n protected isValidValue(): boolean {\r\n return !!this.getValue().trim();\r\n }\r\n}\r\n","import { TApiaLabelProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaLabelDefinition } from '../../../../InitialData/types/fields/TApiaLabelDefinition';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Label extends Field<TApiaLabelProperties, TApiaLabelDefinition> {}\r\n","import { TApiaLinkProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Link extends Field<TApiaLinkProperties> {}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { labels } from '../../../../../util/labels/labels';\r\nimport { TApiaMultipleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaMultipleDefinition } from '../../../../InitialData/types/fields/TApiaMultipleDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\n\r\nexport class Multiple extends FieldWithAttribute<\r\n TApiaMultipleProperties,\r\n string[]\r\n> {\r\n constructor({\r\n possibleValue,\r\n value,\r\n ...definition\r\n }: TApiaMultipleDefinition) {\r\n super({\r\n ...{\r\n ...definition,\r\n value: arrayOrArray(possibleValue)\r\n .filter((c) => c.selected)\r\n .map((c) => c.value),\r\n },\r\n properties: {\r\n ...definition.properties,\r\n possibleValue: arrayOrArray(possibleValue),\r\n },\r\n });\r\n }\r\n\r\n public setValue(\r\n newValue: string[],\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n return super.setValue(arrayOrArray(newValue), options);\r\n }\r\n\r\n public async validate(): Promise<boolean> {\r\n if (this.state.validation.dirty) {\r\n if (!(await this.synchronize(this.state.value))) {\r\n this.state.validation.errorMessage = labels.errorCouldNotSync();\r\n return false;\r\n }\r\n }\r\n\r\n const isValid =\r\n !!this.getValue()[0] ||\r\n !this.properties.required ||\r\n this.properties.inputAsText ||\r\n this.properties.visibilityHidden ||\r\n this.properties.disabled;\r\n\r\n this.state.validation.errorMessage = isValid\r\n ? null\r\n : labels.errorFieldRequired();\r\n\r\n return !this.state.validation.errorMessage;\r\n }\r\n}\r\n","import { TApiaPasswordProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Password extends FieldWithAttribute<\r\n TApiaPasswordProperties,\r\n string\r\n> {\r\n protected isValidValue(): boolean {\r\n return !!this.getValue().trim();\r\n }\r\n}\r\n","import { TApiaRadioProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaRadioButtonDefinition } from '../../../../InitialData/types/fields/TApiaRadioButtonDefinition';\r\nimport { Form } from '../../Form';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\ntype RadioEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nexport class Radio extends FieldWithAttribute<\r\n TApiaRadioProperties,\r\n number | string,\r\n TApiaRadioButtonDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaRadioButtonDefinition) {\r\n super({\r\n ...definition,\r\n properties: { ...definition.properties, possibleValue },\r\n });\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n await this.fireEvent('onPopulate');\r\n }\r\n\r\n fireEvent(eventName: RadioEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { TApiaSelectProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaSelectDefinition } from '../../../../InitialData/types/fields/TApiaSelectDefinition';\r\nimport { TApiaFieldWithAttributeBaseProps } from '../../../../InitialData/types/TApiaField';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Select extends FieldWithAttribute<\r\n TApiaSelectProperties,\r\n string,\r\n TApiaSelectDefinition\r\n> {\r\n constructor({ possibleValue, ...definition }: TApiaSelectDefinition) {\r\n super({\r\n ...definition,\r\n properties: {\r\n ...definition.properties,\r\n possibleValue: arrayOrArray(possibleValue),\r\n },\r\n });\r\n }\r\n\r\n protected getInitialValue({\r\n properties: { possibleValue },\r\n }: TApiaFieldWithAttributeBaseProps<TApiaSelectProperties>): Promise<string> {\r\n return Promise.resolve(\r\n String(possibleValue?.find((c) => c.selected)?.value || ''),\r\n );\r\n }\r\n}\r\n","import { TApiaTextareaProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TranslatableField } from '../../TranslatableField';\r\n\r\nexport class Textarea extends TranslatableField<\r\n TApiaTextareaProperties,\r\n string\r\n> {\r\n protected isValidValue(): boolean {\r\n return !!this.getValue().trim();\r\n }\r\n}\r\n","import { TApiaTitleProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { Field } from '../../Field';\r\n\r\nexport class Title extends Field<TApiaTitleProperties> {}\r\n","import type { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport type { TApiaTreeProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport type {\r\n TApiaTreeDefinition,\r\n TApiaTreePossibleValue,\r\n} from '../../../../InitialData/types/fields/TApiaTreeDefinition';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { IMobXChildKeeper, MobXTree } from '@apia/tree2-controller';\r\nimport { Form } from '../../Form';\r\nimport { isFieldShowAsText } from '../../util/isFieldShowAsText';\r\nimport { Comparator } from '../../../../../util/comparators/shallowEqual';\r\n\r\nexport type TTreeValue = string | number;\r\ntype TreeEvents = 'onPopulate' | 'onChange' | 'onClick';\r\n\r\nfunction getValuesArray(tree: TApiaTreePossibleValue[]) {\r\n return tree.reduce((acc, curr) => {\r\n if (curr.selected) {\r\n acc.push(curr.value);\r\n }\r\n if (curr.possibleValue) {\r\n acc.push(...getValuesArray(arrayOrArray(curr.possibleValue)));\r\n }\r\n return acc;\r\n }, [] as TTreeValue[]);\r\n}\r\n\r\nexport class Tree extends FieldWithAttribute<\r\n TApiaTreeProperties,\r\n TTreeValue[],\r\n TApiaTreeDefinition\r\n> {\r\n controller: MobXTree = {} as MobXTree;\r\n\r\n private parseTreeValues(\r\n parent: IMobXChildKeeper,\r\n pv: TApiaTreePossibleValue | TApiaTreePossibleValue[] | undefined,\r\n ) {\r\n arrayOrArray(pv).forEach((c) => {\r\n const node = parent.create({\r\n id: String(c.value),\r\n initialState: {\r\n label: c.text,\r\n isSelected: this.state.value.find((s) => s === c.value) !== undefined,\r\n isSelectable:\r\n arrayOrArray(c.possibleValue).length === 0 ||\r\n this.properties.selParent,\r\n isExpanded: true,\r\n icon: () => {\r\n if (\r\n (this.properties.parentIcon && c.possibleValue) ||\r\n (this.properties.leafIcon && !c.possibleValue)\r\n ) {\r\n return null;\r\n }\r\n return null;\r\n },\r\n },\r\n });\r\n\r\n this.parseTreeValues(node, c.possibleValue);\r\n });\r\n }\r\n\r\n constructor({ possibleValue, ...props }: TApiaTreeDefinition) {\r\n super(props);\r\n this.properties.possibleValue = arrayOrArray(possibleValue);\r\n }\r\n\r\n protected getSynchronizePostConfiguration(\r\n value: TTreeValue[],\r\n ): IApiaApiPostConfig<any> {\r\n const conf = super.getSynchronizePostConfiguration(value);\r\n return {\r\n ...conf,\r\n postData: {\r\n ...conf.postData,\r\n clearValues: true,\r\n },\r\n };\r\n }\r\n fireEvent(eventName: TreeEvents): Promise<boolean> {\r\n return super.fireEvent(eventName);\r\n }\r\n\r\n setProperty<K extends keyof TApiaTreeProperties>(\r\n propName: K,\r\n propValue: TApiaTreeProperties[K],\r\n ) {\r\n if (propName === 'possibleValue') {\r\n this.controller.removeAllChildren();\r\n this.state.value = getValuesArray(\r\n arrayOrArray(propValue as any) as TApiaTreePossibleValue[],\r\n );\r\n this.parseTreeValues(\r\n this.controller,\r\n propValue as TApiaTreeProperties['possibleValue'],\r\n );\r\n }\r\n super.setProperty(propName, propValue);\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n\r\n this.state.value = getValuesArray(this.properties.possibleValue);\r\n\r\n this.controller = new MobXTree({\r\n onSelect: (ev) => {\r\n if (isFieldShowAsText(this) || this.properties.disabled) {\r\n return false;\r\n } else {\r\n const selection = [...ev.values()].map((c) => c.id);\r\n this.setValue(selection, { markAsDirty: false });\r\n if (selection.length === 0) {\r\n this.setValue([], { markAsDirty: false });\r\n }\r\n return true;\r\n }\r\n },\r\n isMultiple: this.properties.multiselect,\r\n toggleNodesOnLabelClick: !this.properties.selParent,\r\n });\r\n\r\n this.setProperty(\r\n 'possibleValue',\r\n arrayOrArray(this.properties.possibleValue),\r\n );\r\n }\r\n\r\n protected isValidValue() {\r\n return this.state.value.length > 0;\r\n }\r\n\r\n public async setValue(\r\n newValue: TTreeValue[],\r\n options?:\r\n | Partial<{\r\n comparator: Comparator<any>;\r\n format: 'd/m/Y' | 'apia';\r\n markAsDirty: boolean;\r\n synchronize: boolean;\r\n }>\r\n | undefined,\r\n ): Promise<boolean> {\r\n const res = await super.setValue(newValue, options);\r\n\r\n if (res) {\r\n this.controller.setSelectedNodes(new Set(newValue.map((c) => String(c))));\r\n }\r\n\r\n return res;\r\n }\r\n}\r\n","import {\r\n CellState,\r\n TableController,\r\n TBuildRow,\r\n TBuildTable,\r\n} from '@apia/table2-controller';\r\nimport { TApiaSchedulerProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { Field } from '../../Field';\r\nimport {\r\n ISelectedDay,\r\n IStage,\r\n IStageButton,\r\n TScheduleResult,\r\n TSchedulerState,\r\n TTskSchDay,\r\n} from './types';\r\nimport { get, makeApiaUrl } from '../../../../../util';\r\nimport { arrayOrArray, noNaN, TDateFormat } from '@apia/util';\r\nimport dayjs from 'dayjs';\r\nimport { getWindow } from '../../../../../util/dom/getWindow';\r\nimport { Form } from '../../Form';\r\n\r\nconst dateFormat: TDateFormat = 'DD/MM/YYYY';\r\nexport function getCurrentDate() {\r\n return dayjs().format(dateFormat);\r\n}\r\nconst initState: TSchedulerState = {\r\n validation: {\r\n dirty: false,\r\n errorMessage: '',\r\n synchronizing: false,\r\n },\r\n isStageMounted: {},\r\n stageData: [],\r\n isLoading: 'NotLoading',\r\n initialProps: {\r\n schId: '',\r\n proId: '',\r\n proVerId: '',\r\n tskId: '',\r\n showDisponibility: 'false',\r\n showAttributes: 'false',\r\n },\r\n};\r\n\r\nexport interface ISchedulerStore {}\r\nexport class Scheduler extends Field<TApiaSchedulerProperties> {\r\n declare state: TSchedulerState;\r\n private inited = false;\r\n\r\n protected readonly tableController: TableController = new TableController({\r\n allowEdition: false,\r\n allowSelection: false,\r\n isSelectionMultiple: false,\r\n allowResize: false,\r\n });\r\n\r\n constructor(definition: TApiaFieldBaseDefinition<TApiaSchedulerProperties>) {\r\n super(definition);\r\n this.state = initState;\r\n }\r\n\r\n public get controller() {\r\n return this.tableController;\r\n }\r\n\r\n get initialProperties() {\r\n const value = String(this.properties.value);\r\n let start = 0;\r\n let end = 0;\r\n start = value?.indexOf('loadSchedExec');\r\n start += 14;\r\n\r\n end = value?.indexOf(';</div>');\r\n end -= 1;\r\n\r\n const strParts = value\r\n ?.slice(start, end)\r\n .replaceAll(`'`, ``)\r\n .replaceAll(' ', '');\r\n const arrParts = strParts.split(',');\r\n\r\n return {\r\n schId: arrParts[1],\r\n proId: arrParts[2],\r\n proVerId: arrParts[3],\r\n tskId: arrParts[4],\r\n showDisponibility: arrParts[5],\r\n showAttributes: arrParts[6],\r\n };\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.loadWeek();\r\n }\r\n\r\n public async loadWeek(weekDay = getCurrentDate()) {\r\n const { schId, proId, proVerId, tskId } = this.initialProperties;\r\n const result = await get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'getExecutionSchedulerWeek',\r\n weekDay,\r\n schId,\r\n proId,\r\n proVerId,\r\n tskId,\r\n }),\r\n );\r\n\r\n if (result?.data) {\r\n this.state.data = result.data;\r\n this.state.initialProps = this.initialProperties;\r\n this.makeDaysStage(result.data);\r\n\r\n this.state.validation = {\r\n ...this.state.validation,\r\n synchronizing: false,\r\n };\r\n const rows = this.parseRows(result.data);\r\n\r\n if (!this.inited) {\r\n this.inited = true;\r\n const tableJson = {\r\n columns: this.getSchedulerColumns(result?.data),\r\n rows,\r\n filters: [],\r\n } as TBuildTable;\r\n this.controller.build(tableJson);\r\n } else {\r\n this.controller.head.getState('rows').forEach((r) => {\r\n r.cells.forEach((cell, cellIndex) => {\r\n const newCell = this.getSchedulerColumns(result.data)[cellIndex];\r\n if (newCell) {\r\n if (cellIndex !== 0) {\r\n cell.setState((cellState) => {\r\n return {\r\n ...cellState,\r\n content: newCell.content,\r\n };\r\n });\r\n }\r\n }\r\n });\r\n });\r\n this.controller.body.getState('rows').forEach((r, i) => {\r\n r.cells.forEach((cell, cellIndex) => {\r\n const newCell = rows[i]?.cells?.[cellIndex];\r\n if (newCell) {\r\n cell.setState((cellState) => {\r\n return {\r\n ...cellState,\r\n content: newCell.content,\r\n properties: newCell.properties,\r\n domProperties: newCell.domProperties,\r\n };\r\n });\r\n }\r\n });\r\n });\r\n }\r\n } else {\r\n this.state.validation.errorMessage = 'Failed to load scheduler data';\r\n }\r\n this.state.isLoading = 'NotLoading';\r\n }\r\n\r\n private parseRows(data: TScheduleResult): TBuildRow[] {\r\n const retrievedDays = arrayOrArray(data?.tskSchDay);\r\n const hourIndexes = arrayOrArray(\r\n retrievedDays.find((c) => c?.tskSchHour)?.tskSchHour,\r\n );\r\n const columnsWithOutHour = this.getSchedulerColumns(data).slice(1);\r\n\r\n const newRows = hourIndexes.map((hour, rowIdx) => {\r\n const currentDate = dayjs();\r\n const currentHour = Number(dayjs().format('HHmm'));\r\n const newRow: TBuildRow = {\r\n id: hour.hour,\r\n cells: [\r\n {\r\n colName: 'hour',\r\n content: `${hour.hour.slice(0, -2)}:${hour.hour.slice(2)}`,\r\n },\r\n ...columnsWithOutHour\r\n .map((_, colIdx) => {\r\n const currentDayDefinition = retrievedDays[colIdx];\r\n const currentHourDefinition = arrayOrArray(\r\n currentDayDefinition?.tskSchHour,\r\n )[rowIdx];\r\n\r\n const parsingDay = dayjs(currentDayDefinition?.day, dateFormat);\r\n const parsingHour = Number(currentHourDefinition?.hour);\r\n\r\n const isEnabled =\r\n !hour?.disabled &&\r\n Number(currentHourDefinition?.value) +\r\n Number(this.state.data?.overassign) >\r\n 0 &&\r\n (!(\r\n parsingDay.isSame(currentDate, 'day') ||\r\n parsingDay.isBefore(currentDate, 'day')\r\n ) ||\r\n (parsingDay.isSame(currentDate, 'day') &&\r\n currentHour <= parsingHour));\r\n\r\n const isQueriedDisabled = hour?.disabled;\r\n\r\n const returnCell: CellState = {\r\n colName: columnsWithOutHour[colIdx].colName,\r\n domProperties: {\r\n className: isEnabled ? '' : 'disabled',\r\n },\r\n properties: {\r\n cellId: `${hour.hour}_${colIdx + 1}_${\r\n data?.mondayWeek ?? ''\r\n }`,\r\n currentDayDefinition,\r\n isEnabled,\r\n isQueriedDisabled,\r\n weekDay: data?.mondayWeek ?? '',\r\n dayNumber: colIdx + 1,\r\n hour: hour.hour,\r\n value: Number(currentHourDefinition?.value),\r\n valuePlusOverassign:\r\n Number(currentHourDefinition?.value) +\r\n Number(this.state.data?.overassign),\r\n isOverassignClassName: !!(\r\n !Number(currentHourDefinition?.value) &&\r\n Number(currentHourDefinition?.value) <\r\n Number(this.state.data?.overassign)\r\n ),\r\n },\r\n };\r\n return returnCell;\r\n })\r\n .filter((c): c is CellState => c !== null),\r\n ],\r\n };\r\n\r\n return newRow;\r\n });\r\n\r\n return newRows;\r\n }\r\n\r\n private isMorningTime(hour: number) {\r\n if (Number(hour) < 1200) return true;\r\n return false;\r\n }\r\n\r\n public setState(newState: Partial<TSchedulerState>) {\r\n Object.entries(newState).forEach(([key, value]) => {\r\n (this.state[key as keyof TSchedulerState] as unknown) = value;\r\n });\r\n }\r\n\r\n public setDay(day: ISelectedDay) {\r\n if (!this.state.selectedDay) this.state.selectedDay = {};\r\n this.state.selectedDay = { ...this.state.selectedDay, ...day };\r\n }\r\n\r\n public setStage({ index, newStage }: { index: number; newStage: IStage }) {\r\n if (!this.state.stageData) this.state.stageData = [];\r\n this.state.stageData[index] = newStage;\r\n this.state.stageData.splice(index + 1);\r\n }\r\n\r\n public syncStage(day: TTskSchDay, hour: number) {\r\n this.makeMorningOrAfternoonStage(day);\r\n this.makeHoursStage(day, this.isMorningTime(hour));\r\n }\r\n\r\n public makeDaysStage(data?: TScheduleResult) {\r\n const dayData = data ?? this.state.data;\r\n const overassign = this.state.data?.overassign;\r\n\r\n const availableDays =\r\n arrayOrArray(dayData?.tskSchDay).map((currentDay) => {\r\n const isDisabled = !arrayOrArray(currentDay?.tskSchHour).find(\r\n (hour) => {\r\n const parsingDay = dayjs(currentDay.day, dateFormat);\r\n const currentDate = dayjs();\r\n const parsingHour = Number(hour.hour);\r\n const currentHour = Number(dayjs().format('HHmm'));\r\n\r\n if (\r\n (hour.hour !== undefined &&\r\n noNaN(hour.value) + noNaN(overassign) >= 0 &&\r\n !(\r\n parsingDay.isSame(currentDate, 'day') ||\r\n parsingDay.isBefore(currentDate, 'day')\r\n )) ||\r\n (parsingDay.isSame(currentDate, 'day') &&\r\n currentHour <= parsingHour &&\r\n !hour.disabled)\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n );\r\n\r\n return { ...currentDay, isDisabled };\r\n }) ?? [];\r\n\r\n const availableDaysButtons = availableDays.map((c) => {\r\n const parsingDay = dayjs(c.day, dateFormat);\r\n const returnBtn: IStageButton = {\r\n isDisabled: c.isDisabled,\r\n 'aria-label': getWindow(this.form.execution).LBL_DAYS[\r\n dayjs(parsingDay).day()\r\n ],\r\n title: c.day,\r\n label: `${getWindow(this.form.execution).LBL_DAYS[dayjs(parsingDay).day()]}, \r\n ${dayjs(parsingDay).get('date')}`,\r\n value: '',\r\n isSelectedSelector: () => {\r\n return this.state.selectedDay?.day === c.day;\r\n },\r\n\r\n action: () => {\r\n const isLoading = this.state.isLoading;\r\n if (isLoading !== 'NotLoading') return;\r\n\r\n this.makeMorningOrAfternoonStage(c);\r\n\r\n const parsedMondayWeek = dayjs(dayData?.mondayWeek, dateFormat).get(\r\n 'date',\r\n );\r\n const parsedDay = dayjs(c.day, dateFormat).get('date');\r\n\r\n this.setDay({\r\n mondayWeek: dayData?.mondayWeek,\r\n day: c.day,\r\n dayNumber: Number(parsedDay) - Number(parsedMondayWeek) + 1,\r\n });\r\n },\r\n };\r\n\r\n return returnBtn;\r\n });\r\n\r\n this.setStage({\r\n index: 0,\r\n newStage: {\r\n name: 'daysList',\r\n buttons: [...availableDaysButtons],\r\n },\r\n });\r\n }\r\n\r\n private makeMorningOrAfternoonStage(day: TTskSchDay) {\r\n const thisDate = day.day;\r\n const hours = arrayOrArray(day.tskSchHour);\r\n const isLoading = this.state.isLoading;\r\n\r\n const overassign = this.state.data?.overassign;\r\n const parsingDay = dayjs(thisDate, dateFormat);\r\n const currentDate = dayjs();\r\n const currentHour = Number(dayjs().format('HHmm'));\r\n\r\n const morningHours = hours?.filter((hour) => {\r\n return (\r\n ((parsingDay.isSame(currentDate, 'day') &&\r\n currentHour <= Number(hour.hour)) ||\r\n (!parsingDay.isSame(currentDate, 'day') &&\r\n Number(hour.value) + Number(overassign) > 0)) &&\r\n Number(hour.hour) < 1200\r\n );\r\n });\r\n const afternoonHours = hours?.filter((hour) => {\r\n return (\r\n ((parsingDay.isSame(currentDate, 'day') &&\r\n currentHour <= Number(hour.hour)) ||\r\n (!parsingDay.isSame(currentDate, 'day') &&\r\n Number(hour.value) + Number(overassign) > 0)) &&\r\n Number(hour.hour) >= 1200\r\n );\r\n });\r\n\r\n const morningButton: IStageButton = {\r\n isDisabled: (morningHours?.length ?? 0) === 0,\r\n label: getWindow(this.form.execution).LBL_SCHED_MORNING_TEXT,\r\n title: getWindow(this.form.execution).LBL_SCHED_MORNING_TEXT,\r\n 'aria-label': getWindow(this.form.execution).LBL_SCHED_MORNING_TEXT,\r\n value: '',\r\n isSelectedSelector: () => {\r\n return this.isMorningTime(\r\n this.state.selectedDay?.morningOrAfternoonSelected as number,\r\n );\r\n },\r\n action: () => {\r\n if (isLoading !== 'NotLoading') return;\r\n\r\n this.setDay({\r\n morningOrAfternoonSelected: 1100,\r\n });\r\n\r\n const newStagesStringArray: string[] = [];\r\n\r\n this.makeHoursStage(day, this.isMorningTime(1100));\r\n this.setState({\r\n stageList: newStagesStringArray,\r\n });\r\n },\r\n };\r\n\r\n const afternoonButton: IStageButton = {\r\n isDisabled: (afternoonHours?.length ?? 0) === 0,\r\n label: getWindow(this.form.execution).LBL_SCHED_AFTERNOON_TEXT,\r\n title: getWindow(this.form.execution).LBL_SCHED_AFTERNOON_TEXT,\r\n 'aria-label': getWindow(this.form.execution).LBL_SCHED_AFTERNOON_TEXT,\r\n value: '',\r\n isSelectedSelector: () => {\r\n if (this.state.selectedDay?.morningOrAfternoonSelected) {\r\n return !this.isMorningTime(\r\n this.state.selectedDay?.morningOrAfternoonSelected,\r\n );\r\n }\r\n return false;\r\n },\r\n action: () => {\r\n if (isLoading !== 'NotLoading') return;\r\n\r\n this.setDay({\r\n morningOrAfternoonSelected: 1300,\r\n });\r\n this.makeHoursStage(day, this.isMorningTime(1300));\r\n },\r\n };\r\n\r\n this.setStage({\r\n index: 1,\r\n newStage: {\r\n name: 'morningOrAfternoon',\r\n buttons: [morningButton, afternoonButton].filter(\r\n (current): current is IStageButton => current !== null,\r\n ),\r\n },\r\n });\r\n }\r\n\r\n private makeHoursStage(day: TTskSchDay, isMorning: boolean) {\r\n const thisDate = day.day;\r\n const hours = arrayOrArray(day.tskSchHour);\r\n const overassign = this.state.data?.overassign;\r\n const parsingDay = dayjs(thisDate, dateFormat);\r\n const currentDate = dayjs();\r\n const currentHour = Number(dayjs().format('HHmm'));\r\n const isLoading = this.state.isLoading;\r\n let morningOrAfternoonHours;\r\n\r\n if (isMorning) {\r\n morningOrAfternoonHours = hours?.filter((hour) => {\r\n return (\r\n ((parsingDay.isSame(currentDate, 'day') &&\r\n currentHour <= Number(hour.hour)) ||\r\n (!parsingDay.isSame(currentDate, 'day') &&\r\n Number(hour.value) + Number(overassign) > 0)) &&\r\n Number(hour.hour) < 1200\r\n );\r\n });\r\n } else {\r\n morningOrAfternoonHours = hours?.filter((hour) => {\r\n return (\r\n ((parsingDay.isSame(currentDate, 'day') &&\r\n currentHour <= Number(hour.hour)) ||\r\n (!parsingDay.isSame(currentDate, 'day') &&\r\n Number(hour.value) + Number(overassign) > 0)) &&\r\n Number(hour.hour) >= 1200\r\n );\r\n });\r\n }\r\n\r\n const enableHours = morningOrAfternoonHours?.filter(\r\n (hour) => !hour.disabled,\r\n );\r\n\r\n this.setStage({\r\n index: 2,\r\n newStage: {\r\n name: 'daysHours',\r\n buttons: enableHours?.map((hour) => {\r\n const returnButton: IStageButton = {\r\n title: hour.hour,\r\n label: `${hour.hour.slice(0, -2)}:${hour.hour.slice(2)}`,\r\n value: hour.value,\r\n 'aria-label': hour.hour,\r\n isSelectedSelector: () => {\r\n return this.state?.selectedDay?.hour === hour.hour;\r\n },\r\n action: () => {\r\n if (isLoading !== 'NotLoading') return;\r\n this.setState({\r\n selectedCell: `${hour.hour} ${String(\r\n this.state?.selectedDay?.dayNumber,\r\n )} ${this.state?.selectedDay?.mondayWeek as string}`,\r\n });\r\n this.setDay({\r\n hour: hour.hour,\r\n mondayWeek: this.state?.selectedDay?.mondayWeek,\r\n });\r\n get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'setExecutionSchedulerSelectedDay',\r\n weekDay: this.state?.selectedDay?.mondayWeek,\r\n hour: hour.hour,\r\n dayNumber: this.state?.selectedDay?.dayNumber,\r\n }),\r\n )\r\n .then(() => {})\r\n .catch(() => {});\r\n },\r\n };\r\n\r\n return returnButton;\r\n }),\r\n },\r\n });\r\n }\r\n\r\n public async deleteDate() {\r\n this.setState({ isLoading: 'DeleteWeek' });\r\n get<TScheduleResult>(\r\n this.form.execution,\r\n makeApiaUrl(this.form.execution, {\r\n ajaxUrl: '/apia.design.TaskSchedulerAction.run',\r\n action: 'clearExecutionSchedulerSelectedDay',\r\n }),\r\n )\r\n .then((response) => {\r\n if (response?.data?.success) {\r\n this.setState({\r\n selectedDay: {},\r\n selectedCell: null,\r\n isLoading: 'NotLoading',\r\n });\r\n this.makeDaysStage();\r\n }\r\n })\r\n .catch(() => {});\r\n }\r\n\r\n public async goNextWeek() {\r\n if (this.state.isLoading === 'NotLoading') {\r\n this.setState({ isLoading: 'NextWeek' });\r\n\r\n await this.loadWeek(\r\n dayjs(this.state.data?.mondayWeek, dateFormat)\r\n .add(7, 'day')\r\n .format(dateFormat),\r\n );\r\n this.makeDaysStage(this.state.data);\r\n }\r\n }\r\n\r\n public async goPreviousWeek() {\r\n if (this.state.isLoading === 'NotLoading') {\r\n this.setState({ isLoading: 'LastWeek' });\r\n await this.loadWeek(\r\n dayjs(this.state.data?.mondayWeek, dateFormat)\r\n .subtract(7, 'day')\r\n .format(dateFormat),\r\n );\r\n this.makeDaysStage(this.state.data);\r\n }\r\n }\r\n\r\n public parsedDateLabel = () => {\r\n const mondayWeek = this.state?.data?.mondayWeek;\r\n if (!mondayWeek) {\r\n return '';\r\n } else {\r\n const monday = dayjs(mondayWeek, dateFormat);\r\n const sunday = monday.add(6, 'day');\r\n\r\n const mondayDate = noNaN(monday.date());\r\n const sundayDate = noNaN(sunday.date());\r\n\r\n const mondayMonth = noNaN(monday.month());\r\n const sundayMonth = noNaN(sunday.month());\r\n\r\n const mondayYear = noNaN(monday.year());\r\n const sundayYear = noNaN(sunday.year());\r\n\r\n const getMonthLabel = (monthIndex: number) =>\r\n getWindow(this.form.execution).LBL_MONTHS[monthIndex];\r\n\r\n if (mondayDate > sundayDate && mondayMonth < sundayMonth) {\r\n return `${mondayDate} de ${getMonthLabel(mondayMonth)} - ${sundayDate} de ${getMonthLabel(sundayMonth)}, ${mondayYear}`;\r\n }\r\n\r\n if (mondayMonth > sundayMonth) {\r\n return `${mondayDate} de ${getMonthLabel(mondayMonth)}, ${mondayYear} - ${sundayDate} de ${getMonthLabel(sundayMonth)}, ${sundayYear}`;\r\n }\r\n\r\n return `${mondayDate} - ${sundayDate} de ${getMonthLabel(mondayMonth)}, ${mondayYear}`;\r\n }\r\n };\r\n\r\n public getSchedulerColumns(data: TScheduleResult | null) {\r\n if (!data || !data.mondayWeek) {\r\n return [];\r\n }\r\n const columns = [\r\n {\r\n content: getWindow(this.form.execution).TSK_SCH_HOUR,\r\n colName: 'Hour',\r\n width: '75px',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_MON} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n ).format('DD/MM')}`,\r\n colName: 'Monday',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_TUE} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n )\r\n .add(1, 'day')\r\n .format('DD/MM')}`,\r\n colName: 'Tuesday',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_WED} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n )\r\n .add(2, 'day')\r\n .format('DD/MM')} `,\r\n colName: 'Wednesday',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_THU} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n )\r\n .add(3, 'day')\r\n .format('DD/MM')}`,\r\n colName: 'Thursday',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_FRI} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n )\r\n .add(4, 'day')\r\n .format('DD/MM')}`,\r\n colName: 'Friday',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_SAT} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n )\r\n .add(5, 'day')\r\n .format('DD/MM')}`,\r\n colName: 'Saturday',\r\n },\r\n {\r\n content: `${getWindow(this.form.execution).TSK_DAY_SUN} ${dayjs(\r\n data?.mondayWeek,\r\n dateFormat,\r\n )\r\n .add(6, 'day')\r\n .format('DD/MM')}`,\r\n\r\n colName: 'Sunday',\r\n },\r\n ] as CellState[];\r\n return columns;\r\n }\r\n}\r\n","const Field = {\r\n // field types\r\n TYPE_INPUT: 'input',\r\n TYPE_SELECT: 'select',\r\n TYPE_RADIO: 'radio',\r\n TYPE_CHECK: 'check',\r\n TYPE_BUTTON: 'button',\r\n TYPE_AREA: 'area',\r\n TYPE_LABEL: 'label',\r\n TYPE_TITLE: 'title',\r\n TYPE_FILE: 'file',\r\n TYPE_MULTIPLE: 'multiple',\r\n TYPE_HIDDEN: 'hidden',\r\n TYPE_PASSWORD: 'password',\r\n TYPE_GRID: 'grid',\r\n TYPE_IMAGE: 'image',\r\n TYPE_HREF: 'href',\r\n TYPE_EDITOR: 'editor',\r\n TYPE_TREE: 'tree',\r\n TYPE_CAPTCHA: 'captcha',\r\n\r\n // field functions\r\n FUNC_CLICK: 'onclick',\r\n FUNC_CHANGE: 'onchange',\r\n FUNC_MODAL_RETURN: 'onmodalreturn',\r\n\r\n FUNC_ROW_ADD: 'onrowadd',\r\n FUNC_ROW_DELETE: 'onrowdelete',\r\n FUNC_ROW_SORT: 'onrowsort',\r\n FUNC_COL_SELECT: 'oncolselect',\r\n\r\n // Attribute w/ props json for fields\r\n FIELD_PROPERTIES: 'properties',\r\n\r\n // Field properties\r\n PROPERTY_NAME: 'name',\r\n PROPERTY_SIZE: 'size',\r\n PROPERTY_READONLY: 'readonly',\r\n PROPERTY_DISABLED: 'disabled',\r\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\r\n PROPERTY_FONT_COLOR: 'fontColor',\r\n PROPERTY_VALUE: 'value',\r\n PROPERTY_REQUIRED: 'required',\r\n PROPERTY_COLSPAN: 'colspan',\r\n PROPERTY_ROWSPAN: 'rowspan',\r\n PROPERTY_MODAL: 'modal',\r\n PROPERTY_ROWS: 'thisRows',\r\n PROPERTY_BOLD: 'bold',\r\n PROPERTY_UNDERLINED: 'underlined',\r\n PROPERTY_ALIGNMENT: 'alignment',\r\n PROPERTY_IMAGE: 'imageUrl',\r\n PROPERTY_COL_WIDTH: 'colWidth',\r\n PROPERTY_GRID_HEIGHT: 'gridHeight',\r\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\r\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\r\n PROPERTY_TRANSIENT: 'transient',\r\n PROPERTY_GRID_TITLE: 'gridTitle',\r\n PROPERTY_GRID_FORM: 'gridForm',\r\n PROPERTY_TOOLTIP: 'tooltip',\r\n PROPERTY_VALUE_COLOR: 'valueColor',\r\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\r\n PROPERTY_NO_DOWNLOAD: 'noDownload',\r\n PROPERTY_NO_ERASE: 'noErase',\r\n PROPERTY_NO_LOCK: 'noLock',\r\n PROPERTY_NO_HISTORY: 'noHistory',\r\n PROPERTY_NO_MODIFY: 'noModify',\r\n PROPERTY_ALLOW_EDITION: 'allowEdition',\r\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\r\n PROPERTY_URL: 'url',\r\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\r\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\r\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\r\n PROPERTY_PAGED_GRID: 'paged',\r\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\r\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\r\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\r\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\r\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\r\n PROPERTY_MAX_REG_GRID: 'maxRecords',\r\n PROPERTY_GRID_LABEL: 'gridColTitle',\r\n PROPERTY_GRID_QUERY: 'gridQuery',\r\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\r\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\r\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\r\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\r\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\r\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\r\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\r\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\r\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\r\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\r\n PROPERTY_DISPLAY_NONE: 'displayNone',\r\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\r\n PROPERTY_CHECKED: 'checked',\r\n PROPERTY_FILE_PREVIEW: 'filePreview',\r\n PROPERTY_NOT_PRINT: 'noPrint',\r\n // tree component\r\n PROPERTY_SELECT_PARENT: 'selParent',\r\n PROPERTY_HEIGHT: 'height',\r\n PROPERTY_MULTISELECT: 'multiselect',\r\n PROPERTY_SEL_PARENT: 'selParent',\r\n PROPERTY_PARENT_ICON: 'parentIcon',\r\n PROPERTY_LEAF_ICON: 'leafIcon',\r\n PROPERTY_CSS_CLASS: 'cssClass',\r\n PROPERTY_DOC_TYPE: 'docType',\r\n // file component\r\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\r\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\r\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\r\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\r\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\r\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\r\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\r\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\r\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\r\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\r\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\r\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\r\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\r\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\r\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\r\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\r\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\r\n\r\n // Mensajes de error\r\n WRONG_ATT_TYPE_ERROR:\r\n 'Component does not support attributes of type <TOK>. Contact system administrator',\r\n\r\n // Keys almacenadas en los campos\r\n STORE_KEY_FIELD: 'field',\r\n STORE_KEY_FORM: 'form',\r\n\r\n PROPERTY_ARIA_DESCRIPTION: 'ariaDescription',\r\n PROPERTY_ARIA_LABEL: 'ariaLabel',\r\n PROPERTY_ALT: 'alt',\r\n PROPERTY_AUTO_COMPLETE: 'autoComplete',\r\n PROPERTY_AUTO_FOCUS: 'autoFocus',\r\n PROPERTY_INPUT_TYPE: 'inputType',\r\n PROPERTY_PLACE_HOLDER: 'placeHolder',\r\n PROPERTY_TITLE: 'title',\r\n} as const;\r\n\r\nexport default Field;\r\n","const Form = {\r\n FUNC_LOAD: 'onload',\r\n FUNC_RELOAD: 'onreload',\r\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\r\n PROPERTY_FORM_HIDDEN: 'frmHidden',\r\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\r\n PROPERTY_FORM_TAB: 'frmTab',\r\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\r\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\r\n PROPERTY_FORM_READONLY: 'readOnly',\r\n SIGNABLE_FORM: 'signableForm',\r\n MARKED_TO_SIGN: 'markedToSign',\r\n REQUIRED_SIGN: 'requiredSignableForm',\r\n LANGUAGES: 'langs',\r\n} as const;\r\n\r\nexport default Form;\r\n","import Field from './Field';\r\nimport Form from './Form';\r\n\r\nexport const IProperty = {\r\n ...Field,\r\n ...Form,\r\n} as const;\r\n","import { makeObservable, observable } from 'mobx';\r\nimport { IButton } from '../types';\r\n\r\nexport class ButtonsAction {\r\n constructor(private button: IButton) {\r\n makeObservable<ButtonsAction, 'button'>(this, {\r\n button: observable,\r\n });\r\n }\r\n\r\n private update(props: Partial<IButton>) {\r\n if (this.button) {\r\n this.button = { ...this.button, ...props };\r\n }\r\n }\r\n\r\n get action() {\r\n return this;\r\n }\r\n\r\n get disabled() {\r\n return this.button.disabled;\r\n }\r\n\r\n get props() {\r\n const properties = {\r\n disabled: this.button.disabled,\r\n hidden: this.button.hidden,\r\n loading: this.button.isLoading,\r\n };\r\n return properties;\r\n }\r\n\r\n get label() {\r\n return this.button?.label;\r\n }\r\n\r\n get title() {\r\n return this.button?.title ?? '';\r\n }\r\n\r\n get variant() {\r\n return this.button?.variant ?? '';\r\n }\r\n\r\n set title(title: string) {\r\n this.update({ title });\r\n }\r\n\r\n set variant(variant: string) {\r\n this.update({ variant });\r\n }\r\n\r\n public disable() {\r\n this.update({ disabled: true });\r\n }\r\n\r\n public enable() {\r\n this.update({ disabled: false });\r\n }\r\n\r\n public hide() {\r\n this.update({ hidden: true });\r\n }\r\n\r\n public show() {\r\n this.update({ hidden: false });\r\n }\r\n}\r\n","import { ButtonsAction } from './ButtonsActions';\r\nimport { IButton, TActionButtons } from '../types';\r\n\r\nexport class ActionsController {\r\n static CONFIRM = 0;\r\n static NEXT = 1;\r\n static PREVIOUS = 2;\r\n static SIGN = 3;\r\n static SAVE = 4;\r\n static RELEASE = 5;\r\n static DELEGATE = 6;\r\n static SHARE = 7;\r\n static PRINT = 8;\r\n static VIEW_DOCS = 9;\r\n static CLOSE = 10;\r\n\r\n private static _instance: ActionsController;\r\n public static get instance(): ActionsController {\r\n if (!ActionsController._instance) {\r\n ActionsController._instance = new ActionsController();\r\n }\r\n return ActionsController._instance;\r\n }\r\n\r\n private buttons = new Map<TActionButtons, ButtonsAction>();\r\n\r\n public addButton(button: IButton) {\r\n if (this.buttons.has(button.id)) return;\r\n this.buttons.set(\r\n button.id,\r\n new ButtonsAction({\r\n ...{\r\n isLoading: false,\r\n disabled: false,\r\n hidden: false,\r\n },\r\n ...button,\r\n }),\r\n );\r\n }\r\n\r\n public getButton(id: TActionButtons) {\r\n if (this.buttons.has(id)) {\r\n return this.buttons.get(id);\r\n }\r\n throw Error('That button not exist');\r\n }\r\n}\r\n","import type { Execution } from '../main/Execution';\r\nimport { Field } from '../main/Execution/FormsExecution/Field';\r\nimport type { TApiaFieldCommonProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaForm } from './ApiaForm';\r\nimport type { IApiaField } from './types';\r\n\r\nexport abstract class ApiaField<\r\n Props extends TApiaFieldCommonProperties = TApiaFieldCommonProperties,\r\n> implements IApiaField<Props>\r\n{\r\n #field: Field<Props>;\r\n\r\n constructor(\r\n public execution: Execution,\r\n field: Field<Props>,\r\n ) {\r\n this.#field = field;\r\n }\r\n\r\n get fldType() {\r\n return this.#field.definition.fieldType;\r\n }\r\n\r\n get fldId() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n get form() {\r\n return new ApiaForm(this.execution, this.#field.getForm());\r\n }\r\n\r\n get index() {\r\n return this.#field.definition.index || 0;\r\n }\r\n\r\n setProperty<K extends keyof Props>(name: K, value: Props[K]) {\r\n this.#field.setProperty(name, value);\r\n }\r\n\r\n getProperty<K extends keyof Props>(name: K): Props[K] {\r\n return this.#field.getProperty(name);\r\n }\r\n\r\n setFocus(): IApiaField | null {\r\n throw new Error('Method not implemented. ');\r\n }\r\n isInGrid(): boolean {\r\n return !!this.#field.properties.inGrid;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Button } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IButtonField extends IApiaField {\r\n fireClickEvent(): void;\r\n getValue(): string | null;\r\n}\r\n\r\nexport default class ButtonField extends ApiaField implements IButtonField {\r\n #field: Button;\r\n\r\n constructor(execution: Execution, field: Button) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n fireClickEvent(): void {\r\n if (this.#field.definition.id) {\r\n this.#field.fireEvent('onClick');\r\n }\r\n }\r\n\r\n getValue(): string | null {\r\n if (this.#field.definition.id) {\r\n return this.#field.properties.value ?? '';\r\n }\r\n return null;\r\n }\r\n\r\n clearValue(): void {\r\n this.#field.properties.value = '';\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TEditorField = IApiaField;\r\n\r\nexport default class EditorField extends ApiaField implements TEditorField {}\r\n","import type { Execution } from '../main/Execution';\r\nimport type {\r\n Attribute,\r\n FieldWithAttribute,\r\n} from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { TApiaFieldWithAttributeProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { ApiaField } from './ApiaField';\r\n\r\nexport class ApiaAttribute {\r\n #attribute: Attribute;\r\n constructor(attribute: Attribute) {\r\n this.#attribute = attribute;\r\n }\r\n\r\n get attLabel() {\r\n return this.#attribute.title;\r\n }\r\n\r\n get name() {\r\n return this.#attribute.name;\r\n }\r\n get id() {\r\n return this.#attribute.id;\r\n }\r\n get valueType() {\r\n return this.#attribute.valueType;\r\n }\r\n}\r\n\r\nexport class ApiaFieldWithAttribute<T = string | boolean> extends ApiaField {\r\n #field: FieldWithAttribute;\r\n constructor(\r\n public execution: Execution,\r\n field: FieldWithAttribute,\r\n ) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n get attribute() {\r\n return new ApiaAttribute(this.#field.attribute);\r\n }\r\n\r\n clearValue() {\r\n this.#field.setValue('');\r\n }\r\n\r\n getValue() {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: T) {\r\n this.#field.setValue(v);\r\n }\r\n\r\n getLabel(): string | null | void {\r\n return this.#field.attribute.title;\r\n }\r\n\r\n getProperty<K extends keyof TApiaFieldWithAttributeProperties>(\r\n name: K,\r\n ): TApiaFieldWithAttributeProperties[K] {\r\n return super.getProperty(name as any);\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Select } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport type TOptionsAsArray = PossibleValue[];\r\n\r\nexport default class SelectField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Select;\r\n constructor(execution: Execution, field: Select) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n // get all select options either as array[] or object\r\n getOptions(asObject: boolean): TOptionsMap | TOptionsAsArray | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // adds a option to the select field\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n label: showValue,\r\n });\r\n }\r\n }\r\n\r\n // overwrite all options in select field\r\n setOptions(optionsArray: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = arrayOrArray(optionsArray);\r\n }\r\n }\r\n\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n\r\n // get selected option either as array or object key/value\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n const arr = arrayOrArray(this.#field.properties.possibleValue);\r\n if (this.#field.definition.id) {\r\n if (asObject) {\r\n let obj = null;\r\n arr.forEach((c) => {\r\n if (c.selected) {\r\n obj = c;\r\n }\r\n });\r\n return obj;\r\n } else {\r\n return arrayOrArray(arr.find((c) => c.selected));\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedText(): string | null {\r\n if (this.#field.definition.id) {\r\n return (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.selected,\r\n )?.label ?? 'Not option selected'\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n // // remove all select options\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Input } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class InputField extends ApiaFieldWithAttribute {\r\n #field: Input;\r\n constructor(execution: Execution, field: Input) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): number | string | boolean | null {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: string): void {\r\n if (this.#field.attribute.valueType === 'D') {\r\n this.#field.setValue(v, { format: 'd/m/Y' });\r\n } else {\r\n this.#field.setValue(v);\r\n }\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { Tree } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport default class TreeField extends ApiaFieldWithAttribute<\r\n string | number | (string | number)[]\r\n> {\r\n #field: Tree;\r\n constructor(execution: Execution, field: Tree) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n setValue(v: string | number | (string | number)[]): void {\r\n this.#field.setValue(arrayOrArray(v));\r\n }\r\n}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { isTrue } from '@apia/util';\r\n\r\nexport default class CheckField extends ApiaFieldWithAttribute {\r\n clearValue(): void {\r\n this.setValue(false);\r\n }\r\n\r\n setValue(value: string | boolean | number): void {\r\n // accepts 1/0 or true/false as values\r\n let val;\r\n const isBool = isTrue(value as unknown as string);\r\n if (isBool === true || isBool === false) {\r\n val = isBool;\r\n } else {\r\n throw new Error(\r\n 'Apia JSApi Error: The function setValue for a Checkbox field only accepts boolean or string type for value parameter.',\r\n );\r\n }\r\n super.setValue(val);\r\n }\r\n}\r\n","import { PossibleValue } from '../types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Radio } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class RadioField extends ApiaFieldWithAttribute {\r\n #field: Radio;\r\n constructor(execution: Execution, field: Radio) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getOptions(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n radioValues.forEach((c) => options.set(String(c.value), c));\r\n\r\n return options;\r\n }\r\n\r\n return radioValues;\r\n }\r\n return null;\r\n }\r\n\r\n clearOptions(): void | null {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = [];\r\n }\r\n }\r\n\r\n addOption(\r\n radioValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n if (this.#field.definition.id) {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n const isValueIsRepeated = radioValues.some((c) => {\r\n return c.value === radioValue.toString();\r\n });\r\n\r\n if (allowRepeatedValue || !isValueIsRepeated) {\r\n radioValues.push({\r\n value: radioValue.toString(),\r\n label: showValue,\r\n });\r\n }\r\n }\r\n }\r\n\r\n setOptions(options: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = options;\r\n }\r\n }\r\n\r\n removeOption(radioValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== radioValue,\r\n );\r\n }\r\n }\r\n\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue | null {\r\n const radioValues = arrayOrArray(this.#field.properties.possibleValue);\r\n\r\n const selected = radioValues.find((c) => c.selected);\r\n if (!selected) return null;\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n options.set(String(selected?.value), selected);\r\n return options;\r\n } else {\r\n return selected;\r\n }\r\n }\r\n\r\n getSelectedText(): string | undefined | null {\r\n if (this.#field.definition.id) {\r\n const possibleValue = arrayOrArray(this.#field.properties.possibleValue);\r\n if (possibleValue) {\r\n return possibleValue.find((c) => c.selected)?.label;\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","import { arrayOrArray } from '@apia/util';\r\nimport { PossibleValue } from '../types';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { Multiple } from '../../main/Execution/FormsExecution/fields';\r\nimport type { Execution } from '../../main/Execution';\r\n\r\nexport type TOptionsMap = Map<string, PossibleValue>;\r\n\r\nexport default class MultipleField extends ApiaFieldWithAttribute<string[]> {\r\n #field: Multiple;\r\n constructor(execution: Execution, field: Multiple) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n addOption(\r\n optionValue: string | number,\r\n showValue: string,\r\n allowRepeatedValue: boolean,\r\n ): void {\r\n let isValueRepeated = false;\r\n if (this.#field.definition.id !== null) {\r\n if (\r\n arrayOrArray(this.#field.properties.possibleValue).find(\r\n (c) => c.value === optionValue,\r\n ) &&\r\n allowRepeatedValue\r\n ) {\r\n isValueRepeated = true;\r\n } else {\r\n isValueRepeated = false;\r\n }\r\n\r\n if (allowRepeatedValue || (!isValueRepeated && !allowRepeatedValue))\r\n arrayOrArray(this.#field.properties.possibleValue).push({\r\n value: optionValue,\r\n label: showValue,\r\n });\r\n }\r\n }\r\n setValue(value: string[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.setValue(value);\r\n }\r\n }\r\n clearOptions(): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).forEach(\r\n (c) => (c.selected = false),\r\n );\r\n }\r\n }\r\n getSelectedOption(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const selected = arrayOrArray(\r\n this.#field.properties.possibleValue,\r\n ).filter((c) => c.selected);\r\n\r\n if (selected) {\r\n if (asObject) {\r\n const options = new Map<string, PossibleValue>();\r\n selected.forEach((c) => options.set(String(c.value), c));\r\n return options;\r\n }\r\n\r\n return selected;\r\n }\r\n }\r\n return null;\r\n }\r\n getOptions(asObject: boolean): TOptionsMap | PossibleValue[] | null {\r\n if (this.#field.definition.id) {\r\n const options = arrayOrArray(this.#field.properties.possibleValue);\r\n const obj = new Map<string, PossibleValue>();\r\n if (asObject) {\r\n options.forEach((c) => obj.set(String(c.value), c));\r\n return obj;\r\n }\r\n\r\n return options;\r\n }\r\n return null;\r\n }\r\n setOptions(optionsArray: PossibleValue[]): void {\r\n if (this.#field.definition.id) {\r\n this.#field.properties.possibleValue = arrayOrArray(optionsArray);\r\n }\r\n }\r\n removeOption(optionValue: string | number): void {\r\n if (this.#field.definition.id) {\r\n arrayOrArray(this.#field.properties.possibleValue).filter(\r\n (c) => c.value !== optionValue,\r\n );\r\n }\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\n\r\nexport default class HiddenField extends ApiaField {}\r\n","import { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class AreaField extends ApiaFieldWithAttribute {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Image } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface IImageField extends IApiaField {\r\n getValue(): null;\r\n setValue(): null;\r\n getLabel(): void;\r\n clearValue(): null;\r\n}\r\n\r\nexport default class ImageField extends ApiaField implements IImageField {\r\n #field: Image;\r\n constructor(execution: Execution, field: Image) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n clearValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n\r\n getValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Link } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ILinkField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class LinkField extends ApiaField implements ILinkField {\r\n #field: Link;\r\n constructor(execution: Execution, field: Link) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n if (this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { Field } from '../../main/Execution/FormsExecution/Field';\r\nimport { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport interface ITextField extends IApiaField {\r\n getLabel(): void;\r\n}\r\n\r\nexport default class TextField extends ApiaField implements ITextField {\r\n #field: Field;\r\n constructor(execution: Execution, field: Field) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getLabel(): void {\r\n throw new Error(\r\n `Apia JSApi Error: The field ${this.#field.definition.fieldType} does not use a label`,\r\n );\r\n }\r\n}\r\n","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport class CustomComponentField {\r\n #field: CustomComponent;\r\n constructor(field: CustomComponent) {\r\n this.#field = field;\r\n }\r\n\r\n fireEvent(name: string) {\r\n this.#field.fireEvent(name);\r\n }\r\n getProperty(name: string): any {\r\n return this.#field.getProperty(name);\r\n }\r\n setFocus(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n isInGrid(): boolean {\r\n return false;\r\n }\r\n getStringValue(attName: string) {\r\n return this.#field.getStringValue(attName);\r\n }\r\n getValue(attName: string, index = 0) {\r\n return this.#field.getValue(attName, index);\r\n }\r\n setProperty<K extends keyof TApiaFieldCommonProperties>(\r\n name: K,\r\n value: any,\r\n ): void {\r\n this.#field.setProperty(name, value);\r\n }\r\n setStringValue(attName: string, value: string) {\r\n return this.#field.setStringValue(attName, value);\r\n }\r\n setValue(attName: string, value: any, index = 0) {\r\n return this.#field.setValue(attName, value, index);\r\n }\r\n}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { ModalInput } from '../../main/Execution/FormsExecution/fields';\r\nimport type {\r\n Button,\r\n Captcha,\r\n Checkbox,\r\n Editor,\r\n File,\r\n Grid,\r\n Hidden,\r\n Image,\r\n Input,\r\n Label,\r\n Link,\r\n Multiple,\r\n Password,\r\n Radio,\r\n Select,\r\n Textarea,\r\n Title,\r\n Tree,\r\n} from '../../main/Execution/FormsExecution/fields';\r\nimport Field from '../constants/Field';\r\nimport {\r\n ButtonField,\r\n CaptchaField,\r\n CheckField,\r\n EditorField,\r\n FileUploaderField,\r\n HiddenField,\r\n ImageField,\r\n InputField,\r\n LinkField,\r\n ModalInputField,\r\n MultipleField,\r\n PasswordField,\r\n RadioField,\r\n SelectField,\r\n TextAreaField,\r\n TextField,\r\n TreeField,\r\n} from '../fields';\r\nimport { CustomComponentField } from '../fields/CustomComponentField';\r\nimport GridField from '../fields/GridField';\r\nimport type { IApiaField } from '../types';\r\nimport type { TCreateNewField } from './asynCreateApiaField';\r\n\r\nexport const createNewField: TCreateNewField = (\r\n execution: Execution,\r\n field,\r\n) => {\r\n if (field instanceof CustomComponent) {\r\n return new CustomComponentField(field) as any;\r\n } else {\r\n const { fieldType } = field.definition;\r\n let newField: IApiaField | null = null;\r\n\r\n if (field instanceof ModalInput) {\r\n return new ModalInputField(execution, field as ModalInput);\r\n }\r\n\r\n switch (fieldType) {\r\n case Field.TYPE_INPUT:\r\n newField = new InputField(execution, field as Input);\r\n break;\r\n case Field.TYPE_PASSWORD:\r\n newField = new PasswordField(execution, field as Password);\r\n break;\r\n case Field.TYPE_SELECT:\r\n newField = new SelectField(execution, field as Select);\r\n break;\r\n case Field.TYPE_RADIO:\r\n newField = new RadioField(execution, field as Radio);\r\n break;\r\n case Field.TYPE_CHECK:\r\n newField = new CheckField(execution, field as Checkbox);\r\n break;\r\n case Field.TYPE_BUTTON:\r\n newField = new ButtonField(execution, field as Button);\r\n break;\r\n case Field.TYPE_MULTIPLE:\r\n newField = new MultipleField(execution, field as Multiple);\r\n break;\r\n case Field.TYPE_HIDDEN:\r\n newField = new HiddenField(execution, field as Hidden);\r\n break;\r\n case Field.TYPE_AREA:\r\n newField = new TextAreaField(execution, field as Textarea);\r\n break;\r\n case Field.TYPE_GRID:\r\n newField = new GridField(execution, field as Grid);\r\n break;\r\n case Field.TYPE_IMAGE:\r\n newField = new ImageField(execution, field as Image);\r\n break;\r\n case Field.TYPE_HREF:\r\n newField = new LinkField(execution, field as Link);\r\n break;\r\n case Field.TYPE_LABEL:\r\n newField = new TextField(execution, field as Label);\r\n break;\r\n case Field.TYPE_TITLE:\r\n newField = new TextField(execution, field as Title);\r\n break;\r\n case Field.TYPE_FILE:\r\n newField = new FileUploaderField(execution, field as File);\r\n break;\r\n case Field.TYPE_CAPTCHA:\r\n newField = new CaptchaField(execution, field as Captcha);\r\n break;\r\n case Field.TYPE_TREE:\r\n newField = new TreeField(execution, field as Tree);\r\n break;\r\n case Field.TYPE_EDITOR:\r\n newField = new EditorField(execution, field as Editor);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return newField;\r\n }\r\n};\r\n","import { ApiaField } from '../ApiaField';\r\nimport { arrayOrArray, Mutex } from '@apia/util';\r\nimport { createNewField } from '../utils/createApiaField';\r\nimport { Grid } from '../../main/Execution/FormsExecution/fields';\r\nimport { FieldWithAttribute } from '../../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { IApiaField } from '../types';\r\nimport { getWindow } from '../../util/dom/getWindow';\r\nimport type { Execution } from '../../main/Execution';\r\nimport { TApiaGridProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport default class GridField extends ApiaField<TApiaGridProperties> {\r\n #field: Grid;\r\n\r\n constructor(execution: Execution, field: Grid) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n #mutex = new Mutex();\r\n\r\n async addRow(): Promise<IApiaField[]> {\r\n try {\r\n await this.#mutex.acquire();\r\n const result = await this.#field.addRow();\r\n\r\n if (result) {\r\n return this.getRow(this.#field.finalIndex)!;\r\n }\r\n\r\n return [];\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n clearGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n clearPage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async clearRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n\r\n const row = this.#field.getRowByFieldIndex(index);\r\n\r\n if (!row) {\r\n throw new Error(`Row ${index} not found`);\r\n }\r\n\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n closeForm(): GridField {\r\n this.#field.closeEditionModal();\r\n return this;\r\n }\r\n\r\n async deleteAllRows() {\r\n try {\r\n await this.#mutex.acquire();\r\n await this.#field.deleteAllRows();\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n async deleteGrid() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n deletePage() {\r\n throw new Error('Method deprecated');\r\n }\r\n\r\n async deleteRow(index: number) {\r\n try {\r\n await this.#mutex.acquire();\r\n this.#field.deleteRows(index);\r\n } finally {\r\n this.#mutex.release();\r\n }\r\n }\r\n\r\n editRow(index: number) {\r\n getWindow(this.execution).dispatchEvent(\r\n new CustomEvent('openGridEdition', {\r\n detail: { index, grid: this.#field },\r\n }),\r\n );\r\n }\r\n\r\n getAllColumns() {\r\n return this.#field\r\n .getAllColumns()\r\n .map((c) => c.map((f) => createNewField(this.form.execution, f)));\r\n }\r\n\r\n getColumn(fieldName: string) {\r\n const fields = this.#field.getColumn(fieldName);\r\n if (fields) {\r\n return arrayOrArray(fields).map((c) =>\r\n createNewField(this.form.execution, c!),\r\n );\r\n }\r\n return [];\r\n }\r\n\r\n getCurrentPage() {\r\n return this.#field.getCurrentPage();\r\n }\r\n\r\n getField(fieldName: string, fieldIndex?: number) {\r\n const fields = this.#field.getField(fieldName, fieldIndex);\r\n\r\n if (fields) {\r\n return fieldIndex !== undefined\r\n ? createNewField(this.form.execution, arrayOrArray(fields)[0]!)\r\n : arrayOrArray(fields)\r\n .map((c) => createNewField(this.form.execution, c))\r\n .filter((c): c is IApiaField => Boolean(c));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n getPageCount() {\r\n return this.#field.pageCount;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field\r\n .getRowByFieldIndex(index)\r\n ?.map((c) => createNewField(this.form.execution, c)!);\r\n }\r\n\r\n getSelection(): IApiaField[][] {\r\n const selected = this.#field.getSelectedRows();\r\n const returnObj: IApiaField[][] = [];\r\n selected.forEach((r) => {\r\n const row: IApiaField[] = [];\r\n r.forEach((c) => {\r\n const fld = createNewField(this.form.execution, c);\r\n if (fld) {\r\n row.push(fld);\r\n }\r\n });\r\n returnObj.push(row);\r\n });\r\n return returnObj;\r\n }\r\n\r\n get id() {\r\n return this.#field.definition.id;\r\n }\r\n\r\n isPaged() {\r\n return this.#field.properties.paged;\r\n }\r\n\r\n get rowsCount() {\r\n return this.#field.length;\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n this.#field.toggleColumnVisibility(fieldName, isShown);\r\n }\r\n\r\n toggleDeleteButton(index: number, isShown?: boolean) {\r\n this.#field.toggleDeleteButton(index, isShown);\r\n }\r\n\r\n toggleEditFormButton(rowIndex: number, isShown?: boolean) {\r\n this.#field.toggleEditFormButton(rowIndex, isShown);\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\nimport { IApiaField } from '../types';\r\n\r\nexport type TCaptchaField = IApiaField;\r\n\r\nexport default class CaptchaField extends ApiaField implements TCaptchaField {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { File } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\nimport { reaction } from 'mobx';\r\n\r\nexport default class FileUploaderField extends ApiaFieldWithAttribute {\r\n #field: File;\r\n constructor(execution: Execution, field: File) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n onChange(cb: (newValue: unknown) => unknown) {\r\n reaction(\r\n () => {\r\n this.#field.getValue();\r\n },\r\n () => {\r\n cb(this.#field.getValue());\r\n },\r\n { fireImmediately: false },\r\n );\r\n }\r\n\r\n setValue(): null {\r\n if (this.#field.definition.id && this.#field.definition.fieldType) {\r\n throw new Error(\r\n `Apia JSApi Error: The Field ${this.#field.definition.fieldType} does not support this function`,\r\n );\r\n }\r\n return null;\r\n }\r\n}\r\n","import { ApiaField } from '../ApiaField';\r\n\r\nexport default class PasswordField extends ApiaField {}\r\n","import type { Execution } from '../../main/Execution';\r\nimport { ModalInput } from '../../main/Execution/FormsExecution/fields';\r\nimport { ApiaFieldWithAttribute } from '../ApiaFieldWithAttribute';\r\n\r\nexport default class ModalInputField extends ApiaFieldWithAttribute {\r\n #field: ModalInput;\r\n constructor(execution: Execution, field: ModalInput) {\r\n super(execution, field);\r\n this.#field = field;\r\n }\r\n\r\n getObjectValue(): any | null {\r\n return this.#field.getValue();\r\n }\r\n\r\n setValue(v: any): void {\r\n this.#field.setValue(v);\r\n }\r\n public async setValueFromInputWrite(value: string) {\r\n await this.#field.setValueFromInputWrite(value);\r\n }\r\n}\r\n","import { DataGridField as GridField } from './fields';\r\nimport type { IApiaField, IApiaForm } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaFieldWithAttribute } from './ApiaFieldWithAttribute';\r\nimport { createNewField } from './utils/createApiaField';\r\nimport type { Form } from '../main/Execution/FormsExecution/Form';\r\nimport type { TApiaFormProperties } from '../main/InitialData/types/TApiaForm';\r\nimport type { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport type { Field } from '../main/Execution/FormsExecution/Field';\r\nimport type { Execution } from '../main/Execution';\r\n\r\nexport class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n constructor(\r\n public execution: Execution,\r\n form: Form,\r\n ) {\r\n this.#form = form;\r\n }\r\n\r\n getFrmParent(): string {\r\n return this.#form.definition.frmParent;\r\n }\r\n\r\n getFrmId(): string | null {\r\n return this.#form.definition.id;\r\n }\r\n\r\n getFormName(): string {\r\n return this.#form.definition.formName;\r\n }\r\n getFormTitle(): string {\r\n return this.#form.definition.formTitle;\r\n }\r\n openForm(): void {\r\n this.#form.setProperty('prpFrmClosed', false);\r\n }\r\n closeForm(): void {\r\n this.#form.setProperty('prpFrmClosed', true);\r\n }\r\n getProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n ): TApiaFormProperties[K] {\r\n return this.#form.getProperty(name);\r\n }\r\n setProperty<K extends keyof TApiaFormProperties>(\r\n name: K,\r\n value: TApiaFormProperties[K],\r\n ): void {\r\n this.#form.setProperty(name, value);\r\n }\r\n getCustomComponent(attName: string) {\r\n return this.#form.getCustomComponentByAttName(attName);\r\n }\r\n getField(fld: string | number, index?: number): IApiaField | undefined {\r\n const field = this.#form.getField(fld as string, index);\r\n\r\n if (field) {\r\n return createNewField(this.execution, field as FieldWithAttribute)!;\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldById(fldId: string) {\r\n const field = this.#form.getFieldById(fldId);\r\n\r\n if (field) {\r\n return createNewField(this.execution, field as Field);\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldColumn(name: string): IApiaField[] {\r\n return arrayOrArray(this.#form.getFieldByName(name))\r\n .map((c) => createNewField(this.execution, c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n getAllFields(): IApiaField[] {\r\n return this.#form.allFields\r\n .map((c) => createNewField(this.execution, c))\r\n .filter((f): f is IApiaField => Boolean(f));\r\n }\r\n clearForm(clearReadonlyFields: boolean, deleteGridsRows: boolean): void {\r\n this.getAllFields().forEach((c) => {\r\n if (deleteGridsRows && c instanceof GridField) {\r\n c.clearGrid();\r\n }\r\n\r\n if (c instanceof ApiaFieldWithAttribute) {\r\n if (!c.getProperty('readonly') || clearReadonlyFields) {\r\n c.setValue('');\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { ActionsController } from './ActionController';\r\nimport type {\r\n IApiaField,\r\n IApiaForm,\r\n IApiaFunctions,\r\n TActionButtons,\r\n} from './types';\r\nimport { ApiaForm } from './ApiaForm';\r\nimport type { TFrmParent } from '../main/InitialData/types/TApiaForm';\r\nimport { Execution } from '../main/Execution';\r\nimport { getWindow } from '../util/dom/getWindow';\r\n\r\ndeclare global {\r\n interface Window {\r\n lastModalReturn: string[];\r\n }\r\n}\r\n\r\nconst OptionButton = {\r\n BTN_VIEW_DOCS: 100,\r\n BTN_PRINT: 101,\r\n};\r\n\r\nexport class ApiaFunctions implements IApiaFunctions {\r\n constructor(public execution: Execution) {}\r\n\r\n toJSNumber(_value: string): number | string {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n toApiaNumber(_value: number): number | string {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n openTab(_title: string, _url: string): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n showMessage(_text: string): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n showConfirm(\r\n _text: string,\r\n _title: string,\r\n _callbackFn: (win: boolean) => unknown,\r\n ): void {\r\n throw new Error('Deprecated, use ApiaUtil instead.');\r\n }\r\n\r\n getFormByType(frmName: string, frmType: TFrmParent): IApiaForm | null {\r\n const form = this.execution.getFormByName(frmName, frmType);\r\n if (form) return new ApiaForm(this.execution, form);\r\n return null;\r\n }\r\n\r\n actionButton(id: string | number) {\r\n const actualId = this.getButtonAction(id);\r\n return ActionsController.instance.getButton(actualId);\r\n }\r\n\r\n admEntity(\r\n entName: string,\r\n entNum?: number,\r\n parameters?: string,\r\n width?: number,\r\n height?: number,\r\n ) {\r\n entName;\r\n entNum;\r\n parameters;\r\n width;\r\n height;\r\n }\r\n\r\n clearMessages() {}\r\n\r\n clickActionButton(button: number) {\r\n const id = Number(button);\r\n // let domId;\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n this.execution.confirm();\r\n break;\r\n case ActionsController.NEXT:\r\n this.execution.next();\r\n break;\r\n case ActionsController.PREVIOUS:\r\n this.execution.doBack();\r\n break;\r\n case ActionsController.SAVE:\r\n this.execution.doSave();\r\n break;\r\n case ActionsController.RELEASE:\r\n this.execution.doFree();\r\n break;\r\n case ActionsController.DELEGATE:\r\n this.execution.delegate();\r\n break;\r\n case ActionsController.SHARE:\r\n this.execution.shareSocial();\r\n break;\r\n case OptionButton.BTN_VIEW_DOCS:\r\n this.execution.viewDocs();\r\n break;\r\n case OptionButton.BTN_PRINT:\r\n this.execution.doPrint();\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n disableActionButton(id: string | number): void {\r\n const actualId = this.getButtonAction(id);\r\n this.actionButton(actualId)?.disable();\r\n }\r\n\r\n disableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.disableActionButton(actualId);\r\n }\r\n\r\n enableActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.enable();\r\n }\r\n\r\n enableOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.enableActionButton(actualId);\r\n }\r\n\r\n getAllForms(): IApiaForm[] {\r\n return this.execution\r\n .getAllForms()\r\n .map((c) => new ApiaForm(this.execution, c));\r\n }\r\n getAllFormsByType(type: 'P' | 'E'): IApiaForm[] {\r\n return this.execution.getAllForms().reduce<ApiaForm[]>((acc, c) => {\r\n if (c.definition.frmParent === type) {\r\n acc.push(new ApiaForm(this.execution, c));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n getAttField(\r\n attType: 'P' | 'E',\r\n attId: string,\r\n ): IApiaField | IApiaField[] | undefined {\r\n const fields: IApiaField[] = [];\r\n this.getAllFormsByType(attType).forEach((c) =>\r\n fields.push(c.getField(attId) as IApiaField),\r\n );\r\n return fields;\r\n }\r\n\r\n getButtonAction(id: number | string) {\r\n let btnId: TActionButtons;\r\n\r\n switch (id) {\r\n case ActionsController.CLOSE || 'CLOSE':\r\n btnId = 'CLOSE';\r\n break;\r\n case ActionsController.CONFIRM || 'CONFIRM':\r\n btnId = 'CONFIRM';\r\n break;\r\n case ActionsController.DELEGATE || 'DELEGATE':\r\n btnId = 'DELEGATE';\r\n break;\r\n case ActionsController.NEXT || 'NEXT':\r\n btnId = 'NEXT';\r\n break;\r\n case ActionsController.PREVIOUS || 'PREVIOUS':\r\n btnId = 'PREVIOUS';\r\n break;\r\n case ActionsController.PRINT || 'PRINT':\r\n btnId = 'PRINT';\r\n break;\r\n case ActionsController.RELEASE || 'RELEASE':\r\n btnId = 'RELEASE';\r\n break;\r\n case ActionsController.SAVE || 'SAVE':\r\n btnId = 'SAVE';\r\n break;\r\n case ActionsController.SIGN || 'SIGN':\r\n btnId = 'SIGN';\r\n break;\r\n case ActionsController.SHARE || 'SHARE':\r\n btnId = 'SHARE';\r\n break;\r\n case ActionsController.VIEW_DOCS || 'VIEW_DOCS':\r\n btnId = 'VIEW_DOCS';\r\n break;\r\n default:\r\n throw new Error(`There is no button with id ${id}`);\r\n }\r\n return btnId;\r\n }\r\n\r\n getCurrentLanguageCode(): string | null {\r\n return getWindow(this.execution).LANG_CODE;\r\n }\r\n\r\n getCurrentProcessName(): string | null {\r\n return this.execution.getProcess().name ?? null;\r\n }\r\n\r\n getCurrentStep(): number | null {\r\n return this.execution.currentStep;\r\n }\r\n\r\n getCurrentTaskName(): string | null {\r\n return this.execution.getCurrentTask().name;\r\n }\r\n\r\n getEntityForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'E');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getForm(frmName: string, frmType?: string): IApiaForm | null {\r\n if (frmType === 'E') return this.getFormByType(frmName, frmType);\r\n if (frmType === 'P') return this.getFormByType(frmName, frmType);\r\n const eFrm = this.getFormByType(frmName, 'E');\r\n if (eFrm) {\r\n return eFrm;\r\n }\r\n const pForm = this.getFormByType(frmName, 'P');\r\n return pForm;\r\n }\r\n\r\n getLastModalReturn() {\r\n return getWindow(this.execution).lastModalReturn;\r\n }\r\n\r\n getModalReturn() {\r\n return this.getLastModalReturn();\r\n }\r\n\r\n getModalSelectedRow() {\r\n return getWindow(this.execution).lastModalReturn.slice(2);\r\n }\r\n\r\n getModalShowValue() {\r\n return getWindow(this.execution).lastModalReturn[1];\r\n }\r\n\r\n getModalValue() {\r\n return getWindow(this.execution).lastModalReturn[0];\r\n }\r\n\r\n getProcessForm(frmName: string): IApiaForm | null {\r\n const frm = this.getForm(frmName, 'P');\r\n if (frm) return frm;\r\n return null;\r\n }\r\n\r\n getRootPath(): string | null {\r\n try {\r\n return getWindow(this.execution).APIA_ROOT_CONTEXT;\r\n } catch (e: unknown) {\r\n if (e instanceof Error) {\r\n console.error(`Apia JSApi Error: ${e.message}`);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n hideActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.hide();\r\n }\r\n\r\n hideOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.hideActionButton(actualId);\r\n }\r\n\r\n saveTask() {\r\n //TODO\r\n this.execution.doSave().then((res) => {\r\n if (res) console.warn('Manage...');\r\n });\r\n }\r\n\r\n setLastModalReturn(value: string[]) {\r\n getWindow(this.execution).lastModalReturn = value;\r\n getWindow(this.execution).lastModalReturn = value;\r\n }\r\n\r\n setStepTitle(stepNumber: number, stepTitle: string): void {\r\n this.execution.setStepTitle(stepNumber, stepTitle);\r\n }\r\n\r\n showActionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.actionButton(actualId)?.show();\r\n }\r\n\r\n showOptionButton(id: string | number): void {\r\n const actualId = typeof id === 'number' ? this.getButtonAction(id) : id;\r\n this.showActionButton(actualId);\r\n }\r\n\r\n viewAdmEntity(entName: string, entNum?: number) {\r\n this.admEntity(entName, entNum);\r\n }\r\n}\r\n","import { computed, makeObservable, observable, toJS } from 'mobx';\r\nimport { makeApiaUrl } from '../../../../util';\r\nimport { actions } from '../constants/actions';\r\nimport { parseXml, post } from '../../../../util';\r\nimport type { Form } from '../Form';\r\nimport { setAjaxFormResponse } from '../events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../types';\r\nimport { ResponseSysMessages } from '../../../../util/api/types';\r\nimport {\r\n ComponentEvent,\r\n TCusCmpStateRequest,\r\n TCustomComponentDefaultResponse,\r\n TCustomComponentDefinition,\r\n} from '../../../InitialData/types/TApiaForm';\r\nimport { arrayOrArray, DeepReadonly, freezeDeep } from '@apia/util';\r\nimport { TFncParams } from '../Field';\r\nimport { MessageNotification } from '../../../Notifications/MessageNotification';\r\nimport { labels } from '../../../../util/labels/labels';\r\nimport { ApiaFunctions } from '../../../../programming';\r\nimport { getWindow } from '../../../../util/dom/getWindow';\r\nimport type { Execution } from '../..';\r\n\r\nexport type TCustomComponentState = {\r\n isLoading: boolean;\r\n\r\n attributes: Record<string, any[]>;\r\n properties: Record<string, any>;\r\n additional: any;\r\n};\r\n\r\nexport class CustomComponent {\r\n #hasInited = false;\r\n public form: Form = {} as Form;\r\n private _state: TCustomComponentState = {\r\n isLoading: false,\r\n attributes: {},\r\n properties: {},\r\n additional: {},\r\n };\r\n\r\n constructor(\r\n public execution: Execution,\r\n public readonly definition: TCustomComponentDefinition,\r\n ) {\r\n makeObservable<CustomComponent, '_state'>(this, {\r\n _state: observable,\r\n state: computed,\r\n });\r\n this.parseStateObject(definition.state.state);\r\n }\r\n\r\n public get state(): DeepReadonly<TCustomComponentState> {\r\n return freezeDeep(toJS(this._state));\r\n }\r\n\r\n public getAdditional<T>() {\r\n return this.state.additional as DeepReadonly<T>;\r\n }\r\n\r\n async init(form: Form) {\r\n if (this.#hasInited) throw new Error('Cannot init field twice');\r\n this.#hasInited = true;\r\n this.form = form;\r\n }\r\n\r\n private parseStateObject(o: TCusCmpStateRequest) {\r\n if (o.additional) {\r\n try {\r\n this._state.additional = JSON.parse(o.additional.text);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(JSON.parse(atob(c.values)));\r\n });\r\n arrayOrArray(o.property).forEach((c) => {\r\n this._state.properties[c.name] = c.value;\r\n });\r\n }\r\n\r\n public async processResult(res?: TCustomComponentDefaultResponse | null) {\r\n let proceed = true;\r\n const scheduledEvents: string[] = [];\r\n\r\n const newState = res?.state || res?.processResult?.state;\r\n\r\n if (newState) {\r\n for (const directive of arrayOrArray(newState.directive)) {\r\n if (directive.type === 'RELOAD') {\r\n proceed = false;\r\n getWindow(this.execution).location.assign(\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'reload',\r\n nuevo: true,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n );\r\n } else if (directive.type === 'FIRE') {\r\n scheduledEvents.push(directive.content);\r\n }\r\n }\r\n }\r\n\r\n if (proceed) {\r\n if (res!.ajaxUpdated) {\r\n const result = parseXml(res!.ajaxUpdated.text);\r\n\r\n setAjaxFormResponse(\r\n this.execution,\r\n result as TFieldAjaxEventResponsePayload & ResponseSysMessages,\r\n );\r\n }\r\n\r\n if (newState) {\r\n this.parseStateObject(newState);\r\n }\r\n\r\n for await (const event of scheduledEvents) {\r\n await this.fireEvent(event);\r\n }\r\n\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n protected getScriptEventParams(fncParams: TFncParams[]): unknown[] {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n new ApiaFunctions(this.execution)\r\n .getForm(\r\n this.form.definition.formName,\r\n this.form.definition.frmParent,\r\n )!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n protected async fireScriptEvents(event: ComponentEvent): Promise<boolean> {\r\n let result = true;\r\n\r\n for await (const script of arrayOrArray(event.script)) {\r\n const def = JSON.parse(script.text) as {\r\n fncName: string;\r\n fncParams: {\r\n type: 'P' | 'E';\r\n attId: number;\r\n }[];\r\n };\r\n\r\n try {\r\n const fn = (window as any)[def.fncName] as (\r\n src: CustomComponent | Form,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n result =\r\n result &&\r\n (await fn(\r\n this,\r\n ...this.getScriptEventParams(arrayOrArray(def.fncParams)),\r\n ));\r\n } catch (e) {\r\n console.error(e);\r\n this.form.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(event.name, def.fncName),\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async fireEvent(evtName: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n const event = arrayOrArray(this.definition.event).find(\r\n (c) => c.name === evtName,\r\n );\r\n if (!event) {\r\n throw new Error('Unknown event ' + evtName);\r\n }\r\n\r\n if (\r\n (!event.script || (await this.fireScriptEvents(event))) &&\r\n event.serverEvents\r\n ) {\r\n await this.processResult(\r\n (await this.postMessage('fireEvent', evtName))?.data,\r\n );\r\n }\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getProperty(prpName: string) {\r\n return this._state.properties[prpName];\r\n }\r\n\r\n private async postMessage(method: string, body: any) {\r\n return post<TCustomComponentDefaultResponse>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: actions.forms,\r\n action: 'cusCmpProcess',\r\n method,\r\n\r\n cmpId: this.definition.id,\r\n frmId: this.form.definition.id,\r\n frmParent: this.form.definition.frmParent,\r\n }),\r\n {\r\n postData: {\r\n payload: body,\r\n },\r\n postDataTreatment: 'stringify',\r\n },\r\n );\r\n }\r\n\r\n async setStringValue(attName: string, value: string) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n attName,\r\n clear: true,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n getStringValue(attName: string) {\r\n return this._state.attributes[attName]?.join();\r\n }\r\n\r\n getValue(attName: string, index: number = 0) {\r\n return this._state.attributes[attName]?.[index];\r\n }\r\n\r\n async setValue(attName: string, value: any, index: number) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setValue',\r\n JSON.stringify({\r\n index,\r\n attName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async setProperty(prpName: string, value: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'setProperty',\r\n JSON.stringify({\r\n prpName,\r\n value,\r\n }),\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n\r\n async sendMessage(payload: any) {\r\n this._state.isLoading = true;\r\n\r\n try {\r\n await this.processResult(\r\n (\r\n await this.postMessage(\r\n 'message',\r\n typeof payload === 'object' && payload\r\n ? JSON.stringify(payload)\r\n : payload,\r\n )\r\n )?.data,\r\n );\r\n } finally {\r\n this._state.isLoading = false;\r\n }\r\n }\r\n}\r\n","import { getDocument } from '../../../util/dom/getDocument';\r\nimport { parseXml } from '../../../util/xml/parseXml';\r\nimport type { Execution } from '../../Execution';\r\nimport { TApiaForm } from '../types/TApiaForm';\r\n\r\nfunction decodeBase64ToUtf8(base64String: string) {\r\n const binaryString = atob(base64String);\r\n const bytes = Uint8Array.from(binaryString, (char) => char.charCodeAt(0));\r\n return new TextDecoder('utf-8').decode(bytes);\r\n}\r\n\r\nasync function getFormXMLDataAsObj(\r\n formDiv: HTMLElement,\r\n): Promise<TApiaForm | null> {\r\n if (formDiv.dataset.xml) {\r\n const formData = (await parseXml(\r\n decodeBase64ToUtf8(formDiv.dataset.xml),\r\n )) as TApiaForm;\r\n return formData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function readFormsDefinition(execution: Execution) {\r\n const elements = [\r\n ...getDocument(execution).querySelectorAll('.formContainer'),\r\n ];\r\n const forms: TApiaForm[] = [];\r\n\r\n for await (const form of elements) {\r\n const def = await getFormXMLDataAsObj(form as HTMLElement);\r\n if (def) forms.push(def);\r\n }\r\n\r\n return forms;\r\n}\r\n","import type { Execution } from '../Execution';\r\nimport { readFormsDefinition } from './bootstrap/readFormsDefinition';\r\n\r\nexport class InitialData {\r\n public static getFormsDefinition(execution: Execution) {\r\n return readFormsDefinition(execution);\r\n }\r\n}\r\n","import type {\r\n TApiaForm,\r\n TApiaFormProperties,\r\n TFormEventName,\r\n} from '../../InitialData/types/TApiaForm';\r\nimport type { Execution } from '..';\r\nimport type { TSignaturesData } from './types';\r\nimport { Field, getApiaFunctions, TFncParams } from './Field';\r\nimport type {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { computed, makeObservable, observable } from 'mobx';\r\nimport type { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\r\nimport { Grid } from './fields';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { ApiaForm } from '../../../programming/ApiaForm';\r\nimport { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { labels } from '../../../util/labels/labels';\r\n\r\nexport class Form extends WithProperties<TApiaFormProperties> {\r\n fields: TApiaFieldBaseDefinition<Record<string, any>>[];\r\n state = { isMarkedToSign: false };\r\n protected _customComponents: Map<string, CustomComponent> = new Map();\r\n protected fieldsById = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByName = new Map<\r\n string,\r\n Field<\r\n Record<string, any>,\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n {\r\n definition: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >;\r\n }\r\n >\r\n >();\r\n protected fieldsByAttributeId = new Map<\r\n string | number,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsByAttributeName = new Map<\r\n string,\r\n FieldWithAttribute<\r\n Record<string, any>,\r\n any,\r\n TApiaFieldWithAttributeBaseProps<Record<string, any>>\r\n >\r\n >();\r\n protected fieldsGroups = new Map<string, Grid>();\r\n definition: TApiaForm = {} as TApiaForm;\r\n\r\n constructor(\r\n public execution: Execution,\r\n definition: TApiaForm,\r\n ) {\r\n const props = parseFakeJSON<TApiaFormProperties>(definition.properties);\r\n super(props);\r\n makeObservable<Form, 'state'>(this, {\r\n state: observable,\r\n allFields: computed,\r\n customComponents: computed,\r\n });\r\n\r\n this.definition = definition;\r\n\r\n this.fields = arrayOrArray(definition.field).sort((a, b) => {\r\n if (a.y < b.y) return -1;\r\n if (a.y > b.y) return 1;\r\n\r\n if (a.x < b.x) return -1;\r\n if (a.x > b.x) return 1;\r\n\r\n return 0;\r\n });\r\n\r\n this.state.isMarkedToSign = this.definition.markedToSign;\r\n }\r\n\r\n get allFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n get customComponents() {\r\n return this._customComponents;\r\n }\r\n\r\n closeForm() {\r\n this.properties.prpFrmClosed = true;\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getField(field: string, index?: number) {\r\n const found =\r\n this.getFieldById(field, index) ||\r\n this.getFieldByName(field, index) ||\r\n this.getFieldByAttributeId(field, index) ||\r\n this.getFieldByAttributeName(field, index);\r\n\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getField(field, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n const found = this.fieldsByAttributeId.get(String(attId));\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeId(attId, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n const found = this.fieldsByAttributeName.get(attName);\r\n if (found) {\r\n return found;\r\n }\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByAttributeName(attName, index);\r\n return res;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldById(id: string | number, index?: number) {\r\n const found = this.fieldsById.get(String(id));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldById(id, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getFieldByName(name: string, index?: number): Field | Field[] | undefined {\r\n const found = this.fieldsByName.get(String(name));\r\n if (found) return found;\r\n\r\n for (const group of this.fieldsGroups.values()) {\r\n const res = group.getFieldByName(name, index);\r\n if (res) {\r\n return res;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected getHiddenFields() {\r\n return this.allFields.filter((c) => c.getProperty('visibilityHidden'));\r\n }\r\n async markFormToSign() {\r\n void post<{ success: boolean }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'markFormToSign',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n sign: !this.state.isMarkedToSign,\r\n react: true,\r\n }),\r\n ).then((res) => {\r\n if (res?.data && res.data.success) {\r\n this.state.isMarkedToSign = !this.state.isMarkedToSign;\r\n }\r\n });\r\n }\r\n\r\n async viewSigns(): Promise<TSignaturesData | undefined> {\r\n const res = await get<TSignaturesData>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n ajaxUrl: '/apia.execution.FormAction.run',\r\n action: 'viewSigns',\r\n frmId: this.definition.id,\r\n frmParent: this.definition.frmParent,\r\n react: true,\r\n }),\r\n );\r\n if (res?.data) {\r\n return res.data;\r\n }\r\n }\r\n\r\n private cucCmpByAttId = new Map<number, CustomComponent>();\r\n private cucCmpByFldId = new Map<number, CustomComponent>();\r\n private cucCmpByAttName = new Map<string, CustomComponent>();\r\n\r\n getCustomComponentByFldId(fldId: number) {\r\n return this.cucCmpByFldId.get(fldId);\r\n }\r\n\r\n getCustomComponentByAttId(attId: number) {\r\n return this.cucCmpByAttId.get(attId);\r\n }\r\n\r\n getCustomComponentByAttName(attName: string) {\r\n return this.cucCmpByAttName.get(attName);\r\n }\r\n\r\n private mustRenderFields: string[] = [];\r\n\r\n public addFieldToRender(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields.push(fldId + '_' + fldIndex);\r\n }\r\n\r\n public markFieldAsRendered(fldId: string, fldIndex: number = 0) {\r\n this.mustRenderFields = this.mustRenderFields.filter(\r\n (c) => c !== fldId + '_' + fldIndex,\r\n );\r\n if (this.mustRenderFields.length - this.getHiddenFields().length === 0) {\r\n this.execution.markFormAsRendered(\r\n this.definition.frmParent,\r\n this.definition.formName,\r\n );\r\n }\r\n }\r\n\r\n async init() {\r\n const cusFields = arrayOrArray(this.definition.customField);\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n this.mustRenderFields.push(field.id + '_' + (field.index ?? 0));\r\n }\r\n for await (const customComponent of cusFields) {\r\n this.mustRenderFields.push(customComponent.id + '_' + 0);\r\n }\r\n for await (const customComponent of cusFields) {\r\n const cc = new CustomComponent(this.execution, customComponent);\r\n await cc.init(this);\r\n this._customComponents.set(customComponent.id, cc);\r\n arrayOrArray(customComponent.state.state.attribute).forEach((a) => {\r\n this.cucCmpByAttId.set(Number.parseInt(String(a.attId)), cc);\r\n this.cucCmpByAttName.set(a.attName, cc);\r\n this.cucCmpByFldId.set(Number.parseInt(String(customComponent.id)), cc);\r\n });\r\n }\r\n\r\n for await (const field of arrayOrArray(this.fields)) {\r\n /**\r\n * Esto es necesario ya que desde el server llega un objeto js en el properties.\r\n */\r\n field.properties = parseFakeJSON(field.properties as any);\r\n\r\n const fieldConstructor =\r\n this.execution.fieldsMapping[field.fieldType](field);\r\n\r\n if (fieldConstructor) {\r\n const newField = new fieldConstructor(field);\r\n await newField.init(this);\r\n\r\n this.fieldsById.set(\r\n String(newField.definition.id),\r\n newField as Field<any>,\r\n );\r\n if (newField.properties?.name) {\r\n this.fieldsByName.set(\r\n String(newField.properties?.name),\r\n newField as Field<any>,\r\n );\r\n }\r\n if ((field as TApiaFieldWithAttributeBaseProps<any>).attName) {\r\n this.fieldsByAttributeId.set(\r\n String((field as TApiaFieldWithAttributeBaseProps<any>).attId),\r\n newField as FieldWithAttribute<any>,\r\n );\r\n this.fieldsByAttributeName.set(\r\n (field as TApiaFieldWithAttributeBaseProps<any>).attName,\r\n newField as FieldWithAttribute<any>,\r\n );\r\n }\r\n\r\n if (newField instanceof Grid) {\r\n this.fieldsGroups.set(String(newField.definition.id), newField);\r\n }\r\n } else {\r\n throw new Error(\r\n `Cannot build field of type ${field.fieldType}. There is no mapping for such type.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n protected async getScriptEventParams(\r\n fncParams: TFncParams[],\r\n ): Promise<unknown[]> {\r\n const fncParamsArray = [];\r\n for (let e = 0; e < fncParams.length; e += 1) {\r\n if (fncParams[e].type === 'V') {\r\n fncParamsArray.push(fncParams[e].value);\r\n } else if (fncParams[e].type === 'E' || fncParams[e].type === 'P') {\r\n const paraAttId = fncParams[e].attId;\r\n if (paraAttId) {\r\n fncParamsArray.push(\r\n (await getApiaFunctions(this.execution))\r\n .getForm(this.definition.formName, this.definition.frmParent)!\r\n .getField(paraAttId),\r\n );\r\n }\r\n }\r\n }\r\n return fncParamsArray;\r\n }\r\n\r\n public async fireScriptEvent(eventName: TFormEventName): Promise<boolean> {\r\n if (eventName === 'onLoad') {\r\n const mapEvent = window[\r\n `LOAD_RELOAD_MAP_${this.definition.frmParent}`\r\n ] as any as Record<string, string>;\r\n const mappedEvent = mapEvent\r\n ? mapEvent[this.definition.formName]\r\n : undefined;\r\n const actualMapEvent =\r\n mapEvent &&\r\n (!mappedEvent || mappedEvent === 'load' ? 'onLoad' : 'onReload');\r\n eventName = actualMapEvent || (window.IS_RELOAD ? 'onReload' : 'onLoad');\r\n }\r\n\r\n const events = (this.definition.scriptEvents || []).filter(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (events.length > 0) {\r\n for (const event of events) {\r\n try {\r\n const fn = (window as any)[event.fncName] as (\r\n src: ApiaForm,\r\n ...parameters: unknown[]\r\n ) => Promise<boolean>;\r\n const result = await fn(\r\n new ApiaForm(this.execution, this)!,\r\n ...(await this.getScriptEventParams(event.fncParams)),\r\n );\r\n if (!result) {\r\n return false;\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.execution.notifications.add(\r\n new MessageNotification({\r\n message: labels.errorOnEvent(eventName, event.evtName),\r\n type: 'error',\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n async validate(): Promise<true | Field> {\r\n let isValid = true;\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const field of this.allFields) {\r\n if (field.definition.fieldType === 'grid') {\r\n const result = await (field as Grid).validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n isValid = false;\r\n } else {\r\n isValid = isValid && result === true;\r\n }\r\n } else if (field instanceof Field) {\r\n isValid = (await field.validate()) && isValid;\r\n if (!isValid && !firstInvalid) {\r\n firstInvalid = field;\r\n }\r\n }\r\n }\r\n\r\n return isValid || firstInvalid!;\r\n }\r\n}\r\n","import {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../InitialData/types/TApiaField';\r\nimport { Field } from './Field';\r\nimport { TranslatableField } from './TranslatableField';\r\nimport { Button } from './fields/Button';\r\nimport { Captcha } from './fields/Captcha';\r\nimport { Checkbox } from './fields/Checkbox';\r\nimport { Editor } from './fields/Editor';\r\nimport { File } from './fields/File';\r\nimport { Grid } from './fields/Grid';\r\nimport { GridPaginated } from './fields/GridPaginated';\r\nimport { Hidden } from './fields/Hidden';\r\nimport { Image } from './fields/Image';\r\nimport { Input } from './fields/Input';\r\nimport { Label } from './fields/Label';\r\nimport { Link } from './fields/Link';\r\nimport { ModalInput } from './fields/ModalInput';\r\nimport { Multiple } from './fields/Multiple';\r\nimport { Password } from './fields/Password';\r\nimport { Radio } from './fields/Radio';\r\nimport { Select } from './fields/Select';\r\nimport { Textarea } from './fields/Textarea';\r\nimport { Title } from './fields/Title';\r\nimport { Tree } from './fields/Tree';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { GridProps } from './fields/Grid/types';\r\nimport { Scheduler } from './fields/Scheduler';\r\nimport { TApiaLabelProperties } from '../../InitialData/types/fields/TApiaFieldProperties';\r\n\r\nexport type FieldConstructor = new (\r\n definition: any,\r\n) =>\r\n | Field<any, any, any>\r\n | FieldWithAttribute<any, any, any>\r\n | TranslatableField<any, any, any>;\r\n\r\nexport type FieldsMapping = Record<\r\n string,\r\n (definition: any) => FieldConstructor\r\n>;\r\n\r\nexport const defaultFieldsMap: FieldsMapping = Object.freeze({\r\n area: () => Textarea,\r\n button: () => Button,\r\n captcha: () => Captcha,\r\n check: () => Checkbox,\r\n editor: () => Editor,\r\n file: () => File,\r\n grid: (def) => {\r\n const definition = def as TApiaFieldBaseDefinition<GridProps>;\r\n\r\n if (definition?.properties?.paged) {\r\n return GridPaginated;\r\n }\r\n\r\n return Grid;\r\n },\r\n hidden: () => Hidden,\r\n href: () => Link,\r\n image: () => Image,\r\n input: (def) => {\r\n const definition = def as TApiaFieldWithAttributeBaseProps<any>;\r\n\r\n if (definition.qryId) {\r\n return ModalInput;\r\n }\r\n\r\n return Input;\r\n },\r\n label: (def) => {\r\n const definition =\r\n def as TApiaFieldWithAttributeBaseProps<TApiaLabelProperties>;\r\n const value = definition.properties?.value;\r\n if (value && String(value).indexOf('schedContainer') !== -1) {\r\n return Scheduler;\r\n }\r\n\r\n return Label;\r\n },\r\n multiple: () => Multiple,\r\n password: () => Password,\r\n radio: () => Radio,\r\n select: () => Select,\r\n title: () => Title,\r\n tree: () =>\r\n Tree as new (definition: any) => FieldWithAttribute<any, any, any>,\r\n});\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { Notification } from './Notification';\r\nimport { EventEmitter } from '../../util';\r\nimport type { CustomComponent } from '../Execution/FormsExecution/customComponents/CustomComponent';\r\nimport type { Field } from '../Execution/FormsExecution/Field';\r\nimport type { Execution } from '../Execution';\r\n\r\nexport type FocusTarget = {\r\n element: Field | CustomComponent;\r\n};\r\n\r\nexport class Notifications {\r\n private emitter = new EventEmitter<{\r\n closeTab: null;\r\n notification: Notification;\r\n }>();\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable<Notifications, 'notifications'>(this, {\r\n notifications: observable,\r\n add: action,\r\n remove: action,\r\n });\r\n }\r\n\r\n protected notifications: Notification[] = [];\r\n\r\n add(notification: Notification) {\r\n this.notifications.push(notification);\r\n this.emitter.emit('notification', notification);\r\n }\r\n\r\n closeTab() {\r\n this.emitter.emit('closeTab', null);\r\n }\r\n\r\n getAll() {\r\n return this.notifications;\r\n }\r\n\r\n getById(id: string | number) {\r\n return this.notifications.find((c) => c.id === id);\r\n }\r\n\r\n remove(notification: string | number | Notification) {\r\n this.notifications = this.notifications.filter((c) => {\r\n if (typeof notification === 'string' || typeof notification === 'number')\r\n return c.id !== notification;\r\n return c !== notification;\r\n });\r\n }\r\n\r\n on = this.emitter.on.bind(this.emitter);\r\n}\r\n","import { action, computed, makeObservable, observable } from 'mobx';\r\nimport { TProcess } from './types';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\n\r\nexport class Process {\r\n state: TProcess | null = null;\r\n\r\n uploader: UploaderApi;\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n name: computed,\r\n });\r\n\r\n this.uploader = new UploaderApi(\r\n this.execution,\r\n 'ProcessUploader',\r\n 'P',\r\n getWindow(this.execution)\r\n .processDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n const res = await post<{ processData: string }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getProcessData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.processData) {\r\n throw new Error('Cannot retrieve the process data');\r\n }\r\n\r\n this.uploader.init();\r\n this.uploader.on('fileUploaded', () => {\r\n this.execution.state.hasChangedAnything = true;\r\n });\r\n\r\n const parsedData: TProcess = JSON.parse(res?.data?.processData);\r\n const calValue = arrayOrArray(parsedData.calendar?.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n const priorityValue =\r\n arrayOrArray(parsedData.priority.options).find((c) => c.selected)\r\n ?.value ?? arrayOrArray(parsedData?.priority?.options)[0]?.value;\r\n\r\n this.state = parsedData;\r\n if (calValue) this.state.calendar.value = calValue;\r\n if (priorityValue) this.state.priority.value = priorityValue;\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n cmbProPri: this.state?.priority?.value,\r\n selCal: this.state?.calendar?.value,\r\n };\r\n }\r\n\r\n setPriority(newPriority: string) {\r\n if (this.state?.priority) this.state.priority.value = newPriority;\r\n }\r\n}\r\n","export class Task {\r\n #name: string;\r\n constructor(task: any) {\r\n this.#name = task.name;\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n get name() {\r\n return this.#name;\r\n }\r\n}\r\n","import { computed, makeObservable, observable } from 'mobx';\r\nimport { Associations, PoolId, TCategory, TEntity } from './type';\r\nimport { getLabel, makeApiaUrl, post } from '../../../util';\r\nimport { arrayOrArray, uniqueId } from '@apia/util';\r\nimport { TModalConfig, UploaderApi } from '../Uploader';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport type { Execution } from '..';\r\nimport {\r\n Row,\r\n TableController,\r\n TBuildRow,\r\n TBuildTable,\r\n} from '@apia/table2-controller';\r\n\r\nexport class Entity {\r\n state: TEntity | null = null;\r\n\r\n uploader: UploaderApi;\r\n controller: TableController = new TableController({\r\n allowEdition: true,\r\n allowResize: true,\r\n allowSelection: true,\r\n });\r\n\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n name: computed,\r\n });\r\n\r\n this.uploader = new UploaderApi(\r\n execution,\r\n 'EntityUploader',\r\n 'E',\r\n getWindow(this.execution)\r\n .entityDocumentsModalConfiguration as any as TModalConfig,\r\n );\r\n }\r\n\r\n get name() {\r\n if (this.state) return this.state.identifier.label;\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n const res = await post<{ entityData: string }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getEntityData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.entityData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n this.uploader.init();\r\n this.uploader.on('fileUploaded', () => {\r\n this.execution.state.hasChangedAnything = true;\r\n });\r\n\r\n const parsedData: TEntity = JSON.parse(res?.data?.entityData);\r\n const statusValue = arrayOrArray(parsedData.status.options).find(\r\n (c) => c.selected,\r\n )?.value;\r\n this.state = parsedData;\r\n this.state.visibilities = [];\r\n this.state.categories = [];\r\n this.state.image.file = null;\r\n\r\n if (statusValue && this.state.status)\r\n this.state.status.value = statusValue;\r\n\r\n if (getWindow(this.execution).LBL_CATEGORIES_LABEL) {\r\n await this.loadCategories();\r\n }\r\n if (getWindow(this.execution).LBL_VISIBILITIES_LABEL) {\r\n await this.loadPools();\r\n }\r\n if (getWindow(this.execution).LBL_ENTITIES_ASSOCIATIONS) {\r\n await this.loadAssociations();\r\n }\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n const result: any = {\r\n busEntSta: this.state?.status.value ?? '',\r\n };\r\n\r\n if (this.state?.categories) {\r\n result.catId = this.state?.categories.map((c) => c.id);\r\n\r\n this.state?.categories\r\n .filter((c) => c.checked)\r\n .forEach((c) => {\r\n result[`chkCat_${c.id}`] = 'on';\r\n });\r\n\r\n result['hidTemplateWithCategories'] = 'true';\r\n }\r\n\r\n if (this.state?.visibilities) {\r\n result['hidTemplateWithVisibilities'] = 'true';\r\n result.poolId = this.state?.visibilities.map((c) => c.poolId);\r\n\r\n this.state?.visibilities\r\n .filter((c) => c.canUpdate)\r\n .forEach((v) => {\r\n result[`chkVisPoolUpdate${v.poolId}`] = 'on';\r\n });\r\n }\r\n\r\n if (this.state?.associations) {\r\n result['hidTemplateWithAsociation'] = 'true';\r\n result.asocId = this.state?.associations.map((c) => c.asocId);\r\n result.asocName = this.state?.associations.map((c) => c.asocName);\r\n result.asocRelName = this.state?.associations.map((c) => c.asocRelName);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n loadCategories = async () => {\r\n const res = await post<{ category: TCategory[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadCategories',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state)\r\n if (res?.data?.category) {\r\n this.state.categories = arrayOrArray(res.data.category);\r\n } else {\r\n this.state.categories = [];\r\n }\r\n };\r\n loadPools = async () => {\r\n const res = await post<{ pool: PoolId[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadPools',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state?.visibilities) {\r\n if (res?.data?.pool) {\r\n this.state.visibilities = arrayOrArray(res.data.pool);\r\n } else {\r\n this.state.visibilities = [];\r\n }\r\n }\r\n };\r\n\r\n loadAssociations = async () => {\r\n const res = await post<{ asociation: Associations[] }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'loadAsociations',\r\n isAjax: true,\r\n isMonitor: false,\r\n }),\r\n );\r\n if (this.state) {\r\n this.state.associations = arrayOrArray(res?.data?.asociation);\r\n const rows = this.parseRows(arrayOrArray(res?.data?.asociation));\r\n const tableJson = {\r\n columns: [\r\n {\r\n colName: 'name',\r\n content: getLabel(this.execution, 'lblBusEntInst').text,\r\n className: 'header',\r\n },\r\n {\r\n colName: 'relName',\r\n content: getLabel(this.execution, 'lblBusEntInstAsocName').text,\r\n className: 'header',\r\n },\r\n ],\r\n rows,\r\n filters: [],\r\n } as TBuildTable;\r\n this.controller.build(tableJson);\r\n }\r\n };\r\n\r\n private parseRows(row: Associations[]) {\r\n return row.map((r) => {\r\n const newRow: TBuildRow = {\r\n id: r.asocId,\r\n cells: [\r\n {\r\n colName: 'name',\r\n content: r.asocName,\r\n },\r\n {\r\n colName: 'relName',\r\n content: r.asocRelName,\r\n },\r\n ],\r\n };\r\n return newRow;\r\n });\r\n }\r\n\r\n deleteRow() {\r\n const selectedRows = this.controller.getState('selection');\r\n [...selectedRows.values()].map((row, rowIndex) => {\r\n this.state!.associations =\r\n this.state?.associations.filter((_, idx) => rowIndex !== idx) ?? [];\r\n this.controller.body.removeRow(row);\r\n });\r\n }\r\n addRow() {\r\n const id = String(uniqueId());\r\n this.state!.associations.push({\r\n asocId: id,\r\n asocName: '',\r\n asocRelName: '',\r\n });\r\n const row = new Row(id);\r\n row.build({\r\n id: String(uniqueId()),\r\n cells: [{ colName: 'name' }, { colName: 'relName' }],\r\n isSelected: true,\r\n });\r\n this.controller.body.addRow(row);\r\n }\r\n}\r\n","import { action, makeObservable, observable } from 'mobx';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { TObservation, TObservations } from './types';\r\nimport { arrayOrArray } from '@apia/util';\r\nimport type { Execution } from '..';\r\n\r\nexport class Observations {\r\n state: TObservations = {\r\n newObservation: {\r\n commentValue: '',\r\n chkAddAlert: false,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n },\r\n observations: [],\r\n };\r\n constructor(public execution: Execution) {\r\n makeObservable(this, {\r\n state: observable,\r\n setPriority: action,\r\n });\r\n }\r\n\r\n private hasInited = false;\r\n\r\n async init() {\r\n if (!this.hasInited) {\r\n this.hasInited = true;\r\n this.state = {\r\n newObservation: {\r\n commentValue: '',\r\n chkAddAlert: false,\r\n chkAddAllAlert: false,\r\n chkRemAlert: false,\r\n },\r\n observations: [],\r\n };\r\n\r\n const res = await post<{\r\n obData: string;\r\n }>(\r\n this.execution,\r\n makeApiaUrl(this.execution, {\r\n action: 'getObservationsData',\r\n isAjax: true,\r\n }),\r\n );\r\n if (!res?.data?.obData) {\r\n throw new Error('Cannot retrieve the entity data');\r\n }\r\n\r\n const parsedData: TObservation[] = JSON.parse(res?.data?.obData);\r\n\r\n this.state.observations = arrayOrArray(parsedData);\r\n }\r\n }\r\n\r\n getConfirmParams() {\r\n return {\r\n txtComment: this.state.newObservation?.commentValue,\r\n chkAddAlert:\r\n this.state.newObservation?.chkAddAlert === true ? 'on' : undefined,\r\n chkAddAllAlert:\r\n this.state.newObservation?.chkAddAllAlert === true ? 'on' : undefined,\r\n chkRemAlert:\r\n this.state.newObservation?.chkRemAlert === true ? 'on' : undefined,\r\n };\r\n }\r\n setPriority(newPriority: string) {\r\n newPriority;\r\n }\r\n}\r\n","import type { Execution } from '..';\r\n\r\nexport type ConfirmChecker = (\r\n execution: Execution,\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep =\r\n | 'CHECK_LOCK'\r\n | 'CONFIRM'\r\n | 'CHECK_SIGN'\r\n | 'CHECK_WIZARD'\r\n | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowPoolSelection extends FlowModal<{\r\n confirmed: boolean;\r\n group: string;\r\n}> {\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n group: string;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { TApiaLoadForm } from '@apia/util';\r\nimport { FlowModal, Status } from './FlowModal';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { TFetchConfirmPathResponse, TItemTreeObj } from './types';\r\nconst initialState = {\r\n disabledParents: [],\r\n groupSelectionObj: null,\r\n};\r\n\r\nexport class ShowPathSelection extends FlowModal<{\r\n confirmed: boolean;\r\n path: string;\r\n}> {\r\n public state: {\r\n disabledParents: TItemTreeObj | TItemTreeObj[] | null;\r\n groupSelectionObj: TFetchConfirmPathResponse | null;\r\n };\r\n\r\n constructor(\r\n public fetchResult: TApiaLoadForm['form'],\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n path: string;\r\n }) => Promise<Status | FlowModal<any>>,\r\n ) {\r\n super();\r\n makeObservable<ShowPathSelection, 'state'>(this, { state: observable });\r\n this.state = initialState;\r\n }\r\n setDisabledParent(treeItem: TItemTreeObj) {\r\n this.state.disabledParents = this.updateDisabledList(\r\n treeItem,\r\n this.state.disabledParents as TItemTreeObj[],\r\n );\r\n }\r\n clearPaths() {\r\n this.state.disabledParents = [];\r\n }\r\n showGroupsSelection(fetchConfirmPathResponse: TFetchConfirmPathResponse) {\r\n this.state.groupSelectionObj = fetchConfirmPathResponse;\r\n }\r\n updateDisabledList(\r\n itemObj: TItemTreeObj,\r\n itemArr: TItemTreeObj[],\r\n ): TItemTreeObj[] {\r\n let filteredArr = [] as TItemTreeObj[];\r\n if (Array.isArray(itemArr)) {\r\n filteredArr = itemArr.filter(\r\n (el) =>\r\n el.id !== itemObj.id && el.name !== itemObj.name && el.isOn !== false,\r\n );\r\n }\r\n if (itemObj.isOn === true) {\r\n filteredArr.push(itemObj);\r\n }\r\n return filteredArr || [];\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { ShowPoolSelection } from './ShowPoolSelection';\r\nimport { ShowPathSelection } from './ShowPathSelection';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution, ExecutionState } from '..';\r\nimport { TCheckWizardResponse, TFetchConfirmPathResponse } from './types';\r\nimport { parseXMLRequestResponse, TApiaLoadForm } from '@apia/util';\r\nimport axios from 'axios';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmResponse } from '../types';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\nimport { parseMessages } from '../../../util/api/apiaApi';\r\n\r\nfunction buildPoolSelection(\r\n execution: Execution,\r\n status: Status,\r\n poolForm: TApiaLoadForm['form'],\r\n) {\r\n return new ShowPoolSelection(poolForm, async (result) => {\r\n if (result.confirmed) {\r\n const confirmPoolResult = await axios.post<{\r\n actions?: {\r\n action: {\r\n toDo: 'functionTimedCall';\r\n param: [number, string];\r\n };\r\n };\r\n }>(\r\n makeApiaUrl(execution, {\r\n action: 'confirmPool',\r\n isAjax: true,\r\n appletToken: 'null',\r\n }),\r\n result.group,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n confirmPoolResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (\r\n parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose' ||\r\n parsedRes?.onClose === 'confirmOkOnClose'\r\n ) {\r\n if (parsedRes?.load?.text?.content) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes?.load?.text?.content,\r\n type: 'success',\r\n }),\r\n );\r\n }\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else {\r\n throw Error('Failed to confirm pool');\r\n }\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nfunction buildPathSelection(\r\n execution: Execution,\r\n status: Status,\r\n form: TApiaLoadForm['form'],\r\n) {\r\n const modal = new ShowPathSelection(form, async function (result) {\r\n if (result.confirmed) {\r\n const pathSelectionResult = await axios.post<TFetchConfirmPathResponse>(\r\n makeApiaUrl(execution, {\r\n action: 'confirmPath',\r\n isAjax: true,\r\n asXML: true,\r\n }),\r\n result.path,\r\n );\r\n const parsedRes = parseXMLRequestResponse(\r\n pathSelectionResult,\r\n ) as TFetchConfirmPathResponse;\r\n if (parsedRes?.groupSelection) {\r\n return buildPoolSelection(execution, status, parsedRes.load!.form!);\r\n } else if (parsedRes?.actions?.action?.toDo === 'functionTimedCall') {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n } else if (parsedRes.sysMessages?.message?.text) {\r\n execution.notifications.add(\r\n new MessageNotification({\r\n message: parsedRes.sysMessages.message.text,\r\n type: 'warning',\r\n }),\r\n );\r\n return { ...status, step: undefined, finishedWithError: true };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n } else {\r\n return { ...status, step: undefined, finishedWithError: true };\r\n }\r\n });\r\n return modal;\r\n}\r\n\r\nasync function checkSign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n }[];\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1] === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n };\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...execution.getEntity().getConfirmParams(),\r\n ...execution.getProcess().getConfirmParams(),\r\n ...execution.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: getWindow(execution).appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n confirmResponse?.data?.sysMessages?.message ||\r\n confirmResponse?.data?.sysExceptions?.exception ||\r\n confirmResponse?.data?.exceptions?.exception\r\n ) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n finishedWithError: true,\r\n };\r\n }\r\n if (confirmResponse?.data?.onClose === 'confirmOkOnClose') {\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n return buildConfirmMessage(\r\n status,\r\n confirmResponse.data.load?.text?.label ?? '',\r\n );\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n const checkConfirmProcess = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'P',\r\n currentTab: 0,\r\n }),\r\n );\r\n parseMessages(execution, (checkConfirmEntity?.data as any).data);\r\n parseMessages(execution, (checkConfirmProcess?.data as any).data);\r\n\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmEntity.data?.form);\r\n }\r\n if (checkConfirmProcess?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmProcess.data?.form);\r\n }\r\n if (confirmResponse?.data?.pathSelection) {\r\n return buildPathSelection(\r\n execution,\r\n status,\r\n confirmResponse.data.load!.form!,\r\n );\r\n }\r\n\r\n if (confirmResponse?.data?.groupSelection === true) {\r\n return buildPoolSelection(\r\n execution,\r\n status,\r\n confirmResponse.data.load!.form!,\r\n );\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_WIZARD',\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CHECK_WIZARD' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\nasync function checkWizard(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkWizardResponse = await post<TCheckWizardResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWizzard',\r\n }),\r\n {\r\n postData: {},\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (checkWizardResponse?.data?.url) {\r\n getWindow(execution).location.assign(checkWizardResponse?.data?.url);\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: false,\r\n };\r\n } else {\r\n const { location } = getWindow(execution).parent;\r\n if (getWindow(execution).ON_FINISH === '1') {\r\n getWindow(execution).parent?.parent?.close();\r\n } else if (getWindow(execution).ON_FINISH === '2') {\r\n location.reload();\r\n } else if (\r\n (getWindow(execution).frameElement as HTMLIFrameElement)?.src.match(\r\n /frompanel/i,\r\n )\r\n ) {\r\n (getWindow(execution).frameElement as HTMLIFrameElement).src = (\r\n getWindow(execution).frameElement as HTMLIFrameElement\r\n ).src;\r\n } else if (getWindow(execution).ON_FINISH === '5') {\r\n getWindow(execution).location.assign(getWindow(execution).ON_FINISH_URL);\r\n } else {\r\n let tabContainer =\r\n getWindow(execution).parent.document.getElementById('tabContainer');\r\n if (tabContainer == null) {\r\n tabContainer =\r\n getWindow(execution).top!.document.getElementById('tabContainer');\r\n }\r\n\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n\r\n if (tabContainer) {\r\n (tabContainer as any).removeActiveTab();\r\n } else {\r\n execution.notifications.closeTab();\r\n }\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n finishedWithError: false,\r\n };\r\n }\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CHECK_WIZARD: checkWizard,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(execution, result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n execution.notifications.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import type { Execution } from '..';\r\n\r\nexport type ConfirmChecker = (\r\n execution: Execution,\r\n status: Status,\r\n) => Promise<Status | FlowModal<any>>;\r\nexport type ConfirmStep = 'CHECK_LOCK' | 'CONFIRM' | 'CHECK_SIGN' | 'SIGN';\r\n\r\nexport type Status = {\r\n step?: ConfirmStep;\r\n error?: string;\r\n finishedWithError?: boolean;\r\n};\r\n\r\nexport abstract class FlowModal<T extends { confirmed?: boolean }> {\r\n abstract confirm(result: T): Promise<Status | FlowModal<any>>;\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSignSelection extends FlowModal<{\r\n confirmed: boolean;\r\n signed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: {\r\n confirmed: boolean;\r\n signed: boolean;\r\n }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowConfirmMessage extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { FlowModal, Status } from './FlowModal';\r\n\r\nexport class ShowSign extends FlowModal<{\r\n confirmed: boolean;\r\n}> {\r\n constructor(\r\n public fetchResult: any,\r\n public confirm: (result: { confirmed: boolean }) => Promise<Status>,\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { MessageNotification } from '../../Notifications/MessageNotification';\r\nimport { ConfirmChecker, ConfirmStep, FlowModal, Status } from './FlowModal';\r\nimport { makeApiaUrl, post } from '../../../util';\r\nimport { Execution, ExecutionState } from '..';\r\nimport { setAjaxFormResponse } from '../FormsExecution/events/setAjaxFormResponse';\r\nimport { TFieldAjaxEventResponsePayload } from '../FormsExecution/types';\r\nimport { ShowSignSelection } from './ShowSignSelection';\r\nimport { ShowConfirmMessage } from './ShowConfirmMessage';\r\nimport { ShowSign } from './ShowSign';\r\nimport { Captcha } from '../FormsExecution/fields';\r\nimport { TConfirmEntityResponse } from '../types';\r\nimport { arrayOrArray, Url } from '@apia/util';\r\nimport { getWindow } from '../../../util/dom/getWindow';\r\n\r\nasync function checkSign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const checkSignableFormsResponse = await post<{\r\n form: { i: string; p: string; t: string };\r\n sign: boolean;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: '',\r\n preventAsXmlParameter: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal = checkSignableFormsResponse?.data?.sign;\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSignSelection(\r\n checkSignableFormsResponse?.data,\r\n async (result) => {\r\n if (result.confirmed && result.signed) {\r\n return { ...status, step: 'SIGN' };\r\n } else if (result.confirmed && !result.signed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n },\r\n );\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\nasync function sign(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | ShowSignSelection> {\r\n const signResponse = await post<{\r\n actions: {\r\n action: {\r\n param: { text: string }[];\r\n }[];\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'sign',\r\n // isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n const mustShowSignModal =\r\n signResponse?.data?.actions.action[1].param[1].text === 'showAppletModal';\r\n\r\n if (mustShowSignModal) {\r\n return new ShowSign(signResponse?.data, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n return { ...status, step: undefined, finishedWithError: false };\r\n });\r\n } else {\r\n return { ...status, step: 'CONFIRM' };\r\n }\r\n}\r\n\r\nasync function checkLock(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status> {\r\n const checkLocksResponse = await post<{\r\n actions: {\r\n action: {\r\n param: string[];\r\n };\r\n };\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksResponse?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n return {\r\n ...status,\r\n step: undefined,\r\n error: 'Failed to check WebDAV document locks',\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: 'CHECK_SIGN',\r\n };\r\n}\r\n\r\nasync function defaultConfirm(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<Status | FlowModal<any>> {\r\n const getConfirmParams = {\r\n ...execution.getEntity().getConfirmParams(),\r\n ...execution.getObservations().getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const confirmResponse = await post<TConfirmEntityResponse>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n action: 'confirm',\r\n asXML: true,\r\n asXml: true,\r\n appletToken: getWindow(execution).appletToken,\r\n }),\r\n {\r\n postData: getConfirmParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (confirmResponse?.data?.sysMessages?.message) {\r\n Captcha.reload();\r\n\r\n return {\r\n step: undefined,\r\n };\r\n }\r\n if (confirmResponse?.data?.load?.text?.text) {\r\n execution.state.executionState = ExecutionState.FINISHED;\r\n const url = arrayOrArray(\r\n arrayOrArray(confirmResponse.data.actions?.action)[0].param,\r\n )[1].text;\r\n setTimeout(() => {\r\n const c = new Url(url);\r\n\r\n getWindow(execution).location.assign(\r\n makeApiaUrl(execution, {\r\n ajaxUrl: c.base,\r\n action: c.getParameter('action') as string,\r\n }),\r\n );\r\n }, 1000);\r\n return buildConfirmMessage(status, confirmResponse?.data?.load?.text?.text);\r\n }\r\n const checkConfirmEntity = await post<{\r\n form: TFieldAjaxEventResponsePayload;\r\n }>(\r\n execution,\r\n makeApiaUrl(execution, {\r\n ajaxUrl: 'apia.execution.FormAction.run?',\r\n action: 'checkAfterConfirmAjax',\r\n frmParent: 'E',\r\n currentTab: 0,\r\n }),\r\n );\r\n if (checkConfirmEntity?.data?.form) {\r\n setAjaxFormResponse(execution, checkConfirmEntity.data?.form);\r\n execution.notifications.closeTab();\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n }\r\n\r\n return {\r\n ...status,\r\n step: undefined,\r\n };\r\n}\r\nasync function buildConfirmMessage(\r\n status: Status,\r\n message: string,\r\n): Promise<Status | FlowModal<any>> {\r\n return new ShowConfirmMessage(message, async (result) => {\r\n if (result.confirmed) {\r\n return { ...status, step: undefined };\r\n }\r\n return { ...status, step: undefined, finishedWithError: true };\r\n });\r\n}\r\n\r\nconst checkers: Record<ConfirmStep, ConfirmChecker> = {\r\n CHECK_LOCK: checkLock,\r\n CHECK_SIGN: checkSign,\r\n CONFIRM: defaultConfirm,\r\n SIGN: sign,\r\n};\r\n\r\nexport async function confirmEntity(\r\n execution: Execution,\r\n status: Status,\r\n): Promise<boolean | FlowModal<any>> {\r\n let result: Status = status;\r\n\r\n while (result.step) {\r\n const checker = checkers[result.step];\r\n\r\n const checkerResult = await checker(execution, result);\r\n if (checkerResult instanceof FlowModal) {\r\n return checkerResult;\r\n }\r\n\r\n result = checkerResult;\r\n\r\n if (result.error) {\r\n execution.notifications.add(\r\n new MessageNotification({ message: result.error, type: 'error' }),\r\n );\r\n }\r\n\r\n if (result.error || result.finishedWithError) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { InitialData } from '../InitialData';\r\nimport { labels } from '../../util/labels/labels';\r\nimport { Form } from './FormsExecution/Form';\r\nimport { TFormEventName, TFrmParent } from '../InitialData/types/TApiaForm';\r\nimport { FieldsMapping, defaultFieldsMap } from './FormsExecution/fieldsMap';\r\nimport { Notifications } from '../Notifications';\r\nimport { MessageNotification } from '../Notifications/MessageNotification';\r\nimport { Process } from './Process';\r\nimport { makeAutoObservable } from 'mobx';\r\nimport { Field } from './FormsExecution/Field';\r\nimport { makeApiaUrl, post, get, parseXml } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport { arrayOrArray, EventEmitter, noNaN, postNavigation } from '@apia/util';\r\nimport { Observations } from './Observations';\r\nimport { FlowModal, Status } from './FlowModals/FlowModal';\r\nimport { Captcha } from './FormsExecution/fields';\r\nimport { getCurrentTabsString } from '../../util/app/getCurrentTabsString';\r\nimport { TFetchTaskActionResponse } from './types';\r\nimport { parseFakeJSON } from '../../util/other/parseFakeJSON';\r\nimport { confirm } from './FlowModals/confirmFlow';\r\nimport { confirmEntity } from './EntityFlowModals/confirmFlow';\r\nimport { getWindow } from '../../util/dom/getWindow';\r\n\r\ninterface TExecutionErrors {\r\n onClose: string;\r\n sysMessages: {\r\n message: {\r\n text: string;\r\n }[];\r\n };\r\n sysExceptions: {\r\n exception: {\r\n label: string;\r\n text: string;\r\n }[];\r\n };\r\n exceptions: {\r\n exception: {\r\n label: string;\r\n text: string;\r\n }[];\r\n };\r\n}\r\n\r\nexport enum ExecutionState {\r\n RUNNING,\r\n LOADING,\r\n FINISHED,\r\n RENDERING,\r\n CONFIRMING,\r\n}\r\nexport type TExecutionConfig = {\r\n canConfirm: boolean;\r\n canGoBack: boolean;\r\n canGoForward: boolean;\r\n canSave: boolean;\r\n canFree: boolean;\r\n canDelegate: boolean;\r\n canClose: boolean;\r\n canShare: boolean;\r\n isEntity?: boolean;\r\n};\r\n\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/&apos;/g, \"'\")\r\n .replace(/&quot;/g, '\"')\r\n .replace(/&gt;/g, '>')\r\n .replace(/&lt;/g, '<')\r\n .replace(/&amp;/g, '&');\r\n }\r\n return '';\r\n};\r\n\r\nexport type TExecutionEnvironment = {\r\n fieldsMapping?: FieldsMapping;\r\n window: Window;\r\n document: Document;\r\n headers: any;\r\n};\r\n\r\nexport class Execution extends EventEmitter<{\r\n confirm: null;\r\n next: null;\r\n sendToDesktop: null;\r\n}> {\r\n public fieldsMapping: FieldsMapping;\r\n private entity = new Entity(this);\r\n private process = new Process(this);\r\n private observations = new Observations(this);\r\n public executionConfig: TExecutionConfig | null = null;\r\n private _steps: {\r\n title: string;\r\n stepNumber: number;\r\n status: 'completed' | 'pending' | 'current';\r\n }[] = [];\r\n private _currentStep: number = 1;\r\n private _stepCount: number = 1;\r\n public readonly notifications: Notifications;\r\n\r\n constructor(public environment: TExecutionEnvironment) {\r\n super();\r\n\r\n this.fieldsMapping = { ...defaultFieldsMap, ...environment.fieldsMapping };\r\n\r\n this.notifications = new Notifications(this);\r\n\r\n makeAutoObservable(this, { fieldsMapping: false });\r\n }\r\n\r\n protected formsById = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n protected forms = {\r\n E: new Map<string, Form>(),\r\n P: new Map<string, Form>(),\r\n };\r\n\r\n state: {\r\n formsReady: ReturnType<Execution['getAllForms']>;\r\n executionState: ExecutionState;\r\n locked: boolean;\r\n hasChangedAnything: boolean;\r\n } = {\r\n formsReady: [],\r\n executionState: ExecutionState.LOADING,\r\n locked: true,\r\n hasChangedAnything: false,\r\n };\r\n\r\n getAllForms() {\r\n return [...this.forms.E.values(), ...this.forms.P.values()];\r\n }\r\n\r\n private hasInitializedFormsTabs: Record<TFrmParent, boolean> = {} as Record<\r\n TFrmParent,\r\n boolean\r\n >;\r\n\r\n initializeFormsTabs(frmParent: TFrmParent, cb: () => unknown) {\r\n if (!this.hasInitializedFormsTabs[frmParent]) {\r\n this.hasInitializedFormsTabs[frmParent] = true;\r\n cb();\r\n }\r\n }\r\n\r\n getFormsByType(type: TFrmParent) {\r\n return [...this.forms[type].values()];\r\n }\r\n getFormByName(formName: string, frmParent?: TFrmParent) {\r\n if (frmParent) {\r\n return this.forms[frmParent].get(formName);\r\n } else {\r\n return this.forms.E.get(formName) || this.forms.P.get(formName);\r\n }\r\n }\r\n getFormById(formId: string | number, frmParent?: TFrmParent) {\r\n if (frmParent) return this.formsById[frmParent].get(String(formId));\r\n return (\r\n this.formsById.E.get(String(formId)) ||\r\n this.formsById.P.get(String(formId))\r\n );\r\n }\r\n get currentStep() {\r\n return this._currentStep;\r\n }\r\n get steps() {\r\n return this._steps;\r\n }\r\n public getEntity() {\r\n this.entity.init();\r\n\r\n return this.entity;\r\n }\r\n public getProcess() {\r\n this.process.init();\r\n\r\n return this.process;\r\n }\r\n public getObservations() {\r\n this.observations.init();\r\n\r\n return this.observations;\r\n }\r\n public getCurrentTask() {\r\n return new Task({ task: { name: 'TODO' } });\r\n }\r\n\r\n private mustRenderForms: string[] = [];\r\n\r\n public async run(executionConfig: TExecutionConfig) {\r\n this._stepCount = noNaN(getWindow(this).STEP_QTY);\r\n this._currentStep = noNaN(getWindow(this).CURRENT_STEP);\r\n this.executionConfig = executionConfig;\r\n\r\n const errXML = unescapeMarkup(getWindow(this).EXEC_ERRORS);\r\n\r\n if (errXML) {\r\n const obj: TExecutionErrors = parseXml(errXML);\r\n arrayOrArray(obj.sysMessages?.message).forEach((c) =>\r\n this.notifications.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'warning',\r\n }),\r\n ),\r\n );\r\n [\r\n ...arrayOrArray(obj.exceptions?.exception),\r\n ...arrayOrArray(obj.sysExceptions?.exception),\r\n ].forEach((c) =>\r\n this.notifications.add(\r\n new MessageNotification({\r\n message: c.text,\r\n type: 'error',\r\n stackTrace: c.label,\r\n }),\r\n ),\r\n );\r\n }\r\n\r\n for (let i = 1; i < Number(getWindow(this).STEP_QTY) + 1; i++) {\r\n if (i < this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'completed',\r\n });\r\n }\r\n if (i > this._currentStep && i <= this._stepCount) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'pending',\r\n });\r\n }\r\n if (i === this._currentStep) {\r\n this._steps.push({\r\n title: `Step ${i}`,\r\n stepNumber: i,\r\n status: 'current',\r\n });\r\n }\r\n }\r\n const res = await InitialData.getFormsDefinition(this);\r\n\r\n try {\r\n for await (const formDefinition of res) {\r\n if (!parseFakeJSON(formDefinition.properties).frmTab) {\r\n this.mustRenderForms.push(\r\n formDefinition.frmParent + '_' + formDefinition.formName,\r\n );\r\n }\r\n }\r\n for await (const formDefinition of res) {\r\n const newForm = new Form(this, formDefinition);\r\n await newForm.init();\r\n\r\n if (formDefinition.frmParent === 'E') {\r\n this.forms.E.set(formDefinition.formName, newForm);\r\n this.formsById.E.set(String(formDefinition.id), newForm);\r\n } else {\r\n this.forms.P.set(formDefinition.formName, newForm);\r\n this.formsById.P.set(String(formDefinition.id), newForm);\r\n }\r\n }\r\n\r\n this.state.formsReady = this.getAllForms();\r\n\r\n this.state.executionState =\r\n this.mustRenderForms.length === 0\r\n ? ExecutionState.RUNNING\r\n : ExecutionState.RENDERING;\r\n this.state.locked = false;\r\n\r\n this.fireEvents('onLoad');\r\n } catch (e) {\r\n console.error(e);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorLoadForms(),\r\n }),\r\n );\r\n }\r\n }\r\n\r\n protected getHiddenForms() {\r\n const hiddenForms = this.getAllForms().filter((form) => {\r\n return form.properties.frmHidden;\r\n });\r\n return hiddenForms;\r\n }\r\n\r\n public markFormAsRendered(frmParent: string, frmName: string) {\r\n this.mustRenderForms = this.mustRenderForms.filter(\r\n (c) => c !== frmParent + '_' + frmName,\r\n );\r\n if (this.mustRenderForms.length - this.getHiddenForms().length === 0) {\r\n this.state.executionState = ExecutionState.RUNNING;\r\n }\r\n }\r\n\r\n public async delegate() {\r\n console.warn('Delegate not implemented yet');\r\n }\r\n public async shareSocial() {\r\n console.warn('shareSocial not implemented yet');\r\n }\r\n\r\n confirm() {\r\n this.emit('confirm', null);\r\n }\r\n\r\n next() {\r\n this.emit('next', null);\r\n }\r\n\r\n sendToDesktop() {\r\n this.emit('sendToDesktop', null);\r\n }\r\n\r\n public async doBack() {\r\n const canGoBack = this.executionConfig?.canGoBack;\r\n if (canGoBack) {\r\n try {\r\n const nextUrl = makeApiaUrl(this, {\r\n action: 'gotoPrevStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async doConfirm(\r\n status?: Status,\r\n ): Promise<boolean | FlowModal<any> | Field> {\r\n if (status && !status?.step && !status?.finishedWithError) {\r\n this.state.locked = false;\r\n return false;\r\n } else {\r\n const validationResult = status !== undefined || (await this.validate());\r\n if (validationResult !== true) {\r\n return validationResult;\r\n }\r\n\r\n const isValid =\r\n status !== undefined || (await this.fireEvents('onSubmit'));\r\n const canConfirm = this.executionConfig?.canConfirm && isValid === true;\r\n\r\n if (canConfirm) {\r\n try {\r\n this.state.locked = true;\r\n\r\n const result = await (\r\n this.executionConfig?.isEntity ? confirmEntity : confirm\r\n )(\r\n this,\r\n (status || {\r\n step: 'CHECK_LOCK',\r\n }) as any,\r\n );\r\n\r\n if (result instanceof FlowModal) {\r\n return result;\r\n }\r\n\r\n this.state.locked = false;\r\n\r\n return result;\r\n } catch (error) {\r\n this.state.locked = false;\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n } else {\r\n this.state.locked = false;\r\n return isValid;\r\n }\r\n }\r\n }\r\n\r\n public async doFree() {\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n const data = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'release',\r\n currentTab: getCurrentTabsString(this),\r\n }),\r\n {\r\n postData: serverParams,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n\r\n if (data?.data?.text) {\r\n this.state.executionState = ExecutionState.FINISHED;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n public async doNext() {\r\n const isValid = await this.validate();\r\n if (isValid === true) {\r\n if (!(await this.fireEvents('onSubmit'))) {\r\n return false;\r\n }\r\n }\r\n if (isValid !== true) return isValid;\r\n\r\n const canGoNext = this.executionConfig?.canGoForward && isValid === true;\r\n\r\n if (canGoNext) {\r\n try {\r\n const checkLocksRes = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'checkWebDavDocumentsLocks',\r\n isAjax: true,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (\r\n checkLocksRes?.data?.actions?.action?.param[1] !==\r\n 'successWebDavLockFunction'\r\n ) {\r\n throw new Error('Failed to check WebDAV document locks.');\r\n }\r\n\r\n // Check signable forms\r\n const checkSignableFormsRes = await post<{ hasForms: boolean }>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'hasSignableForms',\r\n isAjax: true,\r\n prevSteps: true,\r\n appletToken: getWindow(this).appletToken,\r\n }),\r\n {\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n },\r\n );\r\n if (checkSignableFormsRes?.status !== 200) {\r\n throw new Error('No signable forms available.');\r\n }\r\n\r\n const nextUrl = makeApiaUrl(this, {\r\n action: 'gotoNextStep',\r\n asXML: true,\r\n react: true,\r\n currentTab: getCurrentTabsString(this),\r\n fromPanel: null,\r\n });\r\n\r\n const serverParams = {\r\n ...this.entity.getConfirmParams(),\r\n ...this.process.getConfirmParams(),\r\n ...this.observations.getConfirmParams(),\r\n ...Captcha.getConfirmParams(),\r\n };\r\n postNavigation(nextUrl, serverParams);\r\n return true;\r\n } catch (error) {\r\n console.error('Confirmation process failed:', error);\r\n this.notifications.add(\r\n new MessageNotification({\r\n type: 'error',\r\n message: labels.errorConfirmationFailed(),\r\n }),\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n public async doPrint() {\r\n getWindow(this).print();\r\n }\r\n\r\n public async doSave() {\r\n const response = await post<TFetchTaskActionResponse>(\r\n this,\r\n makeApiaUrl(this, {\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n }),\r\n );\r\n const canClose = response?.data?.load?.canClose;\r\n if (canClose) {\r\n return response;\r\n }\r\n }\r\n\r\n public getStepTitle(step: number) {\r\n if (this._steps) return this._steps[step];\r\n }\r\n\r\n public async viewDocs() {\r\n const url = `${\r\n getWindow(this).CONTEXT\r\n }/react/generic/docExecutionModal.jsp?isProcessMonitor=${\r\n getWindow(this).IN_MONITOR_PROCESS ?? 'false'\r\n }&isTaskMonitor=${getWindow(this).IN_MONITOR_TASK ?? 'false'}&isTask=true${\r\n getWindow(this).TAB_ID_REQUEST\r\n }&react=true`;\r\n\r\n const result = await get(this, url);\r\n\r\n if (result && result.data !== null) {\r\n const { data } = result;\r\n return data;\r\n }\r\n }\r\n\r\n public setStepTitle(stepNumber: number, stepTitle: string) {\r\n if (this._steps && this._steps[stepNumber - 1])\r\n this._steps[stepNumber - 1].title = stepTitle;\r\n }\r\n\r\n public async validate(): Promise<true | Field> {\r\n let firstInvalid: Field | null = null;\r\n\r\n for await (const [, c] of this.forms.E) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n for await (const [, c] of this.forms.P) {\r\n const result = await c.validate();\r\n if (result !== true && !firstInvalid) {\r\n firstInvalid = result;\r\n }\r\n }\r\n\r\n return firstInvalid ?? true;\r\n }\r\n\r\n private async fireEvents(evt: TFormEventName) {\r\n let result = true;\r\n\r\n for await (const f of this.forms.E.values()) {\r\n result = result && (await f.fireScriptEvent(evt));\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n for await (const f of this.forms.P.values()) {\r\n result = result && (await f.fireScriptEvent(evt));\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Notification, NotificationDefinition } from './Notification';\r\n\r\nexport class StatusNotification extends Notification<\r\n NotificationDefinition & { blocking: boolean }\r\n> {\r\n constructor(\r\n public readonly props: NotificationDefinition & { blocking: boolean },\r\n ) {\r\n super(props);\r\n }\r\n}\r\n"],"names":["__publicField","queryString","IProperty","id","_hasInited","__privateAdd","__privateGet","__privateSet","Field","EventEmitter","result","parseFakeJSON","properties","noNaN","Form","_field","TextAreaField","FlowModal","checkSign","ShowSignSelection","sign","ShowSign","checkLock","defaultConfirm","buildConfirmMessage","ShowConfirmMessage","checkers","ExecutionState"],"mappings":"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"}