From d61d968c9917d27319633e33c69f10653a66d7c1 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Thu, 27 Nov 2025 23:02:48 +0300 Subject: [PATCH] =?UTF-8?q?WEBAPP:=20=D0=A1=D0=B2=D0=B5=D0=B6=D0=B0=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/p8-panels.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 09d6c48..a479aea 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -247,7 +247,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PDialog: () => (/* binding */ P8PDialog),\n/* harmony export */ P8P_DIALOG_WIDTH: () => (/* binding */ P8P_DIALOG_WIDTH)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../app.text */ \"./app.text.js\");\n/* harmony import */ var _p8p_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./p8p_input */ \"./app/components/p8p_input.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга\r\n Компонент: Диалог\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Общие текстовые ресурсы\n //Поле ввода\n\n//---------\n//Константы\n//---------\n\n//Типовая ширина диалога\nconst P8P_DIALOG_WIDTH = {\n XS: \"xs\",\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\",\n XL: \"xl\"\n};\n\n//-----------------------\n//Вспомогательные функции\n//-----------------------\n\n//Формирование объекта вида {ключ: значение} из текущего состояния элементов ввода формы\nconst buildFormValues = inputsState => inputsState.reduce((res, input) => ({\n ...res,\n [input.name]: input.value == undefined ? null : input.value\n}), {});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог\nconst P8PDialog = ({\n title,\n width,\n fullWidth,\n inputs,\n children,\n onOk,\n onCancel,\n onClose,\n onInputChange\n}) => {\n //Состояние элементов ввода диалога\n const [inputsState, setInputsState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //При изменении элемента ввода\n const handleInputChange = (name, value) => {\n //Если есть функция пересчета формы - вызовем её\n const doNotChangeInputsState = onInputChange ? onInputChange(name, value, inputsState) : false;\n //И ориентируясь на то, пересчитала ли она элементы ввода обновим собственное состояние.\n //Если функция пересчета вернула \"true\", значит она пересчитала что-то, тогда новые настройки элементов придут через свойство inputs и будут обработаны в useEffect ниже.\n //Следовательно, и нам здесь не надо состояние выставлять, т.к. всё будет перезаписано useEffectом.\n if (!doNotChangeInputsState) setInputsState(pv => pv.reduce((accum, cur) => [...accum, {\n ...cur,\n value: cur.name === name ? value : cur.value\n }], []));\n };\n\n //При нажатии на \"ОК\" диалога\n const handleOk = () => onOk && onOk(buildFormValues(inputsState));\n\n //При нажатии на \"Отмена\" диалога\n const handleCancel = () => onCancel && onCancel();\n\n //При нажатии на \"Закрыть\" диалога\n const handleClose = () => onClose ? onClose() : onCancel ? onCancel() : null;\n\n //При изменении полей для ввода\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (inputs && Array.isArray(inputs) && inputs.length > 0) setInputsState(inputs.map(input => ({\n ...input\n })));\n }, [inputs]);\n\n //Расчет объектного представления текущих значений формы\n const formValues = buildFormValues(inputsState);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], _extends({\n onClose: handleClose,\n open: true\n }, width ? {\n maxWidth: width\n } : {}, fullWidth === true ? {\n fullWidth: true\n } : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, inputsState.map((input, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8PInput, _extends({\n key: i\n }, input, {\n formValues: formValues,\n onChange: handleInputChange\n }))), children), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, onOk && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleOk\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.OK), onCancel && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleCancel\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CANCEL), onClose && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: handleClose\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CLOSE)));\n};\n\n//Контроль свойств - Диалог\nP8PDialog.propTypes = {\n title: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n width: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOf(Object.values(P8P_DIALOG_WIDTH)),\n fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n inputs: prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default().shape(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8P_INPUT)),\n children: prop_types__WEBPACK_IMPORTED_MODULE_8___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_8___default().node), prop_types__WEBPACK_IMPORTED_MODULE_8___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_8___default().node))]),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onInputChange: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PDialog: () => (/* binding */ P8PDialog),\n/* harmony export */ P8P_DIALOG_WIDTH: () => (/* binding */ P8P_DIALOG_WIDTH)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../app.text */ \"./app.text.js\");\n/* harmony import */ var _p8p_input__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./p8p_input */ \"./app/components/p8p_input.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../app.styles */ \"./app.styles.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга\r\n Компонент: Диалог\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Общие текстовые ресурсы\n //Поле ввода\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Типовая ширина диалога\nconst P8P_DIALOG_WIDTH = {\n XS: \"xs\",\n SM: \"sm\",\n MD: \"md\",\n LG: \"lg\",\n XL: \"xl\"\n};\n\n//Стили\nconst STYLES = {\n SCROLL: display => display === true ? {\n overflow: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_3__.APP_STYLES.SCROLL\n } : {\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\"\n }\n};\n\n//-----------------------\n//Вспомогательные функции\n//-----------------------\n\n//Формирование объекта вида {ключ: значение} из текущего состояния элементов ввода формы\nconst buildFormValues = inputsState => inputsState.reduce((res, input) => ({\n ...res,\n [input.name]: input.value == undefined ? null : input.value\n}), {});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог\nconst P8PDialog = ({\n title,\n width,\n fullWidth,\n inputs,\n children,\n okDisabled = false,\n scrollContent = true,\n onOk,\n onCancel,\n onClose,\n onInputChange\n}) => {\n //Состояние элементов ввода диалога\n const [inputsState, setInputsState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //При изменении элемента ввода\n const handleInputChange = (name, value) => {\n //Если есть функция пересчета формы - вызовем её\n const doNotChangeInputsState = onInputChange ? onInputChange(name, value, inputsState) : false;\n //И ориентируясь на то, пересчитала ли она элементы ввода обновим собственное состояние.\n //Если функция пересчета вернула \"true\", значит она пересчитала что-то, тогда новые настройки элементов придут через свойство inputs и будут обработаны в useEffect ниже.\n //Следовательно, и нам здесь не надо состояние выставлять, т.к. всё будет перезаписано useEffectом.\n if (!doNotChangeInputsState) setInputsState(pv => pv.reduce((accum, cur) => [...accum, {\n ...cur,\n value: cur.name === name ? value : cur.value\n }], []));\n };\n\n //При нажатии на \"ОК\" диалога\n const handleOk = () => onOk && onOk(buildFormValues(inputsState));\n\n //При нажатии на \"Отмена\" диалога\n const handleCancel = () => onCancel && onCancel();\n\n //При нажатии на \"Закрыть\" диалога\n const handleClose = () => onClose ? onClose() : onCancel ? onCancel() : null;\n\n //При изменении полей для ввода\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (inputs && Array.isArray(inputs) && inputs.length > 0) setInputsState(inputs.map(input => ({\n ...input\n })));\n }, [inputs]);\n\n //Расчет объектного представления текущих значений формы\n const formValues = buildFormValues(inputsState);\n\n //Формирование представления\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _extends({\n onClose: handleClose,\n open: true\n }, width ? {\n maxWidth: width\n } : {}, fullWidth === true ? {\n fullWidth: true\n } : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.SCROLL(scrollContent)\n }, inputsState.map((input, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8PInput, _extends({\n key: i\n }, input, {\n formValues: formValues,\n onChange: handleInputChange\n }))), children), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, onOk && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n disabled: okDisabled,\n onClick: handleOk\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.OK), onCancel && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleCancel\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CANCEL), onClose && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleClose\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CLOSE)));\n};\n\n//Контроль свойств - Диалог\nP8PDialog.propTypes = {\n title: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n width: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOf(Object.values(P8P_DIALOG_WIDTH)),\n fullWidth: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n inputs: prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_9___default().shape(_p8p_input__WEBPACK_IMPORTED_MODULE_2__.P8P_INPUT)),\n children: prop_types__WEBPACK_IMPORTED_MODULE_9___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_9___default().node), prop_types__WEBPACK_IMPORTED_MODULE_9___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_9___default().node))]),\n okDisabled: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n scrollContent: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onInputChange: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_dialog.js?"); /***/ }), @@ -554,7 +554,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskForm: () => (/* binding */ TaskForm),\n/* harmony export */ getInputProps: () => (/* binding */ getInputProps)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tabs/Tabs.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tab/Tab.js\");\n/* harmony import */ var _task_form_tab_info__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form_tab_info */ \"./app/panels/clnt_task_board/components/task_form_tab_info.js\");\n/* harmony import */ var _task_form_tab_executor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./task_form_tab_executor */ \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\");\n/* harmony import */ var _task_form_tab_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./task_form_tab_props */ \"./app/panels/clnt_task_board/components/task_form_tab_props.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент панели: Форма события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вкладка основной информации\n //Вкладка информации об исполнителе\n //Вкладка информации со свойствами\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n margin: \"5px 0px\",\n textAlign: \"center\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Свойства вкладки\nfunction a11yProps(index) {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`\n };\n}\n\n//Вкладка информации\nfunction CustomTabPanel(props) {\n const {\n children,\n value,\n index,\n ...other\n } = props;\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _extends({\n role: \"tabpanel\",\n hidden: value !== index,\n id: `simple-tabpanel-${index}`,\n \"aria-labelledby\": `simple-tab-${index}`\n }, other), value === index && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n pt: 1\n }, children));\n}\n\n//Контроль свойств - Вкладка информации\nCustomTabPanel.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().node),\n index: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().number).isRequired\n};\n\n//Формирование кнопки для открытия раздела\nconst getInputProps = (onClick, disabled = false, icon = \"list\") => {\n //Генерация содержимого\n return {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n disabled: disabled,\n \"aria-label\": `select`,\n onClick: onClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, icon)))\n };\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Форма события\nconst TaskForm = ({\n task,\n taskType,\n editable,\n docProps,\n onTaskChange,\n onEventNextNumbGet\n}) => {\n //Состояние вкладки\n const [tab, setTab] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n\n //При изменении вкладки\n const handleTabChange = (e, newValue) => {\n setTab(newValue);\n };\n\n //При изменении поля\n const handleFieldEdit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n onTaskChange({\n [e.target.id]: e.target.value,\n //Связанные значения, если меняется одно, то необходимо обнулить другое\n ...(e.target.id === \"sClntClnperson\" ? {\n sClntClients: \"\"\n } : {}),\n ...(e.target.id === \"sClntClients\" ? {\n sClntClnperson: \"\"\n } : {})\n });\n }, [onTaskChange]);\n\n //При изменении доп. свойства\n const handlePropEdit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((docProp, value) => {\n onTaskChange({\n docProps: {\n ...task.docProps,\n [docProp]: value\n }\n });\n }, [onTaskChange, task.docProps]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pb: 1,\n variant: \"h6\"\n }, task.nRn ? `Исправление события${task.nClosed ? \" (событые аннулировано)\" : \"\"}` : \"Добавление события\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n value: tab,\n onChange: handleTabChange,\n \"aria-label\": \"tabs of values\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _extends({\n label: \"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u0435\"\n }, a11yProps(0))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _extends({\n label: \"\\u0418\\u0441\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\"\n }, a11yProps(1))), docProps.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _extends({\n label: \"\\u0421\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430\"\n }, a11yProps(2))) : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_info__WEBPACK_IMPORTED_MODULE_1__.TaskFormTabInfo, {\n task: task,\n editable: editable,\n onFieldEdit: handleFieldEdit,\n onEventNextNumbGet: onEventNextNumbGet\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_executor__WEBPACK_IMPORTED_MODULE_2__.TaskFormTabExecutor, {\n task: task,\n onFieldEdit: handleFieldEdit\n })), docProps.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_props__WEBPACK_IMPORTED_MODULE_3__.TaskFormTabProps, {\n task: task,\n taskType: taskType,\n docProps: docProps,\n onPropEdit: handlePropEdit\n })) : null);\n};\n\n//Контроль свойств - Форма события\nTaskForm.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().object).isRequired,\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().string).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().bool).isRequired,\n docProps: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().array),\n onTaskChange: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func).isRequired,\n onEventNextNumbGet: (prop_types__WEBPACK_IMPORTED_MODULE_5___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskForm: () => (/* binding */ TaskForm),\n/* harmony export */ getInputProps: () => (/* binding */ getInputProps)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tabs/Tabs.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tab/Tab.js\");\n/* harmony import */ var _task_form_tab_info__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form_tab_info */ \"./app/panels/clnt_task_board/components/task_form_tab_info.js\");\n/* harmony import */ var _task_form_tab_executor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./task_form_tab_executor */ \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\");\n/* harmony import */ var _task_form_tab_props__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./task_form_tab_props */ \"./app/panels/clnt_task_board/components/task_form_tab_props.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент панели: Форма события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Вкладка основной информации\n //Вкладка информации об исполнителе\n //Вкладка информации со свойствами\n //Общие стили\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n height: \"625px\",\n textAlign: \"center\",\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n BOX_TAB: {\n height: \"575px\",\n overflowY: \"auto\",\n ..._styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.SCROLL\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Свойства вкладки\nfunction a11yProps(index) {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`\n };\n}\n\n//Вкладка информации\nfunction CustomTabPanel(props) {\n const {\n children,\n value,\n index,\n ...other\n } = props;\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], _extends({\n role: \"tabpanel\",\n hidden: value !== index,\n id: `simple-tabpanel-${index}`,\n \"aria-labelledby\": `simple-tab-${index}`\n }, other, {\n sx: STYLES.BOX_TAB\n }), value === index && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n pt: 1\n }, children));\n}\n\n//Контроль свойств - Вкладка информации\nCustomTabPanel.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().node),\n index: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number).isRequired\n};\n\n//Формирование кнопки для открытия раздела\nconst getInputProps = (onClick, disabled = false, icon = \"list\") => {\n //Генерация содержимого\n return {\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n disabled: disabled,\n \"aria-label\": `select`,\n onClick: onClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, icon)))\n };\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Форма события\nconst TaskForm = ({\n task,\n taskType,\n editable,\n docProps,\n onTaskChange,\n onEventNextNumbGet\n}) => {\n //Состояние вкладки\n const [tab, setTab] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n\n //При изменении вкладки\n const handleTabChange = (e, newValue) => {\n setTab(newValue);\n };\n\n //При изменении поля\n const handleFieldEdit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(e => {\n onTaskChange({\n [e.target.id]: e.target.value,\n //Связанные значения, если меняется одно, то необходимо обнулить другое\n ...(e.target.id === \"sClntClnperson\" ? {\n sClntClients: \"\"\n } : {}),\n ...(e.target.id === \"sClntClients\" ? {\n sClntClnperson: \"\"\n } : {})\n });\n }, [onTaskChange]);\n\n //При изменении доп. свойства\n const handlePropEdit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((docProp, value) => {\n onTaskChange({\n docProps: {\n ...task.docProps,\n [docProp]: value\n }\n });\n }, [onTaskChange, task.docProps]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n value: tab,\n onChange: handleTabChange,\n \"aria-label\": \"tabs of values\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _extends({\n label: \"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u0435\"\n }, a11yProps(0))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _extends({\n label: \"\\u0418\\u0441\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\"\n }, a11yProps(1))), docProps.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], _extends({\n label: \"\\u0421\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430\"\n }, a11yProps(2))) : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_info__WEBPACK_IMPORTED_MODULE_1__.TaskFormTabInfo, {\n task: task,\n editable: editable,\n onFieldEdit: handleFieldEdit,\n onEventNextNumbGet: onEventNextNumbGet\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_executor__WEBPACK_IMPORTED_MODULE_2__.TaskFormTabExecutor, {\n task: task,\n onFieldEdit: handleFieldEdit\n })), docProps.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomTabPanel, {\n value: tab,\n index: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_form_tab_props__WEBPACK_IMPORTED_MODULE_3__.TaskFormTabProps, {\n task: task,\n taskType: taskType,\n docProps: docProps,\n onPropEdit: handlePropEdit\n })) : null);\n};\n\n//Контроль свойств - Форма события\nTaskForm.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool).isRequired,\n docProps: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array),\n onTaskChange: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n onEventNextNumbGet: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form.js?"); /***/ }), @@ -587,7 +587,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskFormTabProps: () => (/* binding */ TaskFormTabProps)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _task_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/customParseFormat */ \"./node_modules/dayjs/plugin/customParseFormat.js\");\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Вкладка информации со свойствами\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Формирование кнопки доступа к разделу\n //Работа с датами\n //Настройка пользовательского формата даты\n //Дополнительная разметка и вёрстка клиентских элементов\n //Общие стили\n //Состояние открытия разделов\n\n//---------\n//Константы\n//---------\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Подключение настройки пользовательского формата даты\ndayjs__WEBPACK_IMPORTED_MODULE_2___default().extend((dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default()));\n\n//-----------\n//Тело модуля\n//-----------\n\n//Вкладка информации со свойствами\nconst TaskFormTabProps = ({\n task,\n docProps,\n onPropEdit\n}) => {\n //Вспомогательные функции открытия раздела\n const {\n handleExtraDictionariesOpen,\n handleUnitOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__.useDictionary)();\n\n //Выбор из словаря или дополнительного словаря\n const handleDictOpen = async (docProp, curValue = null) => {\n //Если способ выбора - словарь\n docProp.NENTRY_TYPE === 1 ? handleUnitOpen({\n sUnitCode: docProp.SUNITCODE,\n sShowMethod: docProp.SMETHOD_CODE,\n inputParameters: docProp.NPARAM_RN ? [{\n name: docProp.SPARAM_IN_CODE,\n value: curValue\n }] : null,\n callBack: res => {\n onPropEdit(docProp.SFORMATTED_ID, res.outParameters[docProp.SPARAM_OUT_CODE]);\n }\n }) :\n //Если способ выбора - доп. словарь\n handleExtraDictionariesOpen({\n nRn: docProp.NEXTRA_DICT_RN,\n sParamName: _layouts__WEBPACK_IMPORTED_MODULE_4__.DP_IN_VALUE[docProp.NFORMAT],\n paramValue: curValue,\n callBack: res => {\n onPropEdit(docProp.SFORMATTED_ID, res.outParameters[_layouts__WEBPACK_IMPORTED_MODULE_4__.DP_RETURN_VALUE[docProp.NFORMAT]]);\n }\n });\n };\n\n //Инициализация дополнительного свойства\n const initPropValue = prop => {\n //Считываем значение свойства из события\n const value = task.docProps[prop.SFORMATTED_ID];\n //Если есть значение свойства\n if (value) {\n //Строка или число\n if (prop.NFORMAT < 2) {\n return prop.NNUM_PRECISION ? String(value).replace(\".\", \",\") : value;\n }\n //Дата\n if (prop.NFORMAT === 2) {\n //Возвращаем значение исходя из подтипа даты\n switch (prop.NDATA_SUBTYPE) {\n //Дата без времени\n case 0:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD\");\n //Дата и время без секунд\n case 1:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD HH:mm\");\n //Дата и время с секундами\n default:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD HH:mm:ss\");\n }\n }\n //Если это ничего из вышестоящего - время\n return (0,_layouts__WEBPACK_IMPORTED_MODULE_4__.formatSqlDate)(value);\n }\n //Если нет значения, но это изменение события\n if (task.nRn) {\n //Возвращаем пустоту\n return \"\";\n }\n //Если нет значения и это добавление события - возвращаем значение по умолчанию\n return prop[_layouts__WEBPACK_IMPORTED_MODULE_4__.DP_DEFAULT_VALUE[prop.NFORMAT]];\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, docProps.map((docProp, index) => {\n return docProp.BSHOW_IN_GRID ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n error: !(0,_layouts__WEBPACK_IMPORTED_MODULE_4__.validationError)(task.docProps[docProp.SFORMATTED_ID], docProp.NFORMAT, docProp.NNUM_WIDTH, docProp.NNUM_PRECISION, docProp.NSTR_WIDTH),\n key: index,\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n id: docProp.SFORMATTED_ID,\n type: docProp.NFORMAT < 2 ? \"string\" : docProp.NFORMAT === 2 ? docProp.NDATA_SUBTYPE === 0 ? \"date\" : \"datetime-local\" : \"time\",\n label: docProp.SNAME,\n fullWidth: true,\n value: initPropValue(docProp),\n variant: \"standard\",\n onChange: e => onPropEdit(e.target.id, e.target.value),\n inputProps: docProp.NFORMAT === 2 && docProp.NDATA_SUBTYPE === 2 || docProp.NFORMAT === 3 && docProp.NDATA_SUBTYPE === 1 ? {\n step: 1\n } : {},\n InputProps: docProp.NENTRY_TYPE > 0 ? (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(() => handleDictOpen(docProp, task.docProps[docProp.SFORMATTED_ID])) : null,\n InputLabelProps: docProp.NFORMAT < 2 ? {} : {\n shrink: true\n },\n required: docProp.BREQUIRE,\n disabled: docProp.BREADONLY\n }) : null;\n })));\n};\n\n//Контроль свойств - Вкладка информации со свойствами\nTaskFormTabProps.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object).isRequired,\n docProps: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().array).isRequired,\n onPropEdit: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form_tab_props.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskFormTabProps: () => (/* binding */ TaskFormTabProps)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _task_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/customParseFormat */ \"./node_modules/dayjs/plugin/customParseFormat.js\");\n/* harmony import */ var dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/dict_hooks */ \"./app/panels/clnt_task_board/hooks/dict_hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Вкладка информации со свойствами\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Формирование кнопки доступа к разделу\n //Работа с датами\n //Настройка пользовательского формата даты\n //Дополнительная разметка и вёрстка клиентских элементов\n //Общие стили\n //Состояние открытия разделов\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n BOX_FEW_COLUMNS: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Подключение настройки пользовательского формата даты\ndayjs__WEBPACK_IMPORTED_MODULE_2___default().extend((dayjs_plugin_customParseFormat__WEBPACK_IMPORTED_MODULE_3___default()));\n\n//-----------\n//Тело модуля\n//-----------\n\n//Вкладка информации со свойствами\nconst TaskFormTabProps = ({\n task,\n docProps,\n onPropEdit\n}) => {\n //Вспомогательные функции открытия раздела\n const {\n handleExtraDictionariesOpen,\n handleUnitOpen\n } = (0,_hooks_dict_hooks__WEBPACK_IMPORTED_MODULE_6__.useDictionary)();\n\n //Выбор из словаря или дополнительного словаря\n const handleDictOpen = async (docProp, curValue = null) => {\n //Если способ выбора - словарь\n docProp.NENTRY_TYPE === 1 ? handleUnitOpen({\n sUnitCode: docProp.SUNITCODE,\n sShowMethod: docProp.SMETHOD_CODE,\n inputParameters: docProp.NPARAM_RN ? [{\n name: docProp.SPARAM_IN_CODE,\n value: curValue\n }] : null,\n callBack: res => {\n onPropEdit(docProp.SFORMATTED_ID, res.outParameters[docProp.SPARAM_OUT_CODE]);\n }\n }) :\n //Если способ выбора - доп. словарь\n handleExtraDictionariesOpen({\n nRn: docProp.NEXTRA_DICT_RN,\n sParamName: _layouts__WEBPACK_IMPORTED_MODULE_4__.DP_IN_VALUE[docProp.NFORMAT],\n paramValue: curValue,\n callBack: res => {\n onPropEdit(docProp.SFORMATTED_ID, res.outParameters[_layouts__WEBPACK_IMPORTED_MODULE_4__.DP_RETURN_VALUE[docProp.NFORMAT]]);\n }\n });\n };\n\n //Инициализация дополнительного свойства\n const initPropValue = prop => {\n //Считываем значение свойства из события\n const value = task.docProps[prop.SFORMATTED_ID];\n //Если есть значение свойства\n if (value) {\n //Строка или число\n if (prop.NFORMAT < 2) {\n return prop.NNUM_PRECISION ? String(value).replace(\".\", \",\") : value;\n }\n //Дата\n if (prop.NFORMAT === 2) {\n //Возвращаем значение исходя из подтипа даты\n switch (prop.NDATA_SUBTYPE) {\n //Дата без времени\n case 0:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD\");\n //Дата и время без секунд\n case 1:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD HH:mm\");\n //Дата и время с секундами\n default:\n return dayjs__WEBPACK_IMPORTED_MODULE_2___default()(value).format(\"YYYY-MM-DD HH:mm:ss\");\n }\n }\n //Если это ничего из вышестоящего - время\n return (0,_layouts__WEBPACK_IMPORTED_MODULE_4__.formatSqlDate)(value);\n }\n //Если нет значения, но это изменение события\n if (task.nRn) {\n //Возвращаем пустоту\n return \"\";\n }\n //Если нет значения и это добавление события - возвращаем значение по умолчанию\n return prop[_layouts__WEBPACK_IMPORTED_MODULE_4__.DP_DEFAULT_VALUE[prop.NFORMAT]];\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.BOX_WITH_LEGEND,\n component: \"fieldset\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.BOX_FEW_COLUMNS\n }, docProps.map((docProp, index) => {\n return docProp.BSHOW_IN_GRID ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n error: !(0,_layouts__WEBPACK_IMPORTED_MODULE_4__.validationError)(task.docProps[docProp.SFORMATTED_ID], docProp.NFORMAT, docProp.NNUM_WIDTH, docProp.NNUM_PRECISION, docProp.NSTR_WIDTH),\n key: index,\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.TASK_FORM_TEXT_FIELD(),\n id: docProp.SFORMATTED_ID,\n type: docProp.NFORMAT < 2 ? \"string\" : docProp.NFORMAT === 2 ? docProp.NDATA_SUBTYPE === 0 ? \"date\" : \"datetime-local\" : \"time\",\n label: docProp.SNAME,\n fullWidth: true,\n value: initPropValue(docProp),\n variant: \"standard\",\n onChange: e => onPropEdit(e.target.id, e.target.value),\n inputProps: docProp.NFORMAT === 2 && docProp.NDATA_SUBTYPE === 2 || docProp.NFORMAT === 3 && docProp.NDATA_SUBTYPE === 1 ? {\n step: 1\n } : {},\n InputProps: docProp.NENTRY_TYPE > 0 ? (0,_task_form__WEBPACK_IMPORTED_MODULE_1__.getInputProps)(() => handleDictOpen(docProp, task.docProps[docProp.SFORMATTED_ID])) : null,\n InputLabelProps: docProp.NFORMAT < 2 ? {} : {\n shrink: true\n },\n required: docProp.BREQUIRE,\n disabled: docProp.BREADONLY\n }) : null;\n }))));\n};\n\n//Контроль свойств - Вкладка информации со свойствами\nTaskFormTabProps.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object).isRequired,\n docProps: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().array).isRequired,\n onPropEdit: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/task_form_tab_props.js?"); /***/ }), @@ -686,7 +686,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COMMON_STYLES: () => (/* binding */ COMMON_STYLES)\n/* harmony export */ });\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Общие стили\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Общие стили\nconst COMMON_STYLES = {\n TASK_FORM_TEXT_FIELD: (widthVal, greyDisabled = false) => ({\n margin: \"4px\",\n ...(widthVal ? {\n width: widthVal\n } : {}),\n ...(greyDisabled ? {\n \"& .MuiInputBase-input.Mui-disabled\": {\n WebkitTextFillColor: \"rgba(0, 0, 0, 0.87)\"\n },\n \"& .MuiInputLabel-root.Mui-disabled\": {\n WebkitTextFillColor: \"rgba(0, 0, 0, 0.6)\"\n }\n } : {})\n }),\n BOX_WITH_LEGEND: {\n border: \"1px solid #939393\"\n },\n BOX_SINGLE_COLUMN: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\"\n },\n LEGEND: {\n textAlign: \"left\"\n },\n SELECT_MENU: width => {\n return {\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_0__.APP_STYLES.SCROLL,\n width: width ? width : null\n };\n },\n STACK_DOCLINKS: {\n alignItems: \"baseline\"\n },\n SCROLL: {\n ..._app_styles__WEBPACK_IMPORTED_MODULE_0__.APP_STYLES.SCROLL,\n overflowY: \"auto\"\n },\n DIALOG_ACTIONS: {\n justifyContent: \"end\",\n paddingRight: \"24px\",\n paddingLeft: \"24px\"\n },\n DIALOG_CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n ZERO_PADDING: {\n padding: 0\n }\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/styles.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COMMON_STYLES: () => (/* binding */ COMMON_STYLES)\n/* harmony export */ });\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Общие стили\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Общие стили\nconst COMMON_STYLES = {\n TASK_FORM_TEXT_FIELD: (widthVal, greyDisabled = false) => ({\n margin: \"4px\",\n ...(widthVal ? {\n width: widthVal\n } : {}),\n ...(greyDisabled ? {\n \"& .MuiInputBase-input.Mui-disabled\": {\n WebkitTextFillColor: \"rgba(0, 0, 0, 0.87)\"\n },\n \"& .MuiInputLabel-root.Mui-disabled\": {\n WebkitTextFillColor: \"rgba(0, 0, 0, 0.6)\"\n }\n } : {})\n }),\n BOX_WITH_LEGEND: {\n border: \"1px solid #939393\",\n marginBottom: \"1px\"\n },\n BOX_SINGLE_COLUMN: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"10px\"\n },\n LEGEND: {\n textAlign: \"left\"\n },\n SELECT_MENU: width => {\n return {\n overflowY: \"auto\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_0__.APP_STYLES.SCROLL,\n width: width ? width : null\n };\n },\n STACK_DOCLINKS: {\n alignItems: \"baseline\"\n },\n SCROLL: {\n ..._app_styles__WEBPACK_IMPORTED_MODULE_0__.APP_STYLES.SCROLL,\n overflowY: \"auto\"\n },\n DIALOG_ACTIONS: {\n justifyContent: \"end\",\n paddingRight: \"24px\",\n paddingLeft: \"24px\"\n },\n DIALOG_CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n ZERO_PADDING: {\n padding: 0\n }\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/styles.js?"); /***/ }), @@ -697,7 +697,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskDialog: () => (/* binding */ TaskDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/task_dialog_hooks */ \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\");\n/* harmony import */ var _components_task_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент панели: Диалог формы события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Хук для события\n //Хук для получения доп. свойств раздела \"События\"\n //Форма события\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n //Общие стили\n //Вспомогательные процедуры и функции\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIALOG_CONTENT: {\n paddingBottom: \"0px\",\n maxHeight: \"740px\",\n minHeight: \"740px\",\n ..._styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог формы события\nconst TaskDialog = ({\n taskRn,\n taskType,\n editable,\n onTasksReload,\n onClose\n}) => {\n //Собственное состояние\n const [task, setTask] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useClientEvent)(taskRn, taskType);\n\n //Состояние допустимых дополнительных свойств\n const [docProps] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useDocsProps)(taskType);\n\n //Состояние заполненности всех обязательных доп. свойств\n const [docPropsReady, setDocPropsReady] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //При изменении информации о задаче\n const handleTaskChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newTaskValues => {\n setTask(pv => ({\n ...pv,\n ...newTaskValues\n }));\n }, [setTask]);\n\n //При добавлении события\n const handleInsertTask = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INSERT\",\n args: {\n SCRN: task.sCrn,\n SPREF: task.sPrefix,\n SNUMB: task.sNumber,\n STYPE: task.sType,\n SSTATUS: task.sStatus,\n SPLAN_DATE: task.dPlanDate,\n SINIT_PERSON: task.sInitClnperson,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n SREASON: task.sInitReason,\n CPROPS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps)\n // eslint-disable-next-line no-unused-vars\n .filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При исправлении события\n const handleUpdateEvent = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_UPDATE\",\n args: {\n NCLNEVENTS: task.nRn,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n CPROPS: {\n // eslint-disable-next-line no-unused-vars\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps).filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При считывании следующего номера события\n const handleEventNextNumbGet = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_NEXTNUMB_GET\",\n args: {\n SPREFIX: task.sPrefix\n }\n });\n //Если данные есть\n if (data) {\n //Устанавливаем номер\n setTask(pv => ({\n ...pv,\n sNumber: data.SEVENT_NUMB\n }));\n }\n }, [executeStored, setTask, task.sPrefix]);\n\n //Проверка заполненности всех обязательных доп. свойств\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если доп. свойства загрузились\n if (docProps.loaded) {\n //Проверяем остались ли обязательные незаполненные свойства\n let notFilled = docProps.props.some(docProp => docProp.BREQUIRE === true && !(0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.hasValue)(task.docProps[docProp.SFORMATTED_ID]));\n //Если незаполненных обязательных доп. свойств не осталось - доп. свойства готовы, иначе не готовы\n setDocPropsReady(!notFilled);\n } else {\n //Доп. свойства не готовы\n setDocPropsReady(false);\n }\n }, [docProps.loaded, docProps.props, task.docProps]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, !task.init && docProps.loaded && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n open: true,\n onClose: onClose ? onClose : null,\n fullWidth: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.DIALOG_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_task_form__WEBPACK_IMPORTED_MODULE_2__.TaskForm, {\n task: task,\n taskType: taskType,\n editable: !taskRn || editable ? true : false,\n docProps: docProps.props,\n onTaskChange: handleTaskChange,\n onEventNextNumbGet: handleEventNextNumbGet\n })), onClose ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.DIALOG_ACTIONS\n }, taskRn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleUpdateEvent(onClose).then(onTasksReload),\n disabled: task.updateDisabled || !editable || !docPropsReady\n }, \"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u0438\\u0442\\u044C\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleInsertTask(onClose).then(onTasksReload),\n disabled: task.insertDisabled || !docPropsReady\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: onClose\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")) : null), \" \");\n};\n\n//Контроль свойств - Диалог формы события\nTaskDialog.propTypes = {\n taskRn: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number),\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/task_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskDialog: () => (/* binding */ TaskDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/task_dialog_hooks */ \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\");\n/* harmony import */ var _components_task_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент панели: Диалог формы события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Хук для события\n //Хук для получения доп. свойств раздела \"События\"\n //Форма события\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n //Вспомогательные процедуры и функции\n //Типовой диалог\n\n//---------\n//Константы\n//---------\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог формы события\nconst TaskDialog = ({\n taskRn,\n taskType,\n editable,\n onTasksReload,\n onClose\n}) => {\n //Собственное состояние\n const [task, setTask] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useClientEvent)(taskRn, taskType);\n\n //Состояние допустимых дополнительных свойств\n const [docProps] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useDocsProps)(taskType);\n\n //Состояние заполненности всех обязательных доп. свойств\n const [docPropsReady, setDocPropsReady] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //При изменении информации о задаче\n const handleTaskChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newTaskValues => {\n setTask(pv => ({\n ...pv,\n ...newTaskValues\n }));\n }, [setTask]);\n\n //При добавлении события\n const handleInsertTask = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INSERT\",\n args: {\n SCRN: task.sCrn,\n SPREF: task.sPrefix,\n SNUMB: task.sNumber,\n STYPE: task.sType,\n SSTATUS: task.sStatus,\n SPLAN_DATE: task.dPlanDate,\n SINIT_PERSON: task.sInitClnperson,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n SREASON: task.sInitReason,\n CPROPS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps)\n // eslint-disable-next-line no-unused-vars\n .filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При исправлении события\n const handleUpdateEvent = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_UPDATE\",\n args: {\n NCLNEVENTS: task.nRn,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n CPROPS: {\n // eslint-disable-next-line no-unused-vars\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps).filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При считывании следующего номера события\n const handleEventNextNumbGet = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_NEXTNUMB_GET\",\n args: {\n SPREFIX: task.sPrefix\n }\n });\n //Если данные есть\n if (data) {\n //Устанавливаем номер\n setTask(pv => ({\n ...pv,\n sNumber: data.SEVENT_NUMB\n }));\n }\n }, [executeStored, setTask, task.sPrefix]);\n\n //Проверка заполненности всех обязательных доп. свойств\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если доп. свойства загрузились\n if (docProps.loaded) {\n //Проверяем остались ли обязательные незаполненные свойства\n let notFilled = docProps.props.some(docProp => docProp.BREQUIRE === true && !(0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.hasValue)(task.docProps[docProp.SFORMATTED_ID]));\n //Если незаполненных обязательных доп. свойств не осталось - доп. свойства готовы, иначе не готовы\n setDocPropsReady(!notFilled);\n } else {\n //Доп. свойства не готовы\n setDocPropsReady(false);\n }\n }, [docProps.loaded, docProps.props, task.docProps]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, !task.init && docProps.loaded && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_5__.P8PDialog, {\n title: task.nRn ? `Исправление события${task.nClosed ? \" [аннулировано]\" : \"\"}` : \"Добавление события\",\n fullWidth: true,\n onOk: () => taskRn ? handleUpdateEvent(onClose).then(onTasksReload) : handleInsertTask(onClose).then(onTasksReload),\n onClose: onClose ? onClose : null,\n okDisabled: taskRn ? task.updateDisabled || !editable || !docPropsReady : task.insertDisabled || !docPropsReady,\n scrollContent: false\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_task_form__WEBPACK_IMPORTED_MODULE_2__.TaskForm, {\n task: task,\n taskType: taskType,\n editable: !taskRn || editable ? true : false,\n docProps: docProps.props,\n onTaskChange: handleTaskChange,\n onEventNextNumbGet: handleEventNextNumbGet\n })));\n};\n\n//Контроль свойств - Диалог формы события\nTaskDialog.propTypes = {\n taskRn: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number),\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().bool),\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/task_dialog.js?"); /***/ }),