From 1954b27a27f5fd561443cb032669c3131b20135b Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Mon, 31 Mar 2025 22:53:04 +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 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/p8-panels.js b/dist/p8-panels.js index ab023cd..64e91be 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -38,7 +38,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 */ BUTTONS: () => (/* binding */ BUTTONS),\n/* harmony export */ CAPTIONS: () => (/* binding */ CAPTIONS),\n/* harmony export */ ERRORS: () => (/* binding */ ERRORS),\n/* harmony export */ ERRORS_HTTP: () => (/* binding */ ERRORS_HTTP),\n/* harmony export */ TEXTS: () => (/* binding */ TEXTS),\n/* harmony export */ TITLES: () => (/* binding */ TITLES)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Текстовые ресурсы и константы\r\n*/\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Заголовки\nconst TITLES = {\n INFO: \"Информация\",\n //Информационный блок\n WARN: \"Предупреждение\",\n //Блок предупреждения\n ERR: \"Ошибка\",\n //Информация об ошибке\n DEFAULT_PANELS_GROUP: \"Без привязки к группе\" //Заголовок группы панелей по умолчанию\n};\n\n//Текст\nconst TEXTS = {\n LOADING: \"Ожидайте...\",\n //Ожидание завершения процесса\n NO_DATA_FOUND: \"Данных не найдено\" //Отсутствие данных\n};\n\n//Текст кнопок\nconst BUTTONS = {\n NAVIGATE_HOME: \"Домой\",\n //Переход к домашней странице\n NAVIGATE_BACK: \"Назад\",\n //Возврат назад по навигации\n NAVIGATE: \"Перейти\",\n //Переход к разделу/панели/адресу\n OK: \"ОК\",\n //Ок\n CANCEL: \"Отмена\",\n //Отмена\n CLOSE: \"Закрыть\",\n //Сокрытие\n CLEAR: \"Очистить\",\n //Очистка\n ORDER_ASC: \"По возрастанию\",\n //Сортировка по возрастанию\n ORDER_DESC: \"По убыванию\",\n //Сортировка по убыванию\n FILTER: \"Фильтр\",\n //Фильтрация\n MORE: \"Ещё\" //Догрузка данных\n};\n\n//Метки атрибутов, сопроводительные надписи\nconst CAPTIONS = {\n VALUE: \"Значение\",\n VALUE_FROM: \"С\",\n VALUE_TO: \"По\",\n NUMB: \"Номер\",\n NAME: \"Наименование\",\n START: \"Начало\",\n END: \"Окончание\",\n PROGRESS: \"Прогресс\",\n LEGEND: \"Легенда\"\n};\n\n//Типовые сообщения об ошибках\nconst ERRORS = {\n UNDER_CONSTRUCTION: \"Панель в разработке\",\n P8O_API_UNAVAILABLE: '\"ПАРУС 8 Онлайн\" недоступен',\n P8O_API_UNSUPPORTED: 'Функция \"ПАРУС 8 Онлайн\" не поддерживается',\n DEFAULT: \"Неожиданная ошибка\"\n};\n\n//Типовые сообщения для ошибок HTTP\nconst ERRORS_HTTP = {\n 404: \"Адрес не найден\"\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app.text.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BUTTONS: () => (/* binding */ BUTTONS),\n/* harmony export */ CAPTIONS: () => (/* binding */ CAPTIONS),\n/* harmony export */ ERRORS: () => (/* binding */ ERRORS),\n/* harmony export */ ERRORS_HTTP: () => (/* binding */ ERRORS_HTTP),\n/* harmony export */ TEXTS: () => (/* binding */ TEXTS),\n/* harmony export */ TITLES: () => (/* binding */ TITLES)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Текстовые ресурсы и константы\r\n*/\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Заголовки\nconst TITLES = {\n INFO: \"Информация\",\n //Информационный блок\n WARN: \"Предупреждение\",\n //Блок предупреждения\n ERR: \"Ошибка\",\n //Информация об ошибке\n DEFAULT_PANELS_GROUP: \"Без привязки к группе\" //Заголовок группы панелей по умолчанию\n};\n\n//Текст\nconst TEXTS = {\n LOADING: \"Ожидайте...\",\n //Ожидание завершения процесса\n NO_DATA_FOUND: \"Данных не найдено\" //Отсутствие данных\n};\n\n//Текст кнопок\nconst BUTTONS = {\n NAVIGATE_HOME: \"Домой\",\n //Переход к домашней странице\n NAVIGATE_BACK: \"Назад\",\n //Возврат назад по навигации\n NAVIGATE: \"Перейти\",\n //Переход к разделу/панели/адресу\n OK: \"ОК\",\n //Ок\n CANCEL: \"Отмена\",\n //Отмена\n CLOSE: \"Закрыть\",\n //Сокрытие\n DETAIL: \"Подробнее\",\n //Отображение подробностей/детализации\n HIDE: \"Скрыть\",\n //Скрытие информации\n CLEAR: \"Очистить\",\n //Очистка\n ORDER_ASC: \"По возрастанию\",\n //Сортировка по возрастанию\n ORDER_DESC: \"По убыванию\",\n //Сортировка по убыванию\n FILTER: \"Фильтр\",\n //Фильтрация\n MORE: \"Ещё\" //Догрузка данных\n};\n\n//Метки атрибутов, сопроводительные надписи\nconst CAPTIONS = {\n VALUE: \"Значение\",\n VALUE_FROM: \"С\",\n VALUE_TO: \"По\",\n NUMB: \"Номер\",\n NAME: \"Наименование\",\n START: \"Начало\",\n END: \"Окончание\",\n PROGRESS: \"Прогресс\",\n LEGEND: \"Легенда\"\n};\n\n//Типовые сообщения об ошибках\nconst ERRORS = {\n UNDER_CONSTRUCTION: \"Панель в разработке\",\n P8O_API_UNAVAILABLE: '\"ПАРУС 8 Онлайн\" недоступен',\n P8O_API_UNSUPPORTED: 'Функция \"ПАРУС 8 Онлайн\" не поддерживается',\n DEFAULT: \"Неожиданная ошибка\"\n};\n\n//Типовые сообщения для ошибок HTTP\nconst ERRORS_HTTP = {\n 404: \"Адрес не найден\"\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app.text.js?"); /***/ }), @@ -71,7 +71,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 */ P8PAppInlineError: () => (/* binding */ P8PAppInlineError),\n/* harmony export */ P8PAppInlineInfo: () => (/* binding */ P8PAppInlineInfo),\n/* harmony export */ P8PAppInlineMessage: () => (/* binding */ P8PAppInlineMessage),\n/* harmony export */ P8PAppInlineWarn: () => (/* binding */ P8PAppInlineWarn),\n/* harmony export */ P8PAppMessage: () => (/* binding */ P8PAppMessage),\n/* harmony export */ P8PAppMessageErr: () => (/* binding */ P8PAppMessageErr),\n/* harmony export */ P8PAppMessageInfo: () => (/* binding */ P8PAppMessageInfo),\n/* harmony export */ P8PAppMessageWarn: () => (/* binding */ P8PAppMessageWarn),\n/* harmony export */ P8P_APP_MESSAGE_VARIANT: () => (/* binding */ P8P_APP_MESSAGE_VARIANT)\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_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _mui_material_Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Dialog */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material_DialogTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material/DialogTitle */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material_DialogContent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/DialogContent */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material_DialogContentText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/DialogContentText */ \"./node_modules/@mui/material/DialogContentText/DialogContentText.js\");\n/* harmony import */ var _mui_material_DialogActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/DialogActions */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material/Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Button */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material_Container__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material/Container */ \"./node_modules/@mui/material/Container/Container.js\");\n/* harmony import */ var _mui_material_Box__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material/Box */ \"./node_modules/@mui/material/Box/Box.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 //базовый класс диалога Material UI\n //Заголовок диалога\n //Содержимое диалога\n //Текст содержимого диалога\n //Область действий диалога\n //Текст\n //Кнопки\n //Контейнер\n //Обёртка\n\n//---------\n//Константы\n//---------\n\n//Варианты исполнения\nconst P8P_APP_MESSAGE_VARIANT = {\n INFO: \"information\",\n WARN: \"warning\",\n ERR: \"error\"\n};\n\n//Стили\nconst STYLES = {\n DEFAULT: {\n wordBreak: \"break-word\"\n },\n INFO: {\n titleText: {},\n bodyText: {}\n },\n WARN: {\n titleText: {\n color: \"orange\"\n },\n bodyText: {\n color: \"orange\"\n }\n },\n ERR: {\n titleText: {\n color: \"red\"\n },\n bodyText: {\n color: \"red\"\n }\n },\n INLINE_MESSAGE: {\n with: \"100%\",\n textAlign: \"center\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Сообщение\nconst P8PAppMessage = ({\n variant,\n title,\n titleText,\n cancelBtn,\n onCancel,\n cancelBtnCaption,\n okBtn,\n onOk,\n okBtnCaption,\n open,\n text\n}) => {\n //Подбор стиля и ресурсов\n let style = STYLES.INFO;\n switch (variant) {\n case P8P_APP_MESSAGE_VARIANT.INFO:\n {\n style = STYLES.INFO;\n break;\n }\n case P8P_APP_MESSAGE_VARIANT.WARN:\n {\n style = STYLES.WARN;\n break;\n }\n case P8P_APP_MESSAGE_VARIANT.ERR:\n {\n style = STYLES.ERR;\n break;\n }\n }\n\n //Заголовок\n let titlePart;\n if (title && titleText) titlePart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n id: \"message-dialog-title\",\n style: {\n ...style.DEFAULT,\n ...style.titleText\n }\n }, titleText);\n\n //Кнопка Отмена\n let cancelBtnPart;\n if (cancelBtn && cancelBtnCaption && variant === P8P_APP_MESSAGE_VARIANT.WARN) cancelBtnPart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => onCancel ? onCancel() : null\n }, cancelBtnCaption);\n\n //Кнопка OK\n let okBtnPart;\n if (okBtn && okBtnCaption) okBtnPart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => onOk ? onOk() : null,\n color: \"primary\",\n autoFocus: true\n }, okBtnCaption);\n\n //Все действия\n let actionsPart;\n if (cancelBtnPart || okBtnPart) actionsPart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogActions__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, okBtnPart, cancelBtnPart);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Dialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n open: open || false,\n \"aria-labelledby\": \"message-dialog-title\",\n \"aria-describedby\": \"message-dialog-description\",\n onClose: () => onCancel ? onCancel() : null\n }, titlePart, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogContent__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogContentText__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n id: \"message-dialog-description\",\n style: style.bodyText\n }, text)), actionsPart);\n};\n\n//Контроль свойств - Сообщение\nP8PAppMessage.propTypes = {\n variant: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n titleText: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n cancelBtn: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n cancelBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n okBtn: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n open: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n text: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string)\n};\n\n//Встроенное сообщение\nconst P8PAppInlineMessage = ({\n variant,\n text,\n okBtn,\n onOk,\n okBtnCaption\n}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Container__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n style: STYLES.INLINE_MESSAGE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n color: variant === P8P_APP_MESSAGE_VARIANT.ERR ? \"error\" : variant === P8P_APP_MESSAGE_VARIANT.WARN ? \"primary\" : \"textSecondary\"\n }, text), okBtn && okBtnCaption ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pt: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => onOk ? onOk() : null,\n color: \"primary\",\n autoFocus: true\n }, okBtnCaption)) : null));\n};\n\n//Контроль свойств - Встроенное сообщение\nP8PAppInlineMessage.propTypes = {\n variant: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n text: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n okBtn: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string)\n};\n\n//Формирование типового сообщения\nconst buildVariantMessage = (props, variant) => {\n //Извлекаем необходимые свойства\n let {\n open,\n titleText\n } = props;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PAppMessage, _extends({}, props, {\n variant: variant,\n open: open === undefined ? true : open,\n title: titleText ? true : false,\n okBtn: true\n }));\n};\n\n//Формирование типового встроенного сообщения\nconst buildVariantInlineMessage = (props, variant) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PAppInlineMessage, _extends({}, props, {\n variant: variant\n }));\n};\n\n//Сообщение об ошибке\nconst P8PAppMessageErr = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.ERR);\n\n//Сообщение предупреждения\nconst P8PAppMessageWarn = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.WARN);\n\n//Сообщение информации\nconst P8PAppMessageInfo = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.INFO);\n\n//Встраиваемое сообщение об ошибке\nconst P8PAppInlineError = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.ERR);\n\n//Встраиваемое cообщение предупреждения\nconst P8PAppInlineWarn = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.WARN);\n\n//Встраиваемое сообщение информации\nconst P8PAppInlineInfo = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.INFO);\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_app_message.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PAppInlineError: () => (/* binding */ P8PAppInlineError),\n/* harmony export */ P8PAppInlineInfo: () => (/* binding */ P8PAppInlineInfo),\n/* harmony export */ P8PAppInlineMessage: () => (/* binding */ P8PAppInlineMessage),\n/* harmony export */ P8PAppInlineWarn: () => (/* binding */ P8PAppInlineWarn),\n/* harmony export */ P8PAppMessage: () => (/* binding */ P8PAppMessage),\n/* harmony export */ P8PAppMessageErr: () => (/* binding */ P8PAppMessageErr),\n/* harmony export */ P8PAppMessageInfo: () => (/* binding */ P8PAppMessageInfo),\n/* harmony export */ P8PAppMessageWarn: () => (/* binding */ P8PAppMessageWarn),\n/* harmony export */ P8P_APP_MESSAGE_VARIANT: () => (/* binding */ P8P_APP_MESSAGE_VARIANT)\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_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _mui_material_Dialog__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material/Dialog */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material_DialogTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material/DialogTitle */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material_DialogContent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/DialogContent */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material_DialogContentText__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/DialogContentText */ \"./node_modules/@mui/material/DialogContentText/DialogContentText.js\");\n/* harmony import */ var _mui_material_DialogActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/DialogActions */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material/Typography */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/Button */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material_Container__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material/Container */ \"./node_modules/@mui/material/Container/Container.js\");\n/* harmony import */ var _mui_material_Box__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material/Box */ \"./node_modules/@mui/material/Box/Box.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 //базовый класс диалога Material UI\n //Заголовок диалога\n //Содержимое диалога\n //Текст содержимого диалога\n //Область действий диалога\n //Текст\n //Кнопки\n //Контейнер\n //Обёртка\n\n//---------\n//Константы\n//---------\n\n//Варианты исполнения\nconst P8P_APP_MESSAGE_VARIANT = {\n INFO: \"information\",\n WARN: \"warning\",\n ERR: \"error\"\n};\n\n//Стили\nconst STYLES = {\n DEFAULT: {\n wordBreak: \"break-word\"\n },\n INFO: {\n titleText: {},\n bodyText: {}\n },\n WARN: {\n titleText: {\n color: \"orange\"\n },\n bodyText: {\n color: \"orange\"\n }\n },\n ERR: {\n titleText: {\n color: \"red\"\n },\n bodyText: {\n color: \"red\"\n }\n },\n INLINE_MESSAGE: {\n with: \"100%\",\n textAlign: \"center\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Сообщение\nconst P8PAppMessage = ({\n variant,\n title,\n titleText,\n cancelBtn,\n onCancel,\n cancelBtnCaption,\n okBtn,\n onOk,\n okBtnCaption,\n open,\n text,\n fullErrorText,\n showErrMoreCaption,\n hideErrMoreCaption\n}) => {\n //Состояние подробной информации об ошибке\n const [showFullErrorText, setShowFullErrorText] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подбор стиля и ресурсов\n let style = STYLES.INFO;\n switch (variant) {\n case P8P_APP_MESSAGE_VARIANT.INFO:\n {\n style = STYLES.INFO;\n break;\n }\n case P8P_APP_MESSAGE_VARIANT.WARN:\n {\n style = STYLES.WARN;\n break;\n }\n case P8P_APP_MESSAGE_VARIANT.ERR:\n {\n style = STYLES.ERR;\n break;\n }\n }\n\n //Заголовок\n let titlePart;\n if (title && titleText) titlePart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n id: \"message-dialog-title\",\n style: {\n ...style.DEFAULT,\n ...style.titleText\n }\n }, titleText);\n\n //Кнопка Отмена\n let cancelBtnPart;\n if (cancelBtn && cancelBtnCaption && variant === P8P_APP_MESSAGE_VARIANT.WARN) cancelBtnPart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => onCancel ? onCancel() : null\n }, cancelBtnCaption);\n\n //Кнопка OK\n let okBtnPart;\n if (okBtn && okBtnCaption) okBtnPart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => onOk ? onOk() : null,\n color: \"primary\",\n autoFocus: true\n }, okBtnCaption);\n\n //Кнопка Подробнее\n let fullErrorTextBtn;\n if (fullErrorText && showErrMoreCaption && hideErrMoreCaption && variant === P8P_APP_MESSAGE_VARIANT.ERR) fullErrorTextBtn = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => setShowFullErrorText(!showFullErrorText),\n color: \"warning\",\n autoFocus: true\n }, !showFullErrorText ? showErrMoreCaption : hideErrMoreCaption);\n\n //Все действия\n let actionsPart;\n if (cancelBtnPart || okBtnPart) actionsPart = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogActions__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, fullErrorTextBtn, okBtnPart, cancelBtnPart);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Dialog__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n open: open || false,\n \"aria-labelledby\": \"message-dialog-title\",\n \"aria-describedby\": \"message-dialog-description\",\n onClose: () => onCancel ? onCancel() : null\n }, titlePart, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogContent__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_DialogContentText__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n id: \"message-dialog-description\",\n style: style.bodyText\n }, !showFullErrorText ? text : fullErrorText)), actionsPart);\n};\n\n//Контроль свойств - Сообщение\nP8PAppMessage.propTypes = {\n variant: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n titleText: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n cancelBtn: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n cancelBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n okBtn: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n open: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n text: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n fullErrorText: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n showErrMoreCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string),\n hideErrMoreCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string)\n};\n\n//Встроенное сообщение\nconst P8PAppInlineMessage = ({\n variant,\n text,\n okBtn,\n onOk,\n okBtnCaption\n}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Container__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n style: STYLES.INLINE_MESSAGE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Typography__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n color: variant === P8P_APP_MESSAGE_VARIANT.ERR ? \"error\" : variant === P8P_APP_MESSAGE_VARIANT.WARN ? \"primary\" : \"textSecondary\"\n }, text), okBtn && okBtnCaption ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Box__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n pt: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_Button__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: () => onOk ? onOk() : null,\n color: \"primary\",\n autoFocus: true\n }, okBtnCaption)) : null));\n};\n\n//Контроль свойств - Встроенное сообщение\nP8PAppInlineMessage.propTypes = {\n variant: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n text: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n okBtn: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string)\n};\n\n//Формирование типового сообщения\nconst buildVariantMessage = (props, variant) => {\n //Извлекаем необходимые свойства\n let {\n open,\n titleText\n } = props;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PAppMessage, _extends({}, props, {\n variant: variant,\n open: open === undefined ? true : open,\n title: titleText ? true : false,\n okBtn: true\n }));\n};\n\n//Формирование типового встроенного сообщения\nconst buildVariantInlineMessage = (props, variant) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PAppInlineMessage, _extends({}, props, {\n variant: variant\n }));\n};\n\n//Сообщение об ошибке\nconst P8PAppMessageErr = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.ERR);\n\n//Сообщение предупреждения\nconst P8PAppMessageWarn = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.WARN);\n\n//Сообщение информации\nconst P8PAppMessageInfo = props => buildVariantMessage(props, P8P_APP_MESSAGE_VARIANT.INFO);\n\n//Встраиваемое сообщение об ошибке\nconst P8PAppInlineError = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.ERR);\n\n//Встраиваемое cообщение предупреждения\nconst P8PAppInlineWarn = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.WARN);\n\n//Встраиваемое сообщение информации\nconst P8PAppInlineInfo = props => buildVariantInlineMessage(props, P8P_APP_MESSAGE_VARIANT.INFO);\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_app_message.js?"); /***/ }), @@ -148,7 +148,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 */ P8PGantt: () => (/* binding */ P8PGantt),\n/* harmony export */ P8P_GANTT_TASK_ATTRIBUTE_SHAPE: () => (/* binding */ P8P_GANTT_TASK_ATTRIBUTE_SHAPE),\n/* harmony export */ P8P_GANTT_TASK_COLOR_SHAPE: () => (/* binding */ P8P_GANTT_TASK_COLOR_SHAPE),\n/* harmony export */ P8P_GANTT_TASK_SHAPE: () => (/* binding */ P8P_GANTT_TASK_SHAPE),\n/* harmony export */ taskLegendDesc: () => (/* binding */ taskLegendDesc)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\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/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Slider/Slider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _p8p_app_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_app_message */ \"./app/components/p8p_app_message.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//Уровни масштаба\nconst P8P_GANTT_ZOOM = [0, 1, 2, 3, 4, 5];\n\n//Уровни масштаба (строковые наименования в терминах библиотеки)\nconst P8P_GANTT_ZOOM_VIEW_MODES = {\n 0: \"Quarter Day\",\n 1: \"Half Day\",\n 2: \"Day\",\n 3: \"Week\",\n 4: \"Month\",\n 5: \"Year\"\n};\n\n//Структура задачи\nconst P8P_GANTT_TASK_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n rn: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number).isRequired,\n numb: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n fullName: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n start: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n end: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n progress: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n dependencies: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array),\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyDates: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyProgress: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n bgColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n textColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n bgProgressColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)\n});\n\n//Структура динамического атрибута задачи\nconst P8P_GANTT_TASK_ATTRIBUTE_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n visible: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool).isRequired\n});\n\n//Структура описания цвета задачи\nconst P8P_GANTT_TASK_COLOR_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n bgColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n textColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n bgProgressColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n desc: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n});\n\n//Высота заголовка\nconst TITLE_HEIGHT = \"44px\";\n\n//Высота панели масштабирования\nconst ZOOM_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n TASK_EDITOR_CONTENT: {\n minWidth: 400,\n overflowX: \"auto\"\n },\n TASK_EDITOR_LIST: {\n width: \"100%\",\n minWidth: 300,\n maxWidth: 700,\n bgcolor: \"background.paper\"\n },\n GANTT_TITLE: {\n height: TITLE_HEIGHT\n },\n GANTT_ZOOM: {\n height: ZOOM_HEIGHT\n },\n GANTT: (noData, title, zoomBar) => ({\n height: `calc(100% - ${zoomBar ? ZOOM_HEIGHT : \"0px\"} - ${title ? TITLE_HEIGHT : \"0px\"})`,\n display: noData ? \"none\" : \"\"\n })\n};\n\n//--------------------------------\n//Вспомогательные классы и функции\n//--------------------------------\n\n//Проверка существования значения\nconst hasValue = value => typeof value !== \"undefined\" && value !== null && value !== \"\";\n\n//Формирование описания для легенды\nconst taskLegendDesc = ({\n task,\n taskColors\n}) => {\n if (Array.isArray(taskColors) && taskColors.length > 0) {\n const colorDesc = taskColors.find(color => task.bgColor === color.bgColor && task.textColor === color.textColor && task.bgProgressColor === color.bgProgressColor);\n if (colorDesc) return {\n text: colorDesc.desc,\n style: {\n ...(colorDesc.bgProgressColor ? {\n background: `linear-gradient(to right, ${colorDesc.bgProgressColor} ,${colorDesc.bgColor ? colorDesc.bgColor : \"transparent\"})`\n } : colorDesc.bgColor ? {\n backgroundColor: colorDesc.bgColor\n } : {}),\n ...(colorDesc.textColor ? {\n color: colorDesc.textColor\n } : {})\n }\n };else return null;\n } else return null;\n};\n\n//Редактор задачи\nconst P8PGanttTaskEditor = ({\n task,\n taskAttributes,\n taskColors,\n onOk,\n onCancel,\n taskAttributeRenderer,\n taskDialogRenderer,\n numbCaption,\n nameCaption,\n startCaption,\n endCaption,\n progressCaption,\n legendCaption,\n okBtnCaption,\n cancelBtnCaption\n}) => {\n //Собственное состояние\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n start: task.start,\n end: task.end,\n progress: task.progress\n });\n\n //Отображаемые атрибуты\n const dispTaskAttributes = Array.isArray(taskAttributes) && taskAttributes.length > 0 ? taskAttributes.filter(attr => attr.visible && hasValue(task[attr.name])) : [];\n\n //При сохранении\n const handleOk = () => onOk && state.start && state.end ? onOk({\n task,\n start: state.start,\n end: state.end,\n progress: state.progress\n }) : null;\n\n //При отмене\n const handleCancel = () => onCancel ? onCancel() : null;\n\n //При изменении сроков\n const handlePeriodChanged = e => setState(prev => ({\n ...prev,\n [e.target.name]: e.target.value\n }));\n\n //При изменении прогресса\n const handleProgressChanged = (e, newValue) => setState(prev => ({\n ...prev,\n progress: newValue\n }));\n\n //Описание легенды для задачи\n const legendDesc = taskLegendDesc({\n task,\n taskColors\n });\n let legend = legendDesc ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n p: 1,\n sx: legendDesc.style\n },\n primary: legendCaption,\n secondary: legendDesc.text\n }) : null;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n open: true,\n onClose: handleCancel\n }, taskDialogRenderer ? taskDialogRenderer({\n task,\n taskAttributes,\n taskColors,\n close: handleCancel\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TASK_EDITOR_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.TASK_EDITOR_LIST\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n primary: numbCaption,\n secondary: task.numb\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n primary: nameCaption,\n secondary: task.fullName\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n component: \"span\"\n },\n primary: startCaption,\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n error: !state.start,\n disabled: task.readOnly === true || task.readOnlyDates === true,\n name: \"start\",\n fullWidth: true,\n required: true,\n InputLabelProps: {\n shrink: true\n },\n type: \"date\",\n value: state.start,\n onChange: handlePeriodChanged,\n variant: \"standard\",\n size: \"small\",\n margin: \"normal\"\n })\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n component: \"span\"\n },\n primary: endCaption,\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n error: !state.end,\n disabled: task.readOnly === true || task.readOnlyDates === true,\n name: \"end\",\n fullWidth: true,\n required: true,\n InputLabelProps: {\n shrink: true\n },\n type: \"date\",\n value: state.end,\n onChange: handlePeriodChanged,\n variant: \"standard\",\n size: \"small\",\n margin: \"normal\"\n })\n })), hasValue(task.progress) || legend || dispTaskAttributes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null, hasValue(task.progress) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n component: \"span\"\n },\n primary: `${progressCaption}${task.readOnly === true || task.readOnlyProgress === true ? ` (${task.progress}%)` : \"\"}`,\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: task.readOnly === true || task.readOnlyProgress === true,\n defaultValue: task.progress,\n valueLabelDisplay: \"auto\",\n onChange: handleProgressChanged\n })\n })), legend || dispTaskAttributes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null) : null, legend ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, legend), dispTaskAttributes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null) : null, dispTaskAttributes.length > 0 ? dispTaskAttributes.map((attr, i) => {\n const defaultView = task[attr.name];\n const customView = taskAttributeRenderer ? taskAttributeRenderer({\n task,\n attribute: attr\n }) : null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n primary: attr.caption,\n secondaryTypographyProps: {\n component: \"span\"\n },\n secondary: customView ? customView : defaultView\n })), i < dispTaskAttributes.length - 1 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null);\n }) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n disabled: !state.start || !state.end || task.readOnly,\n onClick: handleOk\n }, okBtnCaption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: handleCancel\n }, cancelBtnCaption))));\n};\n\n//Контроль свойств - Редактор задачи\nP8PGanttTaskEditor.propTypes = {\n task: P8P_GANTT_TASK_SHAPE,\n taskAttributes: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_ATTRIBUTE_SHAPE),\n taskColors: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_COLOR_SHAPE),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskAttributeRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskDialogRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n numbCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n nameCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n startCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n endCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n progressCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n legendCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n cancelBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диаграмма Ганта\nconst P8PGantt = ({\n containerStyle,\n title,\n titleStyle,\n onTitleClick,\n zoomBar,\n readOnly,\n readOnlyDates,\n readOnlyProgress,\n zoom,\n tasks,\n taskAttributes,\n taskColors,\n onTaskDatesChange,\n onTaskProgressChange,\n taskAttributeRenderer,\n taskDialogRenderer,\n noDataFoundText,\n numbTaskEditorCaption,\n nameTaskEditorCaption,\n startTaskEditorCaption,\n endTaskEditorCaption,\n progressTaskEditorCaption,\n legendTaskEditorCaption,\n okTaskEditorBtnCaption,\n cancelTaskEditorBtnCaption\n}) => {\n //Собственное состояние\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n noData: true,\n gantt: null,\n zoom: P8P_GANTT_ZOOM.includes(zoom) ? zoom : 3,\n editTask: null\n });\n\n //Ссылки на DOM\n const svgContainerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Отображение диаграммы\n const showGantt = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n if (!state.gantt) {\n // eslint-disable-next-line no-undef\n const gantt = new Gantt(\"#__gantt__\", tasks, {\n view_mode: P8P_GANTT_ZOOM_VIEW_MODES[state.zoom],\n date_format: \"YYYY-MM-DD\",\n language: \"ru\",\n readOnly,\n readOnlyDates,\n readOnlyProgress,\n on_date_change: (task, start, end, isMain) => onTaskDatesChange ? onTaskDatesChange({\n task,\n start,\n end,\n isMain\n }) : null,\n on_progress_change: (task, progress) => onTaskProgressChange ? onTaskProgressChange({\n task,\n progress\n }) : null,\n on_click: openTaskEditor\n });\n setState(pv => ({\n ...pv,\n gantt,\n noData: false\n }));\n } else {\n state.gantt.refresh(tasks);\n setState(pv => ({\n ...pv,\n noData: false\n }));\n }\n }, [state.gantt, state.zoom, readOnly, readOnlyDates, readOnlyProgress, tasks, onTaskDatesChange, onTaskProgressChange]);\n\n //Обновление масштаба диаграммы\n const handleZoomChange = direction => setState(pv => ({\n ...pv,\n zoom: pv.zoom + direction < 0 ? 0 : pv.zoom + direction >= P8P_GANTT_ZOOM.length ? P8P_GANTT_ZOOM.length - 1 : pv.zoom + direction\n }));\n\n //Открытие редактора задачи\n const openTaskEditor = task => setState(pv => ({\n ...pv,\n editTask: {\n ...task\n }\n }));\n\n //При сохранении задачи в редакторе\n const handleTaskEditorSave = ({\n task,\n start,\n end,\n progress\n }) => {\n setState(pv => ({\n ...pv,\n editTask: null\n }));\n if (onTaskDatesChange && (task.start != start || task.end != end)) onTaskDatesChange({\n task,\n start,\n end,\n isMain: true\n });\n if (onTaskProgressChange && task.progress != progress) onTaskProgressChange({\n task,\n progress\n });\n };\n\n //При закрытии редактора задачи без сохранения\n const handleTaskEditorCancel = () => setState(pv => ({\n ...pv,\n editTask: null\n }));\n\n //При изменении масштаба\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (state.gantt) state.gantt.change_view_mode(P8P_GANTT_ZOOM_VIEW_MODES[state.zoom]);\n }, [state.gantt, state.zoom]);\n\n //При изменении списка задач\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (Array.isArray(tasks) && tasks.length > 0) showGantt();else setState(pv => ({\n ...pv,\n noData: true\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tasks]);\n\n //При подключении компонента к старице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n svgContainerRef.current.children[0].classList.add(\"scroll\");\n }, []);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: {\n ...(containerStyle ? containerStyle : {})\n }\n }, state.gantt && state.noData ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_app_message__WEBPACK_IMPORTED_MODULE_1__.P8PAppInlineError, {\n text: noDataFoundText\n }) : null, state.gantt && !state.noData && title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n p: 1,\n sx: {\n ...STYLES.GANTT_TITLE,\n ...(titleStyle ? titleStyle : {})\n },\n align: \"center\",\n color: \"textSecondary\",\n variant: \"subtitle1\"\n }, onTitleClick ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n underline: \"hover\",\n onClick: () => onTitleClick()\n }, title) : title) : null, state.gantt && !state.noData && zoomBar ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n p: 1,\n sx: STYLES.GANTT_ZOOM\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: () => handleZoomChange(-1),\n disabled: state.zoom == 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null, \"zoom_in\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: () => handleZoomChange(1),\n disabled: state.zoom == P8P_GANTT_ZOOM.length - 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null, \"zoom_out\"))) : null, state.editTask ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PGanttTaskEditor, {\n task: state.editTask,\n taskAttributes: taskAttributes,\n taskColors: taskColors,\n onOk: handleTaskEditorSave,\n onCancel: handleTaskEditorCancel,\n taskAttributeRenderer: taskAttributeRenderer,\n taskDialogRenderer: taskDialogRenderer,\n numbCaption: numbTaskEditorCaption,\n nameCaption: nameTaskEditorCaption,\n startCaption: startTaskEditorCaption,\n endCaption: endTaskEditorCaption,\n progressCaption: progressTaskEditorCaption,\n legendCaption: legendTaskEditorCaption,\n okBtnCaption: okTaskEditorBtnCaption,\n cancelBtnCaption: cancelTaskEditorBtnCaption\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.GANTT(state.noData, title, zoomBar),\n ref: svgContainerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n id: \"__gantt__\",\n width: \"100%\"\n })));\n};\n\n//Контроль свойств - Диаграмма Ганта\nP8PGantt.propTypes = {\n containerStyle: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n titleStyle: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n onTitleClick: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n zoomBar: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyDates: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyProgress: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n zoom: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n tasks: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_SHAPE).isRequired,\n taskAttributes: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_ATTRIBUTE_SHAPE),\n taskColors: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_COLOR_SHAPE),\n onTaskDatesChange: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onTaskProgressChange: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskAttributeRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskDialogRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n noDataFoundText: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n numbTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n nameTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n startTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n endTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n progressTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n legendTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n okTaskEditorBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n cancelTaskEditorBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_gantt.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PGantt: () => (/* binding */ P8PGantt),\n/* harmony export */ P8P_GANTT_TASK_ATTRIBUTE_SHAPE: () => (/* binding */ P8P_GANTT_TASK_ATTRIBUTE_SHAPE),\n/* harmony export */ P8P_GANTT_TASK_COLOR_SHAPE: () => (/* binding */ P8P_GANTT_TASK_COLOR_SHAPE),\n/* harmony export */ P8P_GANTT_TASK_SHAPE: () => (/* binding */ P8P_GANTT_TASK_SHAPE),\n/* harmony export */ taskLegendDesc: () => (/* binding */ taskLegendDesc)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\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/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Slider/Slider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _p8p_app_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_app_message */ \"./app/components/p8p_app_message.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//Уровни масштаба\nconst P8P_GANTT_ZOOM = [0, 1, 2, 3, 4, 5];\n\n//Уровни масштаба (строковые наименования в терминах библиотеки)\nconst P8P_GANTT_ZOOM_VIEW_MODES = {\n 0: \"Quarter Day\",\n 1: \"Half Day\",\n 2: \"Day\",\n 3: \"Week\",\n 4: \"Month\",\n 5: \"Year\"\n};\n\n//Структура задачи\nconst P8P_GANTT_TASK_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n id: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n rn: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number).isRequired,\n numb: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n fullName: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n start: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n end: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n progress: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n dependencies: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array),\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyDates: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyProgress: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n bgColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n textColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n bgProgressColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)\n});\n\n//Структура динамического атрибута задачи\nconst P8P_GANTT_TASK_ATTRIBUTE_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n visible: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool).isRequired\n});\n\n//Структура описания цвета задачи\nconst P8P_GANTT_TASK_COLOR_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n bgColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n textColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n bgProgressColor: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n desc: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n});\n\n//Высота заголовка\nconst TITLE_HEIGHT = \"44px\";\n\n//Высота панели масштабирования\nconst ZOOM_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n TASK_EDITOR_CONTENT: {\n minWidth: 400,\n overflowX: \"auto\"\n },\n TASK_EDITOR_LIST: {\n width: \"100%\",\n minWidth: 300,\n maxWidth: 700,\n bgcolor: \"background.paper\"\n },\n GANTT_TITLE: {\n height: TITLE_HEIGHT\n },\n GANTT_ZOOM: {\n height: ZOOM_HEIGHT\n },\n GANTT: (noData, title, zoomBar) => ({\n height: `calc(100% - ${zoomBar ? ZOOM_HEIGHT : \"0px\"} - ${title ? TITLE_HEIGHT : \"0px\"})`,\n display: noData ? \"none\" : \"\"\n })\n};\n\n//--------------------------------\n//Вспомогательные классы и функции\n//--------------------------------\n\n//Проверка существования значения\nconst hasValue = value => typeof value !== \"undefined\" && value !== null && value !== \"\";\n\n//Формирование описания для легенды\nconst taskLegendDesc = ({\n task,\n taskColors\n}) => {\n if (Array.isArray(taskColors) && taskColors.length > 0) {\n const colorDesc = taskColors.find(color => task.bgColor === color.bgColor && task.textColor === color.textColor && task.bgProgressColor === color.bgProgressColor);\n if (colorDesc) return {\n text: colorDesc.desc,\n style: {\n ...(colorDesc.bgProgressColor ? {\n background: `linear-gradient(to right, ${colorDesc.bgProgressColor} ,${colorDesc.bgColor ? colorDesc.bgColor : \"transparent\"})`\n } : colorDesc.bgColor ? {\n backgroundColor: colorDesc.bgColor\n } : {}),\n ...(colorDesc.textColor ? {\n color: colorDesc.textColor\n } : {})\n }\n };else return null;\n } else return null;\n};\n\n//Редактор задачи\nconst P8PGanttTaskEditor = ({\n task,\n taskAttributes,\n taskColors,\n onOk,\n onCancel,\n taskAttributeRenderer,\n taskDialogRenderer,\n taskDialogProps,\n numbCaption,\n nameCaption,\n startCaption,\n endCaption,\n progressCaption,\n legendCaption,\n okBtnCaption,\n cancelBtnCaption\n}) => {\n //Собственное состояние\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n start: task.start,\n end: task.end,\n progress: task.progress\n });\n\n //Отображаемые атрибуты\n const dispTaskAttributes = Array.isArray(taskAttributes) && taskAttributes.length > 0 ? taskAttributes.filter(attr => attr.visible && hasValue(task[attr.name])) : [];\n\n //При сохранении\n const handleOk = () => onOk && state.start && state.end ? onOk({\n task,\n start: state.start,\n end: state.end,\n progress: state.progress\n }) : null;\n\n //При отмене\n const handleCancel = () => onCancel ? onCancel() : null;\n\n //При изменении сроков\n const handlePeriodChanged = e => setState(prev => ({\n ...prev,\n [e.target.name]: e.target.value\n }));\n\n //При изменении прогресса\n const handleProgressChanged = (e, newValue) => setState(prev => ({\n ...prev,\n progress: newValue\n }));\n\n //Описание легенды для задачи\n const legendDesc = taskLegendDesc({\n task,\n taskColors\n });\n let legend = legendDesc ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n p: 1,\n sx: legendDesc.style\n },\n primary: legendCaption,\n secondary: legendDesc.text\n }) : null;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], _extends({\n open: true,\n onClose: handleCancel\n }, taskDialogProps ? taskDialogProps : {}), taskDialogRenderer ? taskDialogRenderer({\n task,\n taskAttributes,\n taskColors,\n close: handleCancel\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TASK_EDITOR_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.TASK_EDITOR_LIST\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n primary: numbCaption,\n secondary: task.numb\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n primary: nameCaption,\n secondary: task.fullName\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n component: \"span\"\n },\n primary: startCaption,\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n error: !state.start,\n disabled: task.readOnly === true || task.readOnlyDates === true,\n name: \"start\",\n fullWidth: true,\n required: true,\n InputLabelProps: {\n shrink: true\n },\n type: \"date\",\n value: state.start,\n onChange: handlePeriodChanged,\n variant: \"standard\",\n size: \"small\",\n margin: \"normal\"\n })\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n component: \"span\"\n },\n primary: endCaption,\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n error: !state.end,\n disabled: task.readOnly === true || task.readOnlyDates === true,\n name: \"end\",\n fullWidth: true,\n required: true,\n InputLabelProps: {\n shrink: true\n },\n type: \"date\",\n value: state.end,\n onChange: handlePeriodChanged,\n variant: \"standard\",\n size: \"small\",\n margin: \"normal\"\n })\n })), hasValue(task.progress) || legend || dispTaskAttributes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null, hasValue(task.progress) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n secondaryTypographyProps: {\n component: \"span\"\n },\n primary: `${progressCaption}${task.readOnly === true || task.readOnlyProgress === true ? ` (${task.progress}%)` : \"\"}`,\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: task.readOnly === true || task.readOnlyProgress === true,\n defaultValue: task.progress,\n valueLabelDisplay: \"auto\",\n onChange: handleProgressChanged\n })\n })), legend || dispTaskAttributes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null) : null, legend ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, legend), dispTaskAttributes.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null) : null, dispTaskAttributes.length > 0 ? dispTaskAttributes.map((attr, i) => {\n const defaultView = task[attr.name];\n const customView = taskAttributeRenderer ? taskAttributeRenderer({\n task,\n attribute: attr\n }) : null;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n alignItems: \"flex-start\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n primary: attr.caption,\n secondaryTypographyProps: {\n component: \"span\"\n },\n secondary: customView ? customView : defaultView\n })), i < dispTaskAttributes.length - 1 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"li\"\n }) : null);\n }) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n disabled: !state.start || !state.end || task.readOnly,\n onClick: handleOk\n }, okBtnCaption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: handleCancel\n }, cancelBtnCaption))));\n};\n\n//Контроль свойств - Редактор задачи\nP8PGanttTaskEditor.propTypes = {\n task: P8P_GANTT_TASK_SHAPE,\n taskAttributes: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_ATTRIBUTE_SHAPE),\n taskColors: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_COLOR_SHAPE),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskAttributeRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskDialogRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskDialogProps: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n numbCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n nameCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n startCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n endCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n progressCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n legendCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n cancelBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диаграмма Ганта\nconst P8PGantt = ({\n containerStyle,\n title,\n titleStyle,\n onTitleClick,\n zoomBar,\n readOnly,\n readOnlyDates,\n readOnlyProgress,\n zoom,\n tasks,\n taskAttributes,\n taskColors,\n onTaskDatesChange,\n onTaskProgressChange,\n taskAttributeRenderer,\n taskDialogRenderer,\n taskDialogProps,\n noDataFoundText,\n numbTaskEditorCaption,\n nameTaskEditorCaption,\n startTaskEditorCaption,\n endTaskEditorCaption,\n progressTaskEditorCaption,\n legendTaskEditorCaption,\n okTaskEditorBtnCaption,\n cancelTaskEditorBtnCaption\n}) => {\n //Собственное состояние\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n noData: true,\n gantt: null,\n zoom: P8P_GANTT_ZOOM.includes(zoom) ? zoom : 3,\n editTask: null\n });\n\n //Ссылки на DOM\n const svgContainerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Отображение диаграммы\n const showGantt = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n if (!state.gantt) {\n // eslint-disable-next-line no-undef\n const gantt = new Gantt(\"#__gantt__\", tasks, {\n view_mode: P8P_GANTT_ZOOM_VIEW_MODES[state.zoom],\n date_format: \"YYYY-MM-DD\",\n language: \"ru\",\n readOnly,\n readOnlyDates,\n readOnlyProgress,\n on_date_change: (task, start, end, isMain) => onTaskDatesChange ? onTaskDatesChange({\n task,\n start,\n end,\n isMain\n }) : null,\n on_progress_change: (task, progress) => onTaskProgressChange ? onTaskProgressChange({\n task,\n progress\n }) : null,\n on_click: openTaskEditor\n });\n setState(pv => ({\n ...pv,\n gantt,\n noData: false\n }));\n } else {\n state.gantt.refresh(tasks);\n setState(pv => ({\n ...pv,\n noData: false\n }));\n }\n }, [state.gantt, state.zoom, readOnly, readOnlyDates, readOnlyProgress, tasks, onTaskDatesChange, onTaskProgressChange]);\n\n //Обновление масштаба диаграммы\n const handleZoomChange = direction => setState(pv => ({\n ...pv,\n zoom: pv.zoom + direction < 0 ? 0 : pv.zoom + direction >= P8P_GANTT_ZOOM.length ? P8P_GANTT_ZOOM.length - 1 : pv.zoom + direction\n }));\n\n //Открытие редактора задачи\n const openTaskEditor = task => setState(pv => ({\n ...pv,\n editTask: {\n ...task\n }\n }));\n\n //При сохранении задачи в редакторе\n const handleTaskEditorSave = ({\n task,\n start,\n end,\n progress\n }) => {\n setState(pv => ({\n ...pv,\n editTask: null\n }));\n if (onTaskDatesChange && (task.start != start || task.end != end)) onTaskDatesChange({\n task,\n start,\n end,\n isMain: true\n });\n if (onTaskProgressChange && task.progress != progress) onTaskProgressChange({\n task,\n progress\n });\n };\n\n //При закрытии редактора задачи без сохранения\n const handleTaskEditorCancel = () => setState(pv => ({\n ...pv,\n editTask: null\n }));\n\n //При изменении масштаба\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (state.gantt) state.gantt.change_view_mode(P8P_GANTT_ZOOM_VIEW_MODES[state.zoom]);\n }, [state.gantt, state.zoom]);\n\n //При изменении списка задач\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (Array.isArray(tasks) && tasks.length > 0) showGantt();else setState(pv => ({\n ...pv,\n noData: true\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [tasks]);\n\n //При подключении компонента к старице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n svgContainerRef.current.children[0].classList.add(\"scroll\");\n }, []);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: {\n ...(containerStyle ? containerStyle : {})\n }\n }, state.gantt && state.noData ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_app_message__WEBPACK_IMPORTED_MODULE_1__.P8PAppInlineError, {\n text: noDataFoundText\n }) : null, state.gantt && !state.noData && title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n p: 1,\n sx: {\n ...STYLES.GANTT_TITLE,\n ...(titleStyle ? titleStyle : {})\n },\n align: \"center\",\n color: \"textSecondary\",\n variant: \"subtitle1\"\n }, onTitleClick ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n underline: \"hover\",\n onClick: () => onTitleClick()\n }, title) : title) : null, state.gantt && !state.noData && zoomBar ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n p: 1,\n sx: STYLES.GANTT_ZOOM\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: () => handleZoomChange(-1),\n disabled: state.zoom == 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null, \"zoom_in\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: () => handleZoomChange(1),\n disabled: state.zoom == P8P_GANTT_ZOOM.length - 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null, \"zoom_out\"))) : null, state.editTask ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PGanttTaskEditor, {\n task: state.editTask,\n taskAttributes: taskAttributes,\n taskColors: taskColors,\n onOk: handleTaskEditorSave,\n onCancel: handleTaskEditorCancel,\n taskAttributeRenderer: taskAttributeRenderer,\n taskDialogRenderer: taskDialogRenderer,\n taskDialogProps: taskDialogProps,\n numbCaption: numbTaskEditorCaption,\n nameCaption: nameTaskEditorCaption,\n startCaption: startTaskEditorCaption,\n endCaption: endTaskEditorCaption,\n progressCaption: progressTaskEditorCaption,\n legendCaption: legendTaskEditorCaption,\n okBtnCaption: okTaskEditorBtnCaption,\n cancelBtnCaption: cancelTaskEditorBtnCaption\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.GANTT(state.noData, title, zoomBar),\n ref: svgContainerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n id: \"__gantt__\",\n width: \"100%\"\n })));\n};\n\n//Контроль свойств - Диаграмма Ганта\nP8PGantt.propTypes = {\n containerStyle: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n title: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n titleStyle: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n onTitleClick: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n zoomBar: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnly: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyDates: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n readOnlyProgress: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n zoom: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n tasks: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_SHAPE).isRequired,\n taskAttributes: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_ATTRIBUTE_SHAPE),\n taskColors: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_GANTT_TASK_COLOR_SHAPE),\n onTaskDatesChange: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onTaskProgressChange: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskAttributeRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskDialogRenderer: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n taskDialogProps: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n noDataFoundText: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n numbTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n nameTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n startTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n endTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n progressTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n legendTaskEditorCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n okTaskEditorBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n cancelTaskEditorBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_gantt.js?"); /***/ }), @@ -236,7 +236,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 */ BackEndContext: () => (/* binding */ BackEndContext),\n/* harmony export */ \"BackEndСtx\": () => (/* binding */ BackEndСtx)\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_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./messaging */ \"./app/context/messaging.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Взаимодействие с серверным API\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Контекст сообщений\n\n//---------\n//Константы\n//---------\n\n//Структура объекта клиента\nconst BACKEND_CONTEXT_CLIENT_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_2___default().shape({\n SERV_DATA_TYPE_STR: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n SERV_DATA_TYPE_NUMB: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n SERV_DATA_TYPE_DATE: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n SERV_DATA_TYPE_CLOB: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n isRespErr: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired,\n getRespErrMessage: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired,\n getRespPayload: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired,\n executeStored: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired,\n getConfig: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Контекст взаимодействия с серверным API\nconst BackEndСtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста взаимодействия с серверным API\nconst BackEndContext = ({\n client,\n children\n}) => {\n //Подключение к контексту сообщений\n const {\n showLoader,\n hideLoader,\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Проверка ответа на наличие ошибки\n const isRespErr = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(resp => client.isRespErr(resp), [client]);\n\n //Извлечение ошибки из ответа\n const getRespErrMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(resp => client.getRespErrMessage(resp), [client]);\n\n //Извлечение полезного содержимого из ответа\n const getRespPayload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(resp => client.getRespPayload(resp), [client]);\n\n //Запуск хранимой процедуры\n const executeStored = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n stored,\n args,\n respArg,\n isArray,\n tagValueProcessor,\n attributeValueProcessor,\n loader = true,\n loaderMessage = \"\",\n throwError = true,\n showErrorMessage = true,\n fullResponse = false,\n spreadOutArguments = true\n } = {}) => {\n try {\n if (loader !== false) showLoader(loaderMessage);\n let result = await client.executeStored({\n stored,\n args,\n respArg,\n isArray,\n tagValueProcessor,\n attributeValueProcessor,\n throwError,\n spreadOutArguments\n });\n if (fullResponse === true || isRespErr(result)) return result;else return result.XPAYLOAD;\n } catch (e) {\n if (showErrorMessage) showMsgErr(e.message);\n throw e;\n } finally {\n if (loader !== false) hideLoader();\n }\n }, [showLoader, hideLoader, isRespErr, showMsgErr, client]);\n\n //Загрузка настроек панелей\n const getConfig = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n loader = true,\n loaderMessage = \"\",\n throwError = true,\n showErrorMessage = true\n } = {}) => {\n try {\n if (loader !== false) showLoader(loaderMessage);\n let result = await client.getConfig({\n throwError\n });\n return result;\n } catch (e) {\n if (showErrorMessage) showMsgErr(e.message);\n throw e;\n } finally {\n if (loader !== false) hideLoader();\n }\n }, [showLoader, hideLoader, showMsgErr, client]);\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(BackEndСtx.Provider, {\n value: {\n SERV_DATA_TYPE_STR: client.SERV_DATA_TYPE_STR,\n SERV_DATA_TYPE_NUMB: client.SERV_DATA_TYPE_NUMB,\n SERV_DATA_TYPE_DATE: client.SERV_DATA_TYPE_DATE,\n SERV_DATA_TYPE_CLOB: client.SERV_DATA_TYPE_CLOB,\n isRespErr,\n getRespErrMessage,\n getRespPayload,\n executeStored,\n getConfig\n }\n }, children);\n};\n\n//Контроль свойств - Провайдер контекста взаимодействия с серверным API\nBackEndContext.propTypes = {\n client: BACKEND_CONTEXT_CLIENT_SHAPE.isRequired,\n children: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_2___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_2___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/backend.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BackEndContext: () => (/* binding */ BackEndContext),\n/* harmony export */ \"BackEndСtx\": () => (/* binding */ BackEndСtx)\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_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/utils */ \"./app/core/utils.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Взаимодействие с серверным API\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Контекст сообщений\n //Вспомогательные функции\n\n//---------\n//Константы\n//---------\n\n//Структура объекта клиента\nconst BACKEND_CONTEXT_CLIENT_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n SERV_DATA_TYPE_STR: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n SERV_DATA_TYPE_NUMB: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n SERV_DATA_TYPE_DATE: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n SERV_DATA_TYPE_CLOB: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n isRespErr: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired,\n getRespErrMessage: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired,\n getRespPayload: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired,\n executeStored: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired,\n getConfig: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Контекст взаимодействия с серверным API\nconst BackEndСtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста взаимодействия с серверным API\nconst BackEndContext = ({\n client,\n children\n}) => {\n //Подключение к контексту сообщений\n const {\n showLoader,\n hideLoader,\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Проверка ответа на наличие ошибки\n const isRespErr = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(resp => client.isRespErr(resp), [client]);\n\n //Извлечение ошибки из ответа\n const getRespErrMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(resp => client.getRespErrMessage(resp), [client]);\n\n //Извлечение полезного содержимого из ответа\n const getRespPayload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(resp => client.getRespPayload(resp), [client]);\n\n //Запуск хранимой процедуры\n const executeStored = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n stored,\n args,\n respArg,\n isArray,\n tagValueProcessor,\n attributeValueProcessor,\n loader = true,\n loaderMessage = \"\",\n throwError = true,\n showErrorMessage = true,\n fullResponse = false,\n spreadOutArguments = true\n } = {}) => {\n try {\n if (loader !== false) showLoader(loaderMessage);\n let result = await client.executeStored({\n stored,\n args,\n respArg,\n isArray,\n tagValueProcessor,\n attributeValueProcessor,\n throwError,\n spreadOutArguments\n });\n if (fullResponse === true || isRespErr(result)) return result;else return result.XPAYLOAD;\n } catch (e) {\n if (showErrorMessage) {\n //Разбираем текст ошибки\n let errMsg = (0,_core_utils__WEBPACK_IMPORTED_MODULE_2__.formatErrorMessage)(e.message);\n //Отображаем ошибку\n showMsgErr(errMsg.text, null, errMsg.fullErrorText);\n }\n throw e;\n } finally {\n if (loader !== false) hideLoader();\n }\n }, [showLoader, hideLoader, isRespErr, showMsgErr, client]);\n\n //Загрузка настроек панелей\n const getConfig = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async ({\n loader = true,\n loaderMessage = \"\",\n throwError = true,\n showErrorMessage = true\n } = {}) => {\n try {\n if (loader !== false) showLoader(loaderMessage);\n let result = await client.getConfig({\n throwError\n });\n return result;\n } catch (e) {\n if (showErrorMessage) showMsgErr(e.message);\n throw e;\n } finally {\n if (loader !== false) hideLoader();\n }\n }, [showLoader, hideLoader, showMsgErr, client]);\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(BackEndСtx.Provider, {\n value: {\n SERV_DATA_TYPE_STR: client.SERV_DATA_TYPE_STR,\n SERV_DATA_TYPE_NUMB: client.SERV_DATA_TYPE_NUMB,\n SERV_DATA_TYPE_DATE: client.SERV_DATA_TYPE_DATE,\n SERV_DATA_TYPE_CLOB: client.SERV_DATA_TYPE_CLOB,\n isRespErr,\n getRespErrMessage,\n getRespPayload,\n executeStored,\n getConfig\n }\n }, children);\n};\n\n//Контроль свойств - Провайдер контекста взаимодействия с серверным API\nBackEndContext.propTypes = {\n client: BACKEND_CONTEXT_CLIENT_SHAPE.isRequired,\n children: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/backend.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 */ MessagingContext: () => (/* binding */ MessagingContext),\n/* harmony export */ \"MessagingСtx\": () => (/* binding */ MessagingСtx)\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_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _components_p8p_app_progress__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/p8p_app_progress */ \"./app/components/p8p_app_progress.js\");\n/* harmony import */ var _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/p8p_app_message */ \"./app/components/p8p_app_message.js\");\n/* harmony import */ var _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./messaging_reducer */ \"./app/context/messaging_reducer.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Сообщения\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Индикатор процесса\n //Диалог сообщения\n //Редьюсер состояния\n\n//---------\n//Константы\n//---------\n\n//Структура объекта с описанием типовых заголовков\nconst MESSAGING_CONTEXT_TITLES_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n ERR: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n WARN: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n INFO: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//Структура объекта с описанием типовых текстов\nconst MESSAGING_CONTEXT_TEXTS_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n LOADING: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//Структура объекта с описанием типовых кнопок\nconst MESSAGING_CONTEXT_BUTTONS_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n CLOSE: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n OK: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n CANCEL: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Контекст сообщений\nconst MessagingСtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста сообщений\nconst MessagingContext = ({\n titles,\n texts,\n buttons,\n children\n}) => {\n //Подключим редьюсер состояния\n const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.messagingReducer, _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.INITIAL_STATE);\n\n //Отображение загрузчика\n const showLoader = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(message => dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.SHOW_LOADER,\n payload: message\n }), []);\n\n //Сокрытие загрузчика\n const hideLoader = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.HIDE_LOADER\n }), []);\n\n //Отображение сообщения\n const showMsg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((type, text, msgOnOk = null, msgOnCancel = null) => dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.SHOW_MSG,\n payload: {\n type,\n text,\n msgOnOk,\n msgOnCancel\n }\n }), []);\n\n //Отображение сообщения - ошибка\n const showMsgErr = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, msgOnOk = null) => showMsg(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.ERR, text, msgOnOk), [showMsg]);\n\n //Отображение сообщения - информация\n const showMsgInfo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, msgOnOk = null) => showMsg(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.INFO, text, msgOnOk), [showMsg]);\n\n //Отображение сообщения - предупреждение\n const showMsgWarn = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, msgOnOk = null, msgOnCancel = null) => showMsg(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.WARN, text, msgOnOk, msgOnCancel), [showMsg]);\n\n //Сокрытие сообщения\n const hideMsg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((cancel = false) => {\n dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.HIDE_MSG\n });\n if (!cancel && state.msgOnOk) state.msgOnOk();\n if (cancel && state.msgOnCancel) state.msgOnCancel();\n }, [state]);\n\n //Отработка нажатия на \"ОК\" в сообщении\n const handleMessageOkClick = () => {\n hideMsg(false);\n };\n\n //Отработка нажатия на \"Отмена\" в сообщении\n const handleMessageCancelClick = () => {\n hideMsg(true);\n };\n\n //Встраиваемое сообщение\n const InlineMsg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineMessage)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Встраиваемое сообщение об ошибке\n const InlineMsgErr = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineError)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Встраиваемое сообщение с информацией\n const InlineMsgInfo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineInfo)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Встраиваемое сообщение с предупреждением\n const InlineMsgWarn = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineWarn)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MessagingСtx.Provider, {\n value: {\n MSG_TYPE: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE,\n showLoader,\n hideLoader,\n showMsg,\n showMsgErr,\n showMsgInfo,\n showMsgWarn,\n hideMsg,\n InlineMsg,\n InlineMsgErr,\n InlineMsgInfo,\n InlineMsgWarn,\n msgState: state\n }\n }, state.loading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_progress__WEBPACK_IMPORTED_MODULE_1__.P8PAppProgress, {\n open: true,\n text: state.loadingMessage || texts.LOADING\n }) : null, state.msg ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppMessage, {\n open: true,\n variant: state.msgType,\n text: state.msgText,\n title: true,\n titleText: state.msgType == _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.ERR ? titles.ERR : state.msgType == _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.WARN ? titles.WARN : titles.INFO,\n okBtn: true,\n onOk: handleMessageOkClick,\n okBtnCaption: [_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.ERR, _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.INFO].includes(state.msgType) ? buttons.CLOSE : buttons.OK,\n cancelBtn: state.msgType == _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.WARN,\n onCancel: handleMessageCancelClick,\n cancelBtnCaption: buttons.CANCEL\n }) : null, children);\n};\n\n//Контроль свойств - Провайдер контекста сообщений\nMessagingContext.propTypes = {\n titles: MESSAGING_CONTEXT_TITLES_SHAPE,\n texts: MESSAGING_CONTEXT_TEXTS_SHAPE,\n buttons: MESSAGING_CONTEXT_BUTTONS_SHAPE,\n children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/messaging.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MessagingContext: () => (/* binding */ MessagingContext),\n/* harmony export */ \"MessagingСtx\": () => (/* binding */ MessagingСtx)\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_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _components_p8p_app_progress__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/p8p_app_progress */ \"./app/components/p8p_app_progress.js\");\n/* harmony import */ var _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/p8p_app_message */ \"./app/components/p8p_app_message.js\");\n/* harmony import */ var _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./messaging_reducer */ \"./app/context/messaging_reducer.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Сообщения\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //ReactJS\n //Контроль свойств компонента\n //Индикатор процесса\n //Диалог сообщения\n //Редьюсер состояния\n\n//---------\n//Константы\n//---------\n\n//Структура объекта с описанием типовых заголовков\nconst MESSAGING_CONTEXT_TITLES_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n ERR: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n WARN: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n INFO: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//Структура объекта с описанием типовых текстов\nconst MESSAGING_CONTEXT_TEXTS_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n LOADING: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//Структура объекта с описанием типовых кнопок\nconst MESSAGING_CONTEXT_BUTTONS_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_4___default().shape({\n CLOSE: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n OK: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n CANCEL: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n DETAIL: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired,\n HIDE: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string).isRequired\n});\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Контекст сообщений\nconst MessagingСtx = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)();\n\n//Провайдер контекста сообщений\nconst MessagingContext = ({\n titles,\n texts,\n buttons,\n children\n}) => {\n //Подключим редьюсер состояния\n const [state, dispatch] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.messagingReducer, _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.INITIAL_STATE);\n\n //Отображение загрузчика\n const showLoader = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(message => dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.SHOW_LOADER,\n payload: message\n }), []);\n\n //Сокрытие загрузчика\n const hideLoader = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.HIDE_LOADER\n }), []);\n\n //Отображение сообщения\n const showMsg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((type, text, msgOnOk = null, msgOnCancel = null, fullErrorText = null) => dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.SHOW_MSG,\n payload: {\n type,\n text,\n msgOnOk,\n msgOnCancel,\n fullErrorText\n }\n }), []);\n\n //Отображение сообщения - ошибка\n const showMsgErr = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, msgOnOk = null, fullErrorText = null) => showMsg(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.ERR, text, msgOnOk, null, fullErrorText), [showMsg]);\n\n //Отображение сообщения - информация\n const showMsgInfo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, msgOnOk = null) => showMsg(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.INFO, text, msgOnOk), [showMsg]);\n\n //Отображение сообщения - предупреждение\n const showMsgWarn = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, msgOnOk = null, msgOnCancel = null) => showMsg(_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.WARN, text, msgOnOk, msgOnCancel), [showMsg]);\n\n //Сокрытие сообщения\n const hideMsg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((cancel = false) => {\n dispatch({\n type: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_AT.HIDE_MSG\n });\n if (!cancel && state.msgOnOk) state.msgOnOk();\n if (cancel && state.msgOnCancel) state.msgOnCancel();\n }, [state]);\n\n //Отработка нажатия на \"ОК\" в сообщении\n const handleMessageOkClick = () => {\n hideMsg(false);\n };\n\n //Отработка нажатия на \"Отмена\" в сообщении\n const handleMessageCancelClick = () => {\n hideMsg(true);\n };\n\n //Встраиваемое сообщение\n const InlineMsg = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineMessage)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Встраиваемое сообщение об ошибке\n const InlineMsgErr = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineError)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Встраиваемое сообщение с информацией\n const InlineMsgInfo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineInfo)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Встраиваемое сообщение с предупреждением\n const InlineMsgWarn = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(props => (0,_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppInlineWarn)({\n okBtn: true,\n okBtnCaption: buttons.OK,\n ...props\n }), [buttons.OK]);\n\n //Вернём компонент провайдера\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MessagingСtx.Provider, {\n value: {\n MSG_TYPE: _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE,\n showLoader,\n hideLoader,\n showMsg,\n showMsgErr,\n showMsgInfo,\n showMsgWarn,\n hideMsg,\n InlineMsg,\n InlineMsgErr,\n InlineMsgInfo,\n InlineMsgWarn,\n msgState: state\n }\n }, state.loading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_progress__WEBPACK_IMPORTED_MODULE_1__.P8PAppProgress, {\n open: true,\n text: state.loadingMessage || texts.LOADING\n }) : null, state.msg ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_app_message__WEBPACK_IMPORTED_MODULE_2__.P8PAppMessage, {\n open: true,\n variant: state.msgType,\n text: state.msgText,\n fullErrorText: state.msgFullErrorText,\n title: true,\n titleText: state.msgType == _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.ERR ? titles.ERR : state.msgType == _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.WARN ? titles.WARN : titles.INFO,\n okBtn: true,\n onOk: handleMessageOkClick,\n okBtnCaption: [_messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.ERR, _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.INFO].includes(state.msgType) ? buttons.CLOSE : buttons.OK,\n cancelBtn: state.msgType == _messaging_reducer__WEBPACK_IMPORTED_MODULE_3__.MSG_TYPE.WARN,\n onCancel: handleMessageCancelClick,\n cancelBtnCaption: buttons.CANCEL,\n showErrMoreCaption: buttons.DETAIL,\n hideErrMoreCaption: buttons.HIDE\n }) : null, children);\n};\n\n//Контроль свойств - Провайдер контекста сообщений\nMessagingContext.propTypes = {\n titles: MESSAGING_CONTEXT_TITLES_SHAPE,\n texts: MESSAGING_CONTEXT_TEXTS_SHAPE,\n buttons: MESSAGING_CONTEXT_BUTTONS_SHAPE,\n children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)])\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/messaging.js?"); /***/ }), @@ -258,7 +258,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 */ INITIAL_STATE: () => (/* binding */ INITIAL_STATE),\n/* harmony export */ MSG_AT: () => (/* binding */ MSG_AT),\n/* harmony export */ MSG_TYPE: () => (/* binding */ MSG_TYPE),\n/* harmony export */ messagingReducer: () => (/* binding */ messagingReducer)\n/* harmony export */ });\n/* harmony import */ var _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/p8p_app_message */ \"./app/components/p8p_app_message.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Сообщения - редьюсер состояния\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Диалог сообщения\n\n//---------\n//Константы\n//---------\n\n//Типы действий\nconst MSG_AT = {\n SHOW_LOADER: \"SHOW_LOADER\",\n //Отображение индикатора загрузки\n HIDE_LOADER: \"HIDE_LOADER\",\n //Сокрытие индикатора загрузки\n SHOW_MSG: \"SHOW_MSG\",\n //Отображение сообщения\n HIDE_MSG: \"HIDE_MSG\" //Сокрытие сообщения\n};\n\n//Типы сообщений\nconst MSG_TYPE = {\n INFO: _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__.P8P_APP_MESSAGE_VARIANT.INFO,\n //Тип диалога - информация\n WARN: _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__.P8P_APP_MESSAGE_VARIANT.WARN,\n //Тип диалога - предупреждение\n ERR: _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__.P8P_APP_MESSAGE_VARIANT.ERR //Тип диалога - ошибка\n};\n\n//Состояние сообщений по умолчанию\nconst INITIAL_STATE = {\n loading: false,\n loadingMessage: \"\",\n msg: false,\n msgType: MSG_TYPE.ERR,\n msgText: null,\n msgOnOk: null,\n msgOnCancel: null\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Обработчики действий\nconst handlers = {\n //Отображение индикатора обработки данных\n [MSG_AT.SHOW_LOADER]: (state, {\n payload\n }) => ({\n ...state,\n loading: true,\n loadingMessage: payload\n }),\n //Сокрытие индикатора обработки данных\n [MSG_AT.HIDE_LOADER]: state => ({\n ...state,\n loading: false\n }),\n //Отображение сообщения\n [MSG_AT.SHOW_MSG]: (state, {\n payload\n }) => ({\n ...state,\n msg: true,\n msgType: payload.type || MSG_TYPE.APP_ERR,\n msgText: payload.text,\n msgOnOk: payload.msgOnOk,\n msgOnCancel: payload.msgOnCancel\n }),\n //Сокрытие сообщения\n [MSG_AT.HIDE_MSG]: state => ({\n ...state,\n msg: false,\n msgOnOk: null,\n msgOnCancel: null\n }),\n //Обработчик по умолчанию\n DEFAULT: state => state\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Константы\n\n\n//Редьюсер состояния\nconst messagingReducer = (state, action) => {\n //Подберём обработчик\n const handle = handlers[action.type] || handlers.DEFAULT;\n //Исполним его\n return handle(state, action);\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/messaging_reducer.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ INITIAL_STATE: () => (/* binding */ INITIAL_STATE),\n/* harmony export */ MSG_AT: () => (/* binding */ MSG_AT),\n/* harmony export */ MSG_TYPE: () => (/* binding */ MSG_TYPE),\n/* harmony export */ messagingReducer: () => (/* binding */ messagingReducer)\n/* harmony export */ });\n/* harmony import */ var _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/p8p_app_message */ \"./app/components/p8p_app_message.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Контекст: Сообщения - редьюсер состояния\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Диалог сообщения\n\n//---------\n//Константы\n//---------\n\n//Типы действий\nconst MSG_AT = {\n SHOW_LOADER: \"SHOW_LOADER\",\n //Отображение индикатора загрузки\n HIDE_LOADER: \"HIDE_LOADER\",\n //Сокрытие индикатора загрузки\n SHOW_MSG: \"SHOW_MSG\",\n //Отображение сообщения\n HIDE_MSG: \"HIDE_MSG\" //Сокрытие сообщения\n};\n\n//Типы сообщений\nconst MSG_TYPE = {\n INFO: _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__.P8P_APP_MESSAGE_VARIANT.INFO,\n //Тип диалога - информация\n WARN: _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__.P8P_APP_MESSAGE_VARIANT.WARN,\n //Тип диалога - предупреждение\n ERR: _components_p8p_app_message__WEBPACK_IMPORTED_MODULE_0__.P8P_APP_MESSAGE_VARIANT.ERR //Тип диалога - ошибка\n};\n\n//Состояние сообщений по умолчанию\nconst INITIAL_STATE = {\n loading: false,\n loadingMessage: \"\",\n msg: false,\n msgType: MSG_TYPE.ERR,\n msgText: null,\n msgFullErrorText: null,\n msgOnOk: null,\n msgOnCancel: null\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Обработчики действий\nconst handlers = {\n //Отображение индикатора обработки данных\n [MSG_AT.SHOW_LOADER]: (state, {\n payload\n }) => ({\n ...state,\n loading: true,\n loadingMessage: payload\n }),\n //Сокрытие индикатора обработки данных\n [MSG_AT.HIDE_LOADER]: state => ({\n ...state,\n loading: false\n }),\n //Отображение сообщения\n [MSG_AT.SHOW_MSG]: (state, {\n payload\n }) => ({\n ...state,\n msg: true,\n msgType: payload.type || MSG_TYPE.APP_ERR,\n msgText: payload.text,\n msgFullErrorText: payload.fullErrorText,\n msgOnOk: payload.msgOnOk,\n msgOnCancel: payload.msgOnCancel\n }),\n //Сокрытие сообщения\n [MSG_AT.HIDE_MSG]: state => ({\n ...state,\n msg: false,\n msgOnOk: null,\n msgOnCancel: null\n }),\n //Обработчик по умолчанию\n DEFAULT: state => state\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Константы\n\n\n//Редьюсер состояния\nconst messagingReducer = (state, action) => {\n //Подберём обработчик\n const handle = handlers[action.type] || handlers.DEFAULT;\n //Исполним его\n return handle(state, action);\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/context/messaging_reducer.js?"); /***/ }), @@ -291,7 +291,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 */ deepCopyObject: () => (/* binding */ deepCopyObject),\n/* harmony export */ formatDateJSONDateOnly: () => (/* binding */ formatDateJSONDateOnly),\n/* harmony export */ formatDateRF: () => (/* binding */ formatDateRF),\n/* harmony export */ formatDateTimeRF: () => (/* binding */ formatDateTimeRF),\n/* harmony export */ formatNumberRFCurrency: () => (/* binding */ formatNumberRFCurrency),\n/* harmony export */ genGUID: () => (/* binding */ genGUID),\n/* harmony export */ getDisplaySize: () => (/* binding */ getDisplaySize),\n/* harmony export */ hasValue: () => (/* binding */ hasValue),\n/* harmony export */ object2Base64XML: () => (/* binding */ object2Base64XML),\n/* harmony export */ xml2JSON: () => (/* binding */ xml2JSON)\n/* harmony export */ });\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_1__);\n/*\r\n Парус 8 - Панели мониторинга\r\n Ядро: Вспомогательные функции\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Конвертация XML в JSON и JSON в XML\n //Работа с датами\n\n//---------\n//Константы\n//---------\n\n//Коды типовых размеров экранов\nconst DISPLAY_SIZE_CODE = {\n XS: \"XS\",\n //eXtra Small - супер маленький экран\n SM: \"SM\",\n //Small - маленький экран\n MD: \"MD\",\n //Middle - средний экран\n LG: \"LG\" //Large - большой экран\n};\n\n//Типовые размеры экранов\nconst DISPLAY_SIZE = {\n [DISPLAY_SIZE_CODE.XS]: {\n WIDTH_FROM: 0,\n WIDTH_TO: 767\n },\n //eXtra Small - супер маленький экран < 768px\n [DISPLAY_SIZE_CODE.SM]: {\n WIDTH_FROM: 768,\n WIDTH_TO: 991\n },\n //Small - маленький экран >= 768px\n [DISPLAY_SIZE_CODE.MD]: {\n WIDTH_FROM: 992,\n WIDTH_TO: 1199\n },\n //Middle - средний экран >= 992px\n [DISPLAY_SIZE_CODE.LG]: {\n WIDTH_FROM: 1200,\n WIDTH_TO: 1000000\n } //Large - большой экран >= 1200px\n};\n\n//Типовые пути конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATHS = [\"XRESPOND.XPAYLOAD.XOUT_ARGUMENTS\", \"XRESPOND.XPAYLOAD.XDATA_GRID.rows\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef.values\", \"XRESPOND.XPAYLOAD.XDATA_GRID.groups\", \"XRESPOND.XPAYLOAD.XGANTT.taskAttributes\", \"XRESPOND.XPAYLOAD.XGANTT.taskColors\", \"XRESPOND.XPAYLOAD.XGANTT.tasks\", \"XRESPOND.XPAYLOAD.XGANTT.tasks.dependencies\", \"XRESPOND.XPAYLOAD.XCHART.labels\", \"XRESPOND.XPAYLOAD.XCHART.datasets\", \"XRESPOND.XPAYLOAD.XCHART.datasets.data\", \"XRESPOND.XPAYLOAD.XCHART.datasets.items\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.taskAttributes\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.columns\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.groups\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.tasks\"];\n\n//Типовые шаблоны конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATH_PATTERNS = [/(.*)XDATA_GRID.rows$/, /(.*)XDATA_GRID.columnsDef$/, /(.*)XDATA_GRID.columnsDef.values$/, /(.*)XDATA_GRID.groups$/, /(.*)XGANTT.taskAttributes$/, /(.*)XGANTT.taskColors$/, /(.*)XGANTT.tasks$/, /(.*)XGANTT.tasks.dependencies$/, /(.*)XCHART.labels$/, /(.*)XCHART.datasets$/, /(.*)XCHART.datasets.data$/, /(.*)XCHART.datasets.items$/, /(.*)XCYCLOGRAM.taskAttributes$/, /(.*)XCYCLOGRAM.columns$/, /(.*)XCYCLOGRAM.groups$/, /(.*)XCYCLOGRAM.tasks$/];\n\n//Типовой постфикс тега для массива (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_POSTFIX = \"__SYSTEM__ARRAY__\";\n\n//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)\nconst XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [/(.*)XDATA_GRID.columnsDef.name$/, /(.*)XDATA_GRID.columnsDef.caption$/, /(.*)XDATA_GRID.columnsDef.parent$/, /(.*)XDATA_GRID.groups.name$/, /(.*)XDATA_GRID.groups.caption$/, /(.*)XCYCLOGRAM.columns.name$/, /(.*)XCYCLOGRAM.groups.name$/];\n\n//-----------\n//Тело модуля\n//-----------\n\n//Проверка существования значения\nconst hasValue = value => typeof value !== \"undefined\" && value !== null && value !== \"\";\n\n//Проверка типа устройства\nconst getDisplaySize = () => {\n let res = DISPLAY_SIZE_CODE.MD;\n Object.keys(DISPLAY_SIZE).map(dspl => {\n if (window.innerWidth >= DISPLAY_SIZE[dspl].WIDTH_FROM && window.innerWidth <= DISPLAY_SIZE[dspl].WIDTH_TO) res = dspl;\n });\n return res;\n};\n\n//Глубокое копирование объекта\nconst deepCopyObject = obj => JSON.parse(JSON.stringify(obj));\n\n//Конвертация объекта в Base64 XML\nconst object2Base64XML = (obj, builderOptions) => {\n const builder = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLBuilder(builderOptions);\n return btoa(unescape(encodeURIComponent(builder.build(obj))));\n};\n\n//Конвертация XML в JSON\nconst xml2JSON = ({\n xmlDoc,\n isArray,\n transformTagName,\n tagValueProcessor,\n attributeValueProcessor,\n useDefaultPatterns = true\n}) => {\n return new Promise((resolve, reject) => {\n try {\n let opts = {\n ignoreDeclaration: true,\n ignoreAttributes: false,\n parseAttributeValue: true,\n attributeNamePrefix: \"\"\n };\n if (useDefaultPatterns) {\n opts.isArray = (name, jPath, isLeafNode, isAttribute) => XML_ALWAYS_ARRAY_PATHS.indexOf(jPath) !== -1 || XML_ALWAYS_ARRAY_PATH_PATTERNS.some(pattern => pattern.test(jPath)) || jPath.endsWith(XML_ALWAYS_ARRAY_POSTFIX) || (isArray ? isArray(name, jPath, isLeafNode, isAttribute) : undefined);\n opts.attributeValueProcessor = (name, val, jPath) => XML_ATTR_ALWAYS_STR_PATH_PATTERNS.some(pattern => pattern.test(`${jPath}.${name}`)) ? undefined : attributeValueProcessor ? attributeValueProcessor(name, val, jPath) : val;\n } else {\n if (isArray) opts.isArray = isArray;\n if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;\n }\n if (transformTagName) opts.transformTagName = transformTagName;\n if (tagValueProcessor) opts.tagValueProcessor = tagValueProcessor;\n const parser = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLParser(opts);\n resolve(parser.parse(xmlDoc));\n } catch (e) {\n reject(e);\n }\n });\n};\n\n//Форматирование даты в формат РФ\nconst formatDateRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY\") : null;\n\n//Форматирование даты и времени в формат РФ\nconst formatDateTimeRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY HH:mm:ss\") : null;\n\n//Форматирование даты в формат JSON (только дата, без времени)\nconst formatDateJSONDateOnly = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"YYYY-MM-DD\") : null;\n\n//Форматирование числа в \"Денежном\" формате РФ\nconst formatNumberRFCurrency = value => hasValue(value) ? new Intl.NumberFormat(\"ru-RU\", {\n minimumFractionDigits: 2\n}).format(value) : null;\n\n//Формирование уникального идентификатора\nconst genGUID = () => \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/core/utils.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ deepCopyObject: () => (/* binding */ deepCopyObject),\n/* harmony export */ formatDateJSONDateOnly: () => (/* binding */ formatDateJSONDateOnly),\n/* harmony export */ formatDateRF: () => (/* binding */ formatDateRF),\n/* harmony export */ formatDateTimeRF: () => (/* binding */ formatDateTimeRF),\n/* harmony export */ formatErrorMessage: () => (/* binding */ formatErrorMessage),\n/* harmony export */ formatNumberRFCurrency: () => (/* binding */ formatNumberRFCurrency),\n/* harmony export */ genGUID: () => (/* binding */ genGUID),\n/* harmony export */ getDisplaySize: () => (/* binding */ getDisplaySize),\n/* harmony export */ hasValue: () => (/* binding */ hasValue),\n/* harmony export */ object2Base64XML: () => (/* binding */ object2Base64XML),\n/* harmony export */ xml2JSON: () => (/* binding */ xml2JSON)\n/* harmony export */ });\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fast-xml-parser */ \"./node_modules/fast-xml-parser/src/fxp.js\");\n/* harmony import */ var fast_xml_parser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"./node_modules/dayjs/dayjs.min.js\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_1__);\n/*\r\n Парус 8 - Панели мониторинга\r\n Ядро: Вспомогательные функции\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Конвертация XML в JSON и JSON в XML\n //Работа с датами\n\n//---------\n//Константы\n//---------\n\n//Коды типовых размеров экранов\nconst DISPLAY_SIZE_CODE = {\n XS: \"XS\",\n //eXtra Small - супер маленький экран\n SM: \"SM\",\n //Small - маленький экран\n MD: \"MD\",\n //Middle - средний экран\n LG: \"LG\" //Large - большой экран\n};\n\n//Типовые размеры экранов\nconst DISPLAY_SIZE = {\n [DISPLAY_SIZE_CODE.XS]: {\n WIDTH_FROM: 0,\n WIDTH_TO: 767\n },\n //eXtra Small - супер маленький экран < 768px\n [DISPLAY_SIZE_CODE.SM]: {\n WIDTH_FROM: 768,\n WIDTH_TO: 991\n },\n //Small - маленький экран >= 768px\n [DISPLAY_SIZE_CODE.MD]: {\n WIDTH_FROM: 992,\n WIDTH_TO: 1199\n },\n //Middle - средний экран >= 992px\n [DISPLAY_SIZE_CODE.LG]: {\n WIDTH_FROM: 1200,\n WIDTH_TO: 1000000\n } //Large - большой экран >= 1200px\n};\n\n//Типовые пути конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATHS = [\"XRESPOND.XPAYLOAD.XOUT_ARGUMENTS\", \"XRESPOND.XPAYLOAD.XDATA_GRID.rows\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef\", \"XRESPOND.XPAYLOAD.XDATA_GRID.columnsDef.values\", \"XRESPOND.XPAYLOAD.XDATA_GRID.groups\", \"XRESPOND.XPAYLOAD.XGANTT.taskAttributes\", \"XRESPOND.XPAYLOAD.XGANTT.taskColors\", \"XRESPOND.XPAYLOAD.XGANTT.tasks\", \"XRESPOND.XPAYLOAD.XGANTT.tasks.dependencies\", \"XRESPOND.XPAYLOAD.XCHART.labels\", \"XRESPOND.XPAYLOAD.XCHART.datasets\", \"XRESPOND.XPAYLOAD.XCHART.datasets.data\", \"XRESPOND.XPAYLOAD.XCHART.datasets.items\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.taskAttributes\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.columns\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.groups\", \"XRESPOND.XPAYLOAD.XCYCLOGRAM.tasks\"];\n\n//Типовые шаблоны конвертации в массив (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_PATH_PATTERNS = [/(.*)XDATA_GRID.rows$/, /(.*)XDATA_GRID.columnsDef$/, /(.*)XDATA_GRID.columnsDef.values$/, /(.*)XDATA_GRID.groups$/, /(.*)XGANTT.taskAttributes$/, /(.*)XGANTT.taskColors$/, /(.*)XGANTT.tasks$/, /(.*)XGANTT.tasks.dependencies$/, /(.*)XCHART.labels$/, /(.*)XCHART.datasets$/, /(.*)XCHART.datasets.data$/, /(.*)XCHART.datasets.items$/, /(.*)XCYCLOGRAM.taskAttributes$/, /(.*)XCYCLOGRAM.columns$/, /(.*)XCYCLOGRAM.groups$/, /(.*)XCYCLOGRAM.tasks$/];\n\n//Типовой постфикс тега для массива (при переводе XML -> JSON)\nconst XML_ALWAYS_ARRAY_POSTFIX = \"__SYSTEM__ARRAY__\";\n\n//Типовые шаблоны конвертации значения атрибута в строку (при переводе XML -> JSON)\nconst XML_ATTR_ALWAYS_STR_PATH_PATTERNS = [/(.*)XDATA_GRID.columnsDef.name$/, /(.*)XDATA_GRID.columnsDef.caption$/, /(.*)XDATA_GRID.columnsDef.parent$/, /(.*)XDATA_GRID.groups.name$/, /(.*)XDATA_GRID.groups.caption$/, /(.*)XCYCLOGRAM.columns.name$/, /(.*)XCYCLOGRAM.groups.name$/];\n\n//-----------\n//Тело модуля\n//-----------\n\n//Проверка существования значения\nconst hasValue = value => typeof value !== \"undefined\" && value !== null && value !== \"\";\n\n//Проверка типа устройства\nconst getDisplaySize = () => {\n let res = DISPLAY_SIZE_CODE.MD;\n Object.keys(DISPLAY_SIZE).map(dspl => {\n if (window.innerWidth >= DISPLAY_SIZE[dspl].WIDTH_FROM && window.innerWidth <= DISPLAY_SIZE[dspl].WIDTH_TO) res = dspl;\n });\n return res;\n};\n\n//Глубокое копирование объекта\nconst deepCopyObject = obj => JSON.parse(JSON.stringify(obj));\n\n//Конвертация объекта в Base64 XML\nconst object2Base64XML = (obj, builderOptions) => {\n const builder = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLBuilder(builderOptions);\n return btoa(unescape(encodeURIComponent(builder.build(obj))));\n};\n\n//Конвертация XML в JSON\nconst xml2JSON = ({\n xmlDoc,\n isArray,\n transformTagName,\n tagValueProcessor,\n attributeValueProcessor,\n useDefaultPatterns = true\n}) => {\n return new Promise((resolve, reject) => {\n try {\n let opts = {\n ignoreDeclaration: true,\n ignoreAttributes: false,\n parseAttributeValue: true,\n attributeNamePrefix: \"\"\n };\n if (useDefaultPatterns) {\n opts.isArray = (name, jPath, isLeafNode, isAttribute) => XML_ALWAYS_ARRAY_PATHS.indexOf(jPath) !== -1 || XML_ALWAYS_ARRAY_PATH_PATTERNS.some(pattern => pattern.test(jPath)) || jPath.endsWith(XML_ALWAYS_ARRAY_POSTFIX) || (isArray ? isArray(name, jPath, isLeafNode, isAttribute) : undefined);\n opts.attributeValueProcessor = (name, val, jPath) => XML_ATTR_ALWAYS_STR_PATH_PATTERNS.some(pattern => pattern.test(`${jPath}.${name}`)) ? undefined : attributeValueProcessor ? attributeValueProcessor(name, val, jPath) : val;\n } else {\n if (isArray) opts.isArray = isArray;\n if (attributeValueProcessor) opts.attributeValueProcessor = attributeValueProcessor;\n }\n if (transformTagName) opts.transformTagName = transformTagName;\n if (tagValueProcessor) opts.tagValueProcessor = tagValueProcessor;\n const parser = new fast_xml_parser__WEBPACK_IMPORTED_MODULE_0__.XMLParser(opts);\n resolve(parser.parse(xmlDoc));\n } catch (e) {\n reject(e);\n }\n });\n};\n\n//Форматирование даты в формат РФ\nconst formatDateRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY\") : null;\n\n//Форматирование даты и времени в формат РФ\nconst formatDateTimeRF = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"DD.MM.YYYY HH:mm:ss\") : null;\n\n//Форматирование даты в формат JSON (только дата, без времени)\nconst formatDateJSONDateOnly = value => value ? dayjs__WEBPACK_IMPORTED_MODULE_1___default()(value).format(\"YYYY-MM-DD\") : null;\n\n//Форматирование числа в \"Денежном\" формате РФ\nconst formatNumberRFCurrency = value => hasValue(value) ? new Intl.NumberFormat(\"ru-RU\", {\n minimumFractionDigits: 2\n}).format(value) : null;\n\n//Форматирование текста ошибки\nconst formatErrorMessage = errorMsg => {\n //Инициализируем текст заголовка ошибки\n let text = \"\";\n //Пробуем извлечь заголовок текста ошибки\n try {\n //Если это ошибка Oracle\n if (errorMsg.match(/^ORA-/)) {\n //Считываем первую строку с заголовочным текстом ошибки\n text = errorMsg.match(/^.*(?=(\\nORA-))/)[0];\n //Убираем лишнюю информацию и пробелы\n text = text.replace(/ORA-\\d*:/g, \"\").trim();\n }\n //Если это ошибка PG\n if (errorMsg.match(/^SQL Error/)) {\n //Считываем первую строку с заголовочным текстом ошибки\n text = errorMsg.match(/.*(?=(\\n.*Where)|(.*Where))/)[0];\n //Убираем лишнюю информацию и пробелы\n text = text.replace(/SQL Error \\[\\d*\\]: ERROR:/g, \"\").trim();\n }\n } catch {\n //Если произошла ошибка - оставляем полный текст ошибки\n text = errorMsg;\n }\n //Возвращаем результат\n return {\n text: text || errorMsg,\n fullErrorText: text ? errorMsg : null\n };\n};\n\n//Формирование уникального идентификатора\nconst genGUID = () => \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/core/utils.js?"); /***/ }),