From 11dc9bf434a89807fa1d8841a9bc67cafc190d29 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 11 Sep 2024 21:02:34 +0300 Subject: [PATCH] =?UTF-8?q?WEB=20APP:=20=D0=A1=D0=B2=D0=B5=D0=B6=D0=B0?= =?UTF-8?q?=D1=8F=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 | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/dist/p8-panels.js b/dist/p8-panels.js index bc40da8..dd67acc 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -4452,6 +4452,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./app.styles.js": +/*!***********************!*\ + !*** ./app.styles.js ***! + \***********************/ +/***/ ((__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 */ APP_STYLES: () => (/* binding */ APP_STYLES)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга\r\n Типовые стили\r\n*/\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n//Стили\nconst APP_STYLES = {\n SCROLL: {\n \"&::-webkit-scrollbar\": {\n height: \"8px\",\n width: \"8px\"\n },\n \"&::-webkit-scrollbar-track\": {\n borderRadius: \"8px\",\n backgroundColor: \"#EBEBEB\"\n },\n \"&::-webkit-scrollbar-thumb\": {\n borderRadius: \"8px\",\n backgroundColor: \"#b4b4b4\"\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n backgroundColor: \"#808080\"\n }\n }\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app.styles.js?"); + +/***/ }), + /***/ "./app.text.js": /*!*********************!*\ !*** ./app.text.js ***! @@ -4514,7 +4525,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 */ P8PAppWorkspace: () => (/* binding */ P8PAppWorkspace)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CssBaseline/CssBaseline.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/AppBar/AppBar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Toolbar/Toolbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_panels_menu */ \"./app/components/p8p_panels_menu.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 STYLES = {\n ROOT_BOX: {\n display: \"flex\"\n },\n APP_BAR: {\n position: \"fixed\"\n },\n APP_BAR_BUTTON: {\n mr: 2\n },\n MAIN: {\n flexGrow: 1\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Рабочее пространство\nconst P8PAppWorkspace = ({\n children,\n panels = [],\n selectedPanel,\n closeCaption,\n homeCaption,\n onHomeNavigate,\n onItemNavigate\n} = {}) => {\n //Собственное состояния\n const [open, setOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Отработка открытия бокового меню\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n //Отработка закрытия бового меню\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n //Отработка нажатия на домашнюю страницу\n const handleHomeClick = () => onHomeNavigate ? onHomeNavigate() : null;\n\n //Отработка нажатия на элемент бокового меню\n const handleItemNavigate = panel => {\n handleDrawerClose();\n onItemNavigate ? onItemNavigate(panel) : null;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.ROOT_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.APP_BAR\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n color: \"inherit\",\n \"aria-label\": \"open drawer\",\n onClick: open ? handleDrawerClose : handleDrawerOpen,\n edge: \"start\",\n sx: STYLES.APP_BAR_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, open ? \"chevron_left\" : \"menu\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"h6\",\n noWrap: true,\n component: \"div\"\n }, selectedPanel?.caption))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n anchor: \"left\",\n open: open,\n onClose: handleDrawerClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: handleDrawerClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n primary: closeCaption\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: handleHomeClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"home\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n primary: homeCaption\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8PPanelsMenuDrawer, {\n panels: panels,\n selectedPanel: selectedPanel,\n onItemNavigate: handleItemNavigate\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"main\", {\n style: STYLES.MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), children));\n};\n\n//Контроль свойств - Рабочее пространство\nP8PAppWorkspace.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().element),\n panels: prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired,\n selectedPanel: _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE,\n closeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n homeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n onHomeNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n onItemNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_app_workspace.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ APP_BAR_HEIGHT: () => (/* binding */ APP_BAR_HEIGHT),\n/* harmony export */ P8PAppWorkspace: () => (/* binding */ P8PAppWorkspace)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CssBaseline/CssBaseline.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/AppBar/AppBar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Toolbar/Toolbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_panels_menu */ \"./app/components/p8p_panels_menu.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 APP_BAR_HEIGHT = \"64px\";\n\n//Стили\nconst STYLES = {\n ROOT_BOX: {\n display: \"flex\"\n },\n APP_BAR: {\n position: \"fixed\"\n },\n APP_BAR_BUTTON: {\n mr: 2\n },\n MAIN: {\n flexGrow: 1\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Рабочее пространство\nconst P8PAppWorkspace = ({\n children,\n panels = [],\n selectedPanel,\n closeCaption,\n homeCaption,\n onHomeNavigate,\n onItemNavigate\n} = {}) => {\n //Собственное состояния\n const [open, setOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Отработка открытия бокового меню\n const handleDrawerOpen = () => {\n setOpen(true);\n };\n\n //Отработка закрытия бового меню\n const handleDrawerClose = () => {\n setOpen(false);\n };\n\n //Отработка нажатия на домашнюю страницу\n const handleHomeClick = () => onHomeNavigate ? onHomeNavigate() : null;\n\n //Отработка нажатия на элемент бокового меню\n const handleItemNavigate = panel => {\n handleDrawerClose();\n onItemNavigate ? onItemNavigate(panel) : null;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.ROOT_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.APP_BAR\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n color: \"inherit\",\n \"aria-label\": \"open drawer\",\n onClick: open ? handleDrawerClose : handleDrawerOpen,\n edge: \"start\",\n sx: STYLES.APP_BAR_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, open ? \"chevron_left\" : \"menu\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"h6\",\n noWrap: true,\n component: \"div\"\n }, selectedPanel?.caption))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n anchor: \"left\",\n open: open,\n onClose: handleDrawerClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: handleDrawerClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n primary: closeCaption\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: handleHomeClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"home\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n primary: homeCaption\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8PPanelsMenuDrawer, {\n panels: panels,\n selectedPanel: selectedPanel,\n onItemNavigate: handleItemNavigate\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"main\", {\n style: STYLES.MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null), children));\n};\n\n//Контроль свойств - Рабочее пространство\nP8PAppWorkspace.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().element),\n panels: prop_types__WEBPACK_IMPORTED_MODULE_14___default().arrayOf(_p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE).isRequired,\n selectedPanel: _p8p_panels_menu__WEBPACK_IMPORTED_MODULE_1__.P8P_PANELS_MENU_PANEL_SHAPE,\n closeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n homeCaption: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n onHomeNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n onItemNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_app_workspace.js?"); /***/ }), @@ -4536,7 +4547,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 */ P8PDataGrid: () => (/* binding */ P8PDataGrid),\n/* harmony export */ P8P_DATA_GRID_DATA_TYPE: () => (/* binding */ P8P_DATA_GRID_DATA_TYPE),\n/* harmony export */ P8P_DATA_GRID_FILTER_SHAPE: () => (/* binding */ P8P_DATA_GRID_FILTER_SHAPE),\n/* harmony export */ P8P_DATA_GRID_SIZE: () => (/* binding */ P8P_DATA_GRID_SIZE)\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 _p8p_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_table */ \"./app/components/p8p_table.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Компонент: Таблица данных\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Таблица\n\n//---------\n//Константы\n//---------\n\n//Размеры отступов\nconst P8P_DATA_GRID_SIZE = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_SIZE;\n\n//Типы данных\nconst P8P_DATA_GRID_DATA_TYPE = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_DATA_TYPE;\n\n//Формат фильтра\nconst P8P_DATA_GRID_FILTER_SHAPE = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_FILTER_SHAPE;\n\n//-----------\n//Тело модуля\n//-----------\n\n//Таблица данных\nconst P8PDataGrid = ({\n columnsDef,\n filtersInitial,\n groups,\n rows,\n size,\n fixedHeader = false,\n fixedColumns = 0,\n morePages = false,\n reloading,\n expandable,\n orderAscMenuItemCaption,\n orderDescMenuItemCaption,\n filterMenuItemCaption,\n valueFilterCaption,\n valueFromFilterCaption,\n valueToFilterCaption,\n okFilterBtnCaption,\n clearFilterBtnCaption,\n cancelFilterBtnCaption,\n morePagesBtnCaption,\n morePagesBtnProps,\n noDataFoundText,\n headCellRender,\n dataCellRender,\n groupCellRender,\n rowExpandRender,\n valueFormatter,\n containerComponent,\n containerComponentProps,\n onOrderChanged,\n onFilterChanged,\n onPagesCountChanged,\n objectsCopier\n}) => {\n //Собственное состояние - сортировки\n const [orders, setOrders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Собственное состояние - фильтры\n const [filters, setFilters] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(filtersInitial || []);\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n columnName,\n direction\n }) => {\n let newOrders = objectsCopier(orders);\n const curOrder = newOrders.find(o => o.name == columnName);\n if (direction == null && curOrder) newOrders.splice(newOrders.indexOf(curOrder), 1);\n if (direction != null && !curOrder) newOrders.push({\n name: columnName,\n direction\n });\n if (direction != null && curOrder) curOrder.direction = direction;\n setOrders(newOrders);\n if (onOrderChanged) onOrderChanged({\n orders: newOrders\n });\n };\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n columnName,\n from,\n to\n }) => {\n let newFilters = objectsCopier(filters);\n let curFilter = newFilters.find(f => f.name == columnName);\n if (from == null && to == null && curFilter) newFilters.splice(newFilters.indexOf(curFilter), 1);\n if ((from != null || to != null) && !curFilter) newFilters.push({\n name: columnName,\n from,\n to\n });\n if ((from != null || to != null) && curFilter) {\n curFilter.from = from;\n curFilter.to = to;\n }\n setFilters(newFilters);\n if (onFilterChanged) onFilterChanged({\n filters: newFilters\n });\n };\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => {\n if (onPagesCountChanged) onPagesCountChanged();\n };\n\n //При изменении списка установленных извне фильтров\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setFilters(filtersInitial || []);\n }, [filtersInitial]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8PTable, {\n columnsDef: columnsDef,\n groups: groups,\n rows: rows,\n orders: orders,\n filters: filters,\n size: size || P8P_DATA_GRID_SIZE.MEDIUM,\n fixedHeader: fixedHeader,\n fixedColumns: fixedColumns,\n morePages: morePages,\n reloading: reloading,\n expandable: expandable,\n orderAscMenuItemCaption: orderAscMenuItemCaption,\n orderDescMenuItemCaption: orderDescMenuItemCaption,\n filterMenuItemCaption: filterMenuItemCaption,\n valueFilterCaption: valueFilterCaption,\n valueFromFilterCaption: valueFromFilterCaption,\n valueToFilterCaption: valueToFilterCaption,\n okFilterBtnCaption: okFilterBtnCaption,\n clearFilterBtnCaption: clearFilterBtnCaption,\n cancelFilterBtnCaption: cancelFilterBtnCaption,\n morePagesBtnCaption: morePagesBtnCaption,\n noDataFoundText: noDataFoundText,\n headCellRender: headCellRender,\n dataCellRender: dataCellRender,\n groupCellRender: groupCellRender,\n rowExpandRender: rowExpandRender,\n valueFormatter: valueFormatter,\n objectsCopier: objectsCopier,\n containerComponent: containerComponent,\n containerComponentProps: containerComponentProps,\n morePagesBtnProps: morePagesBtnProps,\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n });\n};\n\n//Контроль свойств - Таблица данных\nP8PDataGrid.propTypes = {\n columnsDef: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array).isRequired,\n filtersInitial: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_DATA_GRID_FILTER_SHAPE),\n groups: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array),\n rows: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array).isRequired,\n size: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n fixedHeader: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n fixedColumns: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n morePages: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n reloading: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool).isRequired,\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n orderAscMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n orderDescMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n filterMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n valueFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n valueFromFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n valueToFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n okFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n clearFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n cancelFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n morePagesBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n morePagesBtnProps: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n noDataFoundText: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n headCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n dataCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n groupCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n rowExpandRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n containerComponent: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_2___default().elementType), (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)]),\n containerComponentProps: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onFilterChanged: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onPagesCountChanged: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n objectsCopier: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_data_grid.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PDataGrid: () => (/* binding */ P8PDataGrid),\n/* harmony export */ P8P_DATA_GRID_DATA_TYPE: () => (/* binding */ P8P_DATA_GRID_DATA_TYPE),\n/* harmony export */ P8P_DATA_GRID_FILTERS_HEIGHT: () => (/* binding */ P8P_DATA_GRID_FILTERS_HEIGHT),\n/* harmony export */ P8P_DATA_GRID_FILTER_SHAPE: () => (/* binding */ P8P_DATA_GRID_FILTER_SHAPE),\n/* harmony export */ P8P_DATA_GRID_MORE_HEIGHT: () => (/* binding */ P8P_DATA_GRID_MORE_HEIGHT),\n/* harmony export */ P8P_DATA_GRID_SIZE: () => (/* binding */ P8P_DATA_GRID_SIZE)\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 _p8p_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_table */ \"./app/components/p8p_table.js\");\n/*\r\n Парус 8 - Панели мониторинга\r\n Компонент: Таблица данных\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Таблица\n\n//---------\n//Константы\n//---------\n\n//Размеры отступов\nconst P8P_DATA_GRID_SIZE = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_SIZE;\n\n//Типы данных\nconst P8P_DATA_GRID_DATA_TYPE = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_DATA_TYPE;\n\n//Формат фильтра\nconst P8P_DATA_GRID_FILTER_SHAPE = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_FILTER_SHAPE;\n\n//Высота кнопки догрузки данных\nconst P8P_DATA_GRID_MORE_HEIGHT = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_MORE_HEIGHT;\n\n//Высота фильтров таблицы\nconst P8P_DATA_GRID_FILTERS_HEIGHT = _p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8P_TABLE_FILTERS_HEIGHT;\n\n//-----------\n//Тело модуля\n//-----------\n\n//Таблица данных\nconst P8PDataGrid = ({\n columnsDef,\n filtersInitial,\n groups,\n rows,\n size,\n fixedHeader = false,\n fixedColumns = 0,\n morePages = false,\n reloading,\n expandable,\n orderAscMenuItemCaption,\n orderDescMenuItemCaption,\n filterMenuItemCaption,\n valueFilterCaption,\n valueFromFilterCaption,\n valueToFilterCaption,\n okFilterBtnCaption,\n clearFilterBtnCaption,\n cancelFilterBtnCaption,\n morePagesBtnCaption,\n morePagesBtnProps,\n noDataFoundText,\n headCellRender,\n dataCellRender,\n groupCellRender,\n rowExpandRender,\n valueFormatter,\n containerComponent,\n containerComponentProps,\n onOrderChanged,\n onFilterChanged,\n onPagesCountChanged,\n objectsCopier\n}) => {\n //Собственное состояние - сортировки\n const [orders, setOrders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Собственное состояние - фильтры\n const [filters, setFilters] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(filtersInitial || []);\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n columnName,\n direction\n }) => {\n let newOrders = objectsCopier(orders);\n const curOrder = newOrders.find(o => o.name == columnName);\n if (direction == null && curOrder) newOrders.splice(newOrders.indexOf(curOrder), 1);\n if (direction != null && !curOrder) newOrders.push({\n name: columnName,\n direction\n });\n if (direction != null && curOrder) curOrder.direction = direction;\n setOrders(newOrders);\n if (onOrderChanged) onOrderChanged({\n orders: newOrders\n });\n };\n\n //При изменении состояния фильтра\n const handleFilterChanged = ({\n columnName,\n from,\n to\n }) => {\n let newFilters = objectsCopier(filters);\n let curFilter = newFilters.find(f => f.name == columnName);\n if (from == null && to == null && curFilter) newFilters.splice(newFilters.indexOf(curFilter), 1);\n if ((from != null || to != null) && !curFilter) newFilters.push({\n name: columnName,\n from,\n to\n });\n if ((from != null || to != null) && curFilter) {\n curFilter.from = from;\n curFilter.to = to;\n }\n setFilters(newFilters);\n if (onFilterChanged) onFilterChanged({\n filters: newFilters\n });\n };\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => {\n if (onPagesCountChanged) onPagesCountChanged();\n };\n\n //При изменении списка установленных извне фильтров\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setFilters(filtersInitial || []);\n }, [filtersInitial]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_table__WEBPACK_IMPORTED_MODULE_1__.P8PTable, {\n columnsDef: columnsDef,\n groups: groups,\n rows: rows,\n orders: orders,\n filters: filters,\n size: size || P8P_DATA_GRID_SIZE.MEDIUM,\n fixedHeader: fixedHeader,\n fixedColumns: fixedColumns,\n morePages: morePages,\n reloading: reloading,\n expandable: expandable,\n orderAscMenuItemCaption: orderAscMenuItemCaption,\n orderDescMenuItemCaption: orderDescMenuItemCaption,\n filterMenuItemCaption: filterMenuItemCaption,\n valueFilterCaption: valueFilterCaption,\n valueFromFilterCaption: valueFromFilterCaption,\n valueToFilterCaption: valueToFilterCaption,\n okFilterBtnCaption: okFilterBtnCaption,\n clearFilterBtnCaption: clearFilterBtnCaption,\n cancelFilterBtnCaption: cancelFilterBtnCaption,\n morePagesBtnCaption: morePagesBtnCaption,\n noDataFoundText: noDataFoundText,\n headCellRender: headCellRender,\n dataCellRender: dataCellRender,\n groupCellRender: groupCellRender,\n rowExpandRender: rowExpandRender,\n valueFormatter: valueFormatter,\n objectsCopier: objectsCopier,\n containerComponent: containerComponent,\n containerComponentProps: containerComponentProps,\n morePagesBtnProps: morePagesBtnProps,\n onOrderChanged: handleOrderChanged,\n onFilterChanged: handleFilterChanged,\n onPagesCountChanged: handlePagesCountChanged\n });\n};\n\n//Контроль свойств - Таблица данных\nP8PDataGrid.propTypes = {\n columnsDef: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array).isRequired,\n filtersInitial: prop_types__WEBPACK_IMPORTED_MODULE_2___default().arrayOf(P8P_DATA_GRID_FILTER_SHAPE),\n groups: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array),\n rows: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().array).isRequired,\n size: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n fixedHeader: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n fixedColumns: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number),\n morePages: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n reloading: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool).isRequired,\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().bool),\n orderAscMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n orderDescMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n filterMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n valueFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n valueFromFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n valueToFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n okFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n clearFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n cancelFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n morePagesBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string).isRequired,\n morePagesBtnProps: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n noDataFoundText: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string),\n headCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n dataCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n groupCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n rowExpandRender: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n containerComponent: prop_types__WEBPACK_IMPORTED_MODULE_2___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_2___default().elementType), (prop_types__WEBPACK_IMPORTED_MODULE_2___default().string)]),\n containerComponentProps: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().object),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onFilterChanged: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n onPagesCountChanged: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func),\n objectsCopier: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_data_grid.js?"); /***/ }), @@ -4591,7 +4602,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 */ P8PTable: () => (/* binding */ P8PTable),\n/* harmony export */ P8P_TABLE_DATA_TYPE: () => (/* binding */ P8P_TABLE_DATA_TYPE),\n/* harmony export */ P8P_TABLE_FILTER_SHAPE: () => (/* binding */ P8P_TABLE_FILTER_SHAPE),\n/* harmony export */ P8P_TABLE_SIZE: () => (/* binding */ P8P_TABLE_SIZE)\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 _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableCell/TableCell.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableContainer/TableContainer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Table/Table.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableHead/TableHead.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableRow/TableRow.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableBody/TableBody.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Container/Container.js\");\n/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _p8p_app_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_app_message */ \"./app/components/p8p_app_message.js\");\n/* harmony import */ var _p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./p8p_table_reducer */ \"./app/components/p8p_table_reducer.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 //Взаимодействие со стилями MUI\n //Встраиваемое сообщение об ошибке\n //Редьюсер состояния\n\n//---------\n//Константы\n//---------\n\n//Размеры отступов\nconst P8P_TABLE_SIZE = {\n SMALL: \"small\",\n MEDIUM: \"medium\"\n};\n\n//Типы данных\nconst P8P_TABLE_DATA_TYPE = {\n STR: \"STR\",\n NUMB: \"NUMB\",\n DATE: \"DATE\"\n};\n\n//Направления сортировки\nconst P8P_TABLE_COLUMN_ORDER_DIRECTIONS = {\n ASC: \"ASC\",\n DESC: \"DESC\"\n};\n\n//Действия панели инструментов столбца\nconst P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS = {\n ORDER_TOGGLE: \"ORDER_TOGGLE\",\n FILTER_TOGGLE: \"FILTER_TOGGLE\",\n EXPAND_TOGGLE: \"EXPAND_TOGGLE\"\n};\n\n//Действия меню столбца\nconst P8P_TABLE_COLUMN_MENU_ACTIONS = {\n ORDER_ASC: \"ORDER_ASC\",\n ORDER_DESC: \"ORDER_DESC\",\n FILTER: \"FILTER\"\n};\n\n//Структура элемента описания фильтра\nconst P8P_TABLE_FILTER_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n from: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any),\n to: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any)\n});\n\n//Стили\nconst STYLES = {\n TABLE: {\n with: \"100%\"\n },\n TABLE_HEAD_STICKY: {\n position: \"sticky\",\n top: 0,\n zIndex: 1000\n },\n TABLE_HEAD_CELL_STICKY: (theme, left) => ({\n position: \"sticky\",\n left,\n backgroundColor: theme.palette.background.default,\n zIndex: 1000\n }),\n TABLE_ROW: {\n \"&:last-child td, &:last-child th\": {\n border: 0\n }\n },\n TABLE_CELL_STICKY: (theme, left) => ({\n position: \"sticky\",\n left,\n backgroundColor: theme.palette.background.default,\n zIndex: 500\n }),\n TABLE_CELL_EXPAND_CONTROL: {\n minWidth: \"60px\",\n maxWidth: \"60px\"\n },\n TABLE_CELL_EXPAND_CONTAINER: {\n paddingBottom: 0,\n paddingTop: 0\n },\n TABLE_CELL_GROUP_HEADER: {\n backgroundColor: \"lightgray\"\n },\n TABLE_CELL_GROUP_HEADER_STICKY: {\n position: \"sticky\",\n left: 0\n },\n TABLE_COLUMN_STACK: {\n alignItems: \"center\"\n },\n TABLE_COLUMN_MENU_ITEM_ICON: {\n paddingRight: \"10px\"\n },\n FILTER_CHIP: {\n alignItems: \"center\"\n },\n MORE_BUTTON_CONTAINER: {\n with: \"100%\",\n textAlign: \"center\",\n padding: \"5px\"\n }\n};\n\n//--------------------------------\n//Вспомогательные классы и функции\n//--------------------------------\n\n//Панель инструментов столбца (левая)\nconst P8PTableColumnToolBarLeft = ({\n columnDef,\n onItemClick\n}) => {\n //Кнопка развёртывания/свёртывания\n let expButton = null;\n if (columnDef.expandable) expButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => onItemClick ? onItemClick(P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.EXPAND_TOGGLE, columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, columnDef.expanded ? \"indeterminate_check_box\" : \"add_box\"));\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, expButton);\n};\n\n//Контроль свойств - Панель инструментов столбца (левая)\nP8PTableColumnToolBarLeft.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n onItemClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Панель инструментов столбца (правая)\nconst P8PTableColumnToolBarRight = ({\n columnDef,\n orders,\n filters,\n onItemClick\n}) => {\n //Кнопка сортировки\n const order = orders.find(o => o.name == columnDef.name);\n let orderButton = null;\n if (order) orderButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => onItemClick ? onItemClick(P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.ORDER_TOGGLE, columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, order.direction === P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC ? \"arrow_upward\" : \"arrow_downward\"));\n\n //Кнопка фильтрации\n const filter = filters.find(f => f.name == columnDef.name);\n let filterButton = null;\n if ((0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter?.from) || (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter?.to)) filterButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => onItemClick ? onItemClick(P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.FILTER_TOGGLE, columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"filter_alt\"));\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, orderButton, filterButton);\n};\n\n//Контроль свойств - Панель инструментов столбца (правая)\nP8PTableColumnToolBarRight.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n orders: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n filters: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n onItemClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Меню столбца\nconst P8PTableColumnMenu = ({\n columnDef,\n orderAscItemCaption,\n orderDescItemCaption,\n filterItemCaption,\n onItemClick\n}) => {\n //Собственное состояние\n const [anchorEl, setAnchorEl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Флаг отображения\n const open = Boolean(anchorEl);\n\n //По нажатию на открытие меню\n const handleMenuButtonClick = event => {\n setAnchorEl(event.currentTarget);\n };\n\n //По нажатию на пункт меню\n const handleMenuItemClick = (event, index, action, columnName) => {\n if (onItemClick) onItemClick(action, columnName);\n setAnchorEl(null);\n };\n\n //При закрытии меню\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n //Формирование списка элементов меню в зависимости от описания колонки таблицы\n const menuItems = [];\n if (columnDef.order === true) {\n menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: \"orderAsc\",\n onClick: (event, index) => handleMenuItemClick(event, index, P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_ASC, columnDef.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TABLE_COLUMN_MENU_ITEM_ICON\n }, \"arrow_upward\"), orderAscItemCaption));\n menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: \"orderDesc\",\n onClick: (event, index) => handleMenuItemClick(event, index, P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_DESC, columnDef.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TABLE_COLUMN_MENU_ITEM_ICON\n }, \"arrow_downward\"), orderDescItemCaption));\n }\n if (columnDef.filter === true) {\n if (menuItems.length > 0) menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n key: \"divider\",\n sx: {\n my: 0.5\n }\n }));\n menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: \"filter\",\n onClick: (event, index) => handleMenuItemClick(event, index, P8P_TABLE_COLUMN_MENU_ACTIONS.FILTER, columnDef.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TABLE_COLUMN_MENU_ITEM_ICON\n }, \"filter_alt\"), filterItemCaption));\n }\n\n //Генерация содержимого\n return menuItems.length > 0 ? /*#__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_4__[\"default\"], {\n id: `${columnDef.name}_menu_button`,\n \"aria-haspopup\": \"true\",\n onClick: handleMenuButtonClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"more_vert\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n id: `${columnDef.name}_menu`,\n anchorEl: anchorEl,\n open: open,\n onClose: handleMenuClose\n }, menuItems)) : null;\n};\n\n//Контроль свойств - Меню столбца\nP8PTableColumnMenu.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n orderAscItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n orderDescItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n filterItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n onItemClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Диалог подсказки\nconst P8PTableColumnHintDialog = ({\n columnDef,\n okBtnCaption,\n onOk\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n open: true,\n \"aria-labelledby\": \"filter-dialog-title\",\n \"aria-describedby\": \"filter-dialog-description\",\n onClose: () => onOk ? onOk() : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"filter-dialog-title\"\n }, columnDef.caption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: columnDef.hint\n }\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onOk ? onOk() : null\n }, okBtnCaption)));\n};\n\n//Контроль свойств - Диалог подсказки\nP8PTableColumnHintDialog.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Диалог фильтра\nconst P8PTableColumnFilterDialog = ({\n columnDef,\n from,\n to,\n valueCaption,\n valueFromCaption,\n valueToCaption,\n okBtnCaption,\n clearBtnCaption,\n cancelBtnCaption,\n valueFormatter,\n onOk,\n onClear,\n onCancel\n}) => {\n //Собственное состояние - значения с-по\n const [filterValues, setFilterValues] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n from,\n to\n });\n\n //Отработка воода значения в фильтр\n const handleFilterTextFieldChanged = e => {\n setFilterValues(prev => ({\n ...prev,\n [e.target.name]: e.target.value\n }));\n };\n\n //Элементы ввода значений фильтра\n let inputs = null;\n if (Array.isArray(columnDef.values) && columnDef.values.length > 0) {\n inputs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"from\",\n fullWidth: true,\n select: true,\n label: valueCaption,\n variant: \"standard\",\n value: filterValues.from,\n onChange: handleFilterTextFieldChanged\n }, columnDef.values.map((v, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: i,\n value: v\n }, valueFormatter ? valueFormatter({\n value: v,\n columnDef\n }) : v)));\n } else {\n switch (columnDef.dataType) {\n case P8P_TABLE_DATA_TYPE.STR:\n {\n inputs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"from\",\n fullWidth: true,\n InputLabelProps: {\n shrink: true\n },\n value: filterValues.from,\n onChange: handleFilterTextFieldChanged,\n label: valueCaption,\n variant: \"standard\"\n });\n break;\n }\n case P8P_TABLE_DATA_TYPE.NUMB:\n case P8P_TABLE_DATA_TYPE.DATE:\n {\n inputs = /*#__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_14__[\"default\"], {\n name: \"from\",\n InputLabelProps: {\n shrink: true\n },\n type: columnDef.dataType == P8P_TABLE_DATA_TYPE.NUMB ? \"number\" : \"date\",\n value: filterValues.from,\n onChange: handleFilterTextFieldChanged,\n label: valueFromCaption,\n variant: \"standard\"\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"to\",\n InputLabelProps: {\n shrink: true\n },\n type: columnDef.dataType == P8P_TABLE_DATA_TYPE.NUMB ? \"number\" : \"date\",\n value: filterValues.to,\n onChange: handleFilterTextFieldChanged,\n label: valueToCaption,\n variant: \"standard\"\n }));\n break;\n }\n }\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n open: true,\n \"aria-labelledby\": \"filter-dialog-title\",\n \"aria-describedby\": \"filter-dialog-description\",\n onClose: () => onCancel ? onCancel(columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"filter-dialog-title\"\n }, columnDef.caption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, inputs), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onOk ? onOk(columnDef.name, filterValues.from, filterValues.to) : null\n }, okBtnCaption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onClear ? onClear(columnDef.name) : null,\n variant: \"secondary\"\n }, clearBtnCaption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onCancel ? onCancel(columnDef.name) : null\n }, cancelBtnCaption)));\n};\n\n//Контроль свойств - Диалог фильтра\nP8PTableColumnFilterDialog.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n from: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any),\n to: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any),\n valueCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFromCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueToCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n clearBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n cancelBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onClear: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Сводный фильтр\nconst P8PTableFiltersChips = ({\n filters,\n columnsDef,\n valueFromCaption,\n valueToCaption,\n onFilterChipClick,\n onFilterChipDelete,\n valueFormatter\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n spacing: 1,\n p: 1\n }, filters.map((filter, i) => {\n const columnDef = columnsDef.find(columnDef => columnDef.name == filter.name);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: i,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n sx: STYLES.FILTER_CHIP\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", null, columnDef.caption), \":\\xA0\", (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.from) && !columnDef.values && columnDef.dataType != P8P_TABLE_DATA_TYPE.STR ? `${valueFromCaption.toLowerCase()} ` : null, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.from) ? valueFormatter ? valueFormatter({\n value: filter.from,\n columnDef\n }) : filter.from : null, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.to) && !columnDef.values && columnDef.dataType != P8P_TABLE_DATA_TYPE.STR ? ` ${valueToCaption.toLowerCase()} ` : null, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.to) ? valueFormatter ? valueFormatter({\n value: filter.to,\n columnDef\n }) : filter.to : null),\n variant: \"outlined\",\n onClick: () => onFilterChipClick ? onFilterChipClick(columnDef.name) : null,\n onDelete: () => onFilterChipDelete ? onFilterChipDelete(columnDef.name) : null\n });\n }));\n};\n\n//Контроль свойств - Сводный фильтр\nP8PTableFiltersChips.propTypes = {\n filters: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n columnsDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n valueFromCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueToCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n onFilterChipClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onFilterChipDelete: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Таблица\nconst P8PTable = ({\n columnsDef,\n groups,\n rows,\n orders,\n filters,\n size,\n fixedHeader = false,\n fixedColumns = 0,\n morePages = false,\n reloading,\n expandable,\n orderAscMenuItemCaption,\n orderDescMenuItemCaption,\n filterMenuItemCaption,\n valueFilterCaption,\n valueFromFilterCaption,\n valueToFilterCaption,\n okFilterBtnCaption,\n clearFilterBtnCaption,\n cancelFilterBtnCaption,\n morePagesBtnCaption,\n morePagesBtnProps,\n noDataFoundText,\n headCellRender,\n dataCellRender,\n groupCellRender,\n rowExpandRender,\n valueFormatter,\n onOrderChanged,\n onFilterChanged,\n onPagesCountChanged,\n objectsCopier,\n containerComponent,\n containerComponentProps\n}) => {\n //Собственное состояние - описание заголовка\n const [header, dispatchHeaderAction] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.p8pTableReducer, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.HEADER_INITIAL_STATE)());\n\n //Собственное состояние - фильтруемая колонка\n const [filterColumn, setFilterColumn] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - развёрнутые строки\n const [expanded, setExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n\n //Собственное состояния - развёрнутые группы\n const [expandedGroups, setExpandedGroups] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n\n //Собственное состояние - колонка с отображаемой подсказкой\n const [displayHintColumn, setDisplayHintColumn] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Стили\n const theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_17__[\"default\"])();\n\n //Описание фильтруемой колонки\n const filterColumnDef = filterColumn ? columnsDef.find(columnDef => columnDef.name == filterColumn) || null : null;\n\n //Описание колонки с отображаемой подсказкой\n const displayHintColumnDef = displayHintColumn ? columnsDef.find(columnDef => columnDef.name == displayHintColumn) || null : null;\n\n //Значения фильтра фильтруемой колонки\n const [filterColumnFrom, filterColumnTo] = filterColumn ? (() => {\n const filter = filters.find(filter => filter.name == filterColumn);\n return filter ? [filter.from == null ? \"\" : filter.from, filter.to == null ? \"\" : filter.to] : [\"\", \"\"];\n })() : [\"\", \"\"];\n\n //Формирование заголовка таблицы\n const setHeader = ({\n columnsDef,\n expandable,\n fixedColumns,\n objectsCopier\n }) => dispatchHeaderAction({\n type: _p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.P8P_TABLE_AT.SET_HEADER,\n payload: {\n columnsDef,\n expandable,\n fixedColumns,\n objectsCopier\n }\n });\n\n //Сворачивание/разворачивание уровня заголовка таблицы\n const toggleHeaderExpand = ({\n columnName,\n objectsCopier\n }) => dispatchHeaderAction({\n type: _p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.P8P_TABLE_AT.TOGGLE_HEADER_EXPAND,\n payload: {\n columnName,\n expandable,\n fixedColumns,\n objectsCopier\n }\n });\n\n //Выравнивание в зависимости от типа данных\n const getAlignByDataType = ({\n dataType,\n hasChild\n }) => dataType === P8P_TABLE_DATA_TYPE.DATE || hasChild ? \"center\" : dataType === P8P_TABLE_DATA_TYPE.NUMB ? \"right\" : \"left\";\n\n //Упорядочение содержимого в зависимости от типа данных\n const getJustifyContentByDataType = ({\n dataType,\n hasChild\n }) => dataType === P8P_TABLE_DATA_TYPE.DATE || hasChild ? \"center\" : dataType === P8P_TABLE_DATA_TYPE.NUMB ? \"flex-end\" : \"flex-start\";\n\n //Отработка нажатия на элемент пункта меню\n const handleToolBarItemClick = (action, columnName) => {\n switch (action) {\n case P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.ORDER_TOGGLE:\n {\n const colOrder = orders.find(o => o.name == columnName);\n const newDirection = colOrder?.direction == P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC ? P8P_TABLE_COLUMN_ORDER_DIRECTIONS.DESC : colOrder?.direction == P8P_TABLE_COLUMN_ORDER_DIRECTIONS.DESC ? null : P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC;\n if (onOrderChanged) onOrderChanged({\n columnName,\n direction: newDirection\n });\n break;\n }\n case P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.FILTER_TOGGLE:\n setFilterColumn(columnName);\n break;\n case P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.EXPAND_TOGGLE:\n toggleHeaderExpand({\n columnName,\n objectsCopier\n });\n break;\n }\n };\n\n //Отработка нажатия на пункты меню\n const handleMenuItemClick = (action, columnName) => {\n switch (action) {\n case P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_ASC:\n onOrderChanged({\n columnName,\n direction: P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC\n });\n break;\n case P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_DESC:\n onOrderChanged({\n columnName,\n direction: P8P_TABLE_COLUMN_ORDER_DIRECTIONS.DESC\n });\n break;\n case P8P_TABLE_COLUMN_MENU_ACTIONS.FILTER:\n setFilterColumn(columnName);\n break;\n }\n };\n\n //Отработка ввода значения фильтра колонки\n const handleFilterOk = (columnName, from, to) => {\n if (onFilterChanged) onFilterChanged({\n columnName,\n from: from === \"\" ? null : from,\n to: to === \"\" ? null : to\n });\n setFilterColumn(null);\n };\n\n //Отработка очистки значения фильтра колонки\n const handleFilterClear = columnName => {\n if (onFilterChanged) onFilterChanged({\n columnName,\n from: null,\n to: null\n });\n setFilterColumn(null);\n };\n\n //Отработка отмены ввода значения фильтра колонки\n const handleFilterCancel = () => {\n setFilterColumn(null);\n };\n\n //Отработка нажатия на элемент сводного фильтра\n const handleFilterChipClick = columnName => setFilterColumn(columnName);\n\n //Отработка удаления элемента сводного фильтра\n const handleFilterChipDelete = columnName => onFilterChanged ? onFilterChanged({\n columnName,\n from: null,\n to: null\n }) : null;\n\n //Отработка нажатия на кнопку догрузки страницы\n const handleMorePagesBtnClick = () => {\n if (onPagesCountChanged) onPagesCountChanged();\n };\n\n //Отработка нажатия на элемент отображения подсказки по колонке\n const handleColumnShowHintClick = columnName => setDisplayHintColumn(columnName);\n\n //Отработка сокрытия подсказки по колонке\n const handleHintOk = () => setDisplayHintColumn(null);\n\n //Отработка нажатия на кнопку раскрытия элемента\n const handleExpandClick = rowIndex => {\n if (expanded[rowIndex] === true) setExpanded(pv => {\n let res = {\n ...pv\n };\n delete res[rowIndex];\n return res;\n });else setExpanded(pv => ({\n ...pv,\n [rowIndex]: true\n }));\n };\n\n //При перезагрузке данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (reloading) setExpanded({});\n }, [reloading]);\n\n //При изменении описания колонок\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setHeader({\n columnsDef,\n expandable,\n fixedColumns,\n objectsCopier\n });\n }, [columnsDef, expandable, fixedColumns, objectsCopier]);\n\n //Генерация заголовка группы\n const renderGroupCell = group => {\n let customRender = {};\n if (groupCellRender) customRender = groupCellRender({\n columnsDef: header.columnsDef,\n group\n }) || {};\n return header.displayDataColumns.map((columnDef, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], _extends({\n key: `group-header-cell-${i}`\n }, customRender.cellProps, {\n sx: {\n ...STYLES.TABLE_CELL_GROUP_HEADER,\n ...customRender.cellStyle,\n ...(columnDef.width ? {\n minWidth: columnDef.width,\n maxWidth: columnDef.width\n } : {}),\n ...(i == 0 && fixedColumns ? STYLES.TABLE_CELL_GROUP_HEADER_STICKY : {})\n },\n colSpan: expandable && rowExpandRender ? 2 : 1\n }), i == 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n sx: STYLES.TABLE_COLUMN_STACK\n }, group.expandable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => {\n setExpandedGroups(pv => ({\n ...pv,\n ...{\n [group.name]: !pv[group.name]\n }\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, expandedGroups[group.name] ? \"indeterminate_check_box\" : \"add_box\")) : null, customRender.data ? customRender.data : group.caption) : null));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, displayHintColumn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnHintDialog, {\n columnDef: displayHintColumnDef,\n okBtnCaption: okFilterBtnCaption,\n onOk: handleHintOk\n }) : null, filterColumn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnFilterDialog, {\n columnDef: filterColumnDef,\n from: filterColumnFrom,\n to: filterColumnTo,\n valueCaption: valueFilterCaption,\n valueFromCaption: valueFromFilterCaption,\n valueToCaption: valueToFilterCaption,\n okBtnCaption: okFilterBtnCaption,\n clearBtnCaption: clearFilterBtnCaption,\n cancelBtnCaption: cancelFilterBtnCaption,\n valueFormatter: valueFormatter,\n onOk: handleFilterOk,\n onClear: handleFilterClear,\n onCancel: handleFilterCancel\n }) : null, Array.isArray(filters) && filters.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableFiltersChips, {\n filters: filters,\n columnsDef: columnsDef,\n valueFromCaption: valueFromFilterCaption,\n valueToCaption: valueToFilterCaption,\n onFilterChipClick: handleFilterChipClick,\n onFilterChipDelete: handleFilterChipDelete,\n valueFormatter: valueFormatter\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], _extends({\n component: containerComponent ? containerComponent : _mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"]\n }, containerComponentProps ? containerComponentProps : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n stickyHeader: fixedHeader,\n sx: STYLES.TABLE,\n size: size || P8P_TABLE_SIZE.MEDIUM\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n sx: fixedHeader ? STYLES.TABLE_HEAD_STICKY : {}\n }, header.displayLevels.map((level, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: level\n }, expandable && rowExpandRender && i == 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n key: \"head-cell-expand-control\",\n align: \"center\",\n sx: {\n ...STYLES.TABLE_CELL_EXPAND_CONTROL,\n ...(fixedColumns ? STYLES.TABLE_HEAD_CELL_STICKY(theme, 0) : {})\n },\n rowSpan: header.displayLevelsColumns[level][0].rowSpan\n }) : null, header.displayLevelsColumns[level].map((columnDef, j) => {\n let customRender = {};\n if (headCellRender) customRender = headCellRender({\n columnDef\n }) || {};\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], _extends({\n key: `head-cell-${j}`,\n align: getAlignByDataType(columnDef),\n sx: {\n ...(columnDef.width ? {\n minWidth: columnDef.width,\n maxWidth: columnDef.width\n } : {}),\n ...(columnDef.fixed ? STYLES.TABLE_HEAD_CELL_STICKY(theme, columnDef.fixedLeft) : {}),\n ...customRender.cellStyle\n },\n rowSpan: columnDef.rowSpan,\n colSpan: columnDef.colSpan\n }, customRender.cellProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _extends({\n direction: \"row\",\n justifyContent: getJustifyContentByDataType(columnDef),\n sx: {\n ...STYLES.TABLE_COLUMN_STACK,\n ...customRender.stackStyle\n }\n }, customRender.stackProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnToolBarLeft, {\n columnDef: columnDef,\n onItemClick: handleToolBarItemClick\n }), customRender.data ? customRender.data : columnDef.hint ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n align: \"left\",\n underline: \"always\",\n onClick: () => handleColumnShowHintClick(columnDef.name)\n }, columnDef.caption) : columnDef.caption, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnToolBarRight, {\n columnDef: columnDef,\n orders: orders,\n filters: filters,\n onItemClick: handleToolBarItemClick\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnMenu, {\n columnDef: columnDef,\n orderAscItemCaption: orderAscMenuItemCaption,\n orderDescItemCaption: orderDescMenuItemCaption,\n filterItemCaption: filterMenuItemCaption,\n onItemClick: handleMenuItemClick\n })));\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_25__[\"default\"], null, rows.length > 0 ? (Array.isArray(groups) && groups.length > 0 ? groups : [{}]).map((group, g) => {\n const rowsView = rows.map((row, i) => !group?.name || group?.name == row.groupName ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: `data-${i}`\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: `data-row-${i}`,\n sx: STYLES.TABLE_ROW\n }, expandable && rowExpandRender ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n key: `data-cell-expand-control-${i}`,\n align: \"center\",\n sx: {\n ...STYLES.TABLE_CELL_EXPAND_CONTROL,\n ...(fixedColumns ? STYLES.TABLE_CELL_STICKY(theme, 0) : {})\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => handleExpandClick(i)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, expanded[i] === true ? \"keyboard_arrow_down\" : \"keyboard_arrow_right\"))) : null, header.displayDataColumns.map((columnDef, j) => {\n let customRender = {};\n if (dataCellRender) customRender = dataCellRender({\n row,\n columnDef\n }) || {};\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], _extends({\n key: `data-cell-${j}`,\n align: getAlignByDataType(columnDef),\n sx: {\n ...(columnDef.width ? {\n minWidth: columnDef.width,\n maxWidth: columnDef.width\n } : {}),\n ...(columnDef.fixed ? STYLES.TABLE_CELL_STICKY(theme, columnDef.fixedLeft) : {}),\n ...customRender.cellStyle\n }\n }, customRender.cellProps), customRender.data ? customRender.data : valueFormatter ? valueFormatter({\n value: row[columnDef.name],\n columnDef\n }) : row[columnDef.name]);\n })), expandable && rowExpandRender && expanded[i] === true ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: `data-row-expand-${i}`\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n sx: {\n ...STYLES.TABLE_CELL_EXPAND_CONTAINER,\n ...(fixedColumns ? STYLES.TABLE_CELL_STICKY(theme, 0) : {})\n },\n colSpan: fixedColumns ? header.displayFixedColumnsCount + 1 : header.displayDataColumnsCount\n }, rowExpandRender({\n columnsDef,\n row\n }))) : null) : null);\n return !group?.name ? rowsView : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: `group-${g}`\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: `group-header-${g}`\n }, renderGroupCell(group)), !group.expandable || expandedGroups[group.name] === true ? rowsView : null);\n }) : noDataFoundText && !reloading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n colSpan: header.displayDataColumnsCount\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_app_message__WEBPACK_IMPORTED_MODULE_1__.P8PAppInlineError, {\n text: noDataFoundText\n }))) : null))), morePages ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n style: STYLES.MORE_BUTTON_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _extends({\n fullWidth: true,\n onClick: handleMorePagesBtnClick\n }, morePagesBtnProps ? morePagesBtnProps : {}), morePagesBtnCaption)) : null);\n};\n\n//Контроль свойств - Таблица\nP8PTable.propTypes = {\n columnsDef: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n order: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n dataType: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n visible: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n values: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array),\n parent: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n width: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n })).isRequired,\n groups: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired\n })),\n rows: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n orders: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n direction: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired\n })).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(P8P_TABLE_FILTER_SHAPE).isRequired,\n size: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n fixedHeader: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n fixedColumns: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n morePages: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n reloading: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n orderAscMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n orderDescMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n filterMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFromFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueToFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n okFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n clearFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n cancelFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n morePagesBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n morePagesBtnProps: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n noDataFoundText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n headCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n dataCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n groupCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n rowExpandRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onFilterChanged: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onPagesCountChanged: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n objectsCopier: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired,\n containerComponent: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().elementType), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)]),\n containerComponentProps: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_table.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ P8PTable: () => (/* binding */ P8PTable),\n/* harmony export */ P8P_TABLE_DATA_TYPE: () => (/* binding */ P8P_TABLE_DATA_TYPE),\n/* harmony export */ P8P_TABLE_FILTERS_HEIGHT: () => (/* binding */ P8P_TABLE_FILTERS_HEIGHT),\n/* harmony export */ P8P_TABLE_FILTER_SHAPE: () => (/* binding */ P8P_TABLE_FILTER_SHAPE),\n/* harmony export */ P8P_TABLE_MORE_HEIGHT: () => (/* binding */ P8P_TABLE_MORE_HEIGHT),\n/* harmony export */ P8P_TABLE_SIZE: () => (/* binding */ P8P_TABLE_SIZE)\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 _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Divider/Divider.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Chip/Chip.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableCell/TableCell.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableContainer/TableContainer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Table/Table.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableHead/TableHead.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableRow/TableRow.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableBody/TableBody.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Container/Container.js\");\n/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/material/styles/useTheme.js\");\n/* harmony import */ var _p8p_app_message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./p8p_app_message */ \"./app/components/p8p_app_message.js\");\n/* harmony import */ var _p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./p8p_table_reducer */ \"./app/components/p8p_table_reducer.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 //Взаимодействие со стилями MUI\n //Встраиваемое сообщение об ошибке\n //Редьюсер состояния\n\n//---------\n//Константы\n//---------\n\n//Размеры отступов\nconst P8P_TABLE_SIZE = {\n SMALL: \"small\",\n MEDIUM: \"medium\"\n};\n\n//Типы данных\nconst P8P_TABLE_DATA_TYPE = {\n STR: \"STR\",\n NUMB: \"NUMB\",\n DATE: \"DATE\"\n};\n\n//Направления сортировки\nconst P8P_TABLE_COLUMN_ORDER_DIRECTIONS = {\n ASC: \"ASC\",\n DESC: \"DESC\"\n};\n\n//Действия панели инструментов столбца\nconst P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS = {\n ORDER_TOGGLE: \"ORDER_TOGGLE\",\n FILTER_TOGGLE: \"FILTER_TOGGLE\",\n EXPAND_TOGGLE: \"EXPAND_TOGGLE\"\n};\n\n//Действия меню столбца\nconst P8P_TABLE_COLUMN_MENU_ACTIONS = {\n ORDER_ASC: \"ORDER_ASC\",\n ORDER_DESC: \"ORDER_DESC\",\n FILTER: \"FILTER\"\n};\n\n//Структура элемента описания фильтра\nconst P8P_TABLE_FILTER_SHAPE = prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n from: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any),\n to: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any)\n});\n\n//Высота кнопки догрузки данных\nconst P8P_TABLE_MORE_HEIGHT = \"49px\";\n\n//Высота фильтров таблицы\nconst P8P_TABLE_FILTERS_HEIGHT = \"48px\";\n\n//Стили\nconst STYLES = {\n TABLE: {\n with: \"100%\"\n },\n TABLE_HEAD_STICKY: {\n position: \"sticky\",\n top: 0,\n zIndex: 1000\n },\n TABLE_HEAD_CELL_STICKY: (theme, left) => ({\n position: \"sticky\",\n left,\n backgroundColor: theme.palette.background.default,\n zIndex: 1000\n }),\n TABLE_ROW: {\n \"&:last-child td, &:last-child th\": {\n border: 0\n }\n },\n TABLE_CELL_STICKY: (theme, left) => ({\n position: \"sticky\",\n left,\n backgroundColor: theme.palette.background.default,\n zIndex: 500\n }),\n TABLE_CELL_EXPAND_CONTROL: {\n minWidth: \"60px\",\n maxWidth: \"60px\"\n },\n TABLE_CELL_EXPAND_CONTAINER: {\n paddingBottom: 0,\n paddingTop: 0\n },\n TABLE_CELL_GROUP_HEADER: {\n backgroundColor: \"lightgray\"\n },\n TABLE_CELL_GROUP_HEADER_STICKY: {\n position: \"sticky\",\n left: 0\n },\n TABLE_COLUMN_STACK: {\n alignItems: \"center\"\n },\n TABLE_COLUMN_MENU_ITEM_ICON: {\n paddingRight: \"10px\"\n },\n FILTER_CHIP: {\n alignItems: \"center\"\n },\n MORE_BUTTON_CONTAINER: {\n with: \"100%\",\n textAlign: \"center\",\n padding: \"5px\"\n }\n};\n\n//--------------------------------\n//Вспомогательные классы и функции\n//--------------------------------\n\n//Панель инструментов столбца (левая)\nconst P8PTableColumnToolBarLeft = ({\n columnDef,\n onItemClick\n}) => {\n //Кнопка развёртывания/свёртывания\n let expButton = null;\n if (columnDef.expandable) expButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => onItemClick ? onItemClick(P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.EXPAND_TOGGLE, columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, columnDef.expanded ? \"indeterminate_check_box\" : \"add_box\"));\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, expButton);\n};\n\n//Контроль свойств - Панель инструментов столбца (левая)\nP8PTableColumnToolBarLeft.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n onItemClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Панель инструментов столбца (правая)\nconst P8PTableColumnToolBarRight = ({\n columnDef,\n orders,\n filters,\n onItemClick\n}) => {\n //Кнопка сортировки\n const order = orders.find(o => o.name == columnDef.name);\n let orderButton = null;\n if (order) orderButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => onItemClick ? onItemClick(P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.ORDER_TOGGLE, columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, order.direction === P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC ? \"arrow_upward\" : \"arrow_downward\"));\n\n //Кнопка фильтрации\n const filter = filters.find(f => f.name == columnDef.name);\n let filterButton = null;\n if ((0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter?.from) || (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter?.to)) filterButton = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => onItemClick ? onItemClick(P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.FILTER_TOGGLE, columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"filter_alt\"));\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, orderButton, filterButton);\n};\n\n//Контроль свойств - Панель инструментов столбца (правая)\nP8PTableColumnToolBarRight.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n orders: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n filters: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n onItemClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Меню столбца\nconst P8PTableColumnMenu = ({\n columnDef,\n orderAscItemCaption,\n orderDescItemCaption,\n filterItemCaption,\n onItemClick\n}) => {\n //Собственное состояние\n const [anchorEl, setAnchorEl] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Флаг отображения\n const open = Boolean(anchorEl);\n\n //По нажатию на открытие меню\n const handleMenuButtonClick = event => {\n setAnchorEl(event.currentTarget);\n };\n\n //По нажатию на пункт меню\n const handleMenuItemClick = (event, index, action, columnName) => {\n if (onItemClick) onItemClick(action, columnName);\n setAnchorEl(null);\n };\n\n //При закрытии меню\n const handleMenuClose = () => {\n setAnchorEl(null);\n };\n\n //Формирование списка элементов меню в зависимости от описания колонки таблицы\n const menuItems = [];\n if (columnDef.order === true) {\n menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: \"orderAsc\",\n onClick: (event, index) => handleMenuItemClick(event, index, P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_ASC, columnDef.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TABLE_COLUMN_MENU_ITEM_ICON\n }, \"arrow_upward\"), orderAscItemCaption));\n menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: \"orderDesc\",\n onClick: (event, index) => handleMenuItemClick(event, index, P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_DESC, columnDef.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TABLE_COLUMN_MENU_ITEM_ICON\n }, \"arrow_downward\"), orderDescItemCaption));\n }\n if (columnDef.filter === true) {\n if (menuItems.length > 0) menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n key: \"divider\",\n sx: {\n my: 0.5\n }\n }));\n menuItems.push( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: \"filter\",\n onClick: (event, index) => handleMenuItemClick(event, index, P8P_TABLE_COLUMN_MENU_ACTIONS.FILTER, columnDef.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.TABLE_COLUMN_MENU_ITEM_ICON\n }, \"filter_alt\"), filterItemCaption));\n }\n\n //Генерация содержимого\n return menuItems.length > 0 ? /*#__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_4__[\"default\"], {\n id: `${columnDef.name}_menu_button`,\n \"aria-haspopup\": \"true\",\n onClick: handleMenuButtonClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"more_vert\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n id: `${columnDef.name}_menu`,\n anchorEl: anchorEl,\n open: open,\n onClose: handleMenuClose\n }, menuItems)) : null;\n};\n\n//Контроль свойств - Меню столбца\nP8PTableColumnMenu.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n orderAscItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n orderDescItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n filterItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n onItemClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Диалог подсказки\nconst P8PTableColumnHintDialog = ({\n columnDef,\n okBtnCaption,\n onOk\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n open: true,\n \"aria-labelledby\": \"filter-dialog-title\",\n \"aria-describedby\": \"filter-dialog-description\",\n onClose: () => onOk ? onOk() : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"filter-dialog-title\"\n }, columnDef.caption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n dangerouslySetInnerHTML: {\n __html: columnDef.hint\n }\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onOk ? onOk() : null\n }, okBtnCaption)));\n};\n\n//Контроль свойств - Диалог подсказки\nP8PTableColumnHintDialog.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Диалог фильтра\nconst P8PTableColumnFilterDialog = ({\n columnDef,\n from,\n to,\n valueCaption,\n valueFromCaption,\n valueToCaption,\n okBtnCaption,\n clearBtnCaption,\n cancelBtnCaption,\n valueFormatter,\n onOk,\n onClear,\n onCancel\n}) => {\n //Собственное состояние - значения с-по\n const [filterValues, setFilterValues] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n from,\n to\n });\n\n //Отработка воода значения в фильтр\n const handleFilterTextFieldChanged = e => {\n setFilterValues(prev => ({\n ...prev,\n [e.target.name]: e.target.value\n }));\n };\n\n //Элементы ввода значений фильтра\n let inputs = null;\n if (Array.isArray(columnDef.values) && columnDef.values.length > 0) {\n inputs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"from\",\n fullWidth: true,\n select: true,\n label: valueCaption,\n variant: \"standard\",\n value: filterValues.from,\n onChange: handleFilterTextFieldChanged\n }, columnDef.values.map((v, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: i,\n value: v\n }, valueFormatter ? valueFormatter({\n value: v,\n columnDef\n }) : v)));\n } else {\n switch (columnDef.dataType) {\n case P8P_TABLE_DATA_TYPE.STR:\n {\n inputs = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"from\",\n fullWidth: true,\n InputLabelProps: {\n shrink: true\n },\n value: filterValues.from,\n onChange: handleFilterTextFieldChanged,\n label: valueCaption,\n variant: \"standard\"\n });\n break;\n }\n case P8P_TABLE_DATA_TYPE.NUMB:\n case P8P_TABLE_DATA_TYPE.DATE:\n {\n inputs = /*#__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_14__[\"default\"], {\n name: \"from\",\n InputLabelProps: {\n shrink: true\n },\n type: columnDef.dataType == P8P_TABLE_DATA_TYPE.NUMB ? \"number\" : \"date\",\n value: filterValues.from,\n onChange: handleFilterTextFieldChanged,\n label: valueFromCaption,\n variant: \"standard\"\n }), \"\\xA0\", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"to\",\n InputLabelProps: {\n shrink: true\n },\n type: columnDef.dataType == P8P_TABLE_DATA_TYPE.NUMB ? \"number\" : \"date\",\n value: filterValues.to,\n onChange: handleFilterTextFieldChanged,\n label: valueToCaption,\n variant: \"standard\"\n }));\n break;\n }\n }\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n open: true,\n \"aria-labelledby\": \"filter-dialog-title\",\n \"aria-describedby\": \"filter-dialog-description\",\n onClose: () => onCancel ? onCancel(columnDef.name) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n id: \"filter-dialog-title\"\n }, columnDef.caption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null, inputs), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onOk ? onOk(columnDef.name, filterValues.from, filterValues.to) : null\n }, okBtnCaption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onClear ? onClear(columnDef.name) : null,\n variant: \"secondary\"\n }, clearBtnCaption), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n onClick: () => onCancel ? onCancel(columnDef.name) : null\n }, cancelBtnCaption)));\n};\n\n//Контроль свойств - Диалог фильтра\nP8PTableColumnFilterDialog.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object).isRequired,\n from: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any),\n to: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().any),\n valueCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFromCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueToCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n okBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n clearBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n cancelBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onClear: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//Сводный фильтр\nconst P8PTableFiltersChips = ({\n filters,\n columnsDef,\n valueFromCaption,\n valueToCaption,\n onFilterChipClick,\n onFilterChipDelete,\n valueFormatter\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n spacing: 1,\n p: 1\n }, filters.map((filter, i) => {\n const columnDef = columnsDef.find(columnDef => columnDef.name == filter.name);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n key: i,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n sx: STYLES.FILTER_CHIP\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"strong\", null, columnDef.caption), \":\\xA0\", (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.from) && !columnDef.values && columnDef.dataType != P8P_TABLE_DATA_TYPE.STR ? `${valueFromCaption.toLowerCase()} ` : null, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.from) ? valueFormatter ? valueFormatter({\n value: filter.from,\n columnDef\n }) : filter.from : null, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.to) && !columnDef.values && columnDef.dataType != P8P_TABLE_DATA_TYPE.STR ? ` ${valueToCaption.toLowerCase()} ` : null, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.hasValue)(filter.to) ? valueFormatter ? valueFormatter({\n value: filter.to,\n columnDef\n }) : filter.to : null),\n variant: \"outlined\",\n onClick: () => onFilterChipClick ? onFilterChipClick(columnDef.name) : null,\n onDelete: () => onFilterChipDelete ? onFilterChipDelete(columnDef.name) : null\n });\n }));\n};\n\n//Контроль свойств - Сводный фильтр\nP8PTableFiltersChips.propTypes = {\n filters: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n columnsDef: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n valueFromCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueToCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n onFilterChipClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onFilterChipDelete: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Таблица\nconst P8PTable = ({\n columnsDef,\n groups,\n rows,\n orders,\n filters,\n size,\n fixedHeader = false,\n fixedColumns = 0,\n morePages = false,\n reloading,\n expandable,\n orderAscMenuItemCaption,\n orderDescMenuItemCaption,\n filterMenuItemCaption,\n valueFilterCaption,\n valueFromFilterCaption,\n valueToFilterCaption,\n okFilterBtnCaption,\n clearFilterBtnCaption,\n cancelFilterBtnCaption,\n morePagesBtnCaption,\n morePagesBtnProps,\n noDataFoundText,\n headCellRender,\n dataCellRender,\n groupCellRender,\n rowExpandRender,\n valueFormatter,\n onOrderChanged,\n onFilterChanged,\n onPagesCountChanged,\n objectsCopier,\n containerComponent,\n containerComponentProps\n}) => {\n //Собственное состояние - описание заголовка\n const [header, dispatchHeaderAction] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useReducer)(_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.p8pTableReducer, (0,_p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.HEADER_INITIAL_STATE)());\n\n //Собственное состояние - фильтруемая колонка\n const [filterColumn, setFilterColumn] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - развёрнутые строки\n const [expanded, setExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n\n //Собственное состояния - развёрнутые группы\n const [expandedGroups, setExpandedGroups] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});\n\n //Собственное состояние - колонка с отображаемой подсказкой\n const [displayHintColumn, setDisplayHintColumn] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Стили\n const theme = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_17__[\"default\"])();\n\n //Описание фильтруемой колонки\n const filterColumnDef = filterColumn ? columnsDef.find(columnDef => columnDef.name == filterColumn) || null : null;\n\n //Описание колонки с отображаемой подсказкой\n const displayHintColumnDef = displayHintColumn ? columnsDef.find(columnDef => columnDef.name == displayHintColumn) || null : null;\n\n //Значения фильтра фильтруемой колонки\n const [filterColumnFrom, filterColumnTo] = filterColumn ? (() => {\n const filter = filters.find(filter => filter.name == filterColumn);\n return filter ? [filter.from == null ? \"\" : filter.from, filter.to == null ? \"\" : filter.to] : [\"\", \"\"];\n })() : [\"\", \"\"];\n\n //Формирование заголовка таблицы\n const setHeader = ({\n columnsDef,\n expandable,\n fixedColumns,\n objectsCopier\n }) => dispatchHeaderAction({\n type: _p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.P8P_TABLE_AT.SET_HEADER,\n payload: {\n columnsDef,\n expandable,\n fixedColumns,\n objectsCopier\n }\n });\n\n //Сворачивание/разворачивание уровня заголовка таблицы\n const toggleHeaderExpand = ({\n columnName,\n objectsCopier\n }) => dispatchHeaderAction({\n type: _p8p_table_reducer__WEBPACK_IMPORTED_MODULE_2__.P8P_TABLE_AT.TOGGLE_HEADER_EXPAND,\n payload: {\n columnName,\n expandable,\n fixedColumns,\n objectsCopier\n }\n });\n\n //Выравнивание в зависимости от типа данных\n const getAlignByDataType = ({\n dataType,\n hasChild\n }) => dataType === P8P_TABLE_DATA_TYPE.DATE || hasChild ? \"center\" : dataType === P8P_TABLE_DATA_TYPE.NUMB ? \"right\" : \"left\";\n\n //Упорядочение содержимого в зависимости от типа данных\n const getJustifyContentByDataType = ({\n dataType,\n hasChild\n }) => dataType === P8P_TABLE_DATA_TYPE.DATE || hasChild ? \"center\" : dataType === P8P_TABLE_DATA_TYPE.NUMB ? \"flex-end\" : \"flex-start\";\n\n //Отработка нажатия на элемент пункта меню\n const handleToolBarItemClick = (action, columnName) => {\n switch (action) {\n case P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.ORDER_TOGGLE:\n {\n const colOrder = orders.find(o => o.name == columnName);\n const newDirection = colOrder?.direction == P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC ? P8P_TABLE_COLUMN_ORDER_DIRECTIONS.DESC : colOrder?.direction == P8P_TABLE_COLUMN_ORDER_DIRECTIONS.DESC ? null : P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC;\n if (onOrderChanged) onOrderChanged({\n columnName,\n direction: newDirection\n });\n break;\n }\n case P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.FILTER_TOGGLE:\n setFilterColumn(columnName);\n break;\n case P8P_TABLE_COLUMN_TOOL_BAR_ACTIONS.EXPAND_TOGGLE:\n toggleHeaderExpand({\n columnName,\n objectsCopier\n });\n break;\n }\n };\n\n //Отработка нажатия на пункты меню\n const handleMenuItemClick = (action, columnName) => {\n switch (action) {\n case P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_ASC:\n onOrderChanged({\n columnName,\n direction: P8P_TABLE_COLUMN_ORDER_DIRECTIONS.ASC\n });\n break;\n case P8P_TABLE_COLUMN_MENU_ACTIONS.ORDER_DESC:\n onOrderChanged({\n columnName,\n direction: P8P_TABLE_COLUMN_ORDER_DIRECTIONS.DESC\n });\n break;\n case P8P_TABLE_COLUMN_MENU_ACTIONS.FILTER:\n setFilterColumn(columnName);\n break;\n }\n };\n\n //Отработка ввода значения фильтра колонки\n const handleFilterOk = (columnName, from, to) => {\n if (onFilterChanged) onFilterChanged({\n columnName,\n from: from === \"\" ? null : from,\n to: to === \"\" ? null : to\n });\n setFilterColumn(null);\n };\n\n //Отработка очистки значения фильтра колонки\n const handleFilterClear = columnName => {\n if (onFilterChanged) onFilterChanged({\n columnName,\n from: null,\n to: null\n });\n setFilterColumn(null);\n };\n\n //Отработка отмены ввода значения фильтра колонки\n const handleFilterCancel = () => {\n setFilterColumn(null);\n };\n\n //Отработка нажатия на элемент сводного фильтра\n const handleFilterChipClick = columnName => setFilterColumn(columnName);\n\n //Отработка удаления элемента сводного фильтра\n const handleFilterChipDelete = columnName => onFilterChanged ? onFilterChanged({\n columnName,\n from: null,\n to: null\n }) : null;\n\n //Отработка нажатия на кнопку догрузки страницы\n const handleMorePagesBtnClick = () => {\n if (onPagesCountChanged) onPagesCountChanged();\n };\n\n //Отработка нажатия на элемент отображения подсказки по колонке\n const handleColumnShowHintClick = columnName => setDisplayHintColumn(columnName);\n\n //Отработка сокрытия подсказки по колонке\n const handleHintOk = () => setDisplayHintColumn(null);\n\n //Отработка нажатия на кнопку раскрытия элемента\n const handleExpandClick = rowIndex => {\n if (expanded[rowIndex] === true) setExpanded(pv => {\n let res = {\n ...pv\n };\n delete res[rowIndex];\n return res;\n });else setExpanded(pv => ({\n ...pv,\n [rowIndex]: true\n }));\n };\n\n //При перезагрузке данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (reloading) setExpanded({});\n }, [reloading]);\n\n //При изменении описания колонок\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setHeader({\n columnsDef,\n expandable,\n fixedColumns,\n objectsCopier\n });\n }, [columnsDef, expandable, fixedColumns, objectsCopier]);\n\n //Генерация заголовка группы\n const renderGroupCell = group => {\n let customRender = {};\n if (groupCellRender) customRender = groupCellRender({\n columnsDef: header.columnsDef,\n group\n }) || {};\n return header.displayDataColumns.map((columnDef, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], _extends({\n key: `group-header-cell-${i}`\n }, customRender.cellProps, {\n sx: {\n ...STYLES.TABLE_CELL_GROUP_HEADER,\n ...customRender.cellStyle,\n ...(columnDef.width ? {\n minWidth: columnDef.width,\n maxWidth: columnDef.width\n } : {}),\n ...(i == 0 && fixedColumns ? STYLES.TABLE_CELL_GROUP_HEADER_STICKY : {})\n },\n colSpan: expandable && rowExpandRender ? 2 : 1\n }), i == 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n direction: \"row\",\n sx: STYLES.TABLE_COLUMN_STACK\n }, group.expandable ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => {\n setExpandedGroups(pv => ({\n ...pv,\n ...{\n [group.name]: !pv[group.name]\n }\n }));\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, expandedGroups[group.name] ? \"indeterminate_check_box\" : \"add_box\")) : null, customRender.data ? customRender.data : group.caption) : null));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, displayHintColumn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnHintDialog, {\n columnDef: displayHintColumnDef,\n okBtnCaption: okFilterBtnCaption,\n onOk: handleHintOk\n }) : null, filterColumn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnFilterDialog, {\n columnDef: filterColumnDef,\n from: filterColumnFrom,\n to: filterColumnTo,\n valueCaption: valueFilterCaption,\n valueFromCaption: valueFromFilterCaption,\n valueToCaption: valueToFilterCaption,\n okBtnCaption: okFilterBtnCaption,\n clearBtnCaption: clearFilterBtnCaption,\n cancelBtnCaption: cancelFilterBtnCaption,\n valueFormatter: valueFormatter,\n onOk: handleFilterOk,\n onClear: handleFilterClear,\n onCancel: handleFilterCancel\n }) : null, Array.isArray(filters) && filters.length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableFiltersChips, {\n filters: filters,\n columnsDef: columnsDef,\n valueFromCaption: valueFromFilterCaption,\n valueToCaption: valueToFilterCaption,\n onFilterChipClick: handleFilterChipClick,\n onFilterChipDelete: handleFilterChipDelete,\n valueFormatter: valueFormatter\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], _extends({\n component: containerComponent ? containerComponent : _mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"]\n }, containerComponentProps ? containerComponentProps : {}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n stickyHeader: fixedHeader,\n sx: STYLES.TABLE,\n size: size || P8P_TABLE_SIZE.MEDIUM\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n sx: fixedHeader ? STYLES.TABLE_HEAD_STICKY : {}\n }, header.displayLevels.map((level, i) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: level\n }, expandable && rowExpandRender && i == 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n key: \"head-cell-expand-control\",\n align: \"center\",\n sx: {\n ...STYLES.TABLE_CELL_EXPAND_CONTROL,\n ...(fixedColumns ? STYLES.TABLE_HEAD_CELL_STICKY(theme, 0) : {})\n },\n rowSpan: header.displayLevelsColumns[level][0].rowSpan\n }) : null, header.displayLevelsColumns[level].map((columnDef, j) => {\n let customRender = {};\n if (headCellRender) customRender = headCellRender({\n columnDef\n }) || {};\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], _extends({\n key: `head-cell-${j}`,\n align: getAlignByDataType(columnDef),\n sx: {\n ...(columnDef.width ? {\n minWidth: columnDef.width,\n maxWidth: columnDef.width\n } : {}),\n ...(columnDef.fixed ? STYLES.TABLE_HEAD_CELL_STICKY(theme, columnDef.fixedLeft) : {}),\n ...customRender.cellStyle\n },\n rowSpan: columnDef.rowSpan,\n colSpan: columnDef.colSpan\n }, customRender.cellProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _extends({\n direction: \"row\",\n justifyContent: getJustifyContentByDataType(columnDef),\n sx: {\n ...STYLES.TABLE_COLUMN_STACK,\n ...customRender.stackStyle\n }\n }, customRender.stackProps), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnToolBarLeft, {\n columnDef: columnDef,\n onItemClick: handleToolBarItemClick\n }), customRender.data ? customRender.data : columnDef.hint ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n align: \"left\",\n underline: \"always\",\n onClick: () => handleColumnShowHintClick(columnDef.name)\n }, columnDef.caption) : columnDef.caption, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnToolBarRight, {\n columnDef: columnDef,\n orders: orders,\n filters: filters,\n onItemClick: handleToolBarItemClick\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(P8PTableColumnMenu, {\n columnDef: columnDef,\n orderAscItemCaption: orderAscMenuItemCaption,\n orderDescItemCaption: orderDescMenuItemCaption,\n filterItemCaption: filterMenuItemCaption,\n onItemClick: handleMenuItemClick\n })));\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_25__[\"default\"], null, rows.length > 0 ? (Array.isArray(groups) && groups.length > 0 ? groups : [{}]).map((group, g) => {\n const rowsView = rows.map((row, i) => !group?.name || group?.name == row.groupName ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: `data-${i}`\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: `data-row-${i}`,\n sx: STYLES.TABLE_ROW\n }, expandable && rowExpandRender ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n key: `data-cell-expand-control-${i}`,\n align: \"center\",\n sx: {\n ...STYLES.TABLE_CELL_EXPAND_CONTROL,\n ...(fixedColumns ? STYLES.TABLE_CELL_STICKY(theme, 0) : {})\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => handleExpandClick(i)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, expanded[i] === true ? \"keyboard_arrow_down\" : \"keyboard_arrow_right\"))) : null, header.displayDataColumns.map((columnDef, j) => {\n let customRender = {};\n if (dataCellRender) customRender = dataCellRender({\n row,\n columnDef\n }) || {};\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], _extends({\n key: `data-cell-${j}`,\n align: getAlignByDataType(columnDef),\n sx: {\n ...(columnDef.width ? {\n minWidth: columnDef.width,\n maxWidth: columnDef.width\n } : {}),\n ...(columnDef.fixed ? STYLES.TABLE_CELL_STICKY(theme, columnDef.fixedLeft) : {}),\n ...customRender.cellStyle\n }\n }, customRender.cellProps), customRender.data ? customRender.data : valueFormatter ? valueFormatter({\n value: row[columnDef.name],\n columnDef\n }) : row[columnDef.name]);\n })), expandable && rowExpandRender && expanded[i] === true ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: `data-row-expand-${i}`\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n sx: {\n ...STYLES.TABLE_CELL_EXPAND_CONTAINER,\n ...(fixedColumns ? STYLES.TABLE_CELL_STICKY(theme, 0) : {})\n },\n colSpan: fixedColumns ? header.displayFixedColumnsCount + 1 : header.displayDataColumnsCount\n }, rowExpandRender({\n columnsDef,\n row\n }))) : null) : null);\n return !group?.name ? rowsView : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), {\n key: `group-${g}`\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n key: `group-header-${g}`\n }, renderGroupCell(group)), !group.expandable || expandedGroups[group.name] === true ? rowsView : null);\n }) : noDataFoundText && !reloading ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n colSpan: header.displayDataColumnsCount\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_p8p_app_message__WEBPACK_IMPORTED_MODULE_1__.P8PAppInlineError, {\n text: noDataFoundText\n }))) : null))), morePages ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n style: STYLES.MORE_BUTTON_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], _extends({\n fullWidth: true,\n onClick: handleMorePagesBtnClick\n }, morePagesBtnProps ? morePagesBtnProps : {}), morePagesBtnCaption)) : null);\n};\n\n//Контроль свойств - Таблица\nP8PTable.propTypes = {\n columnsDef: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n order: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n dataType: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n visible: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n values: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array),\n parent: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n width: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n })).isRequired,\n groups: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n caption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired\n })),\n rows: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().array).isRequired,\n orders: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().shape({\n name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n direction: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired\n })).isRequired,\n filters: prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(P8P_TABLE_FILTER_SHAPE).isRequired,\n size: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n fixedHeader: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n fixedColumns: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n morePages: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n reloading: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool).isRequired,\n expandable: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n orderAscMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n orderDescMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n filterMenuItemCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueFromFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n valueToFilterCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n okFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n clearFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n cancelFilterBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n morePagesBtnCaption: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,\n morePagesBtnProps: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n noDataFoundText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n headCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n dataCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n groupCellRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n rowExpandRender: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n valueFormatter: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onOrderChanged: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onFilterChanged: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n onPagesCountChanged: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n objectsCopier: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func).isRequired,\n containerComponent: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().elementType), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)]),\n containerComponentProps: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/components/p8p_table.js?"); /***/ }), @@ -4910,7 +4921,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 */ CostJobsSpecsDataGrid: () => (/* binding */ CostJobsSpecsDataGrid),\n/* harmony export */ headCellRender: () => (/* binding */ headCellRender)\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_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.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/Button/Button.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_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tooltip/Tooltip.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_cost_jobs_manage/hooks.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 sUnitCostJobsSpecs = \"CostJobsSpecs\"; //Мнемокод раздела операций\nconst sUnitCostEquipment = \"CostEquipment\"; //Мнемокод раздела рабочих центров\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n textAlign: \"center\"\n },\n DATA_GRID_CONTAINER: {\n minHeight: \"65vh\",\n maxHeight: \"65vh\"\n },\n TABLE: {\n paddingTop: \"15px\"\n },\n TABLE_BUTTONS: {\n display: \"flex\",\n justifyContent: \"flex-end\"\n },\n CHECK_BOX: {\n textAlign: \"center\"\n },\n JOBS_INFO: {\n minWidth: \"60%\",\n maxWidth: \"60%\",\n textAlign: \"center\"\n },\n EQUIPMENT_INFO: {\n minWidth: \"40%\",\n maxWidth: \"40%\",\n textAlign: \"center\"\n }\n};\n\n//Цвета\nconst colors = {\n LINKED: \"#bce0de\",\n UNAVAILABLE: \"#949494\",\n WITH_EQCONFIG: \"#82df83\"\n};\n\n//---------------------------------------------\n//Вспомогательные функции и компоненты\n//---------------------------------------------\n\n//Форматирование значения ячейки\nconst dataCellRender = ({\n row,\n columnDef,\n handleSelectChange,\n sUnit,\n selectedRow,\n selectedJobSpec\n}) => {\n //Стиль\n let cellStyle = {};\n //Если это рабочие центры\n if (sUnit === sUnitCostEquipment) {\n //Признак недоступности\n let disabled = true;\n //Если в выбранной строке смены указано рабочее место\n if (selectedJobSpec.NEQCONFIG) {\n //Если это текущее рабочее место\n if (row[\"NRN\"] === selectedJobSpec.NEQCONFIG) {\n //Подсвечиваем строку рабочего места\n cellStyle = {\n backgroundColor: colors.LINKED\n };\n }\n } else {\n //Если выбрана строка смены\n if (selectedJobSpec.NRN) {\n //Если на текущее рабочее место возможно добавить задание\n if (row[\"NLOADING\"] < 100 && row[\"NEQUIPMENT\"] === selectedJobSpec.NEQUIP_PLAN) {\n //Подсвечиваем строку рабочего места\n cellStyle = {\n backgroundColor: colors.LINKED\n };\n disabled = false;\n }\n }\n }\n //Если рабочий центр загружен\n if (row[\"NLOADING\"] >= 100) {\n //Если поле не поле выбора\n if (columnDef.name !== \"NSELECT\") {\n //Указываем, что рабочее место недоступно\n cellStyle = {\n ...cellStyle,\n color: colors.UNAVAILABLE\n };\n }\n }\n //Для колонки выбора\n if (columnDef.name === \"NSELECT\") {\n return {\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.CHECK_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n disabled: disabled,\n checked: row[\"NRN\"] === selectedRow,\n onChange: () => handleSelectChange({\n NRN: row[\"NRN\"],\n SUNIT: sUnit,\n BFULL_LOADED: row[\"NLOADING\"] >= 100\n })\n }))\n };\n }\n //Отформатированная колонка\n return {\n cellStyle,\n data: row[columnDef.name]\n };\n }\n //Если это сменное задание\n if (sUnit === sUnitCostJobsSpecs) {\n //Если указан станок\n if (row[\"SEQCONFIG\"]) {\n //Подсвечиваем сменное задание зеленым\n cellStyle = {\n ...cellStyle,\n backgroundColor: colors.WITH_EQCONFIG\n };\n }\n //Для колонки выбора\n if (columnDef.name === \"NSELECT\") {\n return {\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.CHECK_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n disabled: row[\"DBEG_FACT\"] ? true : false,\n checked: row[\"NRN\"] === selectedRow,\n onChange: () => handleSelectChange({\n NRN: row[\"NRN\"],\n SUNIT: sUnit,\n NEQCONFIG: row[\"NEQCONFIG\"],\n NEQUIP_PLAN: row[\"NEQUIP_PLAN\"],\n NQUANT_PLAN: row[\"NQUANT_PLAN\"]\n })\n }))\n };\n }\n //Отформатированная колонка\n return {\n cellStyle,\n data: row[columnDef.name]\n };\n }\n //Необрабатываемый раздел\n return {\n data: row[columnDef.name]\n };\n};\n\n//Генерация представления ячейки заголовка группы\nconst headCellRender = ({\n columnDef\n}) => {\n if (columnDef.name === \"NSELECT\") {\n return {\n stackStyle: {\n padding: \"2px\",\n justifyContent: \"space-around\"\n },\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"done\")\n };\n } else {\n return {\n stackStyle: {\n padding: \"2px\"\n },\n data: columnDef.caption\n };\n }\n};\n\n//Диалог включения станка в сменное задание\nconst CostJobsSpecsInclude = ({\n includeEquipment,\n setIncludeEquipment,\n setCostJobsSpecs,\n setEquipConfiguration,\n includeEquipConfiguration\n}) => {\n //Собственное состояние - Значение приоритета\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(includeEquipment.NVALUE);\n\n //При закрытии включения станка\n const handlePriorEditClose = () => {\n setIncludeEquipment({\n NFCJOBSSP: null,\n NEQCONFIG: null,\n NVALUE: 0\n });\n };\n\n //При включении станка в строку сменного задания\n const costJobsSpecIncludeCostEquipment = () => {\n //Делаем асинхронно, чтобы при ошибке ничего не обновлять\n const includeAsync = async () => {\n //Включаем станок в строку сменного задания\n try {\n await includeEquipConfiguration({\n NEQCONFIG: includeEquipment.NEQCONFIG,\n NFCJOBSSP: includeEquipment.NFCJOBSSP,\n NQUANT_PLAN: state\n });\n //Необходимо обновить все данные\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n handlePriorEditClose();\n } catch (e) {\n throw new Error(e.message);\n }\n };\n //Включаем станок асинхронно\n includeAsync();\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n open: true,\n onClose: () => handlePriorEditClose()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n name: \"editInculdeValue\",\n label: \"\\u041A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E\",\n variant: \"standard\",\n fullWidth: true,\n InputProps: {\n type: \"number\",\n inputProps: {\n max: includeEquipment.NVALUE,\n min: 0\n }\n },\n value: state,\n onChange: event => {\n var value = parseInt(event.target.value, 10);\n if (value > includeEquipment.NVALUE) {\n value = includeEquipment.NVALUE;\n }\n if (value < 0) {\n value = 0;\n }\n setState(value);\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onClick: costJobsSpecIncludeCostEquipment,\n variant: \"contained\",\n sx: STYLES.DIALOG_BUTTONS\n }, \"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\")))), /*#__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_10__[\"default\"], {\n onClick: () => handlePriorEditClose(null)\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")));\n};\n\n//Контроль свойств - Диалог включения станка в сменное задание\nCostJobsSpecsInclude.propTypes = {\n includeEquipment: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object).isRequired,\n setIncludeEquipment: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func).isRequired,\n setCostJobsSpecs: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func).isRequired,\n setEquipConfiguration: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func).isRequired,\n includeEquipConfiguration: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Таблица информации о строках сменного задания\nconst CostJobsSpecsDataGrid = ({\n task,\n haveNote,\n fromAction\n}) => {\n //Собственное состояние - Включение в задание\n const [includeEquipment, setIncludeEquipment] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n NFCJOBSSP: null,\n NEQCONFIG: null,\n NVALUE: 0\n });\n\n //Собственное состояние - таблица данных сменных заданий\n const [costJobsSpecs, setCostJobsSpecs, issueCostJobsSpecs] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useCostJobsSpecs)(task);\n\n //Собственное состояние - таблица рабочих центров\n const [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useEquipConfiguration)(task, fromAction);\n\n //При изменении состояния сортировки операций\n const costJobsSpecOrderChanged = ({\n orders\n }) => setCostJobsSpecs(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц операций\n const costJobsSpecPagesCountChanged = () => setCostJobsSpecs(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При изменении состояния сортировки рабочих центров\n const costEquipmentOrderChanged = ({\n orders\n }) => setEquipConfiguration(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц рабочих центров\n const costEquipmentPagesCountChanged = () => setEquipConfiguration(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При исключении станка из строки сменного задания\n const costJobsSpecExcludeCostEquipment = () => {\n //Делаем асинхронно, чтобы при ошибке ничего не обновлять\n const excludeAsync = async () => {\n //Исключаем станок из строки сменного задания\n try {\n await excludeEquipConfiguration({\n NFCJOBSSP: costJobsSpecs.selectedRow.NRN\n });\n //Необходимо обновить данные\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n } catch (e) {\n throw new Error(e.message);\n }\n };\n //Исключаем станок асинхронно\n excludeAsync();\n };\n\n //Выдача задания операции\n const costJobsSpecIssue = () => {\n //Делаем асинхронно, чтобы при ошибке ничего не обновлять\n const issueAsync = async () => {\n //Включаем оборудование в операции\n try {\n await issueCostJobsSpecs({\n NFCJOBS: task\n });\n //Необходимо обновить данные\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n } catch (e) {\n throw new Error(e.message);\n }\n };\n //Выдаем задание асинхронно\n issueAsync();\n };\n\n //При изменение состояния выбора\n const handleSelectChange = prms => {\n //Выбранный элемент\n let selectedRow = null;\n //Исходим от раздела\n switch (prms.SUNIT) {\n //Сменное задание\n case sUnitCostJobsSpecs:\n //Определяем это новое отмеченное сменное задание или сброс старого\n selectedRow = costJobsSpecs.selectedRow.NRN ? costJobsSpecs.selectedRow.NRN === prms.NRN ? null : prms.NRN : prms.NRN;\n //Актуализируем строки\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: selectedRow ? {\n NRN: selectedRow,\n NEQCONFIG: prms.NEQCONFIG,\n NEQUIP_PLAN: prms.NEQUIP_PLAN,\n NQUANT_PLAN: prms.NQUANT_PLAN\n } : {\n NRN: null,\n NEQCONFIG: null,\n NEQUIP_PLAN: null,\n NQUANT_PLAN: null\n }\n }));\n //Выходим\n break;\n //Рабочие центры\n case sUnitCostEquipment:\n //Определяем это новое отмеченное сменное задание или сброс старого\n selectedRow = equipConfiguration.selectedRow.NRN ? equipConfiguration.selectedRow.NRN === prms.NRN ? null : prms.NRN : prms.NRN;\n //Актуализируем строки\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: selectedRow ? {\n NRN: selectedRow,\n BFULL_LOADED: prms.BFULL_LOADED\n } : {\n NRN: null,\n BFULL_LOADED: null\n }\n }));\n //Выходим\n break;\n default:\n return;\n }\n };\n\n //При открытии окна включения в задание\n const handleIncludeEquipmentOpen = () => {\n //Актуализируем строки\n setIncludeEquipment({\n NFCJOBSSP: costJobsSpecs.selectedRow.NRN,\n NEQCONFIG: equipConfiguration.selectedRow.NRN,\n NVALUE: costJobsSpecs.selectedRow.NQUANT_PLAN\n });\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n container: true,\n spacing: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n sx: STYLES.JOBS_INFO\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"h6\"\n }, \"\\u0421\\u043C\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\"), costJobsSpecs.dataLoaded ? /*#__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_4__[\"default\"], {\n sx: STYLES.TABLE_BUTTONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n title: haveNote ? \"Сменное задание имеет строку с примечанием\" : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"contained\",\n size: \"small\",\n disabled: haveNote,\n onClick: costJobsSpecIssue\n }, \"\\u0412\\u044B\\u0434\\u0430\\u0442\\u044C \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u044F\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.TABLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n sx: STYLES.DATA_GRID_CONTAINER,\n elevation: 1\n },\n columnsDef: costJobsSpecs.columnsDef,\n rows: costJobsSpecs.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: costJobsSpecs.morePages,\n reloading: costJobsSpecs.reload,\n onOrderChanged: costJobsSpecOrderChanged,\n onPagesCountChanged: costJobsSpecPagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms,\n handleSelectChange,\n sUnit: sUnitCostJobsSpecs,\n selectedRow: costJobsSpecs.selectedRow.NRN,\n selectedJobSpec: costJobsSpecs.selectedRow\n }),\n headCellRender: prms => headCellRender({\n ...prms\n }),\n fixedHeader: true\n })))) : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n sx: STYLES.EQUIPMENT_INFO\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"h6\"\n }, \"\\u0420\\u0430\\u0431\\u043E\\u0447\\u0438\\u0435 \\u0446\\u0435\\u043D\\u0442\\u0440\\u044B\"), equipConfiguration.dataLoaded ? /*#__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_4__[\"default\"], {\n sx: STYLES.TABLE_BUTTONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"contained\",\n size: \"small\",\n disabled: !equipConfiguration.selectedRow.NRN || !costJobsSpecs.selectedRow.NRN || equipConfiguration.selectedRow.NRN && equipConfiguration.selectedRow.BFULL_LOADED,\n onClick: handleIncludeEquipmentOpen\n }, \"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n ml: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"contained\",\n size: \"small\",\n disabled: !costJobsSpecs.selectedRow.NRN || !costJobsSpecs.selectedRow.NEQCONFIG,\n onClick: costJobsSpecExcludeCostEquipment\n }, \"\\u0418\\u0441\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0438\\u0437 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u044F\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.TABLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n sx: STYLES.DATA_GRID_CONTAINER,\n elevation: 1\n },\n columnsDef: equipConfiguration.columnsDef,\n rows: equipConfiguration.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: equipConfiguration.morePages,\n reloading: equipConfiguration.reload,\n onOrderChanged: costEquipmentOrderChanged,\n onPagesCountChanged: costEquipmentPagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms,\n handleSelectChange,\n sUnit: sUnitCostEquipment,\n selectedRow: equipConfiguration.selectedRow.NRN,\n selectedJobSpec: costJobsSpecs.selectedRow\n }),\n headCellRender: prms => headCellRender({\n ...prms\n }),\n fixedHeader: true\n })))) : null)), includeEquipment.NFCJOBSSP && includeEquipment.NFCJOBSSP ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CostJobsSpecsInclude, {\n includeEquipment: includeEquipment,\n setIncludeEquipment: setIncludeEquipment,\n setCostJobsSpecs: setCostJobsSpecs,\n setEquipConfiguration: setEquipConfiguration,\n includeEquipConfiguration: includeEquipConfiguration\n }) : null);\n};\n\n//Контроль свойств - Таблица информации о строках сменного задания\nCostJobsSpecsDataGrid.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().number).isRequired,\n haveNote: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool).isRequired,\n fromAction: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().bool).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CostJobsSpecsDataGrid: () => (/* binding */ CostJobsSpecsDataGrid),\n/* harmony export */ headCellRender: () => (/* binding */ headCellRender)\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_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tooltip/Tooltip.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\");\n/* harmony import */ var _mech_rec_cost_jobs_manage__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./mech_rec_cost_jobs_manage */ \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Выдача сменного задания\r\n Компонент панели: Таблица информации о строках сменного задания\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Текстовые ресурсы\n //Заголовок страницы\n //Таблица данных\n //Типовые стили\n //Подключение компонентов к настройкам приложения\n //Собственные хуки таблиц\n //Заглавный компонент панели\n\n//---------\n//Константы\n//---------\n\n//Мнемокод раздела операций\nconst UNIT_COST_JOBS_SPECS = \"CostJobsSpecs\";\n\n//Мнемокод раздела рабочих центров\nconst UNIT_COST_EQUIPMENT = \"CostEquipment\";\n\n//Высота заголовка таблицы\nconst TABLE_HEADER_HEIGHT = \"35px\";\n\n//Высота панели кнопок таблицы\nconst TABLE_BUTTONS_HEIGHT = \"35px\";\n\n//Отступ таблицы\nconst TABLE_PADDING_TOP = \"15px\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n textAlign: \"center\"\n },\n DATA_GRID_CONTAINER: morePages => ({\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__.APP_BAR_HEIGHT} - ${_mech_rec_cost_jobs_manage__WEBPACK_IMPORTED_MODULE_7__.MAIN_HEADER_HEIGHT} - ${_mech_rec_cost_jobs_manage__WEBPACK_IMPORTED_MODULE_7__.SUB_HEADER_HEIGHT} - ${TABLE_HEADER_HEIGHT} - ${TABLE_BUTTONS_HEIGHT} - ${TABLE_PADDING_TOP} - 32px - ${morePages ? _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_MORE_HEIGHT : \"0px\"})`,\n ..._app_styles__WEBPACK_IMPORTED_MODULE_4__.APP_STYLES.SCROLL\n }),\n TABLE: {\n paddingTop: TABLE_PADDING_TOP\n },\n TABLE_HEADER: {\n height: TABLE_HEADER_HEIGHT,\n overflow: \"hidden\"\n },\n TABLE_BUTTONS: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n height: TABLE_BUTTONS_HEIGHT,\n overflow: \"hidden\"\n },\n CHECK_BOX: {\n textAlign: \"center\"\n },\n JOBS_INFO: {\n textAlign: \"center\"\n },\n EQUIPMENT_INFO: {\n textAlign: \"center\"\n }\n};\n\n//Цвета\nconst colors = {\n LINKED: \"#bce0de\",\n UNAVAILABLE: \"#949494\",\n WITH_EQCONFIG: \"#82df83\"\n};\n\n//---------------------------------------------\n//Вспомогательные функции и компоненты\n//---------------------------------------------\n\n//Форматирование значения ячейки\nconst dataCellRender = ({\n row,\n columnDef,\n handleSelectChange,\n sUnit,\n selectedRow,\n selectedJobSpec\n}) => {\n //Стиль\n let cellStyle = {};\n //Если это рабочие центры\n if (sUnit === UNIT_COST_EQUIPMENT) {\n //Признак недоступности\n let disabled = true;\n //Если в выбранной строке смены указано рабочее место\n if (selectedJobSpec.NEQCONFIG) {\n //Если это текущее рабочее место\n if (row[\"NRN\"] === selectedJobSpec.NEQCONFIG) {\n //Подсвечиваем строку рабочего места\n cellStyle = {\n backgroundColor: colors.LINKED\n };\n }\n } else {\n //Если выбрана строка смены\n if (selectedJobSpec.NRN) {\n //Если на текущее рабочее место возможно добавить задание\n if (row[\"NLOADING\"] < 100 && row[\"NEQUIPMENT\"] === selectedJobSpec.NEQUIP_PLAN) {\n //Подсвечиваем строку рабочего места\n cellStyle = {\n backgroundColor: colors.LINKED\n };\n disabled = false;\n }\n }\n }\n //Если рабочий центр загружен\n if (row[\"NLOADING\"] >= 100) {\n //Если поле не поле выбора\n if (columnDef.name !== \"NSELECT\") {\n //Указываем, что рабочее место недоступно\n cellStyle = {\n ...cellStyle,\n color: colors.UNAVAILABLE\n };\n }\n }\n //Для колонки выбора\n if (columnDef.name === \"NSELECT\") {\n return {\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.CHECK_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n disabled: disabled,\n checked: row[\"NRN\"] === selectedRow,\n onChange: () => handleSelectChange({\n NRN: row[\"NRN\"],\n SUNIT: sUnit,\n BFULL_LOADED: row[\"NLOADING\"] >= 100\n })\n }))\n };\n }\n //Отформатированная колонка\n return {\n cellStyle,\n data: row[columnDef.name]\n };\n }\n //Если это сменное задание\n if (sUnit === UNIT_COST_JOBS_SPECS) {\n //Если указан станок\n if (row[\"SEQCONFIG\"]) {\n //Подсвечиваем сменное задание зеленым\n cellStyle = {\n ...cellStyle,\n backgroundColor: colors.WITH_EQCONFIG\n };\n }\n //Для колонки выбора\n if (columnDef.name === \"NSELECT\") {\n return {\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.CHECK_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n disabled: row[\"DBEG_FACT\"] ? true : false,\n checked: row[\"NRN\"] === selectedRow,\n onChange: () => handleSelectChange({\n NRN: row[\"NRN\"],\n SUNIT: sUnit,\n NEQCONFIG: row[\"NEQCONFIG\"],\n NEQUIP_PLAN: row[\"NEQUIP_PLAN\"],\n NQUANT_PLAN: row[\"NQUANT_PLAN\"]\n })\n }))\n };\n }\n //Отформатированная колонка\n return {\n cellStyle,\n data: row[columnDef.name]\n };\n }\n //Необрабатываемый раздел\n return {\n data: row[columnDef.name]\n };\n};\n\n//Генерация представления ячейки заголовка группы\nconst headCellRender = ({\n columnDef\n}) => {\n if (columnDef.name === \"NSELECT\") {\n return {\n stackStyle: {\n padding: \"2px\",\n justifyContent: \"space-around\"\n },\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"done\")\n };\n } else {\n return {\n stackStyle: {\n padding: \"2px\"\n },\n data: columnDef.caption\n };\n }\n};\n\n//Диалог включения станка в сменное задание\nconst CostJobsSpecsInclude = ({\n includeEquipment,\n setIncludeEquipment,\n setCostJobsSpecs,\n setEquipConfiguration,\n includeEquipConfiguration\n}) => {\n //Собственное состояние - Значение приоритета\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(includeEquipment.NVALUE);\n\n //При закрытии включения станка\n const handlePriorEditClose = () => {\n setIncludeEquipment({\n NFCJOBSSP: null,\n NEQCONFIG: null,\n NVALUE: 0\n });\n };\n\n //При включении станка в строку сменного задания\n const costJobsSpecIncludeCostEquipment = () => {\n //Делаем асинхронно, чтобы при ошибке ничего не обновлять\n const includeAsync = async () => {\n //Включаем станок в строку сменного задания\n try {\n await includeEquipConfiguration({\n NEQCONFIG: includeEquipment.NEQCONFIG,\n NFCJOBSSP: includeEquipment.NFCJOBSSP,\n NQUANT_PLAN: state\n });\n //Необходимо обновить все данные\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n handlePriorEditClose();\n } catch (e) {\n throw new Error(e.message);\n }\n };\n //Включаем станок асинхронно\n includeAsync();\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n open: true,\n onClose: () => handlePriorEditClose()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n name: \"editInculdeValue\",\n label: \"\\u041A\\u043E\\u043B\\u0438\\u0447\\u0435\\u0441\\u0442\\u0432\\u043E\",\n variant: \"standard\",\n fullWidth: true,\n InputProps: {\n type: \"number\",\n inputProps: {\n max: includeEquipment.NVALUE,\n min: 0\n }\n },\n value: state,\n onChange: event => {\n var value = parseInt(event.target.value, 10);\n if (value > includeEquipment.NVALUE) {\n value = includeEquipment.NVALUE;\n }\n if (value < 0) {\n value = 0;\n }\n setState(value);\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: costJobsSpecIncludeCostEquipment\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.OK), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: () => handlePriorEditClose(null)\n }, _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.CANCEL)));\n};\n\n//Контроль свойств - Диалог включения станка в сменное задание\nCostJobsSpecsInclude.propTypes = {\n includeEquipment: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object).isRequired,\n setIncludeEquipment: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func).isRequired,\n setCostJobsSpecs: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func).isRequired,\n setEquipConfiguration: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func).isRequired,\n includeEquipConfiguration: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Таблица информации о строках сменного задания\nconst CostJobsSpecsDataGrid = ({\n task,\n haveNote,\n fromAction\n}) => {\n //Собственное состояние - Включение в задание\n const [includeEquipment, setIncludeEquipment] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n NFCJOBSSP: null,\n NEQCONFIG: null,\n NVALUE: 0\n });\n\n //Собственное состояние - таблица данных сменных заданий\n const [costJobsSpecs, setCostJobsSpecs, issueCostJobsSpecs] = (0,_hooks__WEBPACK_IMPORTED_MODULE_6__.useCostJobsSpecs)(task);\n\n //Собственное состояние - таблица рабочих центров\n const [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration] = (0,_hooks__WEBPACK_IMPORTED_MODULE_6__.useEquipConfiguration)(task, fromAction);\n\n //При изменении состояния сортировки операций\n const costJobsSpecOrderChanged = ({\n orders\n }) => setCostJobsSpecs(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц операций\n const costJobsSpecPagesCountChanged = () => setCostJobsSpecs(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При изменении состояния сортировки рабочих центров\n const costEquipmentOrderChanged = ({\n orders\n }) => setEquipConfiguration(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц рабочих центров\n const costEquipmentPagesCountChanged = () => setEquipConfiguration(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При исключении станка из строки сменного задания\n const costJobsSpecExcludeCostEquipment = () => {\n //Делаем асинхронно, чтобы при ошибке ничего не обновлять\n const excludeAsync = async () => {\n //Исключаем станок из строки сменного задания\n try {\n await excludeEquipConfiguration({\n NFCJOBSSP: costJobsSpecs.selectedRow.NRN\n });\n //Необходимо обновить данные\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n } catch (e) {\n throw new Error(e.message);\n }\n };\n //Исключаем станок асинхронно\n excludeAsync();\n };\n\n //Выдача задания операции\n const costJobsSpecIssue = () => {\n //Делаем асинхронно, чтобы при ошибке ничего не обновлять\n const issueAsync = async () => {\n //Включаем оборудование в операции\n try {\n await issueCostJobsSpecs({\n NFCJOBS: task\n });\n //Необходимо обновить данные\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: {},\n pageNumber: 1,\n reload: true\n }));\n } catch (e) {\n throw new Error(e.message);\n }\n };\n //Выдаем задание асинхронно\n issueAsync();\n };\n\n //При изменение состояния выбора\n const handleSelectChange = prms => {\n //Выбранный элемент\n let selectedRow = null;\n //Исходим от раздела\n switch (prms.SUNIT) {\n //Сменное задание\n case UNIT_COST_JOBS_SPECS:\n //Определяем это новое отмеченное сменное задание или сброс старого\n selectedRow = costJobsSpecs.selectedRow.NRN ? costJobsSpecs.selectedRow.NRN === prms.NRN ? null : prms.NRN : prms.NRN;\n //Актуализируем строки\n setCostJobsSpecs(pv => ({\n ...pv,\n selectedRow: selectedRow ? {\n NRN: selectedRow,\n NEQCONFIG: prms.NEQCONFIG,\n NEQUIP_PLAN: prms.NEQUIP_PLAN,\n NQUANT_PLAN: prms.NQUANT_PLAN\n } : {\n NRN: null,\n NEQCONFIG: null,\n NEQUIP_PLAN: null,\n NQUANT_PLAN: null\n }\n }));\n //Выходим\n break;\n //Рабочие центры\n case UNIT_COST_EQUIPMENT:\n //Определяем это новое отмеченное сменное задание или сброс старого\n selectedRow = equipConfiguration.selectedRow.NRN ? equipConfiguration.selectedRow.NRN === prms.NRN ? null : prms.NRN : prms.NRN;\n //Актуализируем строки\n setEquipConfiguration(pv => ({\n ...pv,\n selectedRow: selectedRow ? {\n NRN: selectedRow,\n BFULL_LOADED: prms.BFULL_LOADED\n } : {\n NRN: null,\n BFULL_LOADED: null\n }\n }));\n //Выходим\n break;\n default:\n return;\n }\n };\n\n //При открытии окна включения в задание\n const handleIncludeEquipmentOpen = () => {\n //Актуализируем строки\n setIncludeEquipment({\n NFCJOBSSP: costJobsSpecs.selectedRow.NRN,\n NEQCONFIG: equipConfiguration.selectedRow.NRN,\n NVALUE: costJobsSpecs.selectedRow.NQUANT_PLAN\n });\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n container: true,\n spacing: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n item: true,\n sx: STYLES.JOBS_INFO,\n xs: 6\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n sx: STYLES.TABLE_HEADER,\n variant: \"h6\",\n color: \"text.secondary\"\n }, \"\\u0421\\u043C\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\"), costJobsSpecs.dataLoaded ? /*#__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_8__[\"default\"], {\n sx: STYLES.TABLE_BUTTONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n title: haveNote ? \"Сменное задание имеет строку с примечанием\" : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n variant: \"contained\",\n size: \"small\",\n disabled: haveNote,\n onClick: costJobsSpecIssue\n }, \"\\u0412\\u044B\\u0434\\u0430\\u0442\\u044C \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u044F\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.TABLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_5__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n sx: STYLES.DATA_GRID_CONTAINER(costJobsSpecs.morePages),\n elevation: 1\n },\n columnsDef: costJobsSpecs.columnsDef,\n rows: costJobsSpecs.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: costJobsSpecs.morePages,\n reloading: costJobsSpecs.reload,\n onOrderChanged: costJobsSpecOrderChanged,\n onPagesCountChanged: costJobsSpecPagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms,\n handleSelectChange,\n sUnit: UNIT_COST_JOBS_SPECS,\n selectedRow: costJobsSpecs.selectedRow.NRN,\n selectedJobSpec: costJobsSpecs.selectedRow\n }),\n headCellRender: prms => headCellRender({\n ...prms\n }),\n fixedHeader: true\n })))) : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n item: true,\n sx: STYLES.EQUIPMENT_INFO,\n xs: 6\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n sx: STYLES.TABLE_HEADER,\n variant: \"h6\",\n color: \"text.secondary\"\n }, \"\\u0420\\u0430\\u0431\\u043E\\u0447\\u0438\\u0435 \\u0446\\u0435\\u043D\\u0442\\u0440\\u044B\"), equipConfiguration.dataLoaded ? /*#__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_8__[\"default\"], {\n sx: STYLES.TABLE_BUTTONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n direction: \"row\",\n spacing: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n variant: \"contained\",\n size: \"small\",\n disabled: !equipConfiguration.selectedRow.NRN || !costJobsSpecs.selectedRow.NRN || equipConfiguration.selectedRow.NRN && equipConfiguration.selectedRow.BFULL_LOADED,\n onClick: handleIncludeEquipmentOpen\n }, \"\\u0412\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0432 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n variant: \"contained\",\n size: \"small\",\n disabled: !costJobsSpecs.selectedRow.NRN || !costJobsSpecs.selectedRow.NEQCONFIG,\n onClick: costJobsSpecExcludeCostEquipment\n }, \"\\u0418\\u0441\\u043A\\u043B\\u044E\\u0447\\u0438\\u0442\\u044C \\u0438\\u0437 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u044F\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.TABLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_5__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n sx: STYLES.DATA_GRID_CONTAINER(equipConfiguration.morePages),\n elevation: 1\n },\n columnsDef: equipConfiguration.columnsDef,\n rows: equipConfiguration.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: equipConfiguration.morePages,\n reloading: equipConfiguration.reload,\n onOrderChanged: costEquipmentOrderChanged,\n onPagesCountChanged: costEquipmentPagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms,\n handleSelectChange,\n sUnit: UNIT_COST_EQUIPMENT,\n selectedRow: equipConfiguration.selectedRow.NRN,\n selectedJobSpec: costJobsSpecs.selectedRow\n }),\n headCellRender: prms => headCellRender({\n ...prms\n }),\n fixedHeader: true\n })))) : null)), includeEquipment.NFCJOBSSP && includeEquipment.NFCJOBSSP ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CostJobsSpecsInclude, {\n includeEquipment: includeEquipment,\n setIncludeEquipment: setIncludeEquipment,\n setCostJobsSpecs: setCostJobsSpecs,\n setEquipConfiguration: setEquipConfiguration,\n includeEquipConfiguration: includeEquipConfiguration\n }) : null);\n};\n\n//Контроль свойств - Таблица информации о строках сменного задания\nCostJobsSpecsDataGrid.propTypes = {\n task: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().number).isRequired,\n haveNote: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool).isRequired,\n fromAction: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().bool).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js?"); /***/ }), @@ -4943,7 +4954,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 */ MechRecCostJobs: () => (/* binding */ MechRecCostJobs)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _fcjobssp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fcjobssp */ \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Выдача сменного задания\r\n Панель мониторинга: Корневая панель выдачи сменного задания\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Контекст сообщений\n //Собственные хуки таблиц\n //Вспомогательные хуки\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n JOBS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\"\n },\n JOBS_LIST_ITEM_PRIMARY: {\n wordWrap: \"break-word\"\n },\n JOBS_BUTTON: {\n position: \"absolute\"\n },\n JOBS_DRAWER: {\n width: \"350px\",\n display: \"inline-block\",\n flexShrink: 0,\n [`& .MuiDrawer-paper`]: {\n width: \"350px\",\n display: \"inline-block\",\n boxSizing: \"border-box\"\n }\n },\n CONTAINER: {\n textAlign: \"center\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Список сменных заданий\nconst JobList = ({\n jobs = [],\n selectedJob,\n filter,\n setFilter,\n onClick\n} = {}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.JOBS_FINDER,\n name: \"jobFilter\",\n label: \"\\u0421\\u043C\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\",\n value: filter.jobName,\n variant: \"standard\",\n fullWidth: true,\n onChange: event => {\n setFilter(pv => ({\n ...pv,\n jobName: event.target.value\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, jobs.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: p.NRN,\n selected: p.NRN === selectedJob.NRN,\n onClick: () => onClick ? onClick(p) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.JOBS_LIST_ITEM_PRIMARY\n }, p.SDOC_INFO)\n })))));\n};\n\n//Контроль свойств - Список каталогов планов\nJobList.propTypes = {\n jobs: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().array),\n selectedJob: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель выдачи сменного задания\nconst MechRecCostJobs = () => {\n //Собственное состояние - таблица данных\n const [state, setState] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useCostJobs)();\n\n //Состояние для фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n jobName: \"\"\n });\n\n //Массив отфильтрованных каталогов\n const filteredJobs = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useFilteredFcjobs)(state.jobList, filter);\n\n //Подключение к контексту сообщений\n const {\n InlineMsgInfo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Выбор плана\n const selectJob = job => {\n //Обновляем состояние\n setState(pv => ({\n ...pv,\n selectedJob: job,\n showJobList: false\n }));\n };\n\n //Сброс выбора плана\n const unselectJob = () => {\n //Обновляем состояние\n setState(pv => ({\n ...pv,\n selectedJob: {},\n showJobList: false\n }));\n };\n\n //Обработка нажатия на элемент в списке планов\n const handleJobClick = job => {\n if (state.selectedJob.NRN != job.NRN) selectJob(job);else unselectJob();\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n variant: \"extended\",\n sx: STYLES.JOBS_BUTTON,\n onClick: () => setState(pv => ({\n ...pv,\n showJobList: !pv.showJobList\n }))\n }, \"\\u0421\\u043C\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u044F\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n anchor: \"left\",\n open: state.showJobList,\n onClose: () => setState(pv => ({\n ...pv,\n showJobList: false\n })),\n sx: STYLES.JOBS_DRAWER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(JobList, {\n jobs: filteredJobs,\n selectedJob: state.selectedJob,\n filter: filter,\n setFilter: setFilter,\n onClick: handleJobClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.CONTAINER\n }, state.selectedJob.NRN ? /*#__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_8__[\"default\"], {\n variant: \"h6\"\n }, `Сменное задание №${state.selectedJob.SDOC_NUMB} на ${state.selectedJob.SPERIOD}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"h6\"\n }, `${state.selectedJob.SSUBDIV}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_fcjobssp__WEBPACK_IMPORTED_MODULE_2__.CostJobsSpecsDataGrid, {\n task: state.selectedJob.NRN,\n haveNote: state.selectedJob.NHAVE_NOTE,\n fromAction: state.fromAction\n })) : !state.selectedJob.NRN ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"Укажите сменное задание для отображения информации\"\n }) : null));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MAIN_HEADER_HEIGHT: () => (/* binding */ MAIN_HEADER_HEIGHT),\n/* harmony export */ MechRecCostJobs: () => (/* binding */ MechRecCostJobs),\n/* harmony export */ SUB_HEADER_HEIGHT: () => (/* binding */ SUB_HEADER_HEIGHT)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _fcjobssp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fcjobssp */ \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Выдача сменного задания\r\n Панель мониторинга: Корневая панель выдачи сменного задания\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Контекст сообщений\n //Собственные хуки таблиц\n //Вспомогательные хуки\n\n//---------\n//Константы\n//---------\n\n//Высота основного заголовка\nconst MAIN_HEADER_HEIGHT = \"35px\";\n\n//Высота подзаголовка\nconst SUB_HEADER_HEIGHT = \"35px\";\n\n//Стили\nconst STYLES = {\n MAIN_HEADER: {\n height: MAIN_HEADER_HEIGHT,\n overflow: \"hidden\"\n },\n SUB_HEADER: {\n height: SUB_HEADER_HEIGHT,\n overflow: \"hidden\"\n },\n JOBS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\"\n },\n JOBS_LIST_ITEM_PRIMARY: {\n wordWrap: \"break-word\"\n },\n JOBS_BUTTON: {\n position: \"absolute\"\n },\n JOBS_DRAWER: {\n width: \"350px\",\n display: \"inline-block\",\n flexShrink: 0,\n [`& .MuiDrawer-paper`]: {\n width: \"350px\",\n display: \"inline-block\",\n boxSizing: \"border-box\"\n }\n },\n CONTAINER: {\n textAlign: \"center\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Список сменных заданий\nconst JobList = ({\n jobs = [],\n selectedJob,\n filter,\n setFilter,\n onClick\n} = {}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.JOBS_FINDER,\n name: \"jobFilter\",\n label: \"\\u0421\\u043C\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u0435\",\n value: filter.jobName,\n variant: \"standard\",\n fullWidth: true,\n onChange: event => {\n setFilter(pv => ({\n ...pv,\n jobName: event.target.value\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, jobs.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n key: p.NRN,\n selected: p.NRN === selectedJob.NRN,\n onClick: () => onClick ? onClick(p) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.JOBS_LIST_ITEM_PRIMARY\n }, p.SDOC_INFO)\n })))));\n};\n\n//Контроль свойств - Список каталогов планов\nJobList.propTypes = {\n jobs: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().array),\n selectedJob: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель выдачи сменного задания\nconst MechRecCostJobs = () => {\n //Собственное состояние - таблица данных\n const [state, setState] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useCostJobs)();\n\n //Состояние для фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n jobName: \"\"\n });\n\n //Массив отфильтрованных каталогов\n const filteredJobs = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useFilteredFcjobs)(state.jobList, filter);\n\n //Подключение к контексту сообщений\n const {\n InlineMsgInfo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_1__[\"MessagingСtx\"]);\n\n //Выбор плана\n const selectJob = job => {\n //Обновляем состояние\n setState(pv => ({\n ...pv,\n selectedJob: job,\n showJobList: false\n }));\n };\n\n //Сброс выбора плана\n const unselectJob = () => {\n //Обновляем состояние\n setState(pv => ({\n ...pv,\n selectedJob: {},\n showJobList: false\n }));\n };\n\n //Обработка нажатия на элемент в списке планов\n const handleJobClick = job => {\n if (state.selectedJob.NRN != job.NRN) selectJob(job);else unselectJob();\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n variant: \"extended\",\n sx: STYLES.JOBS_BUTTON,\n onClick: () => setState(pv => ({\n ...pv,\n showJobList: !pv.showJobList\n }))\n }, \"\\u0421\\u043C\\u0435\\u043D\\u043D\\u044B\\u0435 \\u0437\\u0430\\u0434\\u0430\\u043D\\u0438\\u044F\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n anchor: \"left\",\n open: state.showJobList,\n onClose: () => setState(pv => ({\n ...pv,\n showJobList: false\n })),\n sx: STYLES.JOBS_DRAWER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(JobList, {\n jobs: filteredJobs,\n selectedJob: state.selectedJob,\n filter: filter,\n setFilter: setFilter,\n onClick: handleJobClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.CONTAINER\n }, state.selectedJob.NRN ? /*#__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_8__[\"default\"], {\n sx: STYLES.MAIN_HEADER,\n variant: \"h6\"\n }, `Сменное задание №${state.selectedJob.SDOC_NUMB} на ${state.selectedJob.SPERIOD}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.SUB_HEADER,\n variant: \"h6\"\n }, `${state.selectedJob.SSUBDIV}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_fcjobssp__WEBPACK_IMPORTED_MODULE_2__.CostJobsSpecsDataGrid, {\n task: state.selectedJob.NRN,\n haveNote: state.selectedJob.NHAVE_NOTE,\n fromAction: state.fromAction\n })) : !state.selectedJob.NRN ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"Укажите сменное задание для отображения информации\"\n }) : null));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js?"); /***/ }), @@ -5042,7 +5053,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 */ FilterComponent: () => (/* binding */ FilterComponent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/OutlinedInput/OutlinedInput.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _ins_department_dg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ins_department_dg */ \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.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 currentDate = new Date();\nconst currentMonth = currentDate.getUTCMonth() + 1;\nconst currentYear = currentDate.getUTCFullYear();\n\n//Стили\nconst STYLES = {\n FILTER_CONTAINER: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-end\"\n },\n FILTER_BLOCK: {\n maxWidth: \"200px\",\n display: \"flex\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Диалог выбора подразделения\nconst DepartmentsDataGrid = ({\n filter,\n setFilter,\n handleSelectDeparture\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n fullWidth: true,\n open: true,\n onClose: () => setFilter(pv => ({\n ...pv,\n openedDepartment: false\n }))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ins_department_dg__WEBPACK_IMPORTED_MODULE_1__.InsDepartmentDataGrid, {\n fullDate: filter.date.fullDate,\n handleSelectDeparture: handleSelectDeparture\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: () => setFilter(pv => ({\n ...pv,\n openedDepartment: false\n }))\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")));\n};\n\n//Контроль свойств - Диалог выбора подразделения\nDepartmentsDataGrid.propTypes = {\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n handleSelectDeparture: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Компонент фильтра\nconst FilterComponent = ({\n filter,\n setFilter,\n handleMonthChange,\n handleSelectDeparture\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.FILTER_CONTAINER,\n pt: 1.5,\n pl: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.FILTER_BLOCK,\n readOnly: true,\n fullWidth: true,\n variant: \"outlined\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n required: !filter.department.SCODE,\n htmlFor: \"department-outlined\"\n }, \"\\u0426\\u0435\\u0445\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: true,\n id: \"department-outlined\",\n value: filter.department.SCODE,\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n \"aria-label\": \"department select\",\n onClick: () => setFilter(pv => ({\n ...pv,\n openedDepartment: true\n })),\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"list\"))),\n \"aria-describedby\": \"department-outlined-helper-text\",\n label: \"\\u0426\\u0435\\u0445\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.FILTER_BLOCK,\n pb: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: () => handleMonthChange(-1)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"navigate_before\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"h5\",\n pt: 0.5\n }, filter.date.fullDate), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: () => handleMonthChange(1),\n disabled: filter.date.year === currentYear && filter.date.month === currentMonth\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"navigate_next\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"subtitle2\",\n pl: 2,\n pb: 2\n }, `Рабочих дней: ${filter.workDays}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"subtitle2\",\n pl: 3.5,\n pb: 2\n }, `Рабочих часов: ${filter.totalWorkHours}`), filter.openedDepartment ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(DepartmentsDataGrid, {\n filter: filter,\n setFilter: setFilter,\n handleSelectDeparture: handleSelectDeparture\n }) : null);\n};\n\n//Контроль свойств - Компонент фильтра\nFilterComponent.propTypes = {\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n handleMonthChange: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n handleSelectDeparture: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_dept_cost_jobs/components/filter.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FILTER_HEIGHT: () => (/* binding */ FILTER_HEIGHT),\n/* harmony export */ FilterComponent: () => (/* binding */ FilterComponent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/OutlinedInput/OutlinedInput.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _ins_department_dg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ins_department_dg */ \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.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 currentDate = new Date();\nconst currentMonth = currentDate.getUTCMonth() + 1;\nconst currentYear = currentDate.getUTCFullYear();\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"68px\";\n\n//Стили\nconst STYLES = {\n FILTER_CONTAINER: {\n height: FILTER_HEIGHT,\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-end\"\n },\n FILTER_BLOCK: {\n maxWidth: \"200px\",\n display: \"flex\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Диалог выбора подразделения\nconst DepartmentsDataGrid = ({\n filter,\n setFilter,\n handleSelectDeparture\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n fullWidth: true,\n open: true,\n onClose: () => setFilter(pv => ({\n ...pv,\n openedDepartment: false\n }))\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ins_department_dg__WEBPACK_IMPORTED_MODULE_1__.InsDepartmentDataGrid, {\n fullDate: filter.date.fullDate,\n handleSelectDeparture: handleSelectDeparture\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: () => setFilter(pv => ({\n ...pv,\n openedDepartment: false\n }))\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")));\n};\n\n//Контроль свойств - Диалог выбора подразделения\nDepartmentsDataGrid.propTypes = {\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n handleSelectDeparture: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Компонент фильтра\nconst FilterComponent = ({\n filter,\n setFilter,\n handleMonthChange,\n handleSelectDeparture\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.FILTER_CONTAINER,\n pt: 1.5,\n pl: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.FILTER_BLOCK,\n readOnly: true,\n fullWidth: true,\n variant: \"outlined\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n required: !filter.department.SCODE,\n htmlFor: \"department-outlined\"\n }, \"\\u0426\\u0435\\u0445\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n disabled: true,\n id: \"department-outlined\",\n value: filter.department.SCODE,\n endAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n \"aria-label\": \"department select\",\n onClick: () => setFilter(pv => ({\n ...pv,\n openedDepartment: true\n })),\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"list\"))),\n \"aria-describedby\": \"department-outlined-helper-text\",\n label: \"\\u0426\\u0435\\u0445\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.FILTER_BLOCK,\n pb: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: () => handleMonthChange(-1)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"navigate_before\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"h5\",\n pt: 0.5\n }, filter.date.fullDate), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: () => handleMonthChange(1),\n disabled: filter.date.year === currentYear && filter.date.month === currentMonth\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, \"navigate_next\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"subtitle2\",\n pl: 2,\n pb: 2\n }, `Рабочих дней: ${filter.workDays}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"subtitle2\",\n pl: 3.5,\n pb: 2\n }, `Рабочих часов: ${filter.totalWorkHours}`), filter.openedDepartment ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(DepartmentsDataGrid, {\n filter: filter,\n setFilter: setFilter,\n handleSelectDeparture: handleSelectDeparture\n }) : null);\n};\n\n//Контроль свойств - Компонент фильтра\nFilterComponent.propTypes = {\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n handleMonthChange: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired,\n handleSelectDeparture: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_dept_cost_jobs/components/filter.js?"); /***/ }), @@ -5086,7 +5097,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 */ MechRecDeptCostJobs: () => (/* binding */ MechRecDeptCostJobs)\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 _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\");\n/* harmony import */ var _components_filter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/filter */ \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Загрузка цеха\r\n Панель мониторинга: Корневая панель загрузки цеха\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные элементы\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Кастомные состояния\n //Компонент фильтра\n\n//---------\n//Константы\n//---------\n\n//Текущая дата\nconst currentDate = new Date();\nconst currentMonth = currentDate.getUTCMonth() + 1;\nconst currentYear = currentDate.getUTCFullYear();\n\n//Кастомные цвета\nconst colors = {\n lightred: \"#ef8989\",\n lightyellow: \"#f5f5b0\",\n blue: \"#0097ff\"\n};\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n textAlign: \"center\",\n paddingTop: \"10px\"\n },\n TITLE: {\n paddingBottom: \"15px\"\n },\n DATA_GRID_CONTAINER: {\n minWidth: \"700px\",\n maxWidth: \"100vw\",\n minHeight: \"calc(100vh - 250px)\",\n maxHeight: \"calc(100vh - 250px)\"\n },\n DATA_GRID_CELL: (row, columnDef) => {\n //Определяем тип дня\n let dayType = columnDef.name.match(/N.*_VALUE/) ? row[`${columnDef.name.substring(0, 12)}_TYPE`] : null;\n //Определяем процент загрузки\n let procentLoad = columnDef.name === \"SNAME\" ? row[\"NPROCENT_LOAD\"] : null;\n return {\n padding: \"8px\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"pre\",\n ...(dayType ? {\n backgroundColor: [1, 3].includes(dayType) ? \"lightgrey\" : dayType === 4 ? \"lightgreen\" : null,\n color: [2, 3].includes(dayType) ? colors.blue : null\n } : procentLoad || procentLoad === 0 ? {\n backgroundColor: procentLoad >= 85 ? \"lightgreen\" : procentLoad >= 50 ? colors.lightyellow : procentLoad > 0 ? colors.lightred : \"lightgrey\"\n } : {})\n };\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Генерация заливки строки исходя от значений\nconst dataCellRender = ({\n row,\n columnDef\n}) => ({\n cellProps: {\n title: row[columnDef.name]\n },\n cellStyle: STYLES.DATA_GRID_CELL(row, columnDef),\n data: row[columnDef]\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель загрузки цеха\nconst MechRecDeptCostJobs = () => {\n //Собственное состояние - фильтр\n const [filter, setFilter, getWorkDays, getWorkHours] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useFilter)(currentMonth, currentYear);\n\n //Собственное состояние - таблица данных\n const [costJobs, setCostJobs] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useMechRecDeptCostJobs)(filter.department.NRN, filter.date.fullDate, filter.totalWorkHours);\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setCostJobs(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setCostJobs(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При изменении месяца\n const handleMonthChange = side => {\n //Исходим от стороны, в которую идем\n let newDate = side === 1 ? filter.date.month === 12 ? {\n month: 1,\n year: filter.date.year + 1\n } : {\n month: filter.date.month + 1,\n year: filter.date.year\n } : filter.date.month === 1 ? {\n month: 12,\n year: filter.date.year - 1\n } : {\n month: filter.date.month - 1,\n year: filter.date.year\n };\n //Формируем полное представление даты\n newDate.fullDate = newDate.month.toString().padStart(2, \"0\") + \".\" + newDate.year;\n //Считываем количество рабочих дней и обновляем состояние\n getWorkDays({\n newDate,\n init: filter.init\n });\n };\n\n //При выборе подразделения\n const handleSelectDeparture = department => {\n //Если подразделение изменилось\n if (department.NRN !== filter.department.NRN) {\n //Получаем количество рабочих часов\n getWorkHours(department);\n //Обновляем таблицу загрузки цеха\n setCostJobs(pv => ({\n ...pv,\n pageNumber: 1,\n reload: true\n }));\n } else {\n setFilter(pv => ({\n ...pv,\n openedDepartment: false\n }));\n }\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_filter__WEBPACK_IMPORTED_MODULE_4__.FilterComponent, {\n filter: filter,\n setFilter: setFilter,\n handleMonthChange: handleMonthChange,\n handleSelectDeparture: handleSelectDeparture\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.TITLE,\n variant: \"h6\"\n }, costJobs.dataLoaded ? `Загрузка станков \"${filter.department.SNAME}\"` : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n pt: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }, costJobs.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n style: STYLES.DATA_GRID_CONTAINER\n },\n fixedHeader: costJobs.fixedHeader,\n fixedColumns: costJobs.fixedColumns,\n columnsDef: costJobs.columnsDef,\n rows: costJobs.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.LARGE,\n morePages: costJobs.morePages,\n reloading: costJobs.reload,\n onOrderChanged: handleOrderChanged,\n onPagesCountChanged: handlePagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms\n })\n })) : null)));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MechRecDeptCostJobs: () => (/* binding */ MechRecDeptCostJobs)\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 _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\");\n/* harmony import */ var _components_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/filter */ \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Загрузка цеха\r\n Панель мониторинга: Корневая панель загрузки цеха\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные элементы\n //Таблица данных\n //Типовые стили\n //Заголовок страницы\n //Подключение компонентов к настройкам приложения\n //Кастомные состояния\n //Компонент фильтра\n\n//---------\n//Константы\n//---------\n\n//Текущая дата\nconst currentDate = new Date();\nconst currentMonth = currentDate.getUTCMonth() + 1;\nconst currentYear = currentDate.getUTCFullYear();\n\n//Кастомные цвета\nconst COLORS = {\n LIGHTRED: \"#ef8989\",\n LIGHTYELLOW: \"#f5f5b0\",\n BLUE: \"#0097ff\"\n};\n\n//Высота заголовка\nconst TITLE_HEIGHT = \"35px\";\n\n//Нижний отступ заголовка\nconst TITLE_PADDING_BOTTOM = \"15px\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n textAlign: \"center\",\n paddingTop: \"10px\"\n },\n TITLE: {\n height: TITLE_HEIGHT,\n overflow: \"hidden\",\n paddingBottom: TITLE_PADDING_BOTTOM\n },\n DATA_GRID_CONTAINER: {\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_3__.APP_BAR_HEIGHT} - ${TITLE_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${_components_filter__WEBPACK_IMPORTED_MODULE_6__.FILTER_HEIGHT} - 10px)`,\n width: \"99vw\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n },\n DATA_GRID_CELL: (row, columnDef) => {\n //Определяем тип дня\n let dayType = columnDef.name.match(/N.*_VALUE/) ? row[`${columnDef.name.substring(0, 12)}_TYPE`] : null;\n //Определяем процент загрузки\n let procentLoad = columnDef.name === \"SNAME\" ? row[\"NPROCENT_LOAD\"] : null;\n return {\n padding: \"8px\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"pre\",\n ...(dayType ? {\n backgroundColor: [1, 3].includes(dayType) ? \"lightgrey\" : dayType === 4 ? \"lightgreen\" : null,\n color: [2, 3].includes(dayType) ? COLORS.BLUE : null\n } : procentLoad || procentLoad === 0 ? {\n backgroundColor: procentLoad >= 85 ? \"lightgreen\" : procentLoad >= 50 ? COLORS.LIGHTYELLOW : procentLoad > 0 ? COLORS.LIGHTRED : \"lightgrey\"\n } : {})\n };\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Генерация заливки строки исходя от значений\nconst dataCellRender = ({\n row,\n columnDef\n}) => ({\n cellProps: {\n title: row[columnDef.name]\n },\n cellStyle: STYLES.DATA_GRID_CELL(row, columnDef),\n data: row[columnDef]\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель загрузки цеха\nconst MechRecDeptCostJobs = () => {\n //Собственное состояние - фильтр\n const [filter, setFilter, getWorkDays, getWorkHours] = (0,_hooks__WEBPACK_IMPORTED_MODULE_5__.useFilter)(currentMonth, currentYear);\n\n //Собственное состояние - таблица данных\n const [costJobs, setCostJobs] = (0,_hooks__WEBPACK_IMPORTED_MODULE_5__.useMechRecDeptCostJobs)(filter.department.NRN, filter.date.fullDate, filter.totalWorkHours);\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setCostJobs(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setCostJobs(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При изменении месяца\n const handleMonthChange = side => {\n //Исходим от стороны, в которую идем\n let newDate = side === 1 ? filter.date.month === 12 ? {\n month: 1,\n year: filter.date.year + 1\n } : {\n month: filter.date.month + 1,\n year: filter.date.year\n } : filter.date.month === 1 ? {\n month: 12,\n year: filter.date.year - 1\n } : {\n month: filter.date.month - 1,\n year: filter.date.year\n };\n //Формируем полное представление даты\n newDate.fullDate = newDate.month.toString().padStart(2, \"0\") + \".\" + newDate.year;\n //Считываем количество рабочих дней и обновляем состояние\n getWorkDays({\n newDate,\n init: filter.init\n });\n };\n\n //При выборе подразделения\n const handleSelectDeparture = department => {\n //Если подразделение изменилось\n if (department.NRN !== filter.department.NRN) {\n //Получаем количество рабочих часов\n getWorkHours(department);\n //Обновляем таблицу загрузки цеха\n setCostJobs(pv => ({\n ...pv,\n pageNumber: 1,\n reload: true\n }));\n } else {\n setFilter(pv => ({\n ...pv,\n openedDepartment: false\n }));\n }\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_filter__WEBPACK_IMPORTED_MODULE_6__.FilterComponent, {\n filter: filter,\n setFilter: setFilter,\n handleMonthChange: handleMonthChange,\n handleSelectDeparture: handleSelectDeparture\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n style: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: STYLES.TITLE,\n variant: \"h6\"\n }, costJobs.dataLoaded ? `Загрузка станков \"${filter.department.SNAME}\"` : null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n pt: 1,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }, costJobs.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n sx: STYLES.DATA_GRID_CONTAINER\n },\n fixedHeader: costJobs.fixedHeader,\n fixedColumns: costJobs.fixedColumns,\n columnsDef: costJobs.columnsDef,\n rows: costJobs.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.LARGE,\n morePages: costJobs.morePages,\n reloading: costJobs.reload,\n onOrderChanged: handleOrderChanged,\n onPagesCountChanged: handlePagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms\n })\n })) : null)));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js?"); /***/ }), @@ -5152,7 +5163,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 */ MechRecDeptCostProdPlans: () => (/* binding */ MechRecDeptCostProdPlans),\n/* harmony export */ groupCellRender: () => (/* binding */ groupCellRender)\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_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.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/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.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_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _incomefromdeps__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./incomefromdeps */ \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\");\n/* harmony import */ var _fcroutlst__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./fcroutlst */ \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Производственный план цеха\r\n Панель мониторинга: Корневая панель производственного плана цеха\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Вспомогательные хуки\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Контекст сообщений\n //Диалог сдачи продукции\n //Диалог маршрутных листов\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n PLANS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\"\n },\n PLANS_LIST_ITEM_PRIMARY: {\n wordWrap: \"break-word\"\n },\n PLANS_BUTTON: {\n position: \"absolute\"\n },\n PLANS_DRAWER: {\n width: \"350px\",\n display: \"inline-block\",\n flexShrink: 0,\n [`& .MuiDrawer-paper`]: {\n width: \"350px\",\n display: \"inline-block\",\n boxSizing: \"border-box\"\n }\n },\n CONTAINER: {\n textAlign: \"center\"\n },\n DATA_GRID_CONTAINER: {\n minWidth: \"95vw\",\n maxWidth: \"95vw\",\n minHeight: \"80vh\",\n maxHeight: \"80vh\"\n },\n DATA_GRID_GROUP_CELL: {\n padding: \"2px\"\n },\n DATA_GRID_CELL: {\n padding: \"8px\",\n maxWidth: \"300px\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"pre\"\n },\n DATA_GRID_CELL_STATUS: (currentStyle, row) => ({\n backgroundColor: getRowBackgroudColor(row),\n ...currentStyle\n }),\n DATA_GRID_CELL_PLAN_FACT: currentStyle => ({\n ...currentStyle,\n backgroundColor: \"lightgrey\"\n }),\n DATA_GRID_CELL_MATRES_CODE: (currentStyle, row) => ({\n backgroundColor: getRowBackgroudColor(row),\n ...currentStyle\n }),\n PLAN_FACT_VALUE: {\n textAlign: \"center\",\n display: \"flex\",\n justifyContent: \"center\"\n },\n PLAN_FACT_DELIMITER: {\n padding: \"0px 5px\"\n },\n FACT_VALUE: {\n color: \"blue\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Генерация представления ячейки заголовка группы\nconst groupCellRender = ({\n group\n}) => ({\n cellStyle: STYLES.DATA_GRID_GROUP_CELL,\n data: group.caption\n});\n\n//Вычисление цвета заливки для строки\nconst getRowBackgroudColor = row => {\n //Факт === План\n if (row[\"NMAIN_QUANT\"] === row[\"NREL_FACT\"]) return \"lightgreen\";\n //План <= (Факт + Запущено)\n if (row[\"NMAIN_QUANT\"] <= row[\"NREL_FACT\"] + row[\"NFCROUTLST_QUANT\"]) return \"lightblue\";\n //Сумма \"Количество план\" = 0 или < \"План\"\n if (row[\"NSUM_PLAN\"] === 0 || row[\"NSUM_PLAN\"] !== 0 && row[\"NSUM_PLAN\"] < row[\"NMAIN_QUANT\"]) {\n //\"Факт\" >= \"План\"\n if (row[\"NREL_FACT\"] >= row[\"NMAIN_QUANT\"]) return \"#F0E68C\";\n } else {\n //Сумма \"Количество факт\" >= сумма \"Количество план\"\n if (row[\"NSUM_FACT\"] >= row[\"NSUM_PLAN\"]) return \"#F0E68C\";\n }\n return \"lightcoral\";\n};\n\n//Генерация заливки строки исходя от значений\nconst dataCellRender = ({\n row,\n columnDef,\n handleProdOrderClick,\n handleMatresCodeClick\n}) => {\n //Описываем общие свойства\n let cellProps = {\n title: row[columnDef.name]\n };\n //Описываем общий стиль\n let cellStyle = STYLES.DATA_GRID_CELL;\n //Для колонки \"Статус\"\n if (columnDef.name === \"SSTATUS\") return {\n cellProps,\n cellStyle: STYLES.DATA_GRID_CELL_STATUS(cellStyle, row),\n data: row[columnDef]\n };\n //Для колонки даты\n if (columnDef.name.indexOf(\"PLAN_FACT\") >= 0) {\n //Получаем текущий день\n let curDay = new Date().getDate().toString().padStart(2, \"0\");\n //Формируем regex для проверки\n let regex = new RegExp(`N_${curDay}.*`, \"g\");\n //Если это значение текущего дня\n if (columnDef.name.match(regex)) cellStyle = STYLES.DATA_GRID_CELL_PLAN_FACT(cellStyle);\n //Если в колонке есть значение\n if (row[columnDef.name]) {\n //Разбиваем его на план/факт\n let values = row[columnDef.name].split(\"/\");\n //Разбиваем значения на блоки\n return {\n cellProps,\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PLAN_FACT_VALUE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, values[0]), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PLAN_FACT_DELIMITER\n }, \"/\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.FACT_VALUE\n }, values[1]))\n };\n } else return {\n cellProps,\n cellStyle,\n data: row[columnDef]\n };\n }\n //Для колонки \"Заказ\"\n if (columnDef.name === \"SPROD_ORDER\") {\n return {\n cellProps,\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n align: \"left\",\n underline: \"hover\",\n onClick: () => handleProdOrderClick(row[\"NRN\"])\n }, row[columnDef.name])\n };\n }\n //Для колонки \"Обозначение\"\n if (columnDef.name === \"SMATRES_CODE\") return {\n cellProps,\n cellStyle: STYLES.DATA_GRID_CELL_MATRES_CODE(cellStyle, row),\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n align: \"left\",\n underline: \"hover\",\n onClick: () => handleMatresCodeClick(row[\"NRN\"])\n }, row[columnDef.name])\n };\n //Для всех остальных\n return {\n cellProps,\n cellStyle,\n data: row[columnDef]\n };\n};\n\n//Список каталогов планов\nconst PlanList = ({\n plans = [],\n selectedPlan,\n filter,\n setFilter,\n onClick\n} = {}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.PLANS_FINDER,\n name: \"planFilter\",\n label: \"\\u041F\\u043B\\u0430\\u043D\",\n value: filter.planName,\n variant: \"standard\",\n fullWidth: true,\n onChange: event => {\n setFilter(pv => ({\n ...pv,\n planName: event.target.value\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, plans.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n key: p.NRN,\n selected: p.NRN === selectedPlan.NRN,\n onClick: () => onClick ? onClick(p) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n sx: STYLES.PLANS_LIST_ITEM_PRIMARY\n }, p.SDOC_INFO)\n })))));\n};\n\n//Контроль свойств - Список каталогов планов\nPlanList.propTypes = {\n plans: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().array),\n selectedPlan: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель производственного плана цеха\nconst MechRecDeptCostProdPlans = () => {\n //Собственное состояние - таблица данных\n const [state, setState] = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useDeptCostProdPlans)();\n\n //Состояние для фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n planName: \"\"\n });\n\n //Массив отфильтрованных каталогов\n const filteredPlanCtgls = (0,_hooks__WEBPACK_IMPORTED_MODULE_1__.useFilteredPlans)(state.planList, filter);\n\n //Подключение к контексту сообщений\n const {\n InlineMsgInfo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_4__[\"MessagingСtx\"]);\n\n //Выбор плана\n const selectPlan = plan => {\n setState(pv => ({\n ...pv,\n showIncomeFromDeps: null,\n showFcroutelst: null,\n selectedPlan: plan,\n showPlanList: false,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n };\n\n //Сброс выбора плана\n const unselectPlan = () => setState(pv => ({\n ...pv,\n showIncomeFromDeps: null,\n showFcroutelst: null,\n selectedPlan: {},\n showPlanList: false,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n\n //Обработка нажатия на элемент в списке планов\n const handlePlanClick = plan => {\n if (state.selectedPlan.NRN != plan.NRN) selectPlan(plan);else unselectPlan();\n };\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setState(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setState(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При нажатии на \"Заказ\"\n const handleProdOrderClick = planSp => {\n setState(pv => ({\n ...pv,\n showIncomeFromDeps: planSp\n }));\n };\n\n //При нажатии на \"Обозначение\"\n const handleMatresCodeClick = planSp => {\n setState(pv => ({\n ...pv,\n showFcroutelst: planSp\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n variant: \"extended\",\n sx: STYLES.PLANS_BUTTON,\n onClick: () => setState(pv => ({\n ...pv,\n showPlanList: !pv.showPlanList\n }))\n }, \"\\u041F\\u043B\\u0430\\u043D\\u044B\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n anchor: \"left\",\n open: state.showPlanList,\n onClose: () => setState(pv => ({\n ...pv,\n showPlanList: false\n })),\n sx: STYLES.PLANS_DRAWER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanList, {\n plans: filteredPlanCtgls,\n selectedPlan: state.selectedPlan,\n filter: filter,\n setFilter: setFilter,\n onClick: handlePlanClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n container: true,\n spacing: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n item: true,\n xs: 12\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }, state.dataLoaded ? state.rows.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"В плане отсутствуют записи спецификации\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n pt: 1,\n variant: \"h6\"\n }, `Производственный план цеха №${state.selectedPlan.SSUBDIV} на ${state.selectedPlan.SPERIOD}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n pt: 2.5\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_2__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n style: STYLES.DATA_GRID_CONTAINER\n },\n fixedHeader: state.fixedHeader,\n fixedColumns: state.fixedColumns,\n columnsDef: state.columnsDef,\n rows: state.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_SIZE.MEDIUM,\n morePages: state.morePages,\n reloading: state.reload,\n onOrderChanged: handleOrderChanged,\n onPagesCountChanged: handlePagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms,\n handleProdOrderClick,\n handleMatresCodeClick\n }),\n groupCellRender: groupCellRender\n })))) : !state.selectedPlan.NRN ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"Укажите план для отображения спецификаций\"\n }) : null))), state.showIncomeFromDeps ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_incomefromdeps__WEBPACK_IMPORTED_MODULE_5__.IncomFromDepsDataGridDialog, {\n task: state.showIncomeFromDeps,\n onClose: () => handleProdOrderClick(null)\n }) : null, state.showFcroutelst ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_fcroutlst__WEBPACK_IMPORTED_MODULE_6__.CostRouteListsDataGridDialog, {\n task: state.showFcroutelst,\n onClose: () => handleMatresCodeClick(null)\n }) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MechRecDeptCostProdPlans: () => (/* binding */ MechRecDeptCostProdPlans),\n/* harmony export */ groupCellRender: () => (/* binding */ groupCellRender)\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_16__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _incomefromdeps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./incomefromdeps */ \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\");\n/* harmony import */ var _fcroutlst__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./fcroutlst */ \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Производственный план цеха\r\n Панель мониторинга: Корневая панель производственного плана цеха\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Типовые стили\n //Заголовок страницы\n //Вспомогательные хуки\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Контекст сообщений\n //Диалог сдачи продукции\n //Диалог маршрутных листов\n\n//---------\n//Константы\n//---------\n\n//Высота заголовка\nconst TITLE_HEIGHT = \"35px\";\n\n//Верхний отступ заголовка\nconst TITLE_PADDING_TOP = \"10px\";\n\n//Нижний отступ заголовка\nconst TITLE_PADDING_BOTTOM = \"20px\";\n\n//Стили\nconst STYLES = {\n PLANS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\"\n },\n PLANS_LIST_ITEM_PRIMARY: {\n wordWrap: \"break-word\"\n },\n PLANS_BUTTON: {\n position: \"absolute\"\n },\n PLANS_DRAWER: {\n width: \"350px\",\n display: \"inline-block\",\n flexShrink: 0,\n [`& .MuiDrawer-paper`]: {\n width: \"350px\",\n display: \"inline-block\",\n boxSizing: \"border-box\"\n }\n },\n CONTAINER: {\n textAlign: \"center\"\n },\n TITLE: {\n height: TITLE_HEIGHT,\n overflow: \"hidden\",\n paddingTop: TITLE_PADDING_TOP,\n paddingBottom: TITLE_PADDING_BOTTOM,\n display: \"inline-table\"\n },\n DATA_GRID_CONTAINER: {\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__.APP_BAR_HEIGHT} - ${TITLE_HEIGHT} - ${TITLE_PADDING_TOP} - ${TITLE_PADDING_BOTTOM} - 29px)`,\n width: \"98vw\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_1__.APP_STYLES.SCROLL\n },\n DATA_GRID_GROUP_CELL: {\n padding: \"2px\"\n },\n DATA_GRID_CELL: {\n padding: \"8px\",\n maxWidth: \"300px\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"pre\"\n },\n DATA_GRID_CELL_STATUS: (currentStyle, row) => ({\n backgroundColor: getRowBackgroudColor(row),\n ...currentStyle\n }),\n DATA_GRID_CELL_PLAN_FACT: currentStyle => ({\n ...currentStyle,\n backgroundColor: \"lightgrey\"\n }),\n DATA_GRID_CELL_MATRES_CODE: (currentStyle, row) => ({\n backgroundColor: getRowBackgroudColor(row),\n ...currentStyle\n }),\n PLAN_FACT_VALUE: {\n textAlign: \"center\",\n display: \"flex\",\n justifyContent: \"center\"\n },\n PLAN_FACT_DELIMITER: {\n padding: \"0px 5px\"\n },\n FACT_VALUE: {\n color: \"blue\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Генерация представления ячейки заголовка группы\nconst groupCellRender = ({\n group\n}) => ({\n cellStyle: STYLES.DATA_GRID_GROUP_CELL,\n data: group.caption\n});\n\n//Вычисление цвета заливки для строки\nconst getRowBackgroudColor = row => {\n //Факт === План\n if (row[\"NMAIN_QUANT\"] === row[\"NREL_FACT\"]) return \"lightgreen\";\n //План <= (Факт + Запущено)\n if (row[\"NMAIN_QUANT\"] <= row[\"NREL_FACT\"] + row[\"NFCROUTLST_QUANT\"]) return \"lightblue\";\n //Сумма \"Количество план\" = 0 или < \"План\"\n if (row[\"NSUM_PLAN\"] === 0 || row[\"NSUM_PLAN\"] !== 0 && row[\"NSUM_PLAN\"] < row[\"NMAIN_QUANT\"]) {\n //\"Факт\" >= \"План\"\n if (row[\"NREL_FACT\"] >= row[\"NMAIN_QUANT\"]) return \"#F0E68C\";\n } else {\n //Сумма \"Количество факт\" >= сумма \"Количество план\"\n if (row[\"NSUM_FACT\"] >= row[\"NSUM_PLAN\"]) return \"#F0E68C\";\n }\n return \"lightcoral\";\n};\n\n//Генерация заливки строки исходя от значений\nconst dataCellRender = ({\n row,\n columnDef,\n handleProdOrderClick,\n handleMatresCodeClick\n}) => {\n //Описываем общие свойства\n let cellProps = {\n title: row[columnDef.name]\n };\n //Описываем общий стиль\n let cellStyle = STYLES.DATA_GRID_CELL;\n //Для колонки \"Статус\"\n if (columnDef.name === \"SSTATUS\") return {\n cellProps,\n cellStyle: STYLES.DATA_GRID_CELL_STATUS(cellStyle, row),\n data: row[columnDef]\n };\n //Для колонки даты\n if (columnDef.name.indexOf(\"PLAN_FACT\") >= 0) {\n //Получаем текущий день\n let curDay = new Date().getDate().toString().padStart(2, \"0\");\n //Формируем regex для проверки\n let regex = new RegExp(`N_${curDay}.*`, \"g\");\n //Если это значение текущего дня\n if (columnDef.name.match(regex)) cellStyle = STYLES.DATA_GRID_CELL_PLAN_FACT(cellStyle);\n //Если в колонке есть значение\n if (row[columnDef.name]) {\n //Разбиваем его на план/факт\n let values = row[columnDef.name].split(\"/\");\n //Разбиваем значения на блоки\n return {\n cellProps,\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.PLAN_FACT_VALUE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, values[0]), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.PLAN_FACT_DELIMITER\n }, \"/\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.FACT_VALUE\n }, values[1]))\n };\n } else return {\n cellProps,\n cellStyle,\n data: row[columnDef]\n };\n }\n //Для колонки \"Заказ\"\n if (columnDef.name === \"SPROD_ORDER\") {\n return {\n cellProps,\n cellStyle,\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n align: \"left\",\n underline: \"hover\",\n onClick: () => handleProdOrderClick(row[\"NRN\"])\n }, row[columnDef.name])\n };\n }\n //Для колонки \"Обозначение\"\n if (columnDef.name === \"SMATRES_CODE\") return {\n cellProps,\n cellStyle: STYLES.DATA_GRID_CELL_MATRES_CODE(cellStyle, row),\n data: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"button\",\n variant: \"body2\",\n align: \"left\",\n underline: \"hover\",\n onClick: () => handleMatresCodeClick(row[\"NRN\"])\n }, row[columnDef.name])\n };\n //Для всех остальных\n return {\n cellProps,\n cellStyle,\n data: row[columnDef]\n };\n};\n\n//Список каталогов планов\nconst PlanList = ({\n plans = [],\n selectedPlan,\n filter,\n setFilter,\n onClick\n} = {}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.PLANS_FINDER,\n name: \"planFilter\",\n label: \"\\u041F\\u043B\\u0430\\u043D\",\n value: filter.planName,\n variant: \"standard\",\n fullWidth: true,\n onChange: event => {\n setFilter(pv => ({\n ...pv,\n planName: event.target.value\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, plans.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n key: p.NRN,\n selected: p.NRN === selectedPlan.NRN,\n onClick: () => onClick ? onClick(p) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.PLANS_LIST_ITEM_PRIMARY\n }, p.SDOC_INFO)\n })))));\n};\n\n//Контроль свойств - Список каталогов планов\nPlanList.propTypes = {\n plans: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().array),\n selectedPlan: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().object),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_16___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель производственного плана цеха\nconst MechRecDeptCostProdPlans = () => {\n //Собственное состояние - таблица данных\n const [state, setState] = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useDeptCostProdPlans)();\n\n //Состояние для фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n planName: \"\"\n });\n\n //Массив отфильтрованных каталогов\n const filteredPlanCtgls = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useFilteredPlans)(state.planList, filter);\n\n //Подключение к контексту сообщений\n const {\n InlineMsgInfo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_6__[\"MessagingСtx\"]);\n\n //Выбор плана\n const selectPlan = plan => {\n setState(pv => ({\n ...pv,\n showIncomeFromDeps: null,\n showFcroutelst: null,\n selectedPlan: plan,\n showPlanList: false,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n };\n\n //Сброс выбора плана\n const unselectPlan = () => setState(pv => ({\n ...pv,\n showIncomeFromDeps: null,\n showFcroutelst: null,\n selectedPlan: {},\n showPlanList: false,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n\n //Обработка нажатия на элемент в списке планов\n const handlePlanClick = plan => {\n if (state.selectedPlan.NRN != plan.NRN) selectPlan(plan);else unselectPlan();\n };\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setState(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1,\n reload: true\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setState(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1,\n reload: true\n }));\n\n //При нажатии на \"Заказ\"\n const handleProdOrderClick = planSp => {\n setState(pv => ({\n ...pv,\n showIncomeFromDeps: planSp\n }));\n };\n\n //При нажатии на \"Обозначение\"\n const handleMatresCodeClick = planSp => {\n setState(pv => ({\n ...pv,\n showFcroutelst: planSp\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n variant: \"extended\",\n sx: STYLES.PLANS_BUTTON,\n onClick: () => setState(pv => ({\n ...pv,\n showPlanList: !pv.showPlanList\n }))\n }, \"\\u041F\\u043B\\u0430\\u043D\\u044B\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n anchor: \"left\",\n open: state.showPlanList,\n onClose: () => setState(pv => ({\n ...pv,\n showPlanList: false\n })),\n sx: STYLES.PLANS_DRAWER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanList, {\n plans: filteredPlanCtgls,\n selectedPlan: state.selectedPlan,\n filter: filter,\n setFilter: setFilter,\n onClick: handlePlanClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n container: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n item: true,\n xs: 12\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }, state.dataLoaded ? state.rows.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"В плане отсутствуют записи спецификации\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.TITLE,\n variant: \"h6\"\n }, `Производственный план цеха №${state.selectedPlan.SSUBDIV} на ${state.selectedPlan.SPERIOD}`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_5__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n sx: STYLES.DATA_GRID_CONTAINER\n },\n fixedHeader: state.fixedHeader,\n fixedColumns: state.fixedColumns,\n columnsDef: state.columnsDef,\n rows: state.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_4__.P8P_DATA_GRID_SIZE.MEDIUM,\n morePages: state.morePages,\n reloading: state.reload,\n onOrderChanged: handleOrderChanged,\n onPagesCountChanged: handlePagesCountChanged,\n dataCellRender: prms => dataCellRender({\n ...prms,\n handleProdOrderClick,\n handleMatresCodeClick\n }),\n groupCellRender: groupCellRender\n })))) : !state.selectedPlan.NRN ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"Укажите план для отображения спецификаций\"\n }) : null))), state.showIncomeFromDeps ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_incomefromdeps__WEBPACK_IMPORTED_MODULE_7__.IncomFromDepsDataGridDialog, {\n task: state.showIncomeFromDeps,\n onClose: () => handleProdOrderClick(null)\n }) : null, state.showFcroutelst ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_fcroutlst__WEBPACK_IMPORTED_MODULE_8__.CostRouteListsDataGridDialog, {\n task: state.showFcroutelst,\n onClose: () => handleMatresCodeClick(null)\n }) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js?"); /***/ }),