@apia/execution 4.0.16 → 4.0.18
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.d.ts +1442 -1128
- package/dist/index.js +6604 -6110
- package/dist/index.js.map +1 -1
- package/package.json +8 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/programming/constants/Field.ts","../src/programming/constants/Form.ts","../src/programming/constants/IProperty.ts","../src/main/Notifications/index.ts","../src/main/Notifications/Notification.ts","../src/main/Notifications/MessageNotification.ts","../src/util/array/arrayOrArray.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/util/app/getCurrentTabsString.ts","../src/main/Execution/FormsExecution/constants/actions.ts","../src/main/Execution/FormsExecution/constants/IProperty.ts","../src/main/Execution/FormsExecution/events/setAjaxFormResponse.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/main/Execution/FormsExecution/WithProperties.ts","../src/main/Execution/FormsExecution/constants/eventTypes.ts","../src/main/Execution/FormsExecution/Field.ts","../src/util/other/asyncRetry.ts","../src/util/comparators/shallowEqual.ts","../src/main/Execution/FormsExecution/FieldWithAttribute.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/main/InitialData/bootstrap/readFormsDefinition.ts","../src/main/InitialData/index.ts","../src/main/Execution/FormsExecution/constants/props/numberProps.ts","../src/util/other/parseFakeJSON.ts","../src/main/Execution/FormsExecution/FieldWithIndexedFields/FieldsGroup.ts","../src/util/number/noNaN.ts","../src/main/Execution/FormsExecution/FieldWithIndexedFields/index.ts","../src/main/Execution/FormsExecution/Form.ts","../src/main/Execution/FormsExecution/fields/Button/index.ts","../src/main/Execution/FormsExecution/fields/Captcha/index.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/Uploader/UploaderModalController.ts","../src/main/Execution/Uploader/UploaderApi.ts","../src/main/Execution/FormsExecution/fields/File/FileUploaderApi.ts","../src/main/Execution/FormsExecution/fields/File/index.ts","../src/main/Execution/FormsExecution/fields/Grid/util/getTableSelection.ts","../src/main/Execution/FormsExecution/fields/Grid/util/GridFooterHandler.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/index.ts","../src/programming/ApiaFunctions.ts","../src/main/Execution/FormsExecution/customComponents/CustomComponent.ts","../src/main/Notifications/StatusNotification.ts"],"sourcesContent":["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 { 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","export function arrayOrArray<T>(e: T | T[] | undefined): T[] {\r\n if (Array.isArray(e)) return e as T[];\r\n if (e !== undefined) return [e] as T[];\r\n return [] as T[];\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('<', '<'),\r\n 'text/html',\r\n ).body.textContent!;\r\n\r\n next();\r\n },\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 function 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\n function 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('<', '<'),\r\n 'text/html',\r\n ).body.textContent!;\r\n }\r\n }\r\n return o;\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 { arrayOrArray } from '../array/arrayOrArray';\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\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 { 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¤tTab=${getCurrentTabsString()}${window.TAB_ID_REQUEST}`,\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 { arrayOrArray } from '../../../../util';\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\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 { 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 { TApiaFieldCommonProperties } from '../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { 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\r\n get fldType() {\r\n return this.#field.definition.fieldType;\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 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 { FieldWithAttribute } from '../main/Execution/FormsExecution/FieldWithAttribute';\r\nimport ApiaField from './ApiaField';\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 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","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 = (string | number)[];\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.map((c) => c.value);\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 | string[] | 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 let optionsResult = [];\r\n optionsResult = radioValues.map((c) => String(c.value));\r\n return optionsResult;\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 { TOptionsAsArray } from './SelectField';\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 | 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.map((c) => c.value);\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","import { CustomComponent } from '../../main/Execution/FormsExecution/customComponents/CustomComponent';\r\nimport { TApiaFieldCommonProperties } from '../../main/InitialData/types/fields/TApiaFieldProperties';\r\nimport { IApiaField } from '../types';\r\n\r\nexport class CustomComponentField implements IApiaField {\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);\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 { 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","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 { 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\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 event = this.definition.scriptEvents?.find(\r\n (c) => c.evtName === eventName,\r\n );\r\n if (event) {\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 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 stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\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 #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","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 ApiaField from '../ApiaField';\r\nimport { arrayOrArray, noNaN } 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\n\r\nexport default class GridField extends ApiaField {\r\n #field: Grid;\r\n\r\n constructor(protected field: Grid) {\r\n super(field);\r\n this.#field = field;\r\n }\r\n\r\n addRow() {\r\n this.#field.addRow();\r\n }\r\n\r\n clearGrid() {\r\n this.#field.clearGrid();\r\n }\r\n\r\n clearPage(pageNumber: number) {\r\n this.#field.clearPage(pageNumber);\r\n }\r\n\r\n clearRow(index: number) {\r\n const row = this.#field.getRow(index);\r\n row.forEach((c) => {\r\n if (c instanceof FieldWithAttribute) c.state.value = '';\r\n });\r\n }\r\n\r\n deleteGrid() {\r\n this.#field.deleteGrid();\r\n }\r\n\r\n deletePage(pageNumber: number) {\r\n const props = this.#field.properties;\r\n if (props.paged) {\r\n this.#field.deletePage(pageNumber);\r\n }\r\n }\r\n\r\n deleteRow(index: number) {\r\n this.#field.deleteRow(index);\r\n }\r\n\r\n editRow(index: number) {\r\n return this.#field.getRow(index).map((c) => createNewField(c));\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) arrayOrArray(fields).map((c) => createNewField(c!));\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.definition.pages;\r\n }\r\n\r\n getPageSize() {\r\n return this.#field.definition.pageSize;\r\n }\r\n\r\n getRow(index: number) {\r\n return this.#field.getRow(index).map((c) => createNewField(c));\r\n }\r\n\r\n getSelectedIndexes(useAbsoluteIndex?: boolean) {\r\n return this.#field.controller\r\n .getSelection()\r\n .map(\r\n (c) => c + (useAbsoluteIndex ? noNaN(this.#field.getStartIndex()) : 0),\r\n );\r\n }\r\n\r\n getSelectedItems() {\r\n return this.getSelectedIndexes().map((index) => this.getRow(index));\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.getRowsIndices().length;\r\n }\r\n\r\n get selected_col_index() {\r\n //TODO\r\n return this.#field.controller;\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\n\r\nexport default class ApiaForm implements IApiaForm {\r\n #form: Form;\r\n\r\n constructor(form: Form) {\r\n this.#form = form;\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 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 { 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 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 { arrayOrArray } from '../../../../util';\r\nimport {\r\n TApiaFieldBaseDefinition,\r\n TApiaFieldWithAttributeBaseProps,\r\n} from '../../../InitialData/types/TApiaField';\r\nimport { parseFakeJSON } from '../../../../util/other/parseFakeJSON';\r\nimport { Field } from '../Field';\r\nimport { Form } from '../Form';\r\nimport { Execution } from '../..';\r\nimport { FieldWithAttribute } from '../FieldWithAttribute';\r\n\r\nexport type GridEvents =\r\n | 'onRowAdd'\r\n | 'onRowDelete'\r\n | 'onRowSort'\r\n | 'onColSelect';\r\n\r\nexport type FieldState = {\r\n properties: any;\r\n value?: any;\r\n};\r\n\r\nexport class FieldsGroup {\r\n constructor(\r\n protected fields: TApiaFieldBaseDefinition<Record<string, any>>[],\r\n ) {}\r\n\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\r\n getAllFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n getField(field: string) {\r\n return (\r\n this.getFieldById(field) ||\r\n this.getFieldByName(field) ||\r\n this.getFieldByAttributeName(field)\r\n );\r\n }\r\n getFieldByAttributeId(attId: string | number) {\r\n return this.fieldsByAttributeId.get(String(attId));\r\n }\r\n getFieldByAttributeName(attName: string) {\r\n return this.fieldsByAttributeName.get(attName);\r\n }\r\n getFieldById(id: string | number) {\r\n return this.fieldsById.get(String(id));\r\n }\r\n getFieldByName(name: string) {\r\n return this.fieldsByName.get(name);\r\n }\r\n async init(form: Form, index: number) {\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, index });\r\n await newField.init(form);\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 newField.properties.name,\r\n newField as Field<any>,\r\n );\r\n }\r\n newField.properties.inGrid = true;\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 } 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","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 { TApiaFieldBaseDefinition } from '../../../InitialData/types/TApiaField';\r\nimport { FieldWithIndexedFieldsProps } from './types';\r\nimport { Field } from '../Field';\r\nimport { FieldState, FieldsGroup } from './FieldsGroup';\r\nimport { Form } from '../Form';\r\nimport { noNaN } from '../../../../util/number/noNaN';\r\nimport { action, makeObservable, observable } from 'mobx';\r\n\r\nexport abstract class FieldWithIndexedFields<\r\n FieldProps extends FieldWithIndexedFieldsProps = FieldWithIndexedFieldsProps,\r\n FieldDefinition extends\r\n TApiaFieldBaseDefinition<FieldProps> = TApiaFieldBaseDefinition<FieldProps>,\r\n State extends Record<string, unknown> = Record<string, unknown>,\r\n> extends Field<\r\n FieldProps,\r\n FieldDefinition,\r\n {\r\n definition: Omit<FieldDefinition, 'properties'> &\r\n FieldWithIndexedFieldsProps;\r\n } & State\r\n> {\r\n protected managedAttIds = new Set<string | number>();\r\n protected managedAttNames = new Set<string>();\r\n protected managedFieldIds = new Set<string | number>();\r\n protected managedFieldsNames = new Set<string>();\r\n\r\n constructor(\r\n definition: FieldDefinition,\r\n protected fieldsDefinitions: Omit<\r\n TApiaFieldBaseDefinition<Record<string, any>>,\r\n 'properties'\r\n >[],\r\n protected fieldsStates: FieldState[][],\r\n ) {\r\n super(definition);\r\n\r\n fieldsDefinitions.forEach((current) => {\r\n this.managedFieldIds.add(current.id);\r\n if ((current as any).name) {\r\n this.managedFieldsNames.add((current as any).name);\r\n }\r\n if ((current as any).attName) {\r\n this.managedAttNames.add((current as any).attName);\r\n }\r\n if ((current as any).attId) {\r\n this.managedAttIds.add((current as any).attId);\r\n }\r\n });\r\n\r\n makeObservable(this as any, {\r\n fieldsGroups: observable,\r\n isMaximized: observable,\r\n addGroup: action,\r\n });\r\n }\r\n\r\n protected fieldsGroups: FieldsGroup[] = [];\r\n public isMaximized = false;\r\n protected getFieldsGroupByIndex(index: number) {\r\n const pageSize =\r\n this.properties.pageSize === Infinity || !this.properties.paged\r\n ? 0\r\n : this.properties.pageSize;\r\n\r\n const startIndex = noNaN(pageSize * (this.properties.currentPage - 1), 0);\r\n\r\n return this.fieldsGroups[Math.abs(index - startIndex)];\r\n }\r\n\r\n protected async addGroup(group: FieldsGroup) {\r\n // Check if pageSize is finite\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\r\n const index = this.fieldsGroups.length + offset;\r\n\r\n await group.init(this.form, index);\r\n\r\n this.fieldsGroups.push(group);\r\n this.properties.rowsCount =\r\n (Number.isFinite(pageSize)\r\n ? (this.properties.currentPage - 1) * pageSize\r\n : 0) + this.fieldsGroups.length;\r\n }\r\n\r\n #hasInited = false;\r\n async init(form: Form): Promise<void> {\r\n if (!this.#hasInited) {\r\n this.#hasInited = true;\r\n await super.init(form);\r\n }\r\n\r\n const indices = new Array(this.fieldsStates[0]?.length || 0)\r\n .fill(1)\r\n .map((_, i) => i);\r\n const newRows: FieldsGroup[] = [];\r\n\r\n for await (const index of indices) {\r\n const group = new FieldsGroup(\r\n this.fieldsDefinitions.map((current, columnIndex) => {\r\n form.addFieldToRender(current.id, index);\r\n\r\n return {\r\n ...current,\r\n ...this.fieldsStates[columnIndex][index],\r\n };\r\n }),\r\n );\r\n\r\n await group.init(form, index);\r\n newRows[index] = group;\r\n }\r\n\r\n this.fieldsGroups = newRows;\r\n }\r\n\r\n getAllColumns() {\r\n return [...Object.values(this.fieldsGroups)].map((c) => c.getAllFields());\r\n }\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n getColumn(field: string) {\r\n return this.getField(field);\r\n }\r\n /**\r\n * @param field - Nombre del campo o del atributo\r\n */\r\n getField(field: string, index?: number) {\r\n if (this.managedFieldsNames.has(field) || this.managedAttNames.has(field)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getField(field);\r\n } else {\r\n return [...this.fieldsGroups.values()].map((current) =>\r\n current.getField(field),\r\n );\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n getFieldByAttributeId(attId: string | number, index?: number) {\r\n if (this.managedAttIds.has(attId)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByAttributeId(attId);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByAttributeId(attId),\r\n );\r\n }\r\n }\r\n }\r\n getFieldByAttributeName(attName: string, index?: number) {\r\n if (this.managedAttNames.has(attName)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByAttributeName(\r\n attName,\r\n );\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByAttributeName(attName),\r\n );\r\n }\r\n }\r\n }\r\n getFieldById(id: string | number, index?: number) {\r\n if (this.managedFieldIds.has(id)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldById(id);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldById(id),\r\n );\r\n }\r\n }\r\n }\r\n getFieldByName(name: string, index?: number) {\r\n if (this.managedFieldsNames.has(name)) {\r\n if (index !== undefined) {\r\n return this.getFieldsGroupByIndex(index)?.getFieldByName(name);\r\n } else {\r\n return [...Object.values(this.fieldsGroups)].map((group) =>\r\n group.getFieldByName(name),\r\n );\r\n }\r\n }\r\n }\r\n getRow(index: number) {\r\n return this.getFieldsGroupByIndex(index)?.getAllFields();\r\n }\r\n\r\n getStartIndex() {\r\n const pageSize = this.properties.pageSize;\r\n return noNaN((this.properties.currentPage - 1) * pageSize, 0);\r\n }\r\n getRowsIndices(): number[] {\r\n const minIndex = this.getStartIndex();\r\n const maxIndex = minIndex + this.fieldsGroups.length;\r\n const size = maxIndex - minIndex;\r\n\r\n return new Array(size).fill(1).map((_, i) => i + minIndex);\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 fg of this.fieldsGroups) {\r\n for await (const field of fg.getAllFields()) {\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","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 { arrayOrArray } from '../../../util/array/arrayOrArray';\r\nimport { parseFakeJSON } from '../../../util/other/parseFakeJSON';\r\nimport { WithProperties } from './WithProperties';\r\nimport { FieldWithIndexedFields } from './FieldWithIndexedFields';\r\nimport { makeApiaUrl, post, get } from '../../../util';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { FieldWithAttribute } from './FieldWithAttribute';\r\nimport { CustomComponent } from './customComponents/CustomComponent';\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, FieldWithIndexedFields>();\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 });\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 closeForm() {\r\n this.properties.prpFrmClosed = true;\r\n }\r\n openForm() {\r\n this.properties.prpFrmClosed = false;\r\n }\r\n\r\n getAllFields() {\r\n return [...this.fieldsById.values()];\r\n }\r\n\r\n getCustomComponents() {\r\n return [...this.customComponents.values()];\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) {\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 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 === 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 FieldWithIndexedFields) {\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.getAllFields()) {\r\n if (field instanceof FieldWithIndexedFields) {\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","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","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 { makeObservable, observable } from 'mobx';\r\nimport { UploaderApi } from './UploaderApi';\r\nimport {\r\n IPoolsPermissions,\r\n IUsersPermissions,\r\n TModalConfig,\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 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 ) {\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.addFiles(files);\r\n }\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 async confirm() {\r\n let isValid = this.validate();\r\n if (isValid) isValid = await this.api.confirmDropModal();\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/dynamic/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 (this.api.getInProgressFiles().length === 0) {\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 { ApiaApi, makeApiaUrl } from '@apia/api';\r\n\r\nimport {\r\n addBoundary,\r\n arrayOrArray,\r\n cloneDeep,\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 TApiaDocumentDefinition,\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, locked, lockedBy, userLocking, ...file } =\r\n fileDefinition as TFileUploaded;\r\n\r\n return {\r\n ...file,\r\n isLocked: !!lockedBy || String(lock || locked) === '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\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.fileApi = this 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() {\r\n if (window.OneClickUploadEnabled) {\r\n console.warn('HACER ONECLIOCK UPLOAD');\r\n } else {\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 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.indexedFiles[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 * Devuelve un proxy que permite modificar los\r\n * archivos por su id.\r\n */\r\n get indexedFiles() {\r\n return new Proxy(cloneDeep(this.state.files), {\r\n get: (files, prop) => {\r\n if (prop in files) return files[prop as any];\r\n\r\n const translatedFilesArr = Array.from(\r\n this.state.translatedFiles.values(),\r\n );\r\n for (let i = 0; i < translatedFilesArr.length; i++) {\r\n const translatedLangs = Object.values(translatedFilesArr[i]);\r\n for (let j = 0; j < translatedLangs.length; j++) {\r\n if (translatedLangs[j].docId === prop) return translatedLangs[j];\r\n }\r\n }\r\n\r\n return undefined;\r\n },\r\n set: (_, __, value: TUploaderFileInfo) => {\r\n this.state.files[value.docId] = value;\r\n return true;\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 }\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.indexedFiles[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.addFiles(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 addFiles(\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 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.indexedFiles[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.indexedFiles[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 deleteDocument(id: string, langId?: number) {\r\n const file = this.indexedFiles[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 if (this.state.files[id]) delete this.state.files[id];\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.indexedFiles[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 //TODO: ver si hay que actualizar los traduciods tambien( en todos los lugares donde se usa el indexedFiles)\r\n this.state.files[id].markedToSign = marked.data.markedToSign;\r\n // file.markedToSign = marked.data.markedToSign;\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 = null as any as TApiaDocumentDefinition | null; //this.state.versioningFile //TODO\r\n const docDesc = this.modalController?.description ?? '';\r\n const docAllowAllType = 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 docId = translatingFile.docId;\r\n let innerMap = this.state.translatedFiles.get(docId);\r\n\r\n if (!innerMap) {\r\n innerMap = new Map<number, TUploaderFileInfo>();\r\n }\r\n innerMap.set(langId, newFiles[docId]);\r\n this.state.translatedFiles.set(docId, innerMap);\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.state.translatedFiles;\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.indexedFiles[id];\r\n if (file.isMarkedToSign) {\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 if (typeof isLocked === 'string') {\r\n this.state.files[id] = this.parseFileDefinition({\r\n ...file,\r\n userLocking: isLocked,\r\n lock: true,\r\n locked: true,\r\n lockedBy: isLocked,\r\n });\r\n } else this.state.files[id] = { ...this.indexedFiles[id], isLocked };\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.indexedFiles[resultFile.docId] = this.parseFileDefinition({\r\n ...file,\r\n ...resultFile,\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 private setTranslationFile(\r\n file: TUploaderFileInfo,\r\n docId: string,\r\n langId: number,\r\n ) {\r\n if (!this.state.translatedFiles.get(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","import type { File } from '.';\r\nimport { TModalConfig, UploaderApi } from '../../../Uploader';\r\n\r\nexport class FileUploaderApi extends UploaderApi {\r\n constructor(\r\n protected type: 'E' | 'P',\r\n public modalConfig: TModalConfig,\r\n private field: File,\r\n ) {\r\n super(type + '_' + field.definition.id, type, modalConfig);\r\n }\r\n\r\n protected getAjaxUploadFileStatusParameters = (\r\n defaultParameters: Record<string, unknown>,\r\n ) => {\r\n return {\r\n ...defaultParameters,\r\n frmParent: this.field.getForm().definition.frmParent,\r\n };\r\n };\r\n}\r\n","import { TApiaFileProperties } from '../../../../InitialData/types/fields/TApiaFieldProperties';\r\nimport { TModalConfig } from '../../../Uploader';\r\nimport { Form } from '../../Form';\r\nimport { TranslatableField } from '../../TranslatableField';\r\nimport { FileUploaderApi } from './FileUploaderApi';\r\n\r\nexport class File extends TranslatableField<TApiaFileProperties> {\r\n uploader: FileUploaderApi = {} as FileUploaderApi;\r\n\r\n async init(form: Form) {\r\n await super.init(form);\r\n\r\n this.uploader = new FileUploaderApi(\r\n form.definition.frmParent,\r\n {\r\n oneClickUpload: this.properties.oneClickUpload,\r\n } as TModalConfig,\r\n this,\r\n );\r\n }\r\n}\r\n","import { responsiveTableStore } from '@apia/table';\r\n\r\nexport function getTableSelection(tableName: string) {\r\n const state = responsiveTableStore.getState().responsiveTableSlice[tableName];\r\n\r\n const set = new Set<number>();\r\n state.selectedRows.forEach((e) => {\r\n if (e >= 0) {\r\n set.add(e);\r\n }\r\n });\r\n\r\n return [...set];\r\n}\r\n","import { getTableSelection } from './getTableSelection';\r\nimport { makeObservable, observable, runInAction } from 'mobx';\r\nimport { IGrid } from '../types';\r\n\r\ntype GridFooterHandlerState = {\r\n isSortUpDisabled: boolean;\r\n isSortDownDisabled: boolean;\r\n isLoading: boolean;\r\n};\r\n\r\nexport class GridFooterHandler {\r\n state: GridFooterHandlerState = {\r\n isSortUpDisabled: true,\r\n isSortDownDisabled: true,\r\n isLoading: false,\r\n };\r\n\r\n constructor(private grid: IGrid) {\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 { paged, currentPage, rowsCount } = this.grid.properties;\r\n const isFirstPage = paged ? currentPage === 1 : false;\r\n\r\n const u2 = this.grid.controller.events.on(\r\n 'onChangeSelection',\r\n ([selection]) => {\r\n runInAction(() => {\r\n this.state.isSortUpDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find((c) => c.index === 0) && isFirstPage\r\n : selection.find((c) => c.index === 0));\r\n this.state.isSortDownDisabled =\r\n selection.length === 0 ||\r\n !!(paged\r\n ? selection.find(\r\n (c) => c.row?.rendererProps?.index === rowsCount - 1,\r\n )\r\n : selection.find(\r\n (c) => c.index === this.grid.properties.rowsCount - 1,\r\n ));\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 (\r\n this.state.isSortUpDisabled ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n get isSortDownDisabled() {\r\n return (\r\n this.state.isSortDownDisabled ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n get isAddDisabled() {\r\n return this.state.isLoading || this.grid.state.isLoading;\r\n }\r\n get isDeleteDisabled() {\r\n return (\r\n this.grid.controller.getSelection().length === 0 ||\r\n this.state.isLoading ||\r\n this.grid.state.isLoading\r\n );\r\n }\r\n\r\n private async runBlockingCode(cb: () => Promise<void>) {\r\n this.state.isLoading = true;\r\n\r\n try {\r\n await cb();\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this.state.isLoading = false;\r\n }\r\n }\r\n\r\n async sortUp() {\r\n await this.runBlockingCode(async () => {\r\n const { paged, currentPage, pageSize } = this.grid.properties;\r\n const tableName = this.grid.controller.tableName;\r\n\r\n let selection = getTableSelection(tableName);\r\n\r\n if (paged) {\r\n const offset = (currentPage - 1) * pageSize;\r\n selection = selection.map((index) => index + offset);\r\n }\r\n const isFirstRowSelected =\r\n paged && selection.includes((currentPage - 1) * pageSize);\r\n\r\n if (await this.grid.sortUp(selection)) {\r\n const state = this.grid.controller.getState();\r\n\r\n if (paged) {\r\n if (isFirstRowSelected) {\r\n state.selectedRows = [pageSize - 1];\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c - 1)\r\n .filter((c) => c >= 0);\r\n }\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c - 1)\r\n .filter((c) => c >= 0);\r\n }\r\n\r\n state.focusedRow = state.selectedRows[state.selectedRows.length - 1];\r\n state.scrollIntoViewRow =\r\n state.selectedRows[state.selectedRows.length - 1];\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async sortDown() {\r\n await this.runBlockingCode(async () => {\r\n const { paged, currentPage, pageSize, rowsCount } = this.grid.properties;\r\n const tableName = this.grid.controller.tableName;\r\n\r\n let selection = getTableSelection(tableName);\r\n\r\n if (paged) {\r\n const offset = (currentPage - 1) * pageSize;\r\n selection = selection.map((index) => index + offset);\r\n }\r\n\r\n const isLastRowSelected =\r\n paged && selection.includes(currentPage * pageSize - 1);\r\n\r\n if (await this.grid.sortDown(selection)) {\r\n const state = this.grid.controller.getState();\r\n\r\n if (paged) {\r\n if (isLastRowSelected) {\r\n state.selectedRows = [0];\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c + 1)\r\n .filter((c) => c < pageSize);\r\n }\r\n } else {\r\n state.selectedRows = state.selectedRows\r\n .map((c) => c + 1)\r\n .filter((c) => c < rowsCount);\r\n }\r\n state.focusedRow = Math.min(state.focusedRow + 1, rowsCount - 1);\r\n state.scrollIntoViewRow = Math.min(state.focusedRow + 1, rowsCount - 1);\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async addRow() {\r\n await this.runBlockingCode(async () => {\r\n const { currentPage, pageSize } = this.grid.properties;\r\n\r\n if (await this.grid.addRow()) {\r\n const newTotalRows = this.grid.properties.rowsCount;\r\n\r\n const totalPages = Math.ceil(newTotalRows / pageSize);\r\n\r\n let newSelectedRowIndex: number;\r\n\r\n if (currentPage === totalPages) {\r\n newSelectedRowIndex = (newTotalRows - 1) % pageSize;\r\n } else {\r\n newSelectedRowIndex = newTotalRows - 1;\r\n }\r\n\r\n const state = this.grid.controller.getState();\r\n\r\n state.selectedRows = [newSelectedRowIndex];\r\n state.focusedRow = newSelectedRowIndex;\r\n state.focusedColumn = Math.max(state.focusedColumn, 1);\r\n state.scrollIntoViewRow = newSelectedRowIndex;\r\n state.isFocused = false;\r\n\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n\r\n async deleteSelectedRows(index?: number) {\r\n await this.runBlockingCode(async () => {\r\n const state = this.grid.controller.getState();\r\n const selection = getTableSelection(this.grid.controller.tableName);\r\n\r\n if (index !== undefined) {\r\n await this.grid.deleteRow([index]);\r\n if (state.focusedRow > index) {\r\n state.focusedRow = state.focusedRow - 1;\r\n }\r\n state.selectedRows = selection.map((c) => (c > index ? c - 1 : c));\r\n this.grid.controller.setState(state);\r\n } else {\r\n const { currentPage, pageSize } = this.grid.properties;\r\n // Obtener la selección actual de filas\r\n if (selection.length === 0) {\r\n // No hay filas seleccionadas para eliminar\r\n return;\r\n }\r\n\r\n // Encontrar el índice mínimo seleccionado (asumiendo índices relativos a la página)\r\n let min = Infinity;\r\n selection.forEach((c) => {\r\n if (c < min) min = c;\r\n });\r\n\r\n // Eliminar las filas seleccionadas\r\n const deletionSuccess = await this.grid.deleteRow(selection);\r\n if (!deletionSuccess) {\r\n // Manejar el fallo en la eliminación si es necesario\r\n console.error('Error al eliminar filas seleccionadas.');\r\n return;\r\n }\r\n\r\n // Obtener el estado actual de la tabla después de la eliminación\r\n\r\n // Determinar si la primera fila de la página estaba seleccionada\r\n const isFirstRowSelected = min === 0;\r\n\r\n if (isFirstRowSelected) {\r\n if (currentPage > 1) {\r\n // Seleccionar la última fila de la página anterior\r\n state.selectedRows = [pageSize - 1];\r\n } else {\r\n // Seleccionar la primera fila de la página actual\r\n this.state.isSortDownDisabled = false;\r\n state.selectedRows = [0];\r\n }\r\n } else {\r\n // Seleccionar la fila anterior a la eliminada\r\n const newSelected = min - 1;\r\n state.selectedRows = [Math.max(newSelected, 0)];\r\n }\r\n\r\n // Establecer el foco en la fila seleccionada\r\n state.focusedRow = state.selectedRows[0];\r\n state.scrollIntoViewRow = state.focusedRow;\r\n state.isFocused = false;\r\n\r\n // Actualizar el estado de la tabla\r\n this.grid.controller.setState(state);\r\n }\r\n });\r\n }\r\n}\r\n","import { Controller2 } from '@apia/table';\r\nimport { arrayOrArray, makeApiaUrl, parseXml, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { FieldWithIndexedFields } from '../../FieldWithIndexedFields';\r\nimport { FieldsGroup } from '../../FieldWithIndexedFields/FieldsGroup';\r\nimport { Form } from '../../Form';\r\nimport { actions } from '../../constants/actions';\r\nimport { eventTypes } from '../../constants/eventTypes';\r\nimport { FireEventParameters, SetValueOptions } from '../../types';\r\nimport {\r\n GridAction,\r\n GridActionResponse,\r\n GridColumn,\r\n GridEvents,\r\n GridProps,\r\n IGrid,\r\n} from './types';\r\nimport { GridFooterHandler } from './util/GridFooterHandler';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class Grid\r\n extends FieldWithIndexedFields<\r\n GridProps,\r\n TApiaFieldBaseDefinition<GridProps>,\r\n {\r\n definition: Omit<TApiaFieldBaseDefinition<GridProps>, 'properties'>;\r\n header: GridColumn[];\r\n isLoading: boolean;\r\n selectedIndices: number[];\r\n showAdditionalColumn: boolean;\r\n }\r\n >\r\n implements IGrid\r\n{\r\n private _controller: Controller2 | null = null;\r\n public get controller() {\r\n if (!this._controller) {\r\n throw new Error('Controller2 has not been set');\r\n }\r\n return this._controller;\r\n }\r\n public setController(c: Controller2) {\r\n this._controller = c;\r\n this.footerHandler = new GridFooterHandler(this);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n const fieldsArray = arrayOrArray(field);\r\n const statesArray = fieldsArray.map((current) =>\r\n arrayOrArray(current.fieldValue || current.row),\r\n );\r\n\r\n super(\r\n {\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 rowsCount: arrayOrArray(arrayOrArray(field)[0]?.fieldValue).length,\r\n\r\n shownColumns: new Map(),\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n },\r\n fieldsArray.map(({ properties, fieldValue, ...current }) => {\r\n return current;\r\n }),\r\n\r\n statesArray,\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150',\r\n }));\r\n this.calculateMustShowAdditionalColumn();\r\n this.state.isLoading = false;\r\n }\r\n\r\n #hasSetHeadersSizes = false;\r\n private footerHandler: GridFooterHandler | null = null;\r\n private initHeadersSizes() {\r\n if (this.#hasSetHeadersSizes) {\r\n return;\r\n }\r\n\r\n const firstRow = this.getRow(0);\r\n if (firstRow) {\r\n this.#hasSetHeadersSizes = true;\r\n this.state.header = arrayOrArray(firstRow).map((field, columnIndex) => ({\r\n ...this.state.header[columnIndex],\r\n width: field.properties?.colWidth ?? '150',\r\n }));\r\n }\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.initHeadersSizes();\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const willShowEditionButton = !!this.properties.gridForm;\r\n let willShowDeleteButton =\r\n !this.properties.hideDelButton &&\r\n !this.properties.hideGridButtons &&\r\n !this.properties.hideIncludeButton;\r\n\r\n if (!willShowDeleteButton) {\r\n const showDeleteButtonsValues =\r\n this.properties.shownDeleteButtons.values();\r\n\r\n for (const value of showDeleteButtonsValues) {\r\n if (value) {\r\n willShowDeleteButton = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.state.showAdditionalColumn =\r\n willShowEditionButton || willShowDeleteButton;\r\n }\r\n protected async parseAddRowXml(str: string): Promise<boolean> {\r\n const xml = parseXml(str) as TApiaGridDefinition;\r\n\r\n if (xml.field) {\r\n await this.addGroup(\r\n new FieldsGroup(\r\n arrayOrArray(xml.field).map((c) => {\r\n if (c.fieldType === 'select' || c.fieldType === 'radio') {\r\n return { ...c, ...c.row };\r\n }\r\n\r\n return c;\r\n }),\r\n ),\r\n );\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n protected async rebuildGrid(\r\n xmlString: string,\r\n rowsCount: number,\r\n ): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: 1,\r\n rowsCount,\r\n pages: 1,\r\n };\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 if (statesArray[0].length > this.fieldsGroups.length) {\r\n for (let i = this.fieldsGroups.length; i < statesArray[0].length; i++) {\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 + this.getStartIndex(),\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 const fieldsGroup = new FieldsGroup(parsedFieldGroups);\r\n\r\n await this.addGroup(fieldsGroup);\r\n }\r\n } else if (statesArray[0].length < this.fieldsGroups.length) {\r\n this.fieldsGroups.splice(statesArray[0].length);\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n this.fieldsStates = statesArray;\r\n this.fieldsStates.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 fieldGroup = this.getFieldsGroupByIndex(\r\n this.getStartIndex() + rowIndex,\r\n );\r\n const field = fieldGroup.getFieldById(id);\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 = rowIndex + this.getStartIndex();\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\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: 'processGridFieldAction',\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 behave,\r\n );\r\n }\r\n\r\n 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 /**\r\n * Grid methods\r\n */\r\n async addRow(): Promise<boolean> {\r\n const eventsResult = await this.fireEvent('gridAdd', {\r\n cantRowsToAdd: 1,\r\n gridAction: 'add',\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridAdd')) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n cantRowsToAdd: 1,\r\n gridAction: 'last',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n clearGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'clearGrid',\r\n clearReadonly: true,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n clearPage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented clearPage';\r\n };\r\n deleteGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n deletePage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented deletePage';\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 async deleteRow(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n )\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.minIndex);\r\n\r\n const eventsResult = await this.fireEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: selectedIndices,\r\n });\r\n\r\n // if (eventsResult) {\r\n // this.fieldsGroups = this.removeElementsByIndices(\r\n // this.fieldsGroups,\r\n // selectedIndices,\r\n // );\r\n // }\r\n if (eventsResult) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n private getServerEventOfType(eventName: GridEvents) {\r\n return this.definition.serverEvents?.find((c) => c.evtName === eventName);\r\n }\r\n protected async fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n let event = this.getServerEventOfType(eventName);\r\n\r\n if (event) {\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 } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n public getGridFooterHandler() {\r\n if (!this.footerHandler)\r\n throw new Error(\"Grid footer handler hasn't been set\");\r\n\r\n return this.footerHandler;\r\n }\r\n fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, params);\r\n }\r\n gotoPage: GridAction<[page: number]> = async (\r\n page: number,\r\n ): Promise<boolean> => {\r\n const response = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (response?.data?.success) {\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: page,\r\n };\r\n await this.rebuildGrid(\r\n response.data.gridXml.text,\r\n noNaN(response.data.rowCount, 0),\r\n );\r\n\r\n return true;\r\n }\r\n return false;\r\n };\r\n getCurrentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n getHeader() {\r\n return this.state.header;\r\n }\r\n getMustShowAdditionalColumn() {\r\n return this.state.showAdditionalColumn;\r\n }\r\n getPageCount() {\r\n return this.properties.pages;\r\n }\r\n getSelectedIndices() {\r\n return this.state.selectedIndices;\r\n }\r\n getSelectedItems() {\r\n return this.getSelectedIndices().map((current) => this.getRow(current)!);\r\n }\r\n isPaged() {\r\n return this.properties.paged;\r\n }\r\n async refresh() {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'refresh',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n }\r\n }\r\n /**\r\n * @alias deleteRow\r\n */\r\n remove(index?: number | number[]): Promise<boolean> {\r\n return this.deleteRow(index);\r\n }\r\n removeElementsByIndices(\r\n array: FieldsGroup[],\r\n indicesToRemove: number[],\r\n ): FieldsGroup[] {\r\n const indicesSet = new Set(indicesToRemove);\r\n\r\n return array.filter((_, index) => !indicesSet.has(index));\r\n }\r\n\r\n sortColumn: GridAction<[index: number]> = async (index) => {\r\n const firingField = this.fieldsGroups\r\n .at(\r\n (this.properties.currentPage -\r\n (this.state.showAdditionalColumn ? 1 : 0)) *\r\n this.properties.pageSize,\r\n )\r\n ?.getAllFields()\r\n .at(index - 1)?.definition.id;\r\n\r\n if (firingField) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField,\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n async sortDown(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n ).sort((a, b) => b - a);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'down', { synchronize: false });\r\n } else if (eventsResult && !this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'down', { synchronize: false });\r\n }\r\n return eventsResult;\r\n }\r\n\r\n async sortUp(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'up', { synchronize: false });\r\n } else if (eventsResult && !this.getServerEventOfType('gridSort')) {\r\n this.swapRows(selectedIndices, 'up', { synchronize: false });\r\n }\r\n return eventsResult;\r\n }\r\n\r\n private swapRows(\r\n rows: number[],\r\n direction: 'up' | 'down',\r\n props?: SetValueOptions,\r\n ) {\r\n for (const i of rows) {\r\n const swapIndex = direction === 'up' ? i - 1 : i + 1;\r\n this.swapRowsIndices(i, swapIndex, props);\r\n }\r\n }\r\n\r\n private swapRowsIndices(a: number, b: number, props?: SetValueOptions) {\r\n const swapGroup = this.getFieldsGroupByIndex(a)?.getAllFields();\r\n const swapProps = swapGroup.map((c) => c.properties);\r\n const swapValues = swapGroup.map((c) => {\r\n if (c instanceof FieldWithAttribute) {\r\n return c.getValue();\r\n }\r\n return undefined;\r\n });\r\n const currentGroup = this.getFieldsGroupByIndex(b)?.getAllFields();\r\n const currentProps = currentGroup.map((c) => c.properties);\r\n const currentValues = currentGroup.map((c) => {\r\n if (c instanceof FieldWithAttribute) {\r\n return c.getValue();\r\n }\r\n return undefined;\r\n });\r\n\r\n swapGroup.forEach((field, column) => {\r\n field.properties = currentProps[column];\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(currentValues[column], props);\r\n }\r\n });\r\n currentGroup.forEach((field, column) => {\r\n field.properties = swapProps[column];\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(swapValues[column], props);\r\n }\r\n });\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n const currentValue = this.properties.shownColumns.get(fieldName);\r\n this.properties.shownColumns.set(fieldName, isShown ?? !currentValue);\r\n }\r\n\r\n 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 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","import { Controller2 } from '@apia/table';\r\nimport { arrayOrArray, makeApiaUrl, parseXml, post } from '../../../../../util';\r\nimport { IApiaApiPostConfig } from '../../../../../util/api/types';\r\nimport { noNaN } from '../../../../../util/number/noNaN';\r\nimport { parseFakeJSON } from '../../../../../util/other/parseFakeJSON';\r\nimport { TApiaFieldBaseDefinition } from '../../../../InitialData/types/TApiaField';\r\nimport { TApiaGridDefinition } from '../../../../InitialData/types/fields/TApiaGridDefinition';\r\nimport { FieldWithIndexedFields } from '../../FieldWithIndexedFields';\r\nimport { FieldsGroup } from '../../FieldWithIndexedFields/FieldsGroup';\r\nimport { Form } from '../../Form';\r\nimport { actions } from '../../constants/actions';\r\nimport { eventTypes } from '../../constants/eventTypes';\r\nimport { FireEventParameters } from '../../types';\r\nimport { GridFooterHandler } from '../Grid/util/GridFooterHandler';\r\nimport {\r\n GridAction,\r\n GridActionResponse,\r\n GridColumn,\r\n GridEvents,\r\n GridProps,\r\n} from './types';\r\nimport { IGrid } from '../Grid/types';\r\nimport { FieldWithAttribute } from '../../FieldWithAttribute';\r\n\r\nexport class GridPaginated\r\n extends FieldWithIndexedFields<\r\n GridProps,\r\n TApiaFieldBaseDefinition<GridProps>,\r\n {\r\n definition: Omit<TApiaFieldBaseDefinition<GridProps>, 'properties'>;\r\n header: GridColumn[];\r\n isLoading: boolean;\r\n selectedIndices: number[];\r\n showAdditionalColumn: boolean;\r\n }\r\n >\r\n implements IGrid\r\n{\r\n private _controller: Controller2 | null = null;\r\n public get controller() {\r\n if (!this._controller) {\r\n throw new Error('Controller2 has not been set');\r\n }\r\n return this._controller;\r\n }\r\n public setController(c: Controller2) {\r\n this._controller = c;\r\n this.footerHandler = new GridFooterHandler(this);\r\n }\r\n\r\n constructor({ properties, field, ...definition }: TApiaGridDefinition) {\r\n const fieldsArray = arrayOrArray(field);\r\n const statesArray = fieldsArray.map((current) =>\r\n arrayOrArray(current.fieldValue || current.row),\r\n );\r\n\r\n super(\r\n {\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 rowsCount: arrayOrArray(arrayOrArray(field)[0].fieldValue).length,\r\n shownColumns: new Map(),\r\n shownDeleteButtons: new Map(),\r\n shownEditionButtons: new Map(),\r\n ...properties,\r\n },\r\n },\r\n fieldsArray.map(({ properties, fieldValue, ...current }) => {\r\n return current;\r\n }),\r\n\r\n statesArray,\r\n );\r\n\r\n this.state.header = arrayOrArray(definition.gridHeader.col).map((c) => ({\r\n label: c.colTitle,\r\n title: c.title,\r\n width: c.colWidth || '150',\r\n }));\r\n this.calculateMustShowAdditionalColumn();\r\n this.footerHandler = new GridFooterHandler(this);\r\n this.state.isLoading = false;\r\n }\r\n private footerHandler: GridFooterHandler;\r\n #hasSetHeadersSizes = false;\r\n private initHeadersSizes() {\r\n if (this.#hasSetHeadersSizes) {\r\n return;\r\n }\r\n\r\n const firstRow = this.getRow(0);\r\n if (firstRow) {\r\n this.#hasSetHeadersSizes = true;\r\n this.state.header = arrayOrArray(firstRow).map((field, columnIndex) => ({\r\n ...this.state.header[columnIndex],\r\n width: field.properties?.colWidth ?? '150',\r\n }));\r\n }\r\n }\r\n\r\n async init(form: Form): Promise<void> {\r\n await super.init(form);\r\n this.initHeadersSizes();\r\n }\r\n\r\n protected calculateMustShowAdditionalColumn() {\r\n const willShowEditionButton = !!this.properties.gridForm;\r\n\r\n let willShowDeleteButton =\r\n !this.properties.hideDelButton &&\r\n !this.properties.hideGridButtons &&\r\n !this.properties.hideIncludeButton;\r\n\r\n if (!willShowDeleteButton) {\r\n const showDeleteButtonsValues =\r\n this.properties.shownDeleteButtons.values();\r\n\r\n for (const value of showDeleteButtonsValues) {\r\n if (value) {\r\n willShowDeleteButton = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.state.showAdditionalColumn =\r\n willShowEditionButton || willShowDeleteButton;\r\n }\r\n protected async parseAddRowXml(str: string): Promise<boolean> {\r\n const xml = parseXml(str) as TApiaGridDefinition;\r\n\r\n if (xml.field) {\r\n await this.addGroup(\r\n new FieldsGroup(\r\n arrayOrArray(xml.field).map((c) => {\r\n if (c.fieldType === 'select' || c.fieldType === 'radio') {\r\n return { ...c, ...c.row };\r\n }\r\n\r\n return c;\r\n }),\r\n ),\r\n );\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n protected async rebuildGrid(\r\n xmlString: string,\r\n rowsCount: number,\r\n ): Promise<void> {\r\n const xml = parseXml(xmlString) as TApiaGridDefinition;\r\n\r\n const pages = noNaN(xml.pages, 1);\r\n const currentPage = noNaN(xml.curPage, 1);\r\n\r\n this.properties = {\r\n ...this.properties,\r\n currentPage,\r\n rowsCount,\r\n pages,\r\n };\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 if (statesArray[0].length > this.fieldsGroups.length) {\r\n for (let i = this.fieldsGroups.length; i < statesArray[0].length; i++) {\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 + this.getStartIndex(),\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 const fieldsGroup = new FieldsGroup(parsedFieldGroups);\r\n\r\n await this.addGroup(fieldsGroup);\r\n }\r\n } else if (statesArray[0].length < this.fieldsGroups.length) {\r\n this.fieldsGroups.splice(statesArray[0].length);\r\n }\r\n\r\n this.fieldsDefinitions = fieldsArray;\r\n this.fieldsStates = statesArray;\r\n this.fieldsStates.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 fieldGroup = this.getFieldsGroupByIndex(\r\n this.getStartIndex() + rowIndex,\r\n );\r\n const field = fieldGroup.getFieldById(id);\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 = rowIndex + this.getStartIndex();\r\n if (field instanceof FieldWithAttribute) {\r\n field.setValue(state.value, { synchronize: false });\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: 'processGridFieldAction',\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 behave,\r\n );\r\n }\r\n\r\n get minIndex() {\r\n return (this.properties.currentPage - 1) * this.properties.pageSize;\r\n }\r\n\r\n /**\r\n * Grid methods\r\n */\r\n async addRow(): Promise<boolean> {\r\n const eventsResult = await this.fireEvent('gridAdd', {\r\n cantRowsToAdd: 1,\r\n gridAction: 'add',\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridAdd')) {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'last',\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else if (res?.data?.gridXml.text) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n return eventsResult;\r\n }\r\n clearGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'clearGrid',\r\n clearReadonly: true,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n clearPage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented clearPage';\r\n };\r\n deleteGrid: GridAction = async () => {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'delete',\r\n },\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n if (res?.data?.success) {\r\n await this.rebuildGrid(\r\n res.data.gridXml.text,\r\n noNaN(res.data.rowCount, 0),\r\n );\r\n return true;\r\n }\r\n return false;\r\n };\r\n deletePage: GridAction<[page: number]> = () => {\r\n throw 'Not implemented deletePage';\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 async deleteRow(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = (\r\n index !== undefined ? arrayOrArray(index) : this.getSelectedIndices()\r\n )\r\n .sort((a, b) => b - a)\r\n .map((c) => c + this.minIndex);\r\n\r\n const eventsResult = await this.fireEvent('gridDelete', {\r\n gridAction: 'delete',\r\n rowId: selectedIndices,\r\n });\r\n\r\n if (eventsResult) {\r\n let targetPage = this.properties.currentPage;\r\n const lastRowIndex =\r\n this.properties.currentPage * (this.properties.pageSize - 1);\r\n\r\n if (\r\n selectedIndices.includes(lastRowIndex) &&\r\n this.properties.currentPage !== 1\r\n ) {\r\n targetPage = this.properties.currentPage - 1;\r\n }\r\n return this.gotoPage(targetPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n private getServerEventOfType(eventName: GridEvents) {\r\n return this.definition.serverEvents?.find((c) => c.evtName === eventName);\r\n }\r\n public getGridFooterHandler() {\r\n if (!this.footerHandler)\r\n throw new Error(\"Grid footer handler hasn't been set\");\r\n\r\n return this.footerHandler;\r\n }\r\n protected async fireServerEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n try {\r\n let event = this.getServerEventOfType(eventName);\r\n\r\n if (event) {\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 } else {\r\n const res = await this.runAction<GridActionResponse>({\r\n postData: params,\r\n postDataTreatment: 'stringify',\r\n stringifyOptions: {\r\n arrayFormat: 'repeat',\r\n },\r\n });\r\n\r\n if (res?.data?.only_added_row) {\r\n const result = await this.parseAddRowXml(res.data.gridXml.text);\r\n this.initHeadersSizes();\r\n return result;\r\n } else if (res?.data?.gridXml.text) {\r\n this.rebuildGrid(res.data.gridXml.text, noNaN(res.data.rowCount, 0));\r\n } else {\r\n console.error('Cannot handle add row response');\r\n }\r\n }\r\n\r\n return true;\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n fireEvent(\r\n eventName: GridEvents,\r\n params?: FireEventParameters,\r\n ): Promise<boolean> {\r\n return super.fireEvent(eventName, params);\r\n }\r\n gotoPage: GridAction<[page: number]> = async (\r\n page: number,\r\n ): Promise<boolean> => {\r\n this.state.isLoading = true;\r\n const response = await this.runAction<GridActionResponse>({\r\n postData: {\r\n gridAction: 'gotopage',\r\n page,\r\n },\r\n postDataTreatment: 'stringify',\r\n });\r\n\r\n if (response?.data?.success) {\r\n this.properties = {\r\n ...this.properties,\r\n currentPage: page,\r\n };\r\n await this.rebuildGrid(\r\n response.data.gridXml.text,\r\n noNaN(response.data.rowCount, 0),\r\n );\r\n\r\n this.state.isLoading = false;\r\n return true;\r\n }\r\n this.state.isLoading = false;\r\n return false;\r\n };\r\n getCurrentPage() {\r\n return this.properties.currentPage;\r\n }\r\n\r\n getHeader() {\r\n return this.state.header;\r\n }\r\n getMustShowAdditionalColumn() {\r\n return this.state.showAdditionalColumn;\r\n }\r\n getPageCount() {\r\n return this.properties.pages;\r\n }\r\n getSelectedIndices() {\r\n return this.state.selectedIndices;\r\n }\r\n getSelectedItems() {\r\n return this.getSelectedIndices().map((current) => this.getRow(current)!);\r\n }\r\n isPaged() {\r\n return this.properties.paged;\r\n }\r\n /**\r\n * @alias deleteRow\r\n */\r\n remove(index?: number | number[]): Promise<boolean> {\r\n return this.deleteRow(index);\r\n }\r\n\r\n sortColumn: GridAction<[index: number]> = async (index) => {\r\n const calculatedIndex =\r\n (this.properties.currentPage -\r\n (this.state.showAdditionalColumn ? 1 : 0)) *\r\n this.properties.pageSize;\r\n\r\n const group = this.fieldsGroups.at(calculatedIndex);\r\n\r\n if (!group) {\r\n console.error('No group found at calculated index.');\r\n return false;\r\n }\r\n\r\n const fields = group.getAllFields();\r\n\r\n if (!fields || fields.length < index) {\r\n console.error('No field found at index:', index - 1);\r\n return false;\r\n }\r\n const field = fields.at(index - 1);\r\n const firingField = field?.definition.id;\r\n\r\n if (firingField) {\r\n await this.fireEvent('gridColumnSelect', {\r\n firingField,\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n async sortDown(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'down',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n const { currentPage, pageSize, pages } = this.properties;\r\n\r\n const lastRowIndex = currentPage * pageSize - 1;\r\n\r\n if (selectedIndices.includes(lastRowIndex) && currentPage < pages) {\r\n const targetPage = currentPage + 1;\r\n console.log(`Navigating to Page: ${targetPage}`);\r\n return this.gotoPage(targetPage);\r\n }\r\n\r\n console.log(`Staying on Page: ${currentPage}`);\r\n return this.gotoPage(currentPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n\r\n async sortUp(index?: number | number[]): Promise<boolean> {\r\n const selectedIndices = arrayOrArray(index);\r\n\r\n const eventsResult = await this.fireEvent('gridSort', {\r\n gridAction: 'up',\r\n rowId: selectedIndices.sort((a, b) => a - b),\r\n });\r\n\r\n if (eventsResult && !!this.getServerEventOfType('gridSort')) {\r\n const { currentPage, pageSize } = this.properties;\r\n\r\n const firstRowIndexOfCurrentPage = (currentPage - 1) * pageSize;\r\n if (\r\n selectedIndices.includes(firstRowIndexOfCurrentPage) &&\r\n currentPage > 1\r\n ) {\r\n return this.gotoPage(currentPage - 1);\r\n }\r\n\r\n return this.gotoPage(currentPage);\r\n } else {\r\n return eventsResult;\r\n }\r\n }\r\n\r\n toggleColumnVisibility(fieldName: string, isShown?: boolean) {\r\n const currentValue = this.properties.shownColumns.get(fieldName);\r\n this.properties.shownColumns.set(fieldName, isShown ?? !currentValue);\r\n }\r\n\r\n 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 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","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\ntype InputEvents = 'onChange' | 'onModalReturn';\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 '../../../../../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 '../../../../../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 value || arrayOrArray(possibleValue)[0]?.value;\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 { arrayOrArray, 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\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 { GridProps } from './fields/Grid/types';\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\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 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 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 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 };\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 (parsedRes?.actions?.action?.param[1] === 'confirmOkOnClose') {\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: '',\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","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, arrayOrArray } from '../../util';\r\nimport { Task } from './Task';\r\nimport { Entity } from './Entity';\r\nimport { 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\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};\r\n\r\nexport const unescapeMarkup = (str: string): string => {\r\n if (str !== undefined && str.length > 0) {\r\n return str\r\n .replace(/'/g, \"'\")\r\n .replace(/"/g, '\"')\r\n .replace(/>/g, '>')\r\n .replace(/</g, '<')\r\n .replace(/&/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 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 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 this.entity.init();\r\n this.process.init();\r\n this.observations.init();\r\n this._stepCount = Number(window.STEP_QTY);\r\n this._currentStep = Number(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 } 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\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 === 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 nuevo: true,\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 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 nuevo: true,\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: '',\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 nuevo: true,\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 data = await post<TFetchTaskActionResponse>(\r\n makeApiaUrl({\r\n action: 'saveTask',\r\n asXML: true,\r\n react: true,\r\n nuevo: true,\r\n }),\r\n );\r\n\r\n const saveResponse = data as any;\r\n const showSaveConfirmMessage = saveResponse?.onClose as string;\r\n if (\r\n showSaveConfirmMessage === 'confirmOkOnCloseSplash' ||\r\n showSaveConfirmMessage === 'confirmOkOnClose'\r\n ) {\r\n return data;\r\n } else if (\r\n saveResponse?.onClose === 'confirmOkOnSaveSplash' ||\r\n saveResponse?.actions?.action.param[1] === 'confirmOkOnSaveSplash'\r\n ) {\r\n return data;\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 {\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 action;\r\n\r\n switch (id) {\r\n case ActionsController.CONFIRM:\r\n action = 'confirm';\r\n break;\r\n case ActionsController.NEXT:\r\n action = 'next';\r\n break;\r\n case ActionsController.PREVIOUS:\r\n action = 'previous';\r\n break;\r\n case ActionsController.SAVE:\r\n action = 'save';\r\n break;\r\n case ActionsController.RELEASE:\r\n action = 'release';\r\n break;\r\n case ActionsController.DELEGATE:\r\n action = 'delegate';\r\n break;\r\n case ActionsController.SHARE:\r\n action = 'socialShare';\r\n break;\r\n case OptionButton.BTN_VIEW_DOCS:\r\n action = 'viewDocs';\r\n break;\r\n case OptionButton.BTN_PRINT:\r\n action = 'print';\r\n break;\r\n case ActionsController.CLOSE:\r\n action = 'close';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n (\r\n document.querySelector(`[action=\"${action}\"]`) as HTMLButtonElement\r\n )?.click();\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 { arrayOrArray, 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 { 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 this._state.additional = JSON.parse(o.additional.text);\r\n }\r\n\r\n arrayOrArray(o.attribute).forEach((c) => {\r\n this._state.attributes[c.name] = arrayOrArray(c.values).map(\r\n (c) => c.text,\r\n );\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 { 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":["Field","Form","IProperty","_instance","__publicField","__privateGet","__privateSet","__privateAdd","formProps","fieldProps","parser","queryString","id","_field","arrayOrArray","TextAreaField","_hasInited","ApiaFunctions","result","noNaN","parseFakeJSON","EventEmitter","getLabel","makeApiaUrl","_hasSetHeadersSizes","properties","ExecutionState","c"],"mappings":"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"}
|
|
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;\n\nexport const deepEqual: Comparator<any> = (a: any, b: any) => {\n if (Object.is(a, b)) return true;\n\n if (!Object.is(a, b) && typeof a !== typeof b) {\n return false;\n }\n\n if (typeof a === 'object') {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (a && b) {\n for (const [key, value] of Object.entries(a)) {\n if (!deepEqual(value, b[key])) {\n return false;\n }\n }\n for (const [key, value] of Object.entries(b)) {\n if (!deepEqual(value, a[key])) {\n return false;\n }\n }\n return true;\n } else if ((a && !b) || (!a && b)) {\n return false;\n }\n }\n\n return a === b;\n};\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 = {\n // field types\n TYPE_INPUT: 'input',\n TYPE_SELECT: 'select',\n TYPE_RADIO: 'radio',\n TYPE_CHECK: 'check',\n TYPE_BUTTON: 'button',\n TYPE_AREA: 'area',\n TYPE_LABEL: 'label',\n TYPE_TITLE: 'title',\n TYPE_FILE: 'file',\n TYPE_MULTIPLE: 'multiple',\n TYPE_HIDDEN: 'hidden',\n TYPE_PASSWORD: 'password',\n TYPE_GRID: 'grid',\n TYPE_IMAGE: 'image',\n TYPE_HREF: 'href',\n TYPE_EDITOR: 'editor',\n TYPE_TREE: 'tree',\n TYPE_CAPTCHA: 'captcha',\n\n // field functions\n FUNC_CLICK: 'onclick',\n FUNC_CHANGE: 'onchange',\n FUNC_MODAL_RETURN: 'onmodalreturn',\n\n FUNC_ROW_ADD: 'onrowadd',\n FUNC_ROW_DELETE: 'onrowdelete',\n FUNC_ROW_SORT: 'onrowsort',\n FUNC_COL_SELECT: 'oncolselect',\n\n // Attribute w/ props json for fields\n FIELD_PROPERTIES: 'properties',\n\n // Field properties\n PROPERTY_NAME: 'name',\n PROPERTY_SIZE: 'size',\n PROPERTY_READONLY: 'readonly',\n PROPERTY_DISABLED: 'disabled',\n PROPERTY_MODAL_DISABLED: 'modalDisabled',\n PROPERTY_FONT_COLOR: 'fontColor',\n PROPERTY_VALUE: 'value',\n PROPERTY_REQUIRED: 'required',\n PROPERTY_COLSPAN: 'colspan',\n PROPERTY_ROWSPAN: 'rowspan',\n PROPERTY_MODAL: 'modal',\n PROPERTY_ROWS: 'thisRows',\n PROPERTY_BOLD: 'bold',\n PROPERTY_UNDERLINED: 'underlined',\n PROPERTY_ALIGNMENT: 'alignment',\n PROPERTY_IMAGE: 'imageUrl',\n PROPERTY_COL_WIDTH: 'colWidth',\n PROPERTY_GRID_HEIGHT: 'gridHeight',\n PROPERTY_HIDE_GRID_BTN: 'hideGridButtons',\n PROPERTY_VISIBILITY_HIDDEN: 'visibilityHidden',\n PROPERTY_TRANSIENT: 'transient',\n PROPERTY_GRID_TITLE: 'gridTitle',\n PROPERTY_GRID_FORM: 'gridForm',\n PROPERTY_TOOLTIP: 'tooltip',\n PROPERTY_VALUE_COLOR: 'valueColor',\n PROPERTY_INPUT_AS_TEXT: 'inputAsText',\n PROPERTY_NO_DOWNLOAD: 'noDownload',\n PROPERTY_NO_ERASE: 'noErase',\n PROPERTY_NO_LOCK: 'noLock',\n PROPERTY_NO_HISTORY: 'noHistory',\n PROPERTY_NO_MODIFY: 'noModify',\n PROPERTY_ALLOW_EDITION: 'allowEdition',\n PROPERTY_HIDE_SIGN_ICONS: 'hideSignButtons',\n PROPERTY_URL: 'url',\n PROPERTY_GRID_HIDE_BTN_ORDER: 'hideOrderButton',\n PROPERTY_GRID_HIDE_BTN_INCLUDE: 'hideIncludeButton',\n PROPERTY_REGEXP_MESSAGE: 'regExpMessage',\n PROPERTY_PAGED_GRID: 'paged',\n PROPERTY_PAGED_GRID_SIZE: 'pagedGridSize',\n PROPERTY_GRID_ALTER_IN_LAST_PAGE: 'alterOnlyLastPage',\n PROPERTY_GRID_PRINT_HORIZONTAL: 'printHorizontal',\n PROPERTY_STORE_MODAL_QUERY_RESULT: 'storeMdlQryResult',\n PROPERTY_INCLUDE_FIRST_ROW: 'includeFirstRow',\n PROPERTY_MAX_REG_GRID: 'maxRecords',\n PROPERTY_GRID_LABEL: 'gridColTitle',\n PROPERTY_GRID_QUERY: 'gridQuery',\n PROPERTY_HIDE_DOC_PERMISSIONS: 'hideDocPermissions',\n PROPERTY_VERIFY_SIGNATURE_ONLY: 'verifySignatureOnly',\n PROPERTY_GRID_HIDE_BTN_ADD: 'hideAddButton',\n PROPERTY_GRID_HIDE_BTN_DEL: 'hideDelButton',\n PROPERTY_HIDE_DOC_UPLOAD: 'hideDocUpload',\n PROPERTY_HIDE_DOC_DOWNLOAD: 'hideDocDownload',\n PROPERTY_HIDE_DOC_ERASE: 'hideDocErase',\n PROPERTY_HIDE_DOC_LOCK: 'hideDocLock',\n PROPERTY_HIDE_DOC_HISTORY: 'hideDocHistory',\n PROPERTY_HIDE_DOC_SIGN: 'hideSignButtons',\n PROPERTY_DISPLAY_NONE: 'displayNone',\n PROPERTY_DONT_BREAK_RADIO: 'dontBreakRadio',\n PROPERTY_CHECKED: 'checked',\n PROPERTY_FILE_PREVIEW: 'filePreview',\n PROPERTY_NOT_PRINT: 'noPrint',\n // tree component\n PROPERTY_SELECT_PARENT: 'selParent',\n PROPERTY_HEIGHT: 'height',\n PROPERTY_MULTISELECT: 'multiselect',\n PROPERTY_SEL_PARENT: 'selParent',\n PROPERTY_PARENT_ICON: 'parentIcon',\n PROPERTY_LEAF_ICON: 'leafIcon',\n PROPERTY_CSS_CLASS: 'cssClass',\n PROPERTY_DOC_TYPE: 'docType',\n // file component\n PROPERTY_HIDE_DOC_METADATA: 'hideDocMetadata',\n PROPERTY_TRANSLATION_REQUIRED: 'reqTrad',\n PROPERTY_SIGNATURE_REQUIRED: 'reqSign',\n PROPERTY_SHOW_TOOLTIP_AS_HELP: 'tooltipHelp',\n PROPERTY_DOCUMENT_MONITOR_DEF: 'documentMonitorDef',\n PROPERTY_DOCUMENT_MONITOR_CUS: 'documentMonitorCus',\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN: 'fileShwFoldTreeBtn',\n PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR: 'fileShwFoldTreeStr',\n PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP: 'fileNoAllwDnD',\n PROPERTY_DOCUMENT_NO_SHOW_MODAL: 'fileDntShwDocMdlOnDrop',\n PROPERTY_DOCUMENT_SHOW_DESC: 'fileShowDesc',\n PROPERTY_DOCUMENT_DEFAULT_FOLDER: 'fileDefFolder',\n PROPERTY_DOCUMENT_ROOT_FOLDER: 'fileRootFolder',\n PROPERTY_DOCUMENT_EXP_DATE: 'fileExpDate',\n PROPERTY_DOCUMENT_DNT_SHW_DOC_MON: 'fileNotShowDocMon',\n PROPERTY_DOCUMENT_COLLAPSE_PERM: 'fileCollapsePermission',\n PROPERTY_DOCUMENT_COLLAPSE_META: 'fileCollapseMetadata',\n PROPERTY_DOCUMENT_COLLAPSE_FLD_STC: 'fileCollapseFldStrc',\n} as const;\n\nexport default fieldProps;\n","const formProps = {\n FUNC_LOAD: 'onload',\n FUNC_RELOAD: 'onreload',\n PROPERTY_FORM_INVISIBLE: 'frmInvisible',\n PROPERTY_FORM_HIDDEN: 'frmHidden',\n PROPERTY_FORM_CLOSED: 'prpFrmClosed',\n PROPERTY_FORM_TAB: 'frmTab',\n PROPERTY_FORM_HIGHLIGHT: 'frmHighlight',\n PROPERTY_FORM_DONT_FIRE: 'frmDontFire',\n PROPERTY_FORM_READONLY: 'readOnly',\n SIGNABLE_FORM: 'signableForm',\n MARKED_TO_SIGN: 'markedToSign',\n REQUIRED_SIGN: 'requiredSignableForm',\n LANGUAGES: 'langs',\n} as const;\n\nexport default formProps;\n","import fieldProps from '../fieldProps';\nimport formProps from '../formProps';\n\nconst FormBoolProps = [\n formProps.PROPERTY_FORM_INVISIBLE,\n formProps.PROPERTY_FORM_HIDDEN,\n formProps.PROPERTY_FORM_CLOSED,\n formProps.PROPERTY_FORM_TAB,\n formProps.PROPERTY_FORM_HIGHLIGHT,\n formProps.PROPERTY_FORM_DONT_FIRE,\n formProps.PROPERTY_FORM_READONLY,\n formProps.SIGNABLE_FORM,\n formProps.MARKED_TO_SIGN,\n formProps.REQUIRED_SIGN,\n];\n\nconst FieldBoolProps = [\n fieldProps.PROPERTY_ALLOW_EDITION,\n fieldProps.PROPERTY_CHECKED,\n fieldProps.PROPERTY_DISABLED,\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_FLD_STC,\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_META,\n fieldProps.PROPERTY_DOCUMENT_COLLAPSE_PERM,\n fieldProps.PROPERTY_DOCUMENT_DNT_SHW_DOC_MON,\n fieldProps.PROPERTY_DOCUMENT_EXP_DATE,\n fieldProps.PROPERTY_DOCUMENT_NO_ALLOW_DRAG_DROP,\n fieldProps.PROPERTY_DOCUMENT_NO_SHOW_MODAL,\n fieldProps.PROPERTY_DOCUMENT_SHOW_DESC,\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_BTN,\n fieldProps.PROPERTY_DOCUMENT_SHOW_FOLD_TREE_STR,\n fieldProps.PROPERTY_FILE_PREVIEW,\n fieldProps.PROPERTY_GRID_ALTER_IN_LAST_PAGE,\n fieldProps.PROPERTY_GRID_HIDE_BTN_ADD,\n fieldProps.PROPERTY_GRID_HIDE_BTN_DEL,\n fieldProps.PROPERTY_GRID_HIDE_BTN_INCLUDE,\n fieldProps.PROPERTY_GRID_HIDE_BTN_ORDER,\n fieldProps.PROPERTY_HIDE_DOC_DOWNLOAD,\n fieldProps.PROPERTY_HIDE_DOC_ERASE,\n fieldProps.PROPERTY_HIDE_DOC_LOCK,\n fieldProps.PROPERTY_HIDE_DOC_METADATA,\n fieldProps.PROPERTY_HIDE_DOC_PERMISSIONS,\n fieldProps.PROPERTY_HIDE_DOC_SIGN,\n fieldProps.PROPERTY_HIDE_DOC_UPLOAD,\n fieldProps.PROPERTY_HIDE_GRID_BTN,\n fieldProps.PROPERTY_INCLUDE_FIRST_ROW,\n fieldProps.PROPERTY_INPUT_AS_TEXT,\n fieldProps.PROPERTY_MODAL_DISABLED,\n fieldProps.PROPERTY_MULTISELECT,\n fieldProps.PROPERTY_NO_DOWNLOAD,\n fieldProps.PROPERTY_NO_ERASE,\n fieldProps.PROPERTY_NO_LOCK,\n fieldProps.PROPERTY_NO_MODIFY,\n fieldProps.PROPERTY_NOT_PRINT,\n fieldProps.PROPERTY_PAGED_GRID,\n fieldProps.PROPERTY_READONLY,\n fieldProps.PROPERTY_REQUIRED,\n fieldProps.PROPERTY_SEL_PARENT,\n fieldProps.PROPERTY_SHOW_TOOLTIP_AS_HELP,\n fieldProps.PROPERTY_SIGNATURE_REQUIRED,\n fieldProps.PROPERTY_STORE_MODAL_QUERY_RESULT,\n fieldProps.PROPERTY_TRANSIENT,\n fieldProps.PROPERTY_TRANSLATION_REQUIRED,\n fieldProps.PROPERTY_VISIBILITY_HIDDEN,\n];\n\nconst BoolProps: string[] = [...FieldBoolProps, ...FormBoolProps];\nexport default BoolProps;\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('<', '<'),\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('<', '<'),\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';\n\nexport type { Callback, Map, UnSubscriber } from './types';\n\n/**\n * @public\n *\n * The `EventEmitter` class is a generic utility for handling events. It allows subscribing to and emitting events.\n * This class is generic and works with a `Map` where keys are event names and values are the types associated with those events.\n *\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.\n */\nexport class EventEmitter<Events extends Map> {\n protected callbacks: Record<'on' | 'once', Callbacks<Events>> = {\n on: {} as Callbacks<Events>,\n once: {} as Callbacks<Events>,\n };\n protected enabled = true;\n\n protected debugMode = false;\n debug(enable = true) {\n this.debugMode = enable;\n }\n\n /**\n * Emits an event with the given data. Any listeners subscribed to this event will be invoked with the passed data.\n *\n * @param event - The event name to emit.\n * @param data - The data associated with the event. Its type is dependent on the event name.\n */\n emit<K extends keyof Events>(event: K, data: Events[K]) {\n this.callbacks.on[event]?.forEach((current) => current(data));\n\n this.callbacks.once[event]?.forEach((current) => current(data));\n this.callbacks.once[event] = [];\n }\n\n /**\n * Reflects the current emitter state. A disabled state indicates that the emitter wont call listeners until its functionality gets enabled again.\n */\n get isEnabled() {\n return this.enabled;\n }\n\n off<K extends keyof Events>(event: K, cb: Callback<Events, K>): void {\n this.callbacks.on[event] = this.callbacks.on[event]?.filter(\n (c) => c !== cb,\n );\n this.callbacks.once[event] = this.callbacks.once[event]?.filter(\n (c) => c !== cb,\n );\n }\n\n /**\n * Subscribes a callback function to an event. The callback is invoked each time the event is emitted.\n *\n * @param event - The event name to listen to.\n * @param cb - The callback function to be invoked when the event is emitted.\n * @returns A function to unsubscribe the event listener.\n */\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\n if (!this.callbacks.on[event]) this.callbacks.on[event] = [];\n this.callbacks.on[event].push(cb);\n\n return () => {\n this.callbacks.on[event] = this.callbacks.on[event].filter(\n (c) => c !== cb,\n );\n };\n }\n\n /**\n * Subscribes a callback function to an event for a single occurrence. After the event is emitted once, the listener is automatically removed.\n *\n * @param event - The event name to listen to for a single occurrence.\n * @param cb - The callback function to be invoked when the event is emitted.\n * @returns A function to unsubscribe the event listener.\n */\n once<K extends keyof Events>(\n event: K,\n cb: Callback<Events, K>,\n ): UnSubscriber {\n if (!this.callbacks.once[event]) this.callbacks.once[event] = [];\n this.callbacks.once[event].push(cb);\n\n return () => {\n this.callbacks.once[event] = this.callbacks.once[event].filter(\n (c) => c !== cb,\n );\n };\n }\n}\n","import { Callback, EventEmitter, Map, UnSubscriber } from './EventEmitter';\nimport { SetStateAction } from './types';\n\ntype Setter<T> = (prevState: T) => T;\n\nexport function isSetter<T>(data: SetStateAction<T>): data is Setter<T> {\n return typeof data === 'function';\n}\n\n/**\n * @private\n */\ntype EmitterState<Events extends Map> = {\n [K in keyof Events]: Events[K];\n};\n\n/**\n * Extends EventEmitter to manage and emit events with state persistence.\n * This class allows emitting and listening to typed events while also keeping\n * a state that can be accessed synchronously for each event.\n *\n * @param initialState - If given will be passed to subscriptions\n *\n * @template Events - A mapping of event names to their associated data types.\n * @extends EventEmitter<Events>\n */\nexport class StatefulEmitter<Events extends Map> extends EventEmitter<Events> {\n protected state = {} as EmitterState<Events>;\n\n constructor(initialState?: Partial<Events>) {\n super();\n\n this.state = Object.assign({}, initialState) as Events;\n }\n\n emit<K extends keyof Events>(event: K, data: Events[K]): void {\n this.state[event] = data;\n super.emit(event, data);\n }\n\n on<K extends keyof Events>(event: K, cb: Callback<Events, K>): UnSubscriber {\n if (this.state[event]) cb(this.state[event]);\n\n return super.on(event, cb);\n }\n\n once<K extends keyof Events>(\n event: K,\n cb: Callback<Events, K>,\n ): UnSubscriber {\n if (this.state[event]) {\n cb(this.state[event]);\n\n /**\n * Given that the information has already been sent, the subscription is not necessary\n */\n return () => {};\n }\n\n return super.once(event, cb);\n }\n\n /**\n * Retrieves the stored state for a given event\n */\n getState<K extends keyof Events>(event: K): Events[K] {\n return this.state[event];\n }\n\n /**\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.\n */\n setState<K extends keyof Events>(\n event: K,\n data: SetStateAction<Events[K]>,\n ): void {\n const actualData = isSetter(data) ? data(this.getState(event)) : data;\n\n this.emit(event, actualData);\n }\n}\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¤tTab=${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';\nimport formProps from './formProps';\n\nconst IProperty = {\n ...fieldProps,\n ...formProps,\n} as const;\n\nexport default IProperty;\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\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 stringifyOptions: { arrayFormat: 'repeat' },\r\n }),\r\n );\r\n } else {\r\n window.location.assign(\r\n await makeApiaUrl({\r\n ...p,\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;\n\nexport const shallowEqual: Comparator<any> = (a: any, b: any) => {\n if (Object.is(a, b)) return true;\n\n if (!Object.is(a, b) && typeof a !== typeof b) {\n return false;\n }\n\n if (typeof a === 'object') {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!Object.is(a[i], b[i])) {\n return false;\n }\n }\n return true;\n } else if (a && b) {\n for (const [key, value] of Object.entries(a)) {\n if (!Object.is(value, b[key])) {\n return false;\n }\n }\n for (const [key, value] of Object.entries(b)) {\n if (!Object.is(value, a[key])) {\n return false;\n }\n }\n return true;\n } else if ((a && !b) || (!a && b)) {\n return false;\n }\n }\n\n return a === b;\n};\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';\n\nconst NumProps: string[] = [\n fieldProps.PROPERTY_SIZE,\n fieldProps.PROPERTY_ROWS,\n fieldProps.PROPERTY_COLSPAN,\n fieldProps.PROPERTY_ROWSPAN,\n fieldProps.PROPERTY_PAGED_GRID_SIZE,\n fieldProps.PROPERTY_GRID_HEIGHT,\n fieldProps.PROPERTY_MAX_REG_GRID,\n];\n\nexport default NumProps;\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';\nimport { Grid } from '.';\n\ntype GridFooterHandlerState = {\n isSortUpDisabled: boolean;\n isSortDownDisabled: boolean;\n};\n\nexport class GridFooterHandler {\n state: GridFooterHandlerState = {\n isSortUpDisabled: true,\n isSortDownDisabled: true,\n };\n\n constructor(private grid: Grid) {\n makeObservable(this, { state: observable });\n this.init();\n }\n\n #unsubscribeTableEvents = () => {};\n private init() {\n this.#unsubscribeTableEvents();\n\n const controller = this.grid.controller;\n\n const u2 = controller.on('selectionChange', (selection) => {\n const { paged, currentPage, pages } = this.grid.properties;\n const isFirstPage = paged ? String(currentPage) === '1' : false;\n const isLastPage = paged ? String(currentPage) === String(pages) : false;\n\n runInAction(() => {\n this.state.isSortUpDisabled =\n selection.length === 0 ||\n !!(paged\n ? selection.find((c) => c.getContainer()?.getRowIndex(c) === 0) &&\n isFirstPage\n : selection.find((c) => c.getContainer()?.getRowIndex(c) === 0));\n this.state.isSortDownDisabled =\n selection.length === 0 ||\n !!(paged\n ? selection.find(\n (c) =>\n c.getContainer()?.getRowIndex(c) ===\n controller.body.rows.length - 1,\n ) && isLastPage\n : selection.find(\n (c) =>\n c.getContainer()?.getRowIndex(c) ===\n controller.body.rows.length - 1,\n ));\n });\n });\n this.#unsubscribeTableEvents = () => {\n u2();\n };\n }\n\n get showAddButton() {\n const { hideGridButtons, hideAddButton, hideIncludeButton } =\n this.grid.properties;\n return !hideGridButtons && !hideAddButton && !hideIncludeButton;\n }\n get showDelButton() {\n const { hideGridButtons, hideDelButton, hideIncludeButton } =\n this.grid.properties;\n return !hideGridButtons && !hideDelButton && !hideIncludeButton;\n }\n get showSortButtons() {\n const { hideGridButtons, hideOrderButton } = this.grid.properties;\n return !hideGridButtons && !hideOrderButton;\n }\n get isSortUpDisabled() {\n return this.state.isSortUpDisabled || this.grid.state.isLoading;\n }\n get isSortDownDisabled() {\n return this.state.isSortDownDisabled || this.grid.state.isLoading;\n }\n get isAddDisabled() {\n return this.grid.state.isLoading;\n }\n get isDeleteDisabled() {\n return (\n this.grid.controller.getState('selection').size === 0 ||\n this.grid.state.isLoading\n );\n }\n\n async sortUp() {\n this.grid.sortUp();\n }\n\n async sortDown() {\n this.grid.sortDown();\n }\n\n async addRow() {\n await this.grid.addRow();\n }\n\n async deleteSelectedRows() {\n this.grid.deleteRows();\n }\n}\n","import { Cell } from '@apia/table2';\nimport type { Field } from '../../Field';\n\nexport class GridCell extends Cell {\n getField() {\n return this.getState('properties')?.field as Field;\n }\n}\n","import { Cell } from '@apia/table2';\nimport type { GridEditionModal } from './GridEditionModal';\nimport type { Grid } from '.';\n\nexport class AdditionalCell extends Cell {\n constructor(\n public grid: Grid,\n public getIndex: () => number,\n public remove: () => unknown,\n public openEditionModal?: (handler: GridEditionModal) => unknown,\n ) {\n super({ colName: 'additional' });\n }\n\n public get hasEditionModal() {\n return this.openEditionModal !== undefined;\n }\n}\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(/'/g, \"'\")\r\n .replace(/"/g, '\"')\r\n .replace(/>/g, '>')\r\n .replace(/</g, '<')\r\n .replace(/&/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';\n\nexport class HeaderCell extends Cell {\n constructor(\n state: CellState,\n public fireSelectionEvent: () => unknown,\n ) {\n super(state);\n }\n}\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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"}
|